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.30-rc8~4^2~28^2~2 X-Git-Url: http://ftp.safe.ca/?a=commitdiff_plain;h=5078b2e32ad4b1f753b1c837c15892202f753c97;p=safe%2Fjmp%2Flinux-2.6 cfg80211: fix race between core hint and driver's custom apply 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. Cc: stable@kernel.org Signed-off-by: Luis R. Rodriguez Tested-by: Alan Jenkins Signed-off-by: John W. Linville --- diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 08265ca..487cb62 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -1551,6 +1551,13 @@ static int regulatory_hint_core(const char *alpha2) queue_regulatory_request(request); + /* + * 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; }