• Shiraz Saleem's avatar
    IB/core: Protect sysfs entry on ib_unregister_device · 06f8174a
    Shiraz Saleem authored
    ib_unregister_device is not protecting removal of sysfs entries.
    A call to ib_register_device in that window can result in
    duplicate sysfs entry warning. Move mutex_unlock to after
    ib_device_unregister_sysfs to protect against sysfs entry creation.
    
    This issue is exposed during driver load/unload stress test.
    
    WARNING: CPU: 5 PID: 4445 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x5f/0x70
    sysfs: cannot create duplicate filename '/class/infiniband/i40iw0'
    Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./Q87M-D2H
    BIOS F7 01/17/2014
    Workqueue: i40e i40e_service_task [i40e]
    Call Trace:
    dump_stack+0x67/0x98
    __warn+0xcc/0xf0
    warn_slowpath_fmt+0x4a/0x50
    ? kernfs_path_from_node+0x4b/0x60
    sysfs_warn_dup+0x5f/0x70
    sysfs_do_create_link_sd.isra.2+0xb7/0xc0
    sysfs_create_link+0x20/0x40
    device_add+0x28c/0x600
    ib_device_register_sysfs+0x58/0x170 [ib_core]
    ib_register_device+0x325/0x570 [ib_core]
    ? i40iw_register_rdma_device+0x1f4/0x400 [i40iw]
    ? kmem_cache_alloc_trace+0x143/0x330
    ? __raw_spin_lock_init+0x2d/0x50
    i40iw_register_rdma_device+0x2dc/0x400 [i40iw]
    i40iw_open+0x10a6/0x1950 [i40iw]
    ? i40iw_open+0xeab/0x1950 [i40iw]
    ? i40iw_make_cm_node+0x9c0/0x9c0 [i40iw]
    i40e_client_subtask+0xa4/0x110 [i40e]
    i40e_service_task+0xc2d/0x1320 [i40e]
    process_one_work+0x203/0x710
    ? process_one_work+0x16f/0x710
    worker_thread+0x126/0x4a0
    ? trace_hardirqs_on+0xd/0x10
    kthread+0x112/0x150
    ? process_one_work+0x710/0x710
    ? kthread_create_on_node+0x40/0x40
    ret_from_fork+0x2e/0x40
    ---[ end trace fd11b69e21ea7653 ]---
    Couldn't register device i40iw0 with driver model
    Signed-off-by: default avatarShiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: default avatarSindhu Devale <sindhu.devale@intel.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    06f8174a
device.c 31.1 KB