Subject: linux-next: manual merge of the net tree with the wireless-current tree

From: Stephen Rothwell <[email-masked]>
Date: Wed, 22 Jul 2009 12:00:00 +1000

Hi David,

Today's linux-next merge of the net tree got a conflict in
net/wireless/scan.c between commit
9e81eccf199d910e5ea8db377a43478e4eccd033 ("cfg80211: double free in
__cfg80211_scan_done") from the wireless-current tree and commit
667503ddcb96f3b10211f997fe55907fa7509841 ("cfg80211: fix locking") from
the net tree.

Overlapping additions.  I fixed it up (I think - see below) and can carry
the fix as ncessary.
-- 
Cheers,
Stephen Rothwell                    [email-masked]

diff --cc net/wireless/scan.c
index 9271118,4f552c3..0000000
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@@ -35,8 -48,10 +48,8 @@@ void __cfg80211_scan_done(struct work_s
  	else
  		nl80211_send_scan_done(wiphy_to_dev(request->wiphy), dev);
  
 -	wiphy_to_dev(request->wiphy)->scan_req = NULL;
 -
  #ifdef CONFIG_WIRELESS_EXT
- 	if (!aborted) {
+ 	if (!request->aborted) {
  		memset(&wrqu, 0, sizeof(wrqu));
  
  		wireless_send_event(dev, SIOCGIWSCAN, &wrqu, NULL);
@@@ -46,9 -61,24 +59,25 @@@
  	dev_put(dev);
  
   out:
 +	wiphy_to_dev(request->wiphy)->scan_req = NULL;
+ 	cfg80211_unlock_rdev(rdev);
  	kfree(request);
  }
+ 
+ void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted)
+ {
+ 	struct net_device *dev = dev_get_by_index(&init_net, request->ifidx);
+ 	if (WARN_ON(!dev)) {
+ 		kfree(request);
+ 		return;
+ 	}
+ 
+ 	WARN_ON(request != wiphy_to_dev(request->wiphy)->scan_req);
+ 
+ 	request->aborted = aborted;
+ 	schedule_work(&wiphy_to_dev(request->wiphy)->scan_done_wk);
+ 	dev_put(dev);
+ }
  EXPORT_SYMBOL(cfg80211_scan_done);
  
  static void bss_release(struct kref *ref)