diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 241bddd0b4f19b2bb17009a295bf023345bfdc7c..43bdb1372caee29772f63397dd7ce1f7e7edd963 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -447,6 +447,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
 
 	rdev = __cfg80211_drv_from_info(info);
 	if (IS_ERR(rdev)) {
+		mutex_unlock(&cfg80211_mutex);
 		result = PTR_ERR(rdev);
 		goto unlock;
 	}