diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-08-31 10:25:26 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-08-31 10:25:26 +0200 |
commit | 02b643b643254ec79b5f9aaa143e10be68eabdab (patch) | |
tree | 57ec83eebab74324465199a3f52f4f7862177ee6 /drivers/target/target_core_configfs.c | |
parent | d1ee8bc195ffedbf91af0245a2406d6ebd2578f8 (diff) | |
parent | 4c09e0d6ba65507a0ee0ca9abc5335e4f7bd7404 (diff) |
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/target/target_core_configfs.c')
-rw-r--r-- | drivers/target/target_core_configfs.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c index c2e9fea90b4a..860e84046177 100644 --- a/drivers/target/target_core_configfs.c +++ b/drivers/target/target_core_configfs.c @@ -457,8 +457,15 @@ void target_unregister_template(const struct target_core_fabric_ops *fo) if (!strcmp(t->tf_ops->name, fo->name)) { BUG_ON(atomic_read(&t->tf_access_cnt)); list_del(&t->tf_list); + mutex_unlock(&g_tf_lock); + /* + * Wait for any outstanding fabric se_deve_entry->rcu_head + * callbacks to complete post kfree_rcu(), before allowing + * fabric driver unload of TFO->module to proceed. + */ + rcu_barrier(); kfree(t); - break; + return; } } mutex_unlock(&g_tf_lock); |