[alsa-devel] [PATCH 3/3] ALSA: core: set kcontrol's count field correctly

Lu Guanqun guanqun.lu at intel.com
Wed Aug 24 05:12:43 CEST 2011


I don't see how info's owner field relates to kcontrol's count field. It should
assign to info's count instead.

Let's assume this scenario:

1. user reads the control element from kernel (the owner field is set)
2. user changes some values
3. user issues 'SNDRV_CTL_IOCTL_ELEM_REPLACE' ioctl.

With the original code, 'kctl' here gets a large count number due to its
non-empty owner field. Therefore it fails on subsequent call snd_ctl_new().

This patch fixes this issue.

Signed-off-by: Lu Guanqun <guanqun.lu at intel.com>
---
 sound/core/control.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/sound/core/control.c b/sound/core/control.c
index 98b7fc7..30e1483 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -1099,7 +1099,7 @@ static int snd_ctl_elem_add(struct snd_ctl_file *file,
 	if (err < 0)
 		return err;
 	memcpy(&kctl.id, &info->id, sizeof(info->id));
-	kctl.count = info->owner ? info->owner : 1;
+	kctl.count = info->count;
 	access |= SNDRV_CTL_ELEM_ACCESS_USER;
 	kctl.info = snd_ctl_elem_user_info;
 	if (access & SNDRV_CTL_ELEM_ACCESS_READ)



More information about the Alsa-devel mailing list