Browse Source

[media] ivtv: don't allow g/s_frequency for output device nodes

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Hans Verkuil 12 years ago
parent
commit
dff274fd86
2 changed files with 7 additions and 0 deletions
  1. 1 0
      drivers/media/pci/ivtv/ivtv-driver.c
  2. 6 0
      drivers/media/pci/ivtv/ivtv-ioctl.c

+ 1 - 0
drivers/media/pci/ivtv/ivtv-driver.c

@@ -1325,6 +1325,7 @@ int ivtv_init_on_first_open(struct ivtv *itv)
 	int video_input;
 
 	fh.itv = itv;
+	fh.type = IVTV_ENC_STREAM_TYPE_MPG;
 
 	if (test_bit(IVTV_F_I_FAILED, &itv->i_flags))
 		return -ENXIO;

+ 6 - 0
drivers/media/pci/ivtv/ivtv-ioctl.c

@@ -1064,7 +1064,10 @@ static int ivtv_s_output(struct file *file, void *fh, unsigned int outp)
 static int ivtv_g_frequency(struct file *file, void *fh, struct v4l2_frequency *vf)
 {
 	struct ivtv *itv = fh2id(fh)->itv;
+	struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
 
+	if (s->vdev->vfl_dir)
+		return -ENOTTY;
 	if (vf->tuner != 0)
 		return -EINVAL;
 
@@ -1075,7 +1078,10 @@ static int ivtv_g_frequency(struct file *file, void *fh, struct v4l2_frequency *
 int ivtv_s_frequency(struct file *file, void *fh, struct v4l2_frequency *vf)
 {
 	struct ivtv *itv = fh2id(fh)->itv;
+	struct ivtv_stream *s = &itv->streams[fh2id(fh)->type];
 
+	if (s->vdev->vfl_dir)
+		return -ENOTTY;
 	if (vf->tuner != 0)
 		return -EINVAL;