| From 4ff036f95238f02c87e5d7c0a9d93748582a8950 Mon Sep 17 00:00:00 2001 |
| From: Guangshuo Li <lgs201920130244@gmail.com> |
| Date: Thu, 16 Apr 2026 03:31:38 +0800 |
| Subject: ALSA: pcmtest: fix reference leak on failed device registration |
| |
| From: Guangshuo Li <lgs201920130244@gmail.com> |
| |
| commit 4ff036f95238f02c87e5d7c0a9d93748582a8950 upstream. |
| |
| 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> |
| Link: https://patch.msgid.link/20260415193138.3861297-1-lgs201920130244@gmail.com |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| sound/drivers/pcmtest.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/sound/drivers/pcmtest.c |
| +++ b/sound/drivers/pcmtest.c |
| @@ -756,8 +756,10 @@ static int __init mod_init(void) |
| if (err) |
| return err; |
| err = platform_device_register(&pcmtst_pdev); |
| - if (err) |
| + if (err) { |
| + platform_device_put(&pcmtst_pdev); |
| return err; |
| + } |
| err = platform_driver_register(&pcmtst_pdrv); |
| if (err) |
| platform_device_unregister(&pcmtst_pdev); |