From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Zhou Guanghui <zhouguanghui1@huawei.com>,
Mike Christie <michael.christie@oracle.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Sasha Levin <sashal@kernel.org>,
lduncan@suse.com, cleech@redhat.com, jejb@linux.ibm.com,
open-iscsi@googlegroups.com, linux-scsi@vger.kernel.org
Subject: [PATCH AUTOSEL 5.15 28/31] scsi: iscsi: Fix possible memory leak when device_register() failed
Date: Wed, 23 Nov 2022 07:42:29 -0500 [thread overview]
Message-ID: <20221123124234.265396-28-sashal@kernel.org> (raw)
In-Reply-To: <20221123124234.265396-1-sashal@kernel.org>
From: Zhou Guanghui <zhouguanghui1@huawei.com>
[ Upstream commit f014165faa7b953b81dcbf18835936e5f8d01f2a ]
If device_register() returns error, the name allocated by the
dev_set_name() need be freed. As described in the comment of
device_register(), we should use put_device() to give up the reference in
the error path.
Fix this by calling put_device(), the name will be freed in the
kobject_cleanup(), and this patch modified resources will be released by
calling the corresponding callback function in the device_release().
Signed-off-by: Zhou Guanghui <zhouguanghui1@huawei.com>
Link: https://lore.kernel.org/r/20221110033729.1555-1-zhouguanghui1@huawei.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/scsi_transport_iscsi.c | 31 +++++++++++++++--------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index f46ae5391758..cc39cbef9d7f 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -232,7 +232,7 @@ iscsi_create_endpoint(int dd_size)
dev_set_name(&ep->dev, "ep-%d", id);
err = device_register(&ep->dev);
if (err)
- goto free_id;
+ goto put_dev;
err = sysfs_create_group(&ep->dev.kobj, &iscsi_endpoint_group);
if (err)
@@ -246,10 +246,12 @@ iscsi_create_endpoint(int dd_size)
device_unregister(&ep->dev);
return NULL;
-free_id:
+put_dev:
mutex_lock(&iscsi_ep_idr_mutex);
idr_remove(&iscsi_ep_idr, id);
mutex_unlock(&iscsi_ep_idr_mutex);
+ put_device(&ep->dev);
+ return NULL;
free_ep:
kfree(ep);
return NULL;
@@ -767,7 +769,7 @@ iscsi_create_iface(struct Scsi_Host *shost, struct iscsi_transport *transport,
err = device_register(&iface->dev);
if (err)
- goto free_iface;
+ goto put_dev;
err = sysfs_create_group(&iface->dev.kobj, &iscsi_iface_group);
if (err)
@@ -781,9 +783,8 @@ iscsi_create_iface(struct Scsi_Host *shost, struct iscsi_transport *transport,
device_unregister(&iface->dev);
return NULL;
-free_iface:
- put_device(iface->dev.parent);
- kfree(iface);
+put_dev:
+ put_device(&iface->dev);
return NULL;
}
EXPORT_SYMBOL_GPL(iscsi_create_iface);
@@ -1252,15 +1253,15 @@ iscsi_create_flashnode_sess(struct Scsi_Host *shost, int index,
err = device_register(&fnode_sess->dev);
if (err)
- goto free_fnode_sess;
+ goto put_dev;
if (dd_size)
fnode_sess->dd_data = &fnode_sess[1];
return fnode_sess;
-free_fnode_sess:
- kfree(fnode_sess);
+put_dev:
+ put_device(&fnode_sess->dev);
return NULL;
}
EXPORT_SYMBOL_GPL(iscsi_create_flashnode_sess);
@@ -1300,15 +1301,15 @@ iscsi_create_flashnode_conn(struct Scsi_Host *shost,
err = device_register(&fnode_conn->dev);
if (err)
- goto free_fnode_conn;
+ goto put_dev;
if (dd_size)
fnode_conn->dd_data = &fnode_conn[1];
return fnode_conn;
-free_fnode_conn:
- kfree(fnode_conn);
+put_dev:
+ put_device(&fnode_conn->dev);
return NULL;
}
EXPORT_SYMBOL_GPL(iscsi_create_flashnode_conn);
@@ -4838,7 +4839,7 @@ iscsi_register_transport(struct iscsi_transport *tt)
dev_set_name(&priv->dev, "%s", tt->name);
err = device_register(&priv->dev);
if (err)
- goto free_priv;
+ goto put_dev;
err = sysfs_create_group(&priv->dev.kobj, &iscsi_transport_group);
if (err)
@@ -4873,8 +4874,8 @@ iscsi_register_transport(struct iscsi_transport *tt)
unregister_dev:
device_unregister(&priv->dev);
return NULL;
-free_priv:
- kfree(priv);
+put_dev:
+ put_device(&priv->dev);
return NULL;
}
EXPORT_SYMBOL_GPL(iscsi_register_transport);
--
2.35.1
next prev parent reply other threads:[~2022-11-23 12:49 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-23 12:42 [PATCH AUTOSEL 5.15 01/31] Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 02/31] dt-bindings: input: touchscreen: Add compatible for Goodix GT7986U chip Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 03/31] ASoC: Intel: bytcht_es8316: Add quirk for the Nanote UMPC-01 Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 04/31] ASoC: Intel: soc-acpi: add ES83x6 support to IceLake Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 05/31] tools: iio: iio_generic_buffer: Fix read size Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 06/31] ASoC: hda: intel-dsp-config: add ES83x6 quirk for IceLake Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 07/31] serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios() Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 08/31] Input: goodix - try resetting the controller when no config is set Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 09/31] Input: soc_button_array - add use_low_level_irq module parameter Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 10/31] Input: soc_button_array - add Acer Switch V 10 to dmi_use_low_level_irq[] Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 11/31] Input: i8042 - apply probe defer to more ASUS ZenBook models Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 12/31] ASoC: stm32: dfsdm: manage cb buffers cleanup Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 13/31] xen-pciback: Allow setting PCI_MSIX_FLAGS_MASKALL too Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 14/31] xen/platform-pci: add missing free_irq() in error path Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 15/31] platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr() Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 16/31] platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017) Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 17/31] drm/amdgpu: disable BACO support on more cards Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 18/31] zonefs: fix zone report size in __zonefs_io_error() Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 19/31] platform/surface: aggregator_registry: Add support for Surface Laptop 5 Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 20/31] platform/x86: hp-wmi: Ignore Smart Experience App event Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 21/31] platform/x86: ideapad-laptop: Fix interrupt storm on fn-lock toggle on some Yoga laptops Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 22/31] tcp: configurable source port perturb table size Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 23/31] block: make blk_set_default_limits() private Sasha Levin
2022-11-23 13:44 ` Jens Axboe
2022-11-30 11:05 ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 24/31] dm-integrity: set dma_alignment limit in io_hints Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 25/31] dm-log-writes: " Sasha Levin
2022-11-23 15:04 ` Keith Busch
2022-11-30 11:06 ` Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 26/31] net: usb: qmi_wwan: add Telit 0x103a composition Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 27/31] scsi: mpi3mr: Suppress command reply debug prints Sasha Levin
2022-11-23 12:42 ` Sasha Levin [this message]
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 29/31] gpu: host1x: Avoid trying to use GART on Tegra20 Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 30/31] dm integrity: flush the journal on suspend Sasha Levin
2022-11-23 12:42 ` [PATCH AUTOSEL 5.15 31/31] dm integrity: clear " Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221123124234.265396-28-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=cleech@redhat.com \
--cc=jejb@linux.ibm.com \
--cc=lduncan@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=michael.christie@oracle.com \
--cc=open-iscsi@googlegroups.com \
--cc=stable@vger.kernel.org \
--cc=zhouguanghui1@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox