Re: [PATCH] parisc: led: fix reference leak on failed device registration

Guangshuo Li <[email protected]>
Newsgroups org.kernel.vger.linux-parisc,org.kernel.vger.linux-kernel
Message-ID <CANUHTR-xUS+LRcnfYmKYqZYx4LdH-Uni-=n0oPxNh0=sd4=_bQ@mail.gmail.com>
Hi Jiri, Helge,

Thanks for pointing this out, and thanks Helge for taking care of the
revert.

On Thu, 23 Apr 2026 at 15:09, Helge Deller <[email protected]> wrote:
>
> Hi Jiri,
>
> On 4/23/26 07:24, Jiri Slaby wrote:
> > On 17. 04. 26, 11:39, Helge Deller wrote:
> >> On 4/15/26 19:05, Guangshuo Li wrote:
> >>> When platform_device_register() fails in startup_leds(), the embedded
> >>> struct device in platform_leds has already been initialized by
> >>> device_initialize(), but the failure path only reports the error and
> >>> does not drop the device reference for the current platform device:
> >>>
> >>>    startup_leds()
> >>>      -> platform_device_register(&platform_leds)
> >>>         -> device_initialize(&platform_leds.dev)
> >>>         -> setup_pdev_dma_masks(&platform_leds)
> >>>         -> platform_device_add(&platform_leds)
> >>>
> >>> This leads to a reference leak when platform_device_register() fails.
> >>> Fix this by calling platform_device_put() after reporting the error.
> >>>
> >>> The issue was identified by a static analysis tool I developed and
> >>> confirmed by manual review.
> >>>
> >>> Fixes: 789e527adfc33 ("parisc: led: Rewrite LED/LCD driver to utilizize Linux LED subsystem")
> >>> Cc: [email protected]
> >>> Signed-off-by: Guangshuo Li <[email protected]>
> >>> ---
> >>>   drivers/parisc/led.c | 6 ++++--
> >>>   1 file changed, 4 insertions(+), 2 deletions(-)
> >>
> >> applied.
> >> Thanks!
> >> Helge
> >
> > Unless the static pcmtst_pdev has ->type->release or ->release set, the patch triggers a warning upon put().
> >
> > platform_device_register() should be fixed instead.
>
> Thanks for the notice! I'm going to revert that patch.
>
> Just yesterday I refused to apply the other patches for fbdev and suggested
> to fix platform_device_register() instead. See:
> https://marc.info/?l=linux-fbdev&m=177687117206684&w=2
>
> > See also:
> > https://patchew.org/linux/[email protected]/
> Thanks!
> Helge

I agree that this patch is not appropriate. platform_leds is a static
platform_device and it does not provide a dev.release callback, so calling
platform_device_put() on the platform_device_register() failure path can
trigger the missing release callback warning.

Please disregard this patch. I will drop it, and I am also going through
the other patches I sent for the same pattern and following up where they
should be ignored or reverted.

Sorry for the noise.

Best regards,
Guangshuo Li
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.