[PATCH 2.6.30] cfg80211: copy hold when replacing BSS

Johannes Berg
2009-04-16T10:16:17Z

When we receive a probe response frame we can replace the
BSS struct in our list -- but if that struct is held then
we need to hold the new one as well.

We really should fix this completely and not replace the
struct, but this is a bandaid for now.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/wireless/scan.c | 2 ++
1 file changed, 2 insertions(+)

--- wireless-testing.orig/net/wireless/scan.c 2009-04-16 12:12:08.000000000 +0200
+++ wireless-testing/net/wireless/scan.c 2009-04-16 12:12:21.000000000 +0200
@@ -364,6 +364,8 @@ cfg80211_bss_update(struct cfg80211_regi
list_replace(&found->list, &res->list);
rb_replace_node(&found->rbn, &res->rbn,
&dev->bss_tree);
+ /* XXX: workaround */
+ res->hold = found->hold;
kref_put(&found->ref, bss_release);
found = res;
} else if (found) {