All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tzung-Bi Shih <tzungbi@kernel.org>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: "James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Subject: Re: [PATCH] scsi: core: Correct wrong kfree() usage for `kobj->name`
Date: Fri, 16 Jan 2026 09:37:07 +0000	[thread overview]
Message-ID: <aWoGw8PEKj_5mncV@google.com> (raw)
In-Reply-To: <2026011614-exile-raisin-0ec4@gregkh>

On Fri, Jan 16, 2026 at 10:00:11AM +0100, Greg KH wrote:
> On Fri, Jan 16, 2026 at 08:13:59AM +0000, Tzung-Bi Shih wrote:
> > `kobj->name` should be freed by kfree_const()[1][2].  Correct it.
> > 
> > [1] https://elixir.bootlin.com/linux/v6.18/source/lib/kasprintf.c#L41
> > [2] https://elixir.bootlin.com/linux/v6.18/source/lib/kobject.c#L695
> > 
> > Cc: stable@vger.kernel.org
> > Fixes: b49493f99690 ("Fix a memory leak in scsi_host_dev_release()")
> > Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
> > ---
> >  drivers/scsi/hosts.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
> > index e047747d4ecf..50ec782cf9f4 100644
> > --- a/drivers/scsi/hosts.c
> > +++ b/drivers/scsi/hosts.c
> > @@ -373,7 +373,7 @@ static void scsi_host_dev_release(struct device *dev)
> >  		 * name as well as the proc dir structure are leaked.
> >  		 */
> >  		scsi_proc_hostdir_rm(shost->hostt);
> > -		kfree(dev_name(&shost->shost_dev));
> > +		kfree_const(dev_name(&shost->shost_dev));
> 
> Shouldn't the struct device name be freed by the driver core for this
> device when it goes out of scope?  Why is it being manually freed here
> at all?

Ah, correct.  I think the following patch is what it really needs:

diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 1b3fbd328277..e3362f445f93 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -373,7 +373,6 @@ static void scsi_host_dev_release(struct device *dev)
 		 * name as well as the proc dir structure are leaked.
 		 */
 		scsi_proc_hostdir_rm(shost->hostt);
-		kfree(dev_name(&shost->shost_dev));
 	}

 	kfree(shost->shost_data);
@@ -548,11 +547,7 @@ struct Scsi_Host *scsi_host_alloc(const struct scsi_host_template *sht, int priv
 		goto fail;
 	return shost;
  fail:
-	/*
-	 * Host state is still SHOST_CREATED and that is enough to release
-	 * ->shost_gendev. scsi_host_dev_release() will free
-	 * dev_name(&shost->shost_dev).
-	 */
+	put_device(&shost->shost_dev);
 	put_device(&shost->shost_gendev);

 	return NULL;

  reply	other threads:[~2026-01-16  9:37 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-16  8:13 [PATCH] scsi: core: Correct wrong kfree() usage for `kobj->name` Tzung-Bi Shih
2026-01-16  9:00 ` Greg KH
2026-01-16  9:37   ` Tzung-Bi Shih [this message]
2026-01-16 10:50     ` Greg KH
2026-01-17 19:48       ` Tzung-Bi Shih

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=aWoGw8PEKj_5mncV@google.com \
    --to=tzungbi@kernel.org \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=stable@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.