All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>
Cc: Guangshuo Li <lgs201920130244@gmail.com>,
	linux-kernel@vger.kernel.org, driver-core@lists.linux.dev
Subject: Re: [PATCH] ALSA: pcmtest: fix reference leak on failed device registration
Date: Fri, 17 Apr 2026 12:52:51 +0200	[thread overview]
Message-ID: <874il9eu4c.wl-tiwai@suse.de> (raw)
In-Reply-To: <87h5padnof.wl-tiwai@suse.de>

On Fri, 17 Apr 2026 09:57:20 +0200,
Takashi Iwai wrote:
> 
> On Wed, 15 Apr 2026 21:31:38 +0200,
> Guangshuo Li wrote:
> > 
> > When platform_device_register() fails in mod_init(), the embedded struct
> > device in pcmtst_pdev has already been initialized by
> > device_initialize(), but the failure path returns the error without
> > dropping the device reference for the current platform device:
> > 
> >   mod_init()
> >     -> platform_device_register(&pcmtst_pdev)
> >        -> device_initialize(&pcmtst_pdev.dev)
> >        -> setup_pdev_dma_masks(&pcmtst_pdev)
> >        -> platform_device_add(&pcmtst_pdev)
> > 
> > This leads to a reference leak when platform_device_register() fails.
> > Fix this by calling platform_device_put() before returning the error.
> > 
> > The issue was identified by a static analysis tool I developed and
> > confirmed by manual review.
> > 
> > Fixes: 315a3d57c64c5 ("ALSA: Implement the new Virtual PCM Test Driver")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
> 
> Thanks, applied now.

... and now I looked through the whole tree, and noticed that the
majority of callers of platform_device_register() don't care the error
cases without calling platform_device_put().  There are over a hundred
callers of platform_device_register() while only 5 or so are doing the
proper cleanup at the error.

Judging from the numbers above, it might be better to change the
behavior of platform_device_register() itself to call *_put() at the
error case internally.  Or, if we keep the current behavior, at least
we should properly document it.

Greg, Rafael, Danilo, what do you think?


thanks,

Takashi

  reply	other threads:[~2026-04-17 10:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-15 19:31 [PATCH] ALSA: pcmtest: fix reference leak on failed device registration Guangshuo Li
2026-04-17  7:57 ` Takashi Iwai
2026-04-17 10:52   ` Takashi Iwai [this message]
2026-04-17 11:30     ` Guangshuo Li
2026-04-23  5:19     ` Jiri Slaby
2026-04-23  7:39       ` Takashi Iwai

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=874il9eu4c.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=dakr@kernel.org \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=lgs201920130244@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael@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.