mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
compat_ioctl: remove translation for sound ioctls
The SNDCTL_* and SOUND_* commands are the old OSS user interface. I checked all the sound ioctl commands listed in fs/compat_ioctl.c to see if we still need the translation handlers. Here is what I found: - sound/oss/ is (almost) gone from the kernel, this is what actually needed all the translations - The ALSA emulation for OSS correctly handles all compat_ioctl commands already. - sound/oss/dmasound/ is the last holdout of the original OSS code, this is only used on arch/m68k, which has no 64-bit mode and hence needs no compat handlers - arch/um/drivers/hostaudio_kern.c may run in 64-bit mode with 32-bit x86 user space underneath it. This rare corner case is the only one that still needs the compat handlers. By adding a simple redirect of .compat_ioctl to .unlocked_ioctl in the UML driver, we can remove all the COMPATIBLE_IOCTL() annotations without a change in functionality. For completeness, I'm adding the same thing to the dmasound file, knowing that it makes no difference. The compat_ioctl list contains one comment about SNDCTL_DSP_MAPINBUF and SNDCTL_DSP_MAPOUTBUF, which actually would need a translation handler if implemented. However, the native implementation just returns -EINVAL, so we don't care. Reviewed-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
parent
54b5b60a14
commit
2022ca0a94
@ -298,6 +298,7 @@ static const struct file_operations hostaudio_fops = {
|
||||
.write = hostaudio_write,
|
||||
.poll = hostaudio_poll,
|
||||
.unlocked_ioctl = hostaudio_ioctl,
|
||||
.compat_ioctl = compat_ptr_ioctl,
|
||||
.mmap = NULL,
|
||||
.open = hostaudio_open,
|
||||
.release = hostaudio_release,
|
||||
|
@ -51,8 +51,6 @@
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/watchdog.h>
|
||||
|
||||
#include <linux/soundcard.h>
|
||||
|
||||
#include <linux/hiddev.h>
|
||||
|
||||
|
||||
@ -458,162 +456,6 @@ COMPATIBLE_IOCTL(PPPIOCDISCONN)
|
||||
COMPATIBLE_IOCTL(PPPIOCATTCHAN)
|
||||
COMPATIBLE_IOCTL(PPPIOCGCHAN)
|
||||
COMPATIBLE_IOCTL(PPPIOCGL2TPSTATS)
|
||||
/* Big A */
|
||||
/* sparc only */
|
||||
/* Big Q for sound/OSS */
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_RESET)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_SYNC)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SYNTH_INFO)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_CTRLRATE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_GETOUTCOUNT)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_GETINCOUNT)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_PERCMODE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_FM_LOAD_INSTR)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_TESTMIDI)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_RESETSAMPLES)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_NRSYNTHS)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_NRMIDIS)
|
||||
COMPATIBLE_IOCTL(SNDCTL_MIDI_INFO)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_THRESHOLD)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SYNTH_MEMAVL)
|
||||
COMPATIBLE_IOCTL(SNDCTL_FM_4OP_ENABLE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_PANIC)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_OUTOFBAND)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SEQ_GETTIME)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SYNTH_ID)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SYNTH_CONTROL)
|
||||
COMPATIBLE_IOCTL(SNDCTL_SYNTH_REMOVESAMPLE)
|
||||
/* Big T for sound/OSS */
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_TIMEBASE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_START)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_STOP)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_CONTINUE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_TEMPO)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_SOURCE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_METRONOME)
|
||||
COMPATIBLE_IOCTL(SNDCTL_TMR_SELECT)
|
||||
/* Little m for sound/OSS */
|
||||
COMPATIBLE_IOCTL(SNDCTL_MIDI_PRETIME)
|
||||
COMPATIBLE_IOCTL(SNDCTL_MIDI_MPUMODE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_MIDI_MPUCMD)
|
||||
/* Big P for sound/OSS */
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_RESET)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SYNC)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SPEED)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_STEREO)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETBLKSIZE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_CHANNELS)
|
||||
COMPATIBLE_IOCTL(SOUND_PCM_WRITE_FILTER)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_POST)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SUBDIVIDE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SETFRAGMENT)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETFMTS)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SETFMT)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETOSPACE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETISPACE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_NONBLOCK)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETCAPS)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETTRIGGER)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SETTRIGGER)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETIPTR)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETOPTR)
|
||||
/* SNDCTL_DSP_MAPINBUF, XXX needs translation */
|
||||
/* SNDCTL_DSP_MAPOUTBUF, XXX needs translation */
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SETSYNCRO)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_SETDUPLEX)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_GETODELAY)
|
||||
COMPATIBLE_IOCTL(SNDCTL_DSP_PROFILE)
|
||||
COMPATIBLE_IOCTL(SOUND_PCM_READ_RATE)
|
||||
COMPATIBLE_IOCTL(SOUND_PCM_READ_CHANNELS)
|
||||
COMPATIBLE_IOCTL(SOUND_PCM_READ_BITS)
|
||||
COMPATIBLE_IOCTL(SOUND_PCM_READ_FILTER)
|
||||
/* Big C for sound/OSS */
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_RESET)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_LOAD)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_RDATA)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_RCODE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_WDATA)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_WCODE)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_RUN)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_HALT)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_SENDMSG)
|
||||
COMPATIBLE_IOCTL(SNDCTL_COPR_RCVMSG)
|
||||
/* Big M for sound/OSS */
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_VOLUME)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_BASS)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_TREBLE)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_SYNTH)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_PCM)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_SPEAKER)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_MIC)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_CD)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_IMIX)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_ALTPCM)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_RECLEV)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_IGAIN)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_OGAIN)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE1)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE2)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_LINE3)
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_DIGITAL1))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_DIGITAL2))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_DIGITAL3))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_PHONEIN))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_PHONEOUT))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_VIDEO))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_RADIO))
|
||||
COMPATIBLE_IOCTL(MIXER_READ(SOUND_MIXER_MONITOR))
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_MUTE)
|
||||
/* SOUND_MIXER_READ_ENHANCE, same value as READ_MUTE */
|
||||
/* SOUND_MIXER_READ_LOUD, same value as READ_MUTE */
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_RECSRC)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_DEVMASK)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_RECMASK)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_STEREODEVS)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_READ_CAPS)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_VOLUME)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_BASS)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_TREBLE)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_SYNTH)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_PCM)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_SPEAKER)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_MIC)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_CD)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_IMIX)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_ALTPCM)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_RECLEV)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_IGAIN)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_OGAIN)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE1)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE2)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_LINE3)
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_DIGITAL1))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_DIGITAL2))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_DIGITAL3))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_PHONEIN))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_PHONEOUT))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_VIDEO))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_RADIO))
|
||||
COMPATIBLE_IOCTL(MIXER_WRITE(SOUND_MIXER_MONITOR))
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_MUTE)
|
||||
/* SOUND_MIXER_WRITE_ENHANCE, same value as WRITE_MUTE */
|
||||
/* SOUND_MIXER_WRITE_LOUD, same value as WRITE_MUTE */
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_WRITE_RECSRC)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_INFO)
|
||||
COMPATIBLE_IOCTL(SOUND_OLD_MIXER_INFO)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_ACCESS)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_AGC)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_3DSE)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_PRIVATE1)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_PRIVATE2)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_PRIVATE3)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_PRIVATE4)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_PRIVATE5)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_GETLEVELS)
|
||||
COMPATIBLE_IOCTL(SOUND_MIXER_SETLEVELS)
|
||||
COMPATIBLE_IOCTL(OSS_GETVERSION)
|
||||
/* Raw devices */
|
||||
COMPATIBLE_IOCTL(RAW_SETBIND)
|
||||
COMPATIBLE_IOCTL(RAW_GETBIND)
|
||||
|
@ -2717,6 +2717,10 @@ static long snd_pcm_oss_ioctl(struct file *file, unsigned int cmd, unsigned long
|
||||
static long snd_pcm_oss_ioctl_compat(struct file *file, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
/*
|
||||
* Everything is compatbile except SNDCTL_DSP_MAPINBUF/SNDCTL_DSP_MAPOUTBUF,
|
||||
* which are not implemented for the native case either
|
||||
*/
|
||||
return snd_pcm_oss_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
|
||||
}
|
||||
#else
|
||||
|
@ -384,6 +384,7 @@ static const struct file_operations mixer_fops =
|
||||
.owner = THIS_MODULE,
|
||||
.llseek = no_llseek,
|
||||
.unlocked_ioctl = mixer_unlocked_ioctl,
|
||||
.compat_ioctl = compat_ptr_ioctl,
|
||||
.open = mixer_open,
|
||||
.release = mixer_release,
|
||||
};
|
||||
@ -1167,6 +1168,7 @@ static const struct file_operations sq_fops =
|
||||
.write = sq_write,
|
||||
.poll = sq_poll,
|
||||
.unlocked_ioctl = sq_unlocked_ioctl,
|
||||
.compat_ioctl = compat_ptr_ioctl,
|
||||
.open = sq_open,
|
||||
.release = sq_release,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user