Commit e03a5d3e authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

media: atomisp: Drop atomisp_pipe_check() from atomisp_link_setup()



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: default avatarAndy Shevchenko <andy@kernel.org>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 1c3432df
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -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);