• Vlad Yasevich's avatar
    macvtap: Resolve possible __might_sleep warning in macvtap_do_read() · a499a2e9
    Vlad Yasevich authored
    macvtap_do_read code calls macvtap_put_user while it might be set up
    to wait for the user.  This results in the following warning:
    
    Jun 23 16:25:26 galen kernel: ------------[ cut here ]------------
    Jun 23 16:25:26 galen kernel: WARNING: CPU: 0 PID: 30433 at kernel/sched/core.c:
    7286 __might_sleep+0x7f/0x90()
    Jun 23 16:25:26 galen kernel: do not call blocking ops when !TASK_RUNNING; state
    =1 set at [<ffffffff810f1c1f>] prepare_to_wait+0x2f/0x90
    Jun 23 16:25:26 galen kernel: CPU: 0 PID: 30433 Comm: cat Not tainted 4.1.0-rc6+
     #11
    Jun 23 16:25:26 galen kernel: Call Trace:
    Jun 23 16:25:26 galen kernel: [<ffffffff817f76ba>] dump_stack+0x4c/0x65
    Jun 23 16:25:26 galen kernel: [<ffffffff810a07ca>] warn_slowpath_common+0x8a/0xc
    0
    Jun 23 16:25:26 galen kernel: [<ffffffff810a0846>] warn_slowpath_fmt+0x46/0x50
    Jun 23 16:25:26 galen kernel: [<ffffffff810f1c1f>] ?  prepare_to_wait+0x2f/0x90
    Jun 23 16:25:26 galen kernel: [<ffffffff810f1c1f>] ?  prepare_to_wait+0x2f/0x90
    Jun 23 16:25:26 galen kernel: [<ffffffff810cdc1f>] __might_sleep+0x7f/0x90
    Jun 23 16:25:26 galen kernel: [<ffffffff811f8e15>] might_fault+0x55/0xb0
    Jun 23 16:25:26 galen kernel: [<ffffffff810fab9d>] ?  trace_hardirqs_on_caller+0x fd/0x1c0
    Jun 23 16:25:26 galen kernel: [<ffffffff813f639c>] copy_to_iter+0x7c/0x360
    Jun 23 16:25:26 galen kernel: [<ffffffffa052da86>] macvtap_do_read+0x256/0x3d0 [macvtap]
    Jun 23 16:25:26 galen kernel: [<ffffffff810f20e0>] ?  prepare_to_wait_event+0x110/0x110
    Jun 23 16:25:26 galen kernel: [<ffffffffa052dcab>] macvtap_read_iter+0x2b/0x50 [macvtap]
    Jun 23 16:25:26 galen kernel: [<ffffffff81247f2e>] __vfs_read+0xae/0xe0
    Jun 23 16:25:26 galen kernel: [<ffffffff81248526>] vfs_read+0x86/0x140
    Jun 23 16:25:26 galen kernel: [<ffffffff812493b9>] SyS_read+0x49/0xb0
    Jun 23 16:25:26 galen kernel: [<ffffffff8180182e>] system_call_fastpath+0x12/0x76
    Jun 23 16:25:26 galen kernel: ---[ end trace 22e33f67e70c0c2a ]---
    
    Make sure thet we call finish_wait() if we have the skb to process
    before trying to actually process it.
    Signed-off-by: default avatarVladislav Yasevich <vyasevic@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a499a2e9
macvtap.c 32.3 KB