diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-07-30 08:27:13 +0300 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2015-07-31 08:06:29 +0300 |
commit | 9450918293b3c35f11883231a53da1aed2c78403 (patch) | |
tree | ed355995df7cb6b312afbad50afd570024e11529 /drivers/target/iscsi | |
parent | c4cfdd81c8fde84e2c75bc90533c7e1276937d3a (diff) | |
download | linux-9450918293b3c35f11883231a53da1aed2c78403.tar.xz |
target: Perform RCU callback barrier before backend/fabric unload
This patch addresses a v4.2-rc1 regression where backend driver
module unload happening immediately after TBO->free_device()
does internal call_rcu(), will currently result in IRQ context
rcu_process_callbacks() use-after-free paging OOPsen.
It adds the missing rcu_barrier() in target_backend_unregister()
to perform an explicit RCU barrier waiting for all RCU callbacks
to complete before releasing target_backend_ops memory, and
allowing TBO->module exit to proceed.
Also, do the same for fabric drivers in target_unregister_template()
to ensure se_deve_entry->rcu_head -> kfree_rcu() callbacks have
completed, before allowing target_core_fabric_ops->owner module
exit to proceed.
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/iscsi')
0 files changed, 0 insertions, 0 deletions