linux/drivers/media/dvb-core
Nikolaus Schulz 30ad64b8ac [media] dvb: push down ioctl lock in dvb_usercopy
Since most dvb ioctls wrap their real work with dvb_usercopy, the static mutex
used in dvb_usercopy effectively is a global lock for dvb ioctls.
Unfortunately, frontend ioctls can be blocked by the frontend thread for
several seconds; this leads to unacceptable lock contention.  Mitigate that by
pushing the mutex from dvb_usercopy down to the individual, device specific
ioctls.
There are 10 such ioctl functions using dvb_usercopy, either calling it
directly, or via the trivial wrapper dvb_generic_ioctl. The following already
employ their own locking and look safe:
    • dvb_demux_ioctl           (as per dvb_demux_do_ioctl)
    • dvb_dvr_ioctl             (as per dvb_dvr_do_ioctl)
    • dvb_osd_ioctl             (as per single non-trivial callee)
    • fdtv_ca_ioctl             (as per callees)
    • dvb_frontend_ioctl
The following functions do not, and are thus changed to use a device specific
mutex:
    • dvb_net_ioctl             (as per dvb_net_do_ioctl)
    • dvb_ca_en50221_io_ioctl   (as per dvb_ca_en50221_io_do_ioctl)
    • dvb_video_ioctl
    • dvb_audio_ioctl
    • dvb_ca_ioctl

Signed-off-by: Nikolaus Schulz <schulz@macnetix.de>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2012-12-27 15:44:21 -02:00
..
Kconfig
Makefile
demux.h
dmxdev.c [media] dmxdev: fix a comparition of unsigned expression warning 2012-10-28 07:38:42 -02:00
dmxdev.h [media] remove include/linux/dvb/dmx.h 2012-10-19 07:29:17 -03:00
dvb-usb-ids.h [media] rtl28xxu: add NOXON DAB/DAB+ USB dongle rev 2 2012-11-28 09:51:22 -02:00
dvb_ca_en50221.c [media] dvb: push down ioctl lock in dvb_usercopy 2012-12-27 15:44:21 -02:00
dvb_ca_en50221.h
dvb_demux.c [media] drivers/media/dvb-core/dvb_demux.c: removes unnecessary semicolon 2012-09-23 17:04:15 -03:00
dvb_demux.h
dvb_filter.c
dvb_filter.h
dvb_frontend.c [media] dvb_frontend: fix ioctls failing if frontend open/closed too fast 2012-12-27 15:43:17 -02:00
dvb_frontend.h [media] dvb: LNA implementation changes 2012-10-07 10:27:49 -03:00
dvb_math.c
dvb_math.h
dvb_net.c [media] dvb: push down ioctl lock in dvb_usercopy 2012-12-27 15:44:21 -02:00
dvb_net.h [media] dvb: push down ioctl lock in dvb_usercopy 2012-12-27 15:44:21 -02:00
dvb_ringbuffer.c
dvb_ringbuffer.h
dvbdev.c [media] dvb: push down ioctl lock in dvb_usercopy 2012-12-27 15:44:21 -02:00
dvbdev.h