aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mesh_pathtbl.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-05-06 10:51:31 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-12 21:22:19 -0400
commit6d6936e2ea82ebcbdd12d489b7b5ccf430de52f1 (patch)
treebf731ba146332b201c79e28629fe74262b7bff5c /net/mac80211/mesh_pathtbl.c
parent0eb03d5a14377eecf6ed0ebf3cc2c9f48c12c7c6 (diff)
Fix potential scheduling while atomic in mesh_path_add.
Calling synchronize_rcu() under write-lock-ed pathtbl_resize_lock may result in this warning (and other side effects). It looks safe just dropping this lock before calling synchronize_rcu. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mesh_pathtbl.c')
-rw-r--r--net/mac80211/mesh_pathtbl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c
index 1d2d051e5976..99c2d360888e 100644
--- a/net/mac80211/mesh_pathtbl.c
+++ b/net/mac80211/mesh_pathtbl.c
@@ -220,9 +220,10 @@ endadd:
220 return -ENOMEM; 220 return -ENOMEM;
221 } 221 }
222 rcu_assign_pointer(mesh_paths, newtbl); 222 rcu_assign_pointer(mesh_paths, newtbl);
223 write_unlock(&pathtbl_resize_lock);
224
223 synchronize_rcu(); 225 synchronize_rcu();
224 mesh_table_free(oldtbl, false); 226 mesh_table_free(oldtbl, false);
225 write_unlock(&pathtbl_resize_lock);
226 } 227 }
227endadd2: 228endadd2:
228 return err; 229 return err;