2014-07-20 04:51:16

by weiyj_lk

[permalink] [raw]
Subject: [PATCH -next] ALSA: bebob: Fix missing unlock on error in special_clk_ctl_put()

From: Wei Yongjun <[email protected]>

Add the missing unlock before return from function special_clk_ctl_put()
in the error handling case.

Signed-off-by: Wei Yongjun <[email protected]>
---
sound/firewire/bebob/bebob_maudio.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sound/firewire/bebob/bebob_maudio.c b/sound/firewire/bebob/bebob_maudio.c
index 6af50eb..6748515 100644
--- a/sound/firewire/bebob/bebob_maudio.c
+++ b/sound/firewire/bebob/bebob_maudio.c
@@ -382,8 +382,10 @@ static int special_clk_ctl_put(struct snd_kcontrol *kctl,
mutex_lock(&bebob->mutex);

id = uval->value.enumerated.item[0];
- if (id >= ARRAY_SIZE(special_clk_labels))
+ if (id >= ARRAY_SIZE(special_clk_labels)) {
+ mutex_unlock(&bebob->mutex);
return 0;
+ }

err = avc_maudio_set_special_clk(bebob, id,
params->dig_in_fmt,


2014-07-20 08:01:05

by Takashi Sakamoto

[permalink] [raw]
Subject: Re: [PATCH -next] ALSA: bebob: Fix missing unlock on error in special_clk_ctl_put()

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Wei,

Thanks for this patch, while I found the other issues in this file. I
would like to post new patches instead of yours, later.


Thanks

Takashi Sakamoto
[email protected]

(Jul 20 2014 13:50), [email protected] wrote:
> From: Wei Yongjun <[email protected]>
>
> Add the missing unlock before return from function
> special_clk_ctl_put() in the error handling case.
>
> Signed-off-by: Wei Yongjun <[email protected]> ---
> sound/firewire/bebob/bebob_maudio.c | 4 +++- 1 file changed, 3
> insertions(+), 1 deletion(-)
>
> diff --git a/sound/firewire/bebob/bebob_maudio.c
> b/sound/firewire/bebob/bebob_maudio.c index 6af50eb..6748515
> 100644 --- a/sound/firewire/bebob/bebob_maudio.c +++
> b/sound/firewire/bebob/bebob_maudio.c @@ -382,8 +382,10 @@ static
> int special_clk_ctl_put(struct snd_kcontrol *kctl,
> mutex_lock(&bebob->mutex);
>
> id = uval->value.enumerated.item[0]; - if (id >=
> ARRAY_SIZE(special_clk_labels)) + if (id >=
> ARRAY_SIZE(special_clk_labels)) { + mutex_unlock(&bebob->mutex);
> return 0; + }
>
> err = avc_maudio_set_special_clk(bebob, id, params->dig_in_fmt,
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTy3UIAAoJENbkvsBXhK8as9AH+wYN2lxFlzBdMhPgRigp/bkv
mw770Hpyb50TE3ILkIcGpgec1TFrK/QwQjUmunmJLQnvXPBNVNGiVaKsOhhHwmqG
7hDWp8swTSdxZQeSFWjjxAc+AntjEoUkOdiwclzT+1M1tO1vjZdRoXAos4o3G6Od
xKSl0xO4Qi+Wv6ib1p5yneOKEGZLmEZTLJY2PXXKhHQjybzYS1cRRlK9+afJYLhT
sEHPknz00OCbvFRAXIK0GMuaQzncZOFYA2Ovczei7Y+ugJuGJbvNfxhxYO6j7Zc6
j1dE79iBY0hhH32zdUn7zcWR8Zbxbpfv8oA0dkeQRisV3RB9F2P7bSKHtNj0cOw=
=Or5u
-----END PGP SIGNATURE-----

2014-07-22 14:11:12

by Takashi Sakamoto

[permalink] [raw]
Subject: [PATCH 1/3] bebob: Fix a missing to unlock mutex in error handling case

In error handling case, special_clk_ctl_put() returns without unlock_mutex(),
therefore the mutex is still locked. This commit moves mutex_lock() after
the error handling case.

This commit is my solution for this post.

[PATCH -next] ALSA: bebob: Fix missing unlock on error in special_clk_ctl_put()
https://lkml.org/lkml/2014/7/20/12

Signed-off-by: Takashi Sakamoto <[email protected]>
---
sound/firewire/bebob/bebob_maudio.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/firewire/bebob/bebob_maudio.c b/sound/firewire/bebob/bebob_maudio.c
index 6af50eb..fc470c6 100644
--- a/sound/firewire/bebob/bebob_maudio.c
+++ b/sound/firewire/bebob/bebob_maudio.c
@@ -379,12 +379,12 @@ static int special_clk_ctl_put(struct snd_kcontrol *kctl,
struct special_params *params = bebob->maudio_special_quirk;
int err, id;

- mutex_lock(&bebob->mutex);
-
id = uval->value.enumerated.item[0];
if (id >= ARRAY_SIZE(special_clk_labels))
return 0;

+ mutex_lock(&bebob->mutex);
+
err = avc_maudio_set_special_clk(bebob, id,
params->dig_in_fmt,
params->dig_out_fmt,
--
1.9.1

2014-07-22 14:26:55

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH 1/3] bebob: Fix a missing to unlock mutex in error handling case

At Tue, 22 Jul 2014 23:11:03 +0900,
Takashi Sakamoto wrote:
>
> In error handling case, special_clk_ctl_put() returns without unlock_mutex(),
> therefore the mutex is still locked. This commit moves mutex_lock() after
> the error handling case.
>
> This commit is my solution for this post.
>
> [PATCH -next] ALSA: bebob: Fix missing unlock on error in special_clk_ctl_put()
> https://lkml.org/lkml/2014/7/20/12
>
> Signed-off-by: Takashi Sakamoto <[email protected]>

Thanks, applied all three patches now.

BTW, at the next time, put "v2" or such in the subject line so that
people can distinguish the new patch series from the previous ones.
You can use --subject-prefix option for git-format-patch or else.

Preferably, write the changes since the previous revision, too
(usually below the --- line, so that it's not merged into the git
changelog; some people like to have them in the final commit,
though.)

Last but not least, don't forget to put a proper subject prefix.
For ALSA codes, we put "ALSA:" prefix in the subject. Study git
changelogs.


Takashi

> ---
> sound/firewire/bebob/bebob_maudio.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/firewire/bebob/bebob_maudio.c b/sound/firewire/bebob/bebob_maudio.c
> index 6af50eb..fc470c6 100644
> --- a/sound/firewire/bebob/bebob_maudio.c
> +++ b/sound/firewire/bebob/bebob_maudio.c
> @@ -379,12 +379,12 @@ static int special_clk_ctl_put(struct snd_kcontrol *kctl,
> struct special_params *params = bebob->maudio_special_quirk;
> int err, id;
>
> - mutex_lock(&bebob->mutex);
> -
> id = uval->value.enumerated.item[0];
> if (id >= ARRAY_SIZE(special_clk_labels))
> return 0;
>
> + mutex_lock(&bebob->mutex);
> +
> err = avc_maudio_set_special_clk(bebob, id,
> params->dig_in_fmt,
> params->dig_out_fmt,
> --
> 1.9.1
>