Skip to content
  • Bart Van Assche's avatar
    IB/srp: Avoid that writing into "add_target" hangs due to a cable pull · ac72d766
    Bart Van Assche authored
    
    
    If a cable is pulled while srp_connect_target() is in progress
    that can result in that function never to return. That makes the
    process, e.g. srp_daemon, that invoked this function unkillable.
    Avoid this by letting srp_connect_target() finish if the event
    IB_CM_TIMEWAIT_EXIT is received. This patch fixes a hang with the
    following call trace:
    
     [<ffffffff814eae85>] schedule_timeout+0x215/0x2e0
     [<ffffffff814eab03>] wait_for_common+0x123/0x180
     [<ffffffff814eac1d>] wait_for_completion+0x1d/0x20
     [<ffffffffa03b398c>] srp_connect_target+0x1dc/0x410 [ib_srp]
     [<ffffffffa03b5809>] srp_create_target+0xba9/0xe70 [ib_srp]
     [<ffffffff8133e590>] dev_attr_store+0x20/0x30
     [<ffffffff811eb8f5>] sysfs_write_file+0xe5/0x170
     [<ffffffff811767c8>] vfs_write+0xb8/0x1a0
     [<ffffffff811770c1>] sys_write+0x51/0x90
     [<ffffffff8100b072>] system_call_fastpath+0x16/0x1b
    
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    ac72d766