ALSA: rawmidi: introduce SNDRV_RAWMIDI_IOCTL_USER_PVERSION
Subsystems (2)
Jaroslav Kysela
maintainerPATCH v2 1/1 ALSA: rawmidi: introduce SNDRV_RAWMIDI_IOCTL_USER_PVERSION
The new framing mode causes the user space regression, because the alsa-lib code does not initialize the reserved space in the params structure when the device is opened.
This change adds SNDRV_RAWMIDI_IOCTL_USER_PVERSION like we do for the PCM interface for the protocol acknowledgment.
Cc David Henningsson <[email protected]>
Cc <[email protected]>
Fixes 08fdced60ca0 ("ALSA: rawmidi: Add framing mode")
Signed-off-by Jaroslav Kysela <[email protected]>
--- include/sound/rawmidi.h | 1 + include/uapi/sound/asound.h | 1 + sound/core/rawmidi.c | 9 +++++++++ 3 files changed, 11 insertions(+)
include/sound/rawmidi.h +1 -0
@@ -98,6 +98,7 @@ struct snd_rawmidi_file {struct snd_rawmidi *rmidi;struct snd_rawmidi_substream *input;struct snd_rawmidi_substream *output; +unsigned int user_pversion;/* supported protocol version */ };struct snd_rawmidi_str {
include/uapi/sound/asound.h +1 -0
@@ -784,6 +784,7 @@ struct snd_rawmidi_status {#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info) +#define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)#define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
sound/core/rawmidi.c +9 -0
@@ -873,12 +873,21 @@ static long snd_rawmidi_ioctl(struct file *file, unsigned int cmd, unsigned longreturn -EINVAL ; } } +case SNDRV_RAWMIDI_IOCTL_USER_PVERSION : +if (get_user (rfile->user_pversion, (unsigned int __user *)arg)) +return -EFAULT ; +return 0 ; +case SNDRV_RAWMIDI_IOCTL_PARAMS : {struct snd_rawmidi_params params;if (copy_from_user (¶ms, argp,sizeof (struct snd_rawmidi_params )))return -EFAULT ; +if (rfile->user_pversion <SNDRV_PROTOCOL_VERSION (2 ,0 ,2 )) { + params.mode =0 ; +memset (params.reserved,0 ,sizeof (params.reserved)); + }switch (params.stream) {case SNDRV_RAWMIDI_STREAM_OUTPUT :if (rfile->output ==NULL )
Signature · 1 line
2.31.1
Takashi Iwai
AppliedQuoted 5 lines · Jaroslav Kysela
The new framing mode causes the user space regression, because the alsa-lib code does not initialize the reserved space in the params structure when the device is opened.
Quoted 8 lines
This change adds
SNDRV_RAWMIDI_IOCTL_USER_PVERSIONlike we do for the PCM interface for the protocol acknowledgment.Cc David Henningsson <[email protected]>Cc <[email protected]>Fixes 08fdced60ca0 ("ALSA: rawmidi: Add framing mode")Signed-off-by Jaroslav Kysela <[email protected]>
Applied, thanks.
Takashi