Skip to content
  • Mitko Haralanov's avatar
    IB/hfi1: Don't attempt to free resources if initialization failed · 94158442
    Mitko Haralanov authored
    Attempting to free resources which have not been allocated and
    initialized properly led to the following kernel backtrace:
    
        BUG: unable to handle kernel NULL pointer dereference at           (null)
        IP: [<ffffffffa09658fe>] unlock_exp_tids.isra.8+0x2e/0x120 [hfi1]
        PGD 852a43067 PUD 85d4a6067 PMD 0
        Oops: 0000 [#1] SMP
        CPU: 0 PID: 2831 Comm: osu_bw Tainted: G          IO 3.12.18-wfr+ #1
        task: ffff88085b15b540 ti: ffff8808588fe000 task.ti: ffff8808588fe000
        RIP: 0010:[<ffffffffa09658fe>]  [<ffffffffa09658fe>] unlock_exp_tids.isra.8+0x2e/0x120 [hfi1]
        RSP: 0018:ffff8808588ffde0  EFLAGS: 00010282
        RAX: 0000000000000000 RBX: ffff880858a31800 RCX: 0000000000000000
        RDX: ffff88085d971bc0 RSI: ffff880858a318f8 RDI: ffff880858a318c0
        RBP: ffff8808588ffe20 R08: 0000000000000000 R09: 0000000000000000
        R10: ffff88087ffd6f40 R11: 0000000001100348 R12: ffff880852900000
        R13: ffff880858a318c0 R14: 0000000000000000 R15: ffff88085d971be8
        FS:  00007f4674e83740(0000) GS:ffff88087f400000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000000 CR3: 000000085c377000 CR4: 00000000001407f0
        Stack:
         ffffffffa0941a71 ffff880858a318f8 ffff88085d971bc0 ffff880858a31800
         ffff880852900000 ffff880858a31800 00000000003ffff7 ffff88085d971bc0
         ffff8808588ffe60 ffffffffa09663fc ffff8808588ffe60 ffff880858a31800
        Call Trace:
         [<ffffffffa0941a71>] ? find_mmu_handler+0x51/0x70 [hfi1]
         [<ffffffffa09663fc>] hfi1_user_exp_rcv_free+0x6c/0x120 [hfi1]
         [<ffffffffa0932809>] hfi1_file_close+0x1a9/0x340 [hfi1]
         [<ffffffff8116c189>] __fput+0xe9/0x270
         [<ffffffff8116c35e>] ____fput+0xe/0x10
         [<ffffffff81065707>] task_work_run+0xa7/0xe0
         [<ffffffff81002969>] do_notify_resume+0x59/0x80
         [<ffffffff814ffc1a>] int_signal+0x12/0x17
    
    This commit re-arranges the context initialization code in a way that
    would allow for context event flags to be used to determine whether
    the context has been successfully initialized.
    
    In turn, this can be used to skip the resource de-allocation if they
    were never allocated in the first place.
    
    Fixes: 3abb33ac
    
     ("staging/hfi1: Add TID cache receive init and free funcs")
    Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: default avatarMitko Haralanov <mitko.haralanov@intel.com>
    Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com.>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    94158442