static void calculate_ifrag(struct wiinst *);
/* Audio file operations */
-static ssize_t emu10k1_audio_read(struct file *file, char *buffer, size_t count, loff_t * ppos)
+static ssize_t emu10k1_audio_read(struct file *file, char __user *buffer, size_t count, loff_t * ppos)
{
struct emu10k1_wavedevice *wave_dev = (struct emu10k1_wavedevice *) file->private_data;
struct wiinst *wiinst = wave_dev->wiinst;
|| (bytestocopy >= count)) {
bytestocopy = min_t(u32, bytestocopy, count);
- emu10k1_wavein_xferdata(wiinst, (u8 *) buffer, &bytestocopy);
+ emu10k1_wavein_xferdata(wiinst, (u8 __user *)buffer, &bytestocopy);
count -= bytestocopy;
buffer += bytestocopy;
return ret;
}
-static ssize_t emu10k1_audio_write(struct file *file, const char *buffer, size_t count, loff_t * ppos)
+static ssize_t emu10k1_audio_write(struct file *file, const char __user *buffer, size_t count, loff_t * ppos)
{
struct emu10k1_wavedevice *wave_dev = (struct emu10k1_wavedevice *) file->private_data;
struct woinst *woinst = wave_dev->woinst;
bytestocopy = min_t(u32, bytestocopy, count);
- emu10k1_waveout_xferdata(woinst, (u8 *) buffer, &bytestocopy);
+ emu10k1_waveout_xferdata(woinst, (u8 __user *) buffer, &bytestocopy);
count -= bytestocopy;
buffer += bytestocopy * woinst->num_voices;
int val = 0;
u32 bytestocopy;
unsigned long flags;
+ int __user *p = (int __user *)arg;
DPF(4, "emu10k1_audio_ioctl()\n");
switch (cmd) {
case OSS_GETVERSION:
DPF(2, "OSS_GETVERSION:\n");
- return put_user(SOUND_VERSION, (int *) arg);
+ return put_user(SOUND_VERSION, p);
case SNDCTL_DSP_RESET:
DPF(2, "SNDCTL_DSP_RESET:\n");
DPF(2, "SNDCTL_DSP_GETCAPS:\n");
return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME |
DSP_CAP_TRIGGER | DSP_CAP_MMAP |
- DSP_CAP_COPROC| DSP_CAP_MULTI, (int *) arg);
+ DSP_CAP_COPROC| DSP_CAP_MULTI, p);
case SNDCTL_DSP_SPEED:
DPF(2, "SNDCTL_DSP_SPEED:\n");
- if (get_user(val, (int *) arg))
+ if (get_user(val, p))
return -EFAULT;
DPD(2, "val is %d\n", val);
DPD(2, "set playback sampling rate -> %d\n", val);
}
- return put_user(val, (int *) arg);
+ return put_user(val, p);
} else {
if (file->f_mode & FMODE_READ)
val = wiinst->format.samplingrate;
else if (file->f_mode & FMODE_WRITE)
val = woinst->format.samplingrate;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
}
break;
case SNDCTL_DSP_STEREO:
DPF(2, "SNDCTL_DSP_STEREO:\n");
- if (get_user(val, (int *) arg))
+ if (get_user(val, p))
return -EFAULT;
DPD(2, " val is %d\n", val);
DPD(2, "set playback stereo -> %d\n", val);
}
- return put_user(val, (int *) arg);
+ return put_user(val, p);
break;
case SNDCTL_DSP_CHANNELS:
DPF(2, "SNDCTL_DSP_CHANNELS:\n");
- if (get_user(val, (int *) arg))
+ if (get_user(val, p))
return -EFAULT;
DPD(2, " val is %d\n", val);
DPD(2, "set playback number of channels -> %d\n", val);
}
- return put_user(val, (int *) arg);
+ return put_user(val, p);
} else {
if (file->f_mode & FMODE_READ)
val = wiinst->format.channels;
else if (file->f_mode & FMODE_WRITE)
val = woinst->format.channels;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
}
break;
wave_dev->card->pt.enable_gpr_name) >= 0)
val |= AFMT_AC3;
}
- return put_user(val, (int *) arg);
+ return put_user(val, p);
case SNDCTL_DSP_SETFMT: /* Same as SNDCTL_DSP_SAMPLESIZE */
DPF(2, "SNDCTL_DSP_SETFMT:\n");
- if (get_user(val, (int *) arg))
+ if (get_user(val, p))
return -EFAULT;
DPD(2, " val is %d\n", val);
DPD(2, "set playback format -> %d\n", val);
}
- return put_user(val, (int *) arg);
+ return put_user(val, p);
} else {
if (file->f_mode & FMODE_READ)
val = wiinst->format.id;
else if (file->f_mode & FMODE_WRITE)
val = woinst->format.id;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
}
break;
else if (file->f_mode & FMODE_WRITE)
val = woinst->format.bitsperchannel;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
case SOUND_PCM_READ_RATE:
else if (file->f_mode & FMODE_WRITE)
val = woinst->format.samplingrate;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
case SOUND_PCM_READ_CHANNELS:
else if (file->f_mode & FMODE_WRITE)
val = woinst->format.channels;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
case SOUND_PCM_WRITE_FILTER:
DPF(2, "SOUND_PCM_WRITE_FILTER: not implemented\n");
if (file->f_mode & FMODE_READ && (wave_dev->enablebits & PCM_ENABLE_INPUT))
val |= PCM_ENABLE_INPUT;
- return put_user(val, (int *) arg);
+ return put_user(val, p);
case SNDCTL_DSP_SETTRIGGER:
DPF(2, "SNDCTL_DSP_SETTRIGGER:\n");
- if (get_user(val, (int *) arg))
+ if (get_user(val, p))
return -EFAULT;
if (file->f_mode & FMODE_WRITE) {
info.fragstotal = woinst->buffer.numfrags * woinst->num_voices;
info.fragments = info.bytes / info.fragsize;
- if (copy_to_user((int *) arg, &info, sizeof(info)))
+ if (copy_to_user(p, &info, sizeof(info)))
return -EFAULT;
}
break;
info.fragments = info.bytes / wiinst->buffer.fragment_size;
info.fragsize = wiinst->buffer.fragment_size;
- if (copy_to_user((int *) arg, &info, sizeof(info)))
+ if (copy_to_user(p, &info, sizeof(info)))
return -EFAULT;
}
break;
val *= woinst->num_voices;
spin_unlock_irqrestore(&woinst->lock, flags);
- return put_user(val, (int *) arg);
+ return put_user(val, p);
case SNDCTL_DSP_GETIPTR:
{
spin_unlock_irqrestore(&wiinst->lock, flags);
- if (copy_to_user((void *) arg, &cinfo, sizeof(cinfo)))
+ if (copy_to_user(p, &cinfo, sizeof(cinfo)))
return -EFAULT;
}
break;
spin_unlock_irqrestore(&woinst->lock, flags);
- if (copy_to_user((void *) arg, &cinfo, sizeof(cinfo)))
+ if (copy_to_user(p, &cinfo, sizeof(cinfo)))
return -EFAULT;
}
break;
spin_unlock_irqrestore(&wiinst->lock, flags);
}
- return put_user(val, (int *) arg);
+ return put_user(val, p);
break;
case SNDCTL_DSP_SETFRAGMENT:
DPF(2, "SNDCTL_DSP_SETFRAGMENT:\n");
- if (get_user(val, (int *) arg))
+ if (get_user(val, p))
return -EFAULT;
DPD(2, "val is %#x\n", val);
if (!buf)
return -ENOMEM;
- if (copy_from_user(buf, (copr_buffer *) arg, sizeof(copr_buffer))) {
+ if (copy_from_user(buf, p, sizeof(copr_buffer))) {
kfree (buf);
return -EFAULT;
}
for (i = 0; i < buf->len; i++)
((u32 *) buf->data)[i] = sblive_readptr(wave_dev->card, buf->offs + i, buf->flags);
- if (copy_to_user((copr_buffer *) arg, buf, sizeof(copr_buffer))) {
+ if (copy_to_user(p, buf, sizeof(copr_buffer))) {
kfree(buf);
return -EFAULT;
}