On Mon, 04 Feb 2019 12:28:32 +0100, Jaroslav Kysela wrote:
This patch implements new SNDRV_PCM_IOCTL_ANONYMOUS_DUP ioctl which returns the new duplicated anonymous inode file descriptor (anon_inode:snd-pcm) which can be passed to the restricted clients.
This patch is meant to be the alternative for the dma-buf interface. Both implementation have some pros and cons:
anon_inode:dmabuf
- a bit standard export API for the DMA buffers
- fencing for the concurrent access [1]
- driver/kernel interface for the DMA buffer [1]
- multiple attach/detach scheme [1]
[1] the real usage for the sound PCM is unknown at the moment for this feature
anon_inode:snd-pcm
- simple (no problem with ref-counting, non-standard mmap implementation etc.)
- allow to use more sound interfaces for the file descriptor like status ioctls
- more fine grained security policies (another anon_inode name unshared with other drivers)
Signed-off-by: Jaroslav Kysela perex@perex.cz Reviewed-by: Takashi Iwai tiwai@suse.de
Although I already gave my reviewed-by tag, I found one place to be fixed. Namely:
+static int snd_pcm_anonymous_dup(struct file *file,
struct snd_pcm_substream *substream,
int __user *arg)
+{
....
- err = snd_card_file_add(pcm->card, nfile);
- if (err < 0)
goto __error2;
- err = snd_pcm_open_file(nfile, substream->pcm,
substream->stream, substream->number);
We need the pcm->open_mutex lock around the snd_pcm_open_file() call above for avoiding the racy opens.
thanks,
Takashi