• Denis V. Lunev's avatar
    pktgen: make sure that pktgen_thread_worker has been executed · d3ede327
    Denis V. Lunev authored
    The following courruption can happen during pktgen stop:
    list_del corruption. prev->next should be ffff81007e8a5e70, but was 6b6b6b6b6b6b6b6b
    kernel BUG at lib/list_debug.c:67!
          :pktgen:pktgen_thread_worker+0x374/0x10b0
          ? autoremove_wake_function+0x0/0x40
          ? _spin_unlock_irqrestore+0x42/0x80
          ? :pktgen:pktgen_thread_worker+0x0/0x10b0
          kthread+0x4d/0x80
          child_rip+0xa/0x12
          ? restore_args+0x0/0x30
          ? kthread+0x0/0x80
          ? child_rip+0x0/0x12
    RIP  list_del+0x48/0x70
    
    The problem is that pktgen_thread_worker can not be executed if kthread_stop
    has been called too early. Insert a completion on the normal initialization
    path to make sure that pktgen_thread_worker will gain the control for sure.
    Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
    Acked-by: default avatarAlexey Dobriyan <adobriyan@openvz.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d3ede327
pktgen.c 90.5 KB