Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp436131yba; Wed, 15 May 2019 04:04:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqxMwMkErQzhUcxXEWdVgsR4e8TMLVyaBzk/uW8ABMRyaeUY5gOBhVCoioWV3q6HWx3HXAt+ X-Received: by 2002:a63:9214:: with SMTP id o20mr43598664pgd.203.1557918294121; Wed, 15 May 2019 04:04:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557918294; cv=none; d=google.com; s=arc-20160816; b=ZMG2V3wUFBforxn/ZAxSGAbY1oDqdeIqxom6Jpf/M1rcd/hmSUEqPyXuCdg8W/5oFl TgsxUhg5ssA0WakYqIgn4nu+ZcWHGBi8DTe3tRGdKbRLaM7rREt3igBqotcLXooJwKfz P2GrGbyZO60wQ5U0sRuJg1Tch3IAxe9KfMow48EDOSG9eRXM5joESpxlR+8SV9DLLTU7 Zz8CPqnisscBSot1UhgDkQDRz9FokcEjGum2aiYynZkvTAEcMztOkM+uqi8/z9FGl1Bh nfHFlk3HvHVdtbRIEVX4Z3tGeAPPQL+KS6XWgKOraJOOqgICPbydPK8rePTq7nUQ4Yau pAxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qQ7Kq/NhgnS+QOZkb4Si3NMYtkvBaweMYV3Vh4rMr2c=; b=zk8cDuK5MdrDvnm3a9NCg5uW4VW5AVLnqgGKl1k5FjEb5I2WzFT+KvCuL7BhT4Ym93 qxUeCxoPVTThx4T0i8BB0KkI5IadjFU3XBilT7knr81ul41zYzdMtiPdYFJwzHcVY8SN U+Y1A1oh33F3+p6ZcHwv8EsxAjgPk9SuXA+N80VRkc65zxk9BHlMg5GJfBkf4gyHYbuf AA6lgPNz1vail1eh89u0MVO5J5mOaeEHOk0JzWpJumTpRqObpPSkL0BOjpi5lqKEOGnP J6lUWCc/D+OLv56OH9OqEHjEOVEMQ75GU4qlSvo0Bc074l1OnKAH3D5lRpBY94AyYINR RZqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Ul6+ij6u; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 63si1544782ple.154.2019.05.15.04.04.36; Wed, 15 May 2019 04:04:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Ul6+ij6u; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727626AbfEOLBF (ORCPT + 99 others); Wed, 15 May 2019 07:01:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:58040 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727612AbfEOLBE (ORCPT ); Wed, 15 May 2019 07:01:04 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1B14E20881; Wed, 15 May 2019 11:01:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557918063; bh=YkaUSEF3X+pQvSn/4Ovd7ULUk+pez2JqR3/Py6kNyGM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ul6+ij6uVedL29qPAF0jWnqW6ANcKe1ttNKHeqzA0Kz62AUOrAOWqgYVdBWCR67Yh HhOV/v8P9749ek3MD7YGc9Jm4uYyyoJZBW9zvk8oCDTTeT7A1M5H+q6mZ09oqrc/mB OjO0iA/+jJzaltukoPtLGJu2dXbWWkMEhrg8OkEE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Tobin C. Harding" , "David S. Miller" Subject: [PATCH 3.18 78/86] bridge: Fix error path for kobject_init_and_add() Date: Wed, 15 May 2019 12:55:55 +0200 Message-Id: <20190515090655.622147146@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190515090642.339346723@linuxfoundation.org> References: <20190515090642.339346723@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Tobin C. Harding" [ Upstream commit bdfad5aec1392b93495b77b864d58d7f101dc1c1 ] Currently error return from kobject_init_and_add() is not followed by a call to kobject_put(). This means there is a memory leak. We currently set p to NULL so that kfree() may be called on it as a noop, the code is arguably clearer if we move the kfree() up closer to where it is called (instead of after goto jump). Remove a goto label 'err1' and jump to call to kobject_put() in error return from kobject_init_and_add() fixing the memory leak. Re-name goto label 'put_back' to 'err1' now that we don't use err1, following current nomenclature (err1, err2 ...). Move call to kfree out of the error code at bottom of function up to closer to where memory was allocated. Add comment to clarify call to kfree(). Signed-off-by: Tobin C. Harding Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/bridge/br_if.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c @@ -460,13 +460,15 @@ int br_add_if(struct net_bridge *br, str call_netdevice_notifiers(NETDEV_JOIN, dev); err = dev_set_allmulti(dev, 1); - if (err) - goto put_back; + if (err) { + kfree(p); /* kobject not yet init'd, manually free */ + goto err1; + } err = kobject_init_and_add(&p->kobj, &brport_ktype, &(dev->dev.kobj), SYSFS_BRIDGE_PORT_ATTR); if (err) - goto err1; + goto err2; err = br_sysfs_addif(p); if (err) @@ -531,12 +533,9 @@ err3: sysfs_remove_link(br->ifobj, p->dev->name); err2: kobject_put(&p->kobj); - p = NULL; /* kobject_put frees */ -err1: dev_set_allmulti(dev, -1); -put_back: +err1: dev_put(dev); - kfree(p); return err; }