From: Luis R. Rodriguez Date: Wed, 13 May 2009 21:04:42 +0000 (-0400) Subject: cfg80211: fix race between core hint and driver's custom apply X-Git-Tag: v2.6.29.5~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1cc5093ab054f5d2c4942d3f5b0bf7b106ce975;p=thirdparty%2Fkernel%2Fstable.git cfg80211: fix race between core hint and driver's custom apply commit 5078b2e32ad4b1f753b1c837c15892202f753c97 upstream. Its possible for cfg80211 to have scheduled the work and for the global workqueue to not have kicked in prior to a cfg80211 driver's regulatory hint or wiphy_apply_custom_regulatory(). Although this is very unlikely its possible and should fix this race. When this race would happen you are expected to have hit a null pointer dereference panic. Signed-off-by: Luis R. Rodriguez Tested-by: Alan Jenkins Signed-off-by: John W. Linville Signed-off-by: Greg Kroah-Hartman --- diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 4f9ff2a6a297a..66cebb5f9ff2c 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -1497,6 +1497,13 @@ int regulatory_init(void) "using static definition\n"); #endif + /* + * This ensures last_request is populated once modules + * come swinging in and calling regulatory hints and + * wiphy_apply_custom_regulatory(). + */ + flush_scheduled_work(); + return 0; }