lkml.org 
[lkml]   [2017]   [Aug]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 029/105] isdn: Fix a sleep-in-atomic bug
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jia-Ju Bai <baijiaju1990@163.com>

    commit e8f4ae85439f34bec3b0ab69223a41809dab28c9 upstream.

    The driver may sleep under a spin lock, the function call path is:
    isdn_ppp_mp_receive (acquire the lock)
    isdn_ppp_mp_reassembly
    isdn_ppp_push_higher
    isdn_ppp_decompress
    isdn_ppp_ccp_reset_trans
    isdn_ppp_ccp_reset_alloc_state
    kzalloc(GFP_KERNEL) --> may sleep

    To fixed it, the "GFP_KERNEL" is replaced with "GFP_ATOMIC".

    Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/isdn/i4l/isdn_ppp.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/isdn/i4l/isdn_ppp.c
    +++ b/drivers/isdn/i4l/isdn_ppp.c
    @@ -2364,7 +2364,7 @@ static struct ippp_ccp_reset_state *isdn
    id);
    return NULL;
    } else {
    - rs = kzalloc(sizeof(struct ippp_ccp_reset_state), GFP_KERNEL);
    + rs = kzalloc(sizeof(struct ippp_ccp_reset_state), GFP_ATOMIC);
    if (!rs)
    return NULL;
    rs->state = CCPResetIdle;

    \
     
     \ /
      Last update: 2017-08-05 01:18    [W:4.169 / U:0.180 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site