diff mbox

ALSA: control: Fix breakage of user ctl element addition

Message ID 1426176130-1163-1-git-send-email-tiwai@suse.de (mailing list archive)
State Accepted
Commit e79d74ab25339437447478e4dfe2b35c5b560512
Headers show

Commit Message

Takashi Iwai March 12, 2015, 4:02 p.m. UTC
In the commit [2225e79b9b03: 'ALSA: core: reduce stack usage related
to snd_ctl_new()'], the id field of the newly added kctl is untouched,
thus all attribute like name string remain empty.  The fix is just to
add the forgotten memcpy of the id field.

Fixes: 2225e79b9b03 ('ALSA: core: reduce stack usage related to snd_ctl_new()')
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/core/control.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Takashi Sakamoto March 13, 2015, 12:37 a.m. UTC | #1
On Mar 13 2015 01:02, Takashi Iwai wrote:
> In the commit [2225e79b9b03: 'ALSA: core: reduce stack usage related
> to snd_ctl_new()'], the id field of the newly added kctl is untouched,
> thus all attribute like name string remain empty.  The fix is just to
> add the forgotten memcpy of the id field.
> 
> Fixes: 2225e79b9b03 ('ALSA: core: reduce stack usage related to snd_ctl_new()')
> Signed-off-by: Takashi Iwai <tiwai@suse.de>
> ---
>  sound/core/control.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/sound/core/control.c b/sound/core/control.c
> index 54a412af3224..d677c27746e9 100644
> --- a/sound/core/control.c
> +++ b/sound/core/control.c
> @@ -1267,6 +1267,7 @@ static int snd_ctl_elem_add(struct snd_ctl_file *file,
>  	err = snd_ctl_new(&kctl, count, access, file);
>  	if (err < 0)
>  		return err;
> +	memcpy(&kctl->id, &info->id, sizeof(kctl->id));
>  	kctl->private_data = kzalloc(sizeof(struct user_element) + private_size,
>  				     GFP_KERNEL);
>  	if (kctl->private_data == NULL) {

Oops, exactly... Thanks.

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

I think the line can be simpler, like:

kctl->id = info->id;

But in both cases, assembler code may be the same due to compiler
optimization.


Takashi Sakamoto
diff mbox

Patch

diff --git a/sound/core/control.c b/sound/core/control.c
index 54a412af3224..d677c27746e9 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -1267,6 +1267,7 @@  static int snd_ctl_elem_add(struct snd_ctl_file *file,
 	err = snd_ctl_new(&kctl, count, access, file);
 	if (err < 0)
 		return err;
+	memcpy(&kctl->id, &info->id, sizeof(kctl->id));
 	kctl->private_data = kzalloc(sizeof(struct user_element) + private_size,
 				     GFP_KERNEL);
 	if (kctl->private_data == NULL) {