• Nikolaus Schulz's avatar
    [media] dvb: push down ioctl lock in dvb_usercopy · 30ad64b8
    Nikolaus Schulz authored
    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...
    30ad64b8
dvb_net.h 1.67 KB