[PATCH] ALSA: lx6464es: fix a error handling in lx_hardware_open()

Haoxiang Li posted 1 patch 2 weeks ago
sound/pci/lx6464es/lx6464es.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] ALSA: lx6464es: fix a error handling in lx_hardware_open()
Posted by Haoxiang Li 2 weeks ago
In lx_hardware_open(), if lx_set_granularity() fails,
call lx_pipe_release() to release the resoueces.

Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>
---
 sound/pci/lx6464es/lx6464es.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/pci/lx6464es/lx6464es.c b/sound/pci/lx6464es/lx6464es.c
index 96df00db51d5..af8d614381b5 100644
--- a/sound/pci/lx6464es/lx6464es.c
+++ b/sound/pci/lx6464es/lx6464es.c
@@ -113,6 +113,7 @@ static int lx_hardware_open(struct lx6464es *chip,
 	if (err < 0) {
 		dev_err(chip->card->dev, "setting granularity to %ld failed\n",
 			   period_size);
+		lx_pipe_release(chip, 0, is_capture);
 		return err;
 	}
 
-- 
2.25.1
Re: [PATCH] ALSA: lx6464es: fix a error handling in lx_hardware_open()
Posted by Takashi Iwai 1 week, 6 days ago
On Mon, 26 Jan 2026 02:18:54 +0100,
Haoxiang Li wrote:
> 
> In lx_hardware_open(), if lx_set_granularity() fails,
> call lx_pipe_release() to release the resoueces.
> 
> Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn>

Thanks for the patch.  But beware that this isn't about the kernel
resource allocation or free, but rather the manipulation of the
chip-inside configuration.  So there is no memory leak or such.

And, this doesn't look like the only place that leads to the
unbalanced / unexpected configuration, and we might need to address
all...


Takashi

> ---
>  sound/pci/lx6464es/lx6464es.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/sound/pci/lx6464es/lx6464es.c b/sound/pci/lx6464es/lx6464es.c
> index 96df00db51d5..af8d614381b5 100644
> --- a/sound/pci/lx6464es/lx6464es.c
> +++ b/sound/pci/lx6464es/lx6464es.c
> @@ -113,6 +113,7 @@ static int lx_hardware_open(struct lx6464es *chip,
>  	if (err < 0) {
>  		dev_err(chip->card->dev, "setting granularity to %ld failed\n",
>  			   period_size);
> +		lx_pipe_release(chip, 0, is_capture);
>  		return err;
>  	}
>  
> -- 
> 2.25.1
>