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

Takashi Iwai tiwai at suse.de
Wed Aug 24 08:18:25 CEST 2011


At Wed, 24 Aug 2011 08:06:34 +0200,
Takashi Iwai wrote:
> 
> At Wed, 24 Aug 2011 11:12:43 +0800,
> Lu Guanqun wrote:
> > 
> > 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().
> 
> In IOCTL_ELEM_ADD and REPLACE, count and owner struct fields have
> different meanings from others.  The count contains the array size,
> not the number of identical elements.  And the owner contains the
> number of elements to be created.

Correction: the count field means same as others.  The info.count
specifies the array size in IOCTL_ELEM_INFO, too.
The only difference is an (ab)use of owner field.


Takashi


More information about the Alsa-devel mailing list