From 433a3513cb7b7890aad411019fdb553c3daf63a1 Mon Sep 17 00:00:00 2001 From: Rahul Sharma Date: Fri, 2 Feb 2018 18:50:18 +0530 Subject: [PATCH] msm: ais: Synchronize v4l2 subscribe and unsubscribe event Serializing msm_subscribe_event and msm_unsubscribe_event to prevent possibility of use-after-free if same event is unsubcribed before v4l2 subscribe and unsubscribe event. Change-Id: Ia5ba7aa1338982b3a99616a2981e415c28f8b4a6 Signed-off-by: Rahul Sharma --- drivers/media/platform/msm/ais/camera/camera.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/msm/ais/camera/camera.c b/drivers/media/platform/msm/ais/camera/camera.c index 3f477d50ceaf..afba7386a82b 100644 --- a/drivers/media/platform/msm/ais/camera/camera.c +++ b/drivers/media/platform/msm/ais/camera/camera.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -464,7 +464,9 @@ static int camera_v4l2_subscribe_event(struct v4l2_fh *fh, int rc = 0; struct camera_v4l2_private *sp = fh_to_private(fh); + mutex_lock(&sp->lock); rc = v4l2_event_subscribe(&sp->fh, sub, 5, NULL); + mutex_unlock(&sp->lock); return rc; } @@ -475,7 +477,9 @@ static int camera_v4l2_unsubscribe_event(struct v4l2_fh *fh, int rc = 0; struct camera_v4l2_private *sp = fh_to_private(fh); + mutex_lock(&sp->lock); rc = v4l2_event_unsubscribe(&sp->fh, sub); + mutex_unlock(&sp->lock); return rc; }