|
@@ -36,8 +36,6 @@ static int snd_rawmidi_ioctl_params_compat(struct snd_rawmidi_file *rfile,
|
|
|
struct snd_rawmidi_params params;
|
|
|
unsigned int val;
|
|
|
|
|
|
- if (rfile->output == NULL)
|
|
|
- return -EINVAL;
|
|
|
if (get_user(params.stream, &src->stream) ||
|
|
|
get_user(params.buffer_size, &src->buffer_size) ||
|
|
|
get_user(params.avail_min, &src->avail_min) ||
|
|
@@ -46,8 +44,12 @@ static int snd_rawmidi_ioctl_params_compat(struct snd_rawmidi_file *rfile,
|
|
|
params.no_active_sensing = val;
|
|
|
switch (params.stream) {
|
|
|
case SNDRV_RAWMIDI_STREAM_OUTPUT:
|
|
|
+ if (!rfile->output)
|
|
|
+ return -EINVAL;
|
|
|
return snd_rawmidi_output_params(rfile->output, ¶ms);
|
|
|
case SNDRV_RAWMIDI_STREAM_INPUT:
|
|
|
+ if (!rfile->input)
|
|
|
+ return -EINVAL;
|
|
|
return snd_rawmidi_input_params(rfile->input, ¶ms);
|
|
|
}
|
|
|
return -EINVAL;
|
|
@@ -67,16 +69,18 @@ static int snd_rawmidi_ioctl_status_compat(struct snd_rawmidi_file *rfile,
|
|
|
int err;
|
|
|
struct snd_rawmidi_status status;
|
|
|
|
|
|
- if (rfile->output == NULL)
|
|
|
- return -EINVAL;
|
|
|
if (get_user(status.stream, &src->stream))
|
|
|
return -EFAULT;
|
|
|
|
|
|
switch (status.stream) {
|
|
|
case SNDRV_RAWMIDI_STREAM_OUTPUT:
|
|
|
+ if (!rfile->output)
|
|
|
+ return -EINVAL;
|
|
|
err = snd_rawmidi_output_status(rfile->output, &status);
|
|
|
break;
|
|
|
case SNDRV_RAWMIDI_STREAM_INPUT:
|
|
|
+ if (!rfile->input)
|
|
|
+ return -EINVAL;
|
|
|
err = snd_rawmidi_input_status(rfile->input, &status);
|
|
|
break;
|
|
|
default:
|
|
@@ -112,16 +116,18 @@ static int snd_rawmidi_ioctl_status_x32(struct snd_rawmidi_file *rfile,
|
|
|
int err;
|
|
|
struct snd_rawmidi_status status;
|
|
|
|
|
|
- if (rfile->output == NULL)
|
|
|
- return -EINVAL;
|
|
|
if (get_user(status.stream, &src->stream))
|
|
|
return -EFAULT;
|
|
|
|
|
|
switch (status.stream) {
|
|
|
case SNDRV_RAWMIDI_STREAM_OUTPUT:
|
|
|
+ if (!rfile->output)
|
|
|
+ return -EINVAL;
|
|
|
err = snd_rawmidi_output_status(rfile->output, &status);
|
|
|
break;
|
|
|
case SNDRV_RAWMIDI_STREAM_INPUT:
|
|
|
+ if (!rfile->input)
|
|
|
+ return -EINVAL;
|
|
|
err = snd_rawmidi_input_status(rfile->input, &status);
|
|
|
break;
|
|
|
default:
|