upstream: [media] saa7134: fix regression with tvtime
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 17 Apr 2014 10:24:31 +0000 (07:24 -0300)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 02:55:36 +0000 (11:55 +0900)
commitb2928c7c50a22b370fcb279c3924955064bd5e48
tree3e9721cb8c66312ef61d755f84b266f49a90164f
parentd2f35f46df67deb6f852089fd19d3c52f12d90f2
upstream: [media] saa7134: fix regression with tvtime

This solves this bug:

https://bugzilla.kernel.org/show_bug.cgi?id=73361

The problem is that when you quit tvtime it calls STREAMOFF, but then it queues a
bunch of buffers for no good reason before closing the file descriptor.

In the past closing the fd would free the vb queue since that was part of the file
handle struct. Since that was moved to the global struct that no longer happened.

This wouldn't be a problem, but the extra QBUF calls that tvtime does meant that
the buffer list in videobuf (q->stream) contained buffers, so REQBUFS would fail
with -EBUSY.

The solution is to init the list head explicitly when releasing the file
descriptor and to not free the video resource when calling streamoff.

The real fix will hopefully go into kernel 3.16 when the vb2 conversion is
merged. Basically the saa7134 driver with the old videobuf is so full of holes it
ain't funny anymore, so consider this a band-aid for kernels 3.14 and 15.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: stable@vger.kernel.org # for v3.14 and up
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/pci/saa7134/saa7134-video.c