diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-05-07 11:47:01 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-05-21 21:47:42 -0400 |
commit | 4caf86c6928cfaca270327bc944f901c2e2a8f50 (patch) | |
tree | 6f6a1ecac1a4399c6597510f4076e19b1e30f10e /net/mac80211/mesh_pathtbl.c | |
parent | 5194ee82b4aafc35b32c96db11bdacea9bf548be (diff) |
mac80211: Prepare mesh_table_grow to failing copy_node callback.
The mesh_path_node_copy() performs kmalloc() and thus - may fail
(well, it does not now, but I'm fixing this right now). Its caller -
the mesh_table_grow() - isn't prepared for such a trick yet.
This preparation is just flush the new hash and make copy_node()
return an int value.
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.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c index 0b6c4bfe3e78..512bfa112c6a 100644 --- a/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c | |||
@@ -463,7 +463,7 @@ static void mesh_path_node_free(struct hlist_node *p, bool free_leafs) | |||
463 | kfree(node); | 463 | kfree(node); |
464 | } | 464 | } |
465 | 465 | ||
466 | static void mesh_path_node_copy(struct hlist_node *p, struct mesh_table *newtbl) | 466 | static int mesh_path_node_copy(struct hlist_node *p, struct mesh_table *newtbl) |
467 | { | 467 | { |
468 | struct mesh_path *mpath; | 468 | struct mesh_path *mpath; |
469 | struct mpath_node *node, *new_node; | 469 | struct mpath_node *node, *new_node; |
@@ -476,6 +476,7 @@ static void mesh_path_node_copy(struct hlist_node *p, struct mesh_table *newtbl) | |||
476 | hash_idx = mesh_table_hash(mpath->dst, mpath->dev, newtbl); | 476 | hash_idx = mesh_table_hash(mpath->dst, mpath->dev, newtbl); |
477 | hlist_add_head(&new_node->list, | 477 | hlist_add_head(&new_node->list, |
478 | &newtbl->hash_buckets[hash_idx]); | 478 | &newtbl->hash_buckets[hash_idx]); |
479 | return 0; | ||
479 | } | 480 | } |
480 | 481 | ||
481 | int mesh_pathtbl_init(void) | 482 | int mesh_pathtbl_init(void) |