twx-linux/include
Haggai Eran 7c1eb45a22 IB/core: lock client data with lists_rwsem
An ib_client callback that is called with the lists_rwsem locked only for
read is protected from changes to the IB client lists, but not from
ib_unregister_device() freeing its client data. This is because
ib_unregister_device() will remove the device from the device list with
lists_rwsem locked for write, but perform the rest of the cleanup,
including the call to remove() without that lock.

Mark client data that is undergoing de-registration with a new going_down
flag in the client data context. Lock the client data list with lists_rwsem
for write in addition to using the spinlock, so that functions calling the
callback would be able to lock only lists_rwsem for read and let callbacks
sleep.

Since ib_unregister_client() now marks the client data context, no need for
remove() to search the context again, so pass the client data directly to
remove() callbacks.

Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2015-08-30 15:48:21 -04:00
..
acpi Additional ACPICA material for v4.2-rc1 2015-07-02 17:11:28 -07:00
asm-generic mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
clocksource
crypto
drm drm/edid: add function to help find SADs 2015-08-20 09:46:08 +10:00
dt-bindings The changes to the common clock framework for 4.2 are dominated by new 2015-07-01 19:22:00 -07:00
keys
kvm
linux svcrdma: Use max_sge_rd for destination read depths 2015-08-28 23:02:11 -04:00
math-emu
media media fixes for v4.2-rc8 2015-08-21 11:03:06 -07:00
memory
misc
net net: sched: fix refcount imbalance in actions 2015-07-30 14:20:39 -07:00
pcmcia
ras tracing: add trace event for memory-failure 2015-06-24 17:49:43 -07:00
rdma IB/core: lock client data with lists_rwsem 2015-08-30 15:48:21 -04:00
rxrpc
scsi Merge branch 'for-4.2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2015-08-17 16:20:45 -07:00
soc Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-06-26 12:20:00 -07:00
sound ASoC: topology: Add Kconfig option for topology 2015-08-17 22:45:47 -07:00
target iscsi-target: Fix iscsit_start_kthreads failure OOPs 2015-07-24 14:19:43 -07:00
trace Merge branch 'for-linus-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2015-06-30 20:07:45 -07:00
uapi IB/core: Add core header changes needed for OPA 2015-08-28 22:54:50 -04:00
video Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
xen
Kbuild