• Bart Van Assche's avatar
    IB/srpt: Fix wait list processing · 387add46
    Bart Van Assche authored
    Since the wait list is not protected against concurrent access
    it must be processed from the context of the completion handler.
    Replace the wait list processing code in the IB CM RTU callback
    handler by code that triggers a completion handler. This patch
    fixes the following rare crash:
    
    WARNING: CPU: 2 PID: 78656 at lib/list_debug.c:53 __list_del_entry+0x67/0xd0()
    list_del corruption, ffff88041ae404b8->next is LIST_POISON1 (dead000000000100)
    Call Trace:
     [<ffffffff81251c6b>] dump_stack+0x4f/0x74
     [<ffffffff810574ab>] warn_slowpath_common+0x8b/0xd0
     [<ffffffff81057591>] warn_slowpath_fmt+0x41/0x70
     [<ffffffff8126f007>] __list_del_entry+0x67/0xd0
     [<ffffffff8126f081>] list_del+0x11/0x40
     [<ffffffffa0265242>] srpt_cm_handler+0x172/0x1a4 [ib_srpt]
     [<ffffffffa0370370>] cm_process_work+0x20/0xf0 [ib_cm]
     [<ffffffffa0370dae>] cm_establish_handler+0xbe/0x110 [ib_cm]
     [<ffffffffa03733e7>] cm_work_handler+0x67/0xd0 [ib_cm]
     [<ffffffff8107184d>] process_one_work+0x1bd/0x460
     [<ffffffff81073148>] worker_thread+0x118/0x420
     [<ffffffff81078444>] kthread+0xe4/0x100
     [<ffffffff8151caff>] ret_from_fork+0x3f/0x70
    Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarAlex Estrin <alex.estrin@intel.com>
    Cc: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    387add46
ib_srpt.c 87.6 KB