From patchwork Mon Feb 4 21:33:44 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Larry Finger X-Patchwork-Id: 218074 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 696922C02EE for ; Tue, 5 Feb 2013 08:34:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754840Ab3BDVeQ (ORCPT ); Mon, 4 Feb 2013 16:34:16 -0500 Received: from mail-oa0-f53.google.com ([209.85.219.53]:55447 "EHLO mail-oa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754161Ab3BDVeO (ORCPT ); Mon, 4 Feb 2013 16:34:14 -0500 Received: by mail-oa0-f53.google.com with SMTP id m1so6182610oag.26 for ; Mon, 04 Feb 2013 13:34:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer; bh=DEWQWw8rKnBsJE1O4EE+n6IxCYFMaF4318wfprTt4TM=; b=z3W2vCshhc1l4VJvfntHPe9+5HJ8IOjv+670LRFmdP65vLpj0a11oAQ+S0CDIZX0fY CC32a6Y4BJvSFuW5xZacEwtDf50y3fBIuGn7hIPdB3q1LSIO96PYjwYgLRtZWrjDheh1 F9akJcnJ2shylAM3iGhN/Yoi+oRXGM/UBaEKYgy0x0XO+lc+7GJwZdLQFqZcC8Iiyuxo RNFcf2LyEkPndTtuEeKCaHyNur3WDudDKNAjdEbc4AygYY+jSA3C4q0IqspBHa7iTxGS bTLLDpYsJnQ5tHzgptYPq6BPvrSOD8gfOYXOZSCkJZAO1LRUZLB0b58zRBBxL504Xyvr eR9Q== X-Received: by 10.182.72.5 with SMTP id z5mr16523277obu.24.1360013654128; Mon, 04 Feb 2013 13:34:14 -0800 (PST) Received: from linux-2liw.lan (CPE-75-81-36-228.kc.res.rr.com. [75.81.36.228]) by mx.google.com with ESMTPS id y4sm22781546oea.7.2013.02.04.13.34.11 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 04 Feb 2013 13:34:12 -0800 (PST) From: Larry Finger To: linville@tuxdriver.com, johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Larry Finger Subject: [PATCH] cfg80211: Fix memory leak Date: Mon, 4 Feb 2013 15:33:44 -0600 Message-Id: <1360013624-4973-1-git-send-email-Larry.Finger@lwfinger.net> X-Mailer: git-send-email 1.8.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Johannes Berg When a driver requests a specific regulatory domain after cfg80211 already has one, a struct ieee80211_regdomain is leaked. Reported-by: Larry Finger Tested-by: Larry Finger Signed-off-by: Larry Finger --- Johannes, I added a From: for you as the content of this patch is yours. Larry --- net/wireless/reg.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/wireless/reg.c b/net/wireless/reg.c index de02d63..558f524 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -2189,10 +2189,14 @@ static int __set_regdom(const struct ieee80211_regdomain *rd) * However if a driver requested this specific regulatory * domain we keep it for its private use */ - if (lr->initiator == NL80211_REGDOM_SET_BY_DRIVER) + if (lr->initiator == NL80211_REGDOM_SET_BY_DRIVER) { + const struct ieee80211_regdomain *tmp = + get_wiphy_regdom(request_wiphy); rcu_assign_pointer(request_wiphy->regd, rd); - else + rcu_free_regdom(tmp); + } else { kfree(rd); + } rd = NULL;