[alsa-devel] [PATCH 1/4] ALSA: ctl: confirm to return all identical information

Takashi Iwai tiwai at suse.de
Thu Apr 9 07:36:43 CEST 2015


At Thu,  9 Apr 2015 02:07:15 +0900,
Takashi Sakamoto wrote:
> 
> When event originator doesn't set numerical ID in identical information,
> the event data includes no numerical ID, thus userspace applications
> cannot identify the control just by unique ID in event data.
> 
> This commit fix this bug so as the event data includes all of identical
> information.
> 
> Signed-off-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>
> ---
>  sound/core/control.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/sound/core/control.c b/sound/core/control.c
> index d677c27..6d12e85 100644
> --- a/sound/core/control.c
> +++ b/sound/core/control.c
> @@ -578,6 +578,7 @@ error:
>   *
>   * Finds the control instance with the given id, and activate or
>   * inactivate the control together with notification, if changed.
> + * The given ID data is filled by full information.
>   *
>   * Return: 0 if unchanged, 1 if changed, or a negative error code on failure.
>   */
> @@ -609,6 +610,7 @@ int snd_ctl_activate_id(struct snd_card *card, struct snd_ctl_elem_id *id,
>  	}
>  	ret = 1;
>   unlock:
> +	*id = kctl->id;

This isn't always correct.  When the element is looked by a numid and
a kctl has multiple items (count > 0), this will overwrite with a
wrong numid.


Takashi

>  	up_write(&card->controls_rwsem);
>  	if (ret > 0)
>  		snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_INFO, id);
> -- 
> 2.1.0
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list