On Tue, 29 Jan 2019 18:59:09 +0100, Jaroslav Kysela wrote: > > Create seven control bits to allow the various restrictions for the > anonymous file descriptor. > > Signed-off-by: Jaroslav Kysela <perex@xxxxxxxx> > --- > include/sound/pcm.h | 1 + > include/uapi/sound/asound.h | 9 +++++ > sound/core/pcm_native.c | 85 ++++++++++++++++++++++++++++++++++++++++++++- > 3 files changed, 94 insertions(+), 1 deletion(-) > > diff --git a/include/sound/pcm.h b/include/sound/pcm.h > index 61e4c69e73c7..29d22a3a458c 100644 > --- a/include/sound/pcm.h > +++ b/include/sound/pcm.h > @@ -226,6 +226,7 @@ struct snd_pcm_ops { > struct snd_pcm_file { > struct snd_pcm_substream *substream; > int no_compat_mmap; > + unsigned int perm; /* file descriptor permissions */ > unsigned int user_pversion; /* supported protocol version */ > }; > > diff --git a/include/uapi/sound/asound.h b/include/uapi/sound/asound.h > index ebc17d5a3490..29d3a16caa9a 100644 > --- a/include/uapi/sound/asound.h > +++ b/include/uapi/sound/asound.h > @@ -571,6 +571,15 @@ enum { > #define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16) > #define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16) > > +#define SNDRV_PCM_PERM_MMAP (1<<0) > +#define SNDRV_PCM_PERM_MMAP_STATUS (1<<1) > +#define SNDRV_PCM_PERM_MMAP_CONTROL (1<<2) > +#define SNDRV_PCM_PERM_RW (1<<3) > +#define SNDRV_PCM_PERM_CONTROL (1<<4) > +#define SNDRV_PCM_PERM_STATUS (1<<5) > +#define SNDRV_PCM_PERM_SYNC (1<<6) > +#define SNDRV_PCM_PERM_MAX ((SNDRV_PCM_PERM_SYNC<<1)-1) I'd name it SNDRV_PCM_PERM_MASK, and ... > @@ -2850,10 +2851,11 @@ static int snd_pcm_anonymous_dup(struct file *file, > int flags; > struct file *nfile; > struct snd_pcm *pcm = substream->pcm; > + struct snd_pcm_file *pcm_file; > > if (get_user(perm, (int __user *)arg)) > return -EFAULT; > - if (perm < 0) > + if (perm < 0 || perm > SNDRV_PCM_PERM_MAX) > return -ENOSYS; ... check like if (perm & ~SNDRV_PCM_PER_MASK) return -EINVAL; thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel