Message ID | 20221110034809.17258-1-yangyingliang@huawei.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp710264wru; Wed, 9 Nov 2022 19:55:24 -0800 (PST) X-Google-Smtp-Source: AMsMyM6MDVr7KLLDH1mhhKnvhht5oAO+FOZ/c14Mt0WnlVzjPQz8RFlT+yANIRurl1tt1zH/2IHd X-Received: by 2002:a63:1b16:0:b0:46b:8e7:3e0a with SMTP id b22-20020a631b16000000b0046b08e73e0amr52904034pgb.86.1668052524033; Wed, 09 Nov 2022 19:55:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668052524; cv=none; d=google.com; s=arc-20160816; b=QL3mWnjZg+3exCtMFl8uBVW3zf9UHSSYeJ01NBQijDOKop3MAUw5uVYuMvRexF4EPH oJw3EgkH3glIM0fGCkWQJcWUY1oupV01QRJ9Qw/oci+Mb+CshyTa4ku/s4p+hUGFh+f9 C3Lz0broRM+7nVycObtzTyjWz0+2JQj2l1eFSS2ofiUPyb/MDsjJVL1XJSi3VtYGLxzF h6iWuyd8AT+i79qDhuC9O0SW60TYvBO7NR2GZcWuxn3DfZcZXCPpHFsojCTC0HnSUzet pAxduSbwB94DzYc6Rt9PewDog1vA39BNdl4owHu9b2XBR8HG7klQbHcWDS/U+dTKdECO Q6jQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=qFDueI2gufmS1+tTNfaCSWXVzVoUVqFvgtj8GR/zT/c=; b=SROaGEQGO4FG3YDtCDwPGef3XSmiVZHPNtFdhYM/gLXU7peFxT3Mw9dJMzjGEJ/2yi MG+BGvajqGKkdNTwxM+ArnW6vMebo2YB+mMEzSL9Vv8GDJPO7+9YIDSQYsh8ySuf3urU qR73PW9vbkT1/C0XwIW6fUgQK0pWxALgyHkNt1DqmBUOwzfDx3hQ2ocJejwTOzVN4pHU UuodH7QXZjF3i+gLe9T2Jjn40t2QHV+OHaRsY2LQs7ocxIRgKvLIIFCxjGyh/PDzGh85 X8B0G81Z2RalY7908Tsai9IsEHo1CijmDFdU+8DoiHpESHgyS19/qNixl+mfqH30xog0 1Z1Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u2-20020a627902000000b00564874e14e9si17887879pfc.280.2022.11.09.19.55.10; Wed, 09 Nov 2022 19:55:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232584AbiKJDtq (ORCPT <rfc822;dexuan.linux@gmail.com> + 99 others); Wed, 9 Nov 2022 22:49:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232318AbiKJDto (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 9 Nov 2022 22:49:44 -0500 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CADAA20BE4; Wed, 9 Nov 2022 19:49:42 -0800 (PST) Received: from dggpemm500022.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4N77BG6QZmzmVGY; Thu, 10 Nov 2022 11:49:26 +0800 (CST) Received: from dggpemm500007.china.huawei.com (7.185.36.183) by dggpemm500022.china.huawei.com (7.185.36.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 10 Nov 2022 11:49:40 +0800 Received: from huawei.com (10.175.103.91) by dggpemm500007.china.huawei.com (7.185.36.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 10 Nov 2022 11:49:40 +0800 From: Yang Yingliang <yangyingliang@huawei.com> To: <open-iscsi@googlegroups.com>, <linux-scsi@vger.kernel.org>, <linux-kernel@vger.kernel.org> CC: <lduncan@suse.com>, <cleech@redhat.com>, <michael.christie@oracle.com>, <jejb@linux.ibm.com>, <martin.petersen@oracle.com>, <gregkh@linuxfoundation.org>, <rafael@kernel.org>, <yangyingliang@huawei.com> Subject: [PATCH] drivers: base: transport_class: fix possible memory leak Date: Thu, 10 Nov 2022 11:48:09 +0800 Message-ID: <20221110034809.17258-1-yangyingliang@huawei.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.103.91] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpemm500007.china.huawei.com (7.185.36.183) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749079842905079042?= X-GMAIL-MSGID: =?utf-8?q?1749079842905079042?= |
Series |
drivers: base: transport_class: fix possible memory leak
|
|
Commit Message
Yang Yingliang
Nov. 10, 2022, 3:48 a.m. UTC
Current some drivers(like iscsi) call transport_register_device()
failed, they don't call transport_destroy_device() to release the
memory allocated in transport_setup_device(), because they don't
know what was done, it should be internal thing to release the
resource in register function. So fix this leak by calling destroy
function inside register function.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
---
include/linux/transport_class.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
Comments
On Thu, Nov 10, 2022 at 11:48:09AM +0800, Yang Yingliang wrote: > Current some drivers(like iscsi) call transport_register_device() > failed, they don't call transport_destroy_device() to release the > memory allocated in transport_setup_device(), because they don't > know what was done, it should be internal thing to release the > resource in register function. So fix this leak by calling destroy > function inside register function. > > Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> > --- > include/linux/transport_class.h | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h > index 63076fb835e3..f4835250bbfc 100644 > --- a/include/linux/transport_class.h > +++ b/include/linux/transport_class.h > @@ -70,8 +70,15 @@ void transport_destroy_device(struct device *); > static inline int > transport_register_device(struct device *dev) > { > + int ret; > + > transport_setup_device(dev); > - return transport_add_device(dev); > + ret = transport_add_device(dev); > + if (ret) { > + transport_destroy_device(dev); > + } Please use scripts/checkpatch.pl on your patches before sending them out so you don't get grumpy maintainers asking you to use scripts/checkpatch.pl on your patches :) thanks, greg k-h
Hi Greg, On 2022/11/10 16:18, Greg KH wrote: > On Thu, Nov 10, 2022 at 11:48:09AM +0800, Yang Yingliang wrote: >> Current some drivers(like iscsi) call transport_register_device() >> failed, they don't call transport_destroy_device() to release the >> memory allocated in transport_setup_device(), because they don't >> know what was done, it should be internal thing to release the >> resource in register function. So fix this leak by calling destroy >> function inside register function. >> >> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") >> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> >> --- >> include/linux/transport_class.h | 9 ++++++++- >> 1 file changed, 8 insertions(+), 1 deletion(-) >> >> diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h >> index 63076fb835e3..f4835250bbfc 100644 >> --- a/include/linux/transport_class.h >> +++ b/include/linux/transport_class.h >> @@ -70,8 +70,15 @@ void transport_destroy_device(struct device *); >> static inline int >> transport_register_device(struct device *dev) >> { >> + int ret; >> + >> transport_setup_device(dev); >> - return transport_add_device(dev); >> + ret = transport_add_device(dev); >> + if (ret) { >> + transport_destroy_device(dev); >> + } > Please use scripts/checkpatch.pl on your patches before sending them out Sure, of course. :) > so you don't get grumpy maintainers asking you to use > scripts/checkpatch.pl on your patches :) I sent a fix patch to iscsi system earlier: https://patchwork.kernel.org/project/linux-scsi/patch/20221109092421.3111613-1-yangyingliang@huawei.com/ Mike give his point in the mail, so I send a new patch keep iscsi maintainers Cced. Thanks, Yang > > thanks, > > greg k-h > > .
On Thu, Nov 10, 2022 at 04:44:16PM +0800, Yang Yingliang wrote: > Hi Greg, > > On 2022/11/10 16:18, Greg KH wrote: > > On Thu, Nov 10, 2022 at 11:48:09AM +0800, Yang Yingliang wrote: > > > Current some drivers(like iscsi) call transport_register_device() > > > failed, they don't call transport_destroy_device() to release the > > > memory allocated in transport_setup_device(), because they don't > > > know what was done, it should be internal thing to release the > > > resource in register function. So fix this leak by calling destroy > > > function inside register function. > > > > > > Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") > > > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> > > > --- > > > include/linux/transport_class.h | 9 ++++++++- > > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > > > diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h > > > index 63076fb835e3..f4835250bbfc 100644 > > > --- a/include/linux/transport_class.h > > > +++ b/include/linux/transport_class.h > > > @@ -70,8 +70,15 @@ void transport_destroy_device(struct device *); > > > static inline int > > > transport_register_device(struct device *dev) > > > { > > > + int ret; > > > + > > > transport_setup_device(dev); > > > - return transport_add_device(dev); > > > + ret = transport_add_device(dev); > > > + if (ret) { > > > + transport_destroy_device(dev); > > > + } > > Please use scripts/checkpatch.pl on your patches before sending them out > Sure, of course. :) > > so you don't get grumpy maintainers asking you to use > > scripts/checkpatch.pl on your patches :) > I sent a fix patch to iscsi system earlier: > https://patchwork.kernel.org/project/linux-scsi/patch/20221109092421.3111613-1-yangyingliang@huawei.com/ > > Mike give his point in the mail, so I send a new patch keep iscsi > maintainers Cced. That's fine, but the code you wrote here should look different as it does not follow our coding style rules. That is the point I was trying to make. thanks, greg k-h
diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h index 63076fb835e3..f4835250bbfc 100644 --- a/include/linux/transport_class.h +++ b/include/linux/transport_class.h @@ -70,8 +70,15 @@ void transport_destroy_device(struct device *); static inline int transport_register_device(struct device *dev) { + int ret; + transport_setup_device(dev); - return transport_add_device(dev); + ret = transport_add_device(dev); + if (ret) { + transport_destroy_device(dev); + } + + return ret; } static inline void