• Subash Abhinov Kasiviswanathan's avatar
    net: qualcomm: rmnet: Fix incorrect allocation flag in transmit · 6392ff3c
    Subash Abhinov Kasiviswanathan authored
    The incoming skb needs to be reallocated in case the headroom
    is not sufficient to add the MAP header. This allocation needs to
    be atomic otherwise it results in the following splat
    
    [32805.801456] BUG: sleeping function called from invalid context
    [32805.841141] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    [32805.904773] task: ffffffd7c5f62280 task.stack: ffffff80464a8000
    [32805.910851] pc : ___might_sleep+0x180/0x188
    [32805.915143] lr : ___might_sleep+0x180/0x188
    [32806.131520] Call trace:
    [32806.134041]  ___might_sleep+0x180/0x188
    [32806.137980]  __might_sleep+0x50/0x84
    [32806.141653]  __kmalloc_track_caller+0x80/0x3bc
    [32806.146215]  __kmalloc_reserve+0x3c/0x88
    [32806.150241]  pskb_expand_head+0x74/0x288
    [32806.154269]  rmnet_egress_handler+0xb0/0x1d8
    [32806.162239]  rmnet_vnd_start_xmit+0xc8/0x13c
    [32806.166627]  dev_hard_start_xmit+0x148/0x280
    [32806.181181]  sch_direct_xmit+0xa4/0x198
    [32806.185125]  __qdisc_run+0x1f8/0x310
    [32806.188803]  net_tx_action+0x23c/0x26c
    [32806.192655]  __do_softirq+0x220/0x408
    [32806.196420]  do_softirq+0x4c/0x70
    
    Fixes: ceed73a2 ("drivers: net: ethernet: qualcomm: rmnet: Initial implementation")
    Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6392ff3c
rmnet_handlers.c 5.46 KB