• Sylwester Nawrocki's avatar
    [media] s5p-fimc: Prevent AB-BA deadlock during links reconfiguration · 740ad921
    Sylwester Nawrocki authored
    This patch patch eliminates potential AB-BA deadlock when one process calls
    open(), or VIDIOC_S/TRY_FMT ioctl  on the FIMC capture video node, while
    other thread is reconfiguring media links via media device node:
    /dev/video? open()		  /dev/media? MEDIA_IOC_SETUP_LINK ioctl
    mutex_lock(video_lock)            mutex_lock(graph_lock)
        fimc_pipeline_open()               fimc_md_link_notify()
            mutex_lock(graph_lock)	          mutex_lock(video_lock)
              ...                               ...
    The deadlock is avoided by always taking the graph mutex first in video
    node open() or an ioctl, before the video lock is acquired. Reversed
    order seems impossible, since media device driver's link_notify callback
    is called with media graph mutex already held.
    To ensure proper locking order VIDIOC_S_FMT and VIDIOC_TRY_FMT ioctls are
    not serialized in the v4l2-core and the driver takes care of it itself.
    Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    740ad921
fimc-mdevice.c 25.7 KB