struct forte_chip *chip;
struct audio_buf_info abi;
struct count_info cinfo;
+ void __user *argp = (void __user *)arg;
+ int __user *p = argp;
chip = file->private_data;
switch (cmd) {
case OSS_GETVERSION:
- return put_user (SOUND_VERSION, (int *) arg);
+ return put_user (SOUND_VERSION, p);
case SNDCTL_DSP_GETCAPS:
DPRINTK ("%s: GETCAPS\n", __FUNCTION__);
ival = FORTE_CAPS; /* DUPLEX */
- return put_user (ival, (int *) arg);
+ return put_user (ival, p);
case SNDCTL_DSP_GETFMTS:
DPRINTK ("%s: GETFMTS\n", __FUNCTION__);
ival = FORTE_FMTS; /* U8, 16LE */
- return put_user (ival, (int *) arg);
+ return put_user (ival, p);
case SNDCTL_DSP_SETFMT: /* U8, 16LE */
DPRINTK ("%s: SETFMT\n", __FUNCTION__);
- if (get_user (ival, (int *) arg))
+ if (get_user (ival, p))
return -EFAULT;
spin_lock_irq (&chip->lock);
spin_unlock_irq (&chip->lock);
- return put_user (rval, (int *) arg);
+ return put_user (rval, p);
case SNDCTL_DSP_STEREO: /* 0 - mono, 1 - stereo */
DPRINTK ("%s: STEREO\n", __FUNCTION__);
- if (get_user (ival, (int *) arg))
+ if (get_user (ival, p))
return -EFAULT;
spin_lock_irq (&chip->lock);
spin_unlock_irq (&chip->lock);
- return put_user (rval, (int *) arg);
+ return put_user (rval, p);
case SNDCTL_DSP_CHANNELS: /* 1 - mono, 2 - stereo */
DPRINTK ("%s: CHANNELS\n", __FUNCTION__);
- if (get_user (ival, (int *) arg))
+ if (get_user (ival, p))
return -EFAULT;
spin_lock_irq (&chip->lock);
spin_unlock_irq (&chip->lock);
- return put_user (rval, (int *) arg);
+ return put_user (rval, p);
case SNDCTL_DSP_SPEED:
DPRINTK ("%s: SPEED\n", __FUNCTION__);
- if (get_user (ival, (int *) arg))
+ if (get_user (ival, p))
return -EFAULT;
spin_lock_irq (&chip->lock);
spin_unlock_irq (&chip->lock);
- return put_user(rval, (int*) arg);
+ return put_user(rval, p);
case SNDCTL_DSP_GETBLKSIZE:
DPRINTK ("%s: GETBLKSIZE\n", __FUNCTION__);
spin_unlock_irq (&chip->lock);
- return put_user (ival, (int *) arg);
+ return put_user (ival, p);
case SNDCTL_DSP_RESET:
DPRINTK ("%s: RESET\n", __FUNCTION__);
case SNDCTL_DSP_SETFRAGMENT:
DPRINTK ("%s: SETFRAGMENT\n", __FUNCTION__);
- if (get_user (ival, (int *) arg))
+ if (get_user (ival, p))
return -EFAULT;
spin_lock_irq (&chip->lock);
spin_unlock_irq (&chip->lock);
- return put_user (ival, (int *) arg);
+ return put_user (ival, p);
case SNDCTL_DSP_GETISPACE:
DPRINTK ("%s: GETISPACE\n", __FUNCTION__);
spin_unlock_irq (&chip->lock);
- return copy_to_user ((void *) arg, &abi, sizeof (abi)) ? -EFAULT : 0;
+ return copy_to_user (argp, &abi, sizeof (abi)) ? -EFAULT : 0;
case SNDCTL_DSP_GETIPTR:
DPRINTK ("%s: GETIPTR\n", __FUNCTION__);
spin_unlock_irq (&chip->lock);
- return copy_to_user ((void *) arg, &cinfo, sizeof (cinfo)) ? -EFAULT : 0;
+ return copy_to_user (argp, &cinfo, sizeof (cinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETOSPACE:
if (!wr)
spin_unlock_irq (&chip->lock);
- return copy_to_user ((void *) arg, &abi, sizeof (abi)) ? -EFAULT : 0;
+ return copy_to_user (argp, &abi, sizeof (abi)) ? -EFAULT : 0;
case SNDCTL_DSP_GETOPTR:
if (!wr)
spin_unlock_irq (&chip->lock);
- return copy_to_user ((void *) arg, &cinfo, sizeof (cinfo)) ? -EFAULT : 0;
+ return copy_to_user (argp, &cinfo, sizeof (cinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETODELAY:
if (!wr)
spin_unlock_irq (&chip->lock);
- return put_user (ival, (int *) arg);
+ return put_user (ival, p);
case SNDCTL_DSP_SETDUPLEX:
DPRINTK ("%s: SETDUPLEX\n", __FUNCTION__);
case SNDCTL_DSP_GETTRIGGER:
DPRINTK ("%s: GETTRIGGER\n", __FUNCTION__);
- return put_user (chip->trigger, (int *) arg);
+ return put_user (chip->trigger, p);
case SNDCTL_DSP_SETTRIGGER:
- if (get_user (ival, (int *) arg))
+ if (get_user (ival, p))
return -EFAULT;
DPRINTK ("%s: SETTRIGGER %d\n", __FUNCTION__, ival);
case SOUND_PCM_READ_RATE:
DPRINTK ("%s: PCM_READ_RATE\n", __FUNCTION__);
- return put_user (chip->play.rate, (int *) arg);
+ return put_user (chip->play.rate, p);
case SOUND_PCM_READ_CHANNELS:
DPRINTK ("%s: PCM_READ_CHANNELS\n", __FUNCTION__);
- return put_user (chip->play.stereo, (int *) arg);
+ return put_user (chip->play.stereo, p);
case SOUND_PCM_READ_BITS:
DPRINTK ("%s: PCM_READ_BITS\n", __FUNCTION__);
- return put_user (chip->play.format, (int *) arg);
+ return put_user (chip->play.format, p);
case SNDCTL_DSP_NONBLOCK:
DPRINTK ("%s: DSP_NONBLOCK\n", __FUNCTION__);
return 0;
default:
- DPRINTK ("Unsupported ioctl: %x (%p)\n", cmd, (void *) arg);
+ DPRINTK ("Unsupported ioctl: %x (%p)\n", cmd, argp);
break;
}
*/
static ssize_t
-forte_dsp_write (struct file *file, const char *buffer, size_t bytes,
+forte_dsp_write (struct file *file, const char __user *buffer, size_t bytes,
loff_t *ppos)
{
struct forte_chip *chip;
*/
static ssize_t
-forte_dsp_read (struct file *file, char *buffer, size_t bytes,
+forte_dsp_read (struct file *file, char __user *buffer, size_t bytes,
loff_t *ppos)
{
struct forte_chip *chip;