media: imx: imx7_mipi_csis: Don't take state->lock in .link_setup()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 8 Jan 2021 00:05:19 +0000 (01:05 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 6 Apr 2021 09:39:52 +0000 (11:39 +0200)
The .link_setup() handler uses state->lock to protect the src_sd field.
This is only used in mipi_csis_s_stream(), which can't race
.link_setup() as the MC core prevents link setup when the pipeline is
streaming. Drop the lock.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/imx/imx7-mipi-csis.c

index c6cd608..21774f3 100644 (file)
@@ -749,7 +749,6 @@ static int mipi_csis_link_setup(struct media_entity *entity,
        struct v4l2_subdev *mipi_sd = media_entity_to_v4l2_subdev(entity);
        struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
        struct v4l2_subdev *remote_sd;
-       int ret = 0;
 
        dev_dbg(state->dev, "link setup %s -> %s", remote_pad->entity->name,
                local_pad->entity->name);
@@ -760,22 +759,16 @@ static int mipi_csis_link_setup(struct media_entity *entity,
 
        remote_sd = media_entity_to_v4l2_subdev(remote_pad->entity);
 
-       mutex_lock(&state->lock);
-
        if (flags & MEDIA_LNK_FL_ENABLED) {
-               if (state->src_sd) {
-                       ret = -EBUSY;
-                       goto out;
-               }
+               if (state->src_sd)
+                       return -EBUSY;
 
                state->src_sd = remote_sd;
        } else {
                state->src_sd = NULL;
        }
 
-out:
-       mutex_unlock(&state->lock);
-       return ret;
+       return 0;
 }
 
 static struct v4l2_mbus_framefmt *