Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins
@ 2018-09-28 21:27 Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 1/4] a52: Fix leaks when a52_set_hw_constraint() fails Andre Guedes
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Andre Guedes @ 2018-09-28 21:27 UTC (permalink / raw)
  To: alsa-devel

Hi all,

While I was working on AAF plugin RFC v2 series [1], I spotted several leaks in
some plugins when handling *_hw_constraint() error cases. This series fixes
these issues.

Regards,

Andre

[1] http://mailman.alsa-project.org/pipermail/alsa-devel/2018-September/140290.html

Andre Guedes (4):
  a52: Fix leaks when a52_set_hw_constraint() fails
  jack: Fix leaks when jack_set_hw_constraint() fails
  oss: Fix leaks when oss_hw_constraint() fails
  usb_stream: Fix leaks when us_set_hw_constraint() fails

 a52/pcm_a52.c               | 2 +-
 jack/pcm_jack.c             | 1 +
 oss/pcm_oss.c               | 2 +-
 usb_stream/pcm_usb_stream.c | 1 +
 4 files changed, 4 insertions(+), 2 deletions(-)

-- 
2.14.4

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH - Multiple plugins 1/4] a52: Fix leaks when a52_set_hw_constraint() fails
  2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
@ 2018-09-28 21:27 ` Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 2/4] jack: Fix leaks when jack_set_hw_constraint() fails Andre Guedes
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Andre Guedes @ 2018-09-28 21:27 UTC (permalink / raw)
  To: alsa-devel

If a52_set_hw_constraint() returns error, we leak 'rec' and
'rec->slave'. This patch fixes the issue by jumping to 'error' label
where the proper clean up is already done.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
---
 a52/pcm_a52.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c
index 29ce45f..e431fd0 100644
--- a/a52/pcm_a52.c
+++ b/a52/pcm_a52.c
@@ -978,7 +978,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(a52)
 
 	if ((err = a52_set_hw_constraint(rec)) < 0) {
 		snd_pcm_ioplug_delete(&rec->io);
-		return err;
+		goto error;
 	}
 
 	*pcmp = rec->io.pcm;
-- 
2.14.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH - Multiple plugins 2/4] jack: Fix leaks when jack_set_hw_constraint() fails
  2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 1/4] a52: Fix leaks when a52_set_hw_constraint() fails Andre Guedes
@ 2018-09-28 21:27 ` Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 3/4] oss: Fix leaks when oss_hw_constraint() fails Andre Guedes
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Andre Guedes @ 2018-09-28 21:27 UTC (permalink / raw)
  To: alsa-devel

If jack_set_hw_constraint() returns error, we leak the 'jack' object and
all the resources referenced by it. This patch fixes the issue by
calling snd_pcm_jack_free() before returning.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
---
 jack/pcm_jack.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c
index b39835e..6aaecac 100644
--- a/jack/pcm_jack.c
+++ b/jack/pcm_jack.c
@@ -538,6 +538,7 @@ static int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name,
 	err = jack_set_hw_constraint(jack);
 	if (err < 0) {
 		snd_pcm_ioplug_delete(&jack->io);
+		snd_pcm_jack_free(jack);
 		return err;
 	}
 
-- 
2.14.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH - Multiple plugins 3/4] oss: Fix leaks when oss_hw_constraint() fails
  2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 1/4] a52: Fix leaks when a52_set_hw_constraint() fails Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 2/4] jack: Fix leaks when jack_set_hw_constraint() fails Andre Guedes
@ 2018-09-28 21:27 ` Andre Guedes
  2018-09-28 21:27 ` [PATCH - Multiple plugins 4/4] usb_stream: Fix leaks when us_set_hw_constraint() fails Andre Guedes
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Andre Guedes @ 2018-09-28 21:27 UTC (permalink / raw)
  To: alsa-devel

If oss_hw_constraint() returns error, we leak 'oss' object and all the
resources referenced by it. This patch fixes the issue by jumping to
'error' label where the proper clean up is already done.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
---
 oss/pcm_oss.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/oss/pcm_oss.c b/oss/pcm_oss.c
index dadbb5b..8ab4fb0 100644
--- a/oss/pcm_oss.c
+++ b/oss/pcm_oss.c
@@ -413,7 +413,7 @@ SND_PCM_PLUGIN_DEFINE_FUNC(oss)
 
 	if ((err = oss_hw_constraint(oss)) < 0) {
 		snd_pcm_ioplug_delete(&oss->io);
-		return err;
+		goto error;
 	}
 
 	*pcmp = oss->io.pcm;
-- 
2.14.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH - Multiple plugins 4/4] usb_stream: Fix leaks when us_set_hw_constraint() fails
  2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
                   ` (2 preceding siblings ...)
  2018-09-28 21:27 ` [PATCH - Multiple plugins 3/4] oss: Fix leaks when oss_hw_constraint() fails Andre Guedes
@ 2018-09-28 21:27 ` Andre Guedes
  2018-10-02  9:18 ` [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Takashi Sakamoto
  2018-10-02 15:56 ` Takashi Iwai
  5 siblings, 0 replies; 7+ messages in thread
From: Andre Guedes @ 2018-09-28 21:27 UTC (permalink / raw)
  To: alsa-devel

If us_set_hw_constraint() returns error, we leak the 'us' object and all
the resources referenced by it. This patch fixes the issue by calling
us_free() before returning.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
---
 usb_stream/pcm_usb_stream.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/usb_stream/pcm_usb_stream.c b/usb_stream/pcm_usb_stream.c
index 94c83a7..eb4ca98 100644
--- a/usb_stream/pcm_usb_stream.c
+++ b/usb_stream/pcm_usb_stream.c
@@ -455,6 +455,7 @@ static int snd_pcm_us_open(snd_pcm_t **pcmp, const char *name,
 	err = us_set_hw_constraint(us);
 	if (err < 0) {
 		snd_pcm_ioplug_delete(&us->io);
+		us_free(us);
 		return err;
 	}
 
-- 
2.14.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins
  2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
                   ` (3 preceding siblings ...)
  2018-09-28 21:27 ` [PATCH - Multiple plugins 4/4] usb_stream: Fix leaks when us_set_hw_constraint() fails Andre Guedes
@ 2018-10-02  9:18 ` Takashi Sakamoto
  2018-10-02 15:56 ` Takashi Iwai
  5 siblings, 0 replies; 7+ messages in thread
From: Takashi Sakamoto @ 2018-10-02  9:18 UTC (permalink / raw)
  To: Andre Guedes, alsa-devel

Hi,

On Sep 29 2018 06:27, Andre Guedes wrote:
> While I was working on AAF plugin RFC v2 series [1], I spotted several leaks in
> some plugins when handling *_hw_constraint() error cases. This series fixes
> these issues.
> 
> Regards,
> 
> Andre
> 
> [1] http://mailman.alsa-project.org/pipermail/alsa-devel/2018-September/140290.html
> 
> Andre Guedes (4):
>    a52: Fix leaks when a52_set_hw_constraint() fails
>    jack: Fix leaks when jack_set_hw_constraint() fails
>    oss: Fix leaks when oss_hw_constraint() fails
>    usb_stream: Fix leaks when us_set_hw_constraint() fails
> 
>   a52/pcm_a52.c               | 2 +-
>   jack/pcm_jack.c             | 1 +
>   oss/pcm_oss.c               | 2 +-
>   usb_stream/pcm_usb_stream.c | 1 +
>   4 files changed, 4 insertions(+), 2 deletions(-)

I've reviewed all of the above patches.

Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

I think it better for the plugins to use goto statement to
aggregate error paths for releasing allocated objects but this is
just for code cleanups.


Regards

Takashi Sakamoto

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins
  2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
                   ` (4 preceding siblings ...)
  2018-10-02  9:18 ` [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Takashi Sakamoto
@ 2018-10-02 15:56 ` Takashi Iwai
  5 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2018-10-02 15:56 UTC (permalink / raw)
  To: Andre Guedes; +Cc: alsa-devel

On Fri, 28 Sep 2018 23:27:23 +0200,
Andre Guedes wrote:
> 
> Hi all,
> 
> While I was working on AAF plugin RFC v2 series [1], I spotted several leaks in
> some plugins when handling *_hw_constraint() error cases. This series fixes
> these issues.
> 
> Regards,
> 
> Andre
> 
> [1] http://mailman.alsa-project.org/pipermail/alsa-devel/2018-September/140290.html
> 
> Andre Guedes (4):
>   a52: Fix leaks when a52_set_hw_constraint() fails
>   jack: Fix leaks when jack_set_hw_constraint() fails
>   oss: Fix leaks when oss_hw_constraint() fails
>   usb_stream: Fix leaks when us_set_hw_constraint() fails

Applied all four patches now.  Thanks.


Takashi

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-10-02 15:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-28 21:27 [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Andre Guedes
2018-09-28 21:27 ` [PATCH - Multiple plugins 1/4] a52: Fix leaks when a52_set_hw_constraint() fails Andre Guedes
2018-09-28 21:27 ` [PATCH - Multiple plugins 2/4] jack: Fix leaks when jack_set_hw_constraint() fails Andre Guedes
2018-09-28 21:27 ` [PATCH - Multiple plugins 3/4] oss: Fix leaks when oss_hw_constraint() fails Andre Guedes
2018-09-28 21:27 ` [PATCH - Multiple plugins 4/4] usb_stream: Fix leaks when us_set_hw_constraint() fails Andre Guedes
2018-10-02  9:18 ` [PATCH - Multiple plugins 0/4] Fix leaks on multiple plugins Takashi Sakamoto
2018-10-02 15:56 ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox