]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: atomisp: Drop atomisp_pipe_check() from atomisp_link_setup()
authorHans de Goede <hdegoede@redhat.com>
Wed, 10 Apr 2024 16:15:32 +0000 (17:15 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 26 Apr 2024 09:54:38 +0000 (10:54 +0100)
The media-controller core (__media_entity_setup_link()) already checks
that the pads of the link are not streaming before calling the setup_link()
pad-op so calling atomisp_pipe_check() is not necessary;

and taking isp->mutex inside the setup_link() pad-op leads to a possible
ABBA deadlock vs the media-device graph_mutex which in the case of
the setup_link() pad-op is taken before calling the op, while in other
scenarios the graph_mutex is taken after the isp->mutex.

Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/atomisp/pci/atomisp_subdev.c

index 53225958c23bf092597ec41eaa1c85a9d4a7b529..1bb33460210c118d60f67c9b4250e817d1764cbf 100644 (file)
@@ -644,7 +644,7 @@ static int atomisp_link_setup(struct media_entity *entity,
                                              entity);
        struct atomisp_sub_device *asd = v4l2_get_subdevdata(sd);
        struct atomisp_device *isp = asd->isp;
-       int i, ret;
+       int i;
 
        /* ISP's source is immutable */
        if (local != &asd->pads[ATOMISP_SUBDEV_PAD_SINK]) {
@@ -663,12 +663,6 @@ static int atomisp_link_setup(struct media_entity *entity,
                return -EINVAL;
        }
 
-       mutex_lock(&isp->mutex);
-       ret = atomisp_pipe_check(&asd->video_out, true);
-       mutex_unlock(&isp->mutex);
-       if (ret)
-               return ret;
-
        /* Turn off the sensor on link disable */
        if (!(flags & MEDIA_LNK_FL_ENABLED)) {
                atomisp_s_sensor_power(isp, i, 0);