diff mbox series

media: ov9734: hold lock to check streaming state

Message ID 1606448892-19167-1-git-send-email-bingbu.cao@intel.com (mailing list archive)
State New, archived
Headers show
Series media: ov9734: hold lock to check streaming state | expand

Commit Message

Bingbu Cao Nov. 27, 2020, 3:48 a.m. UTC
The lock in ov9734 is used to protect the streaming state and
serialize the stream on and off callbacks, it should be hold before
checking the streaming state in ov9734_set_stream().

Reported-by: Tomasz Figa <tfiga@chromium.org>
Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Bingbu Cao <bingbu.cao@intel.com>
---
 drivers/media/i2c/ov9734.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Sergey Senozhatsky Nov. 27, 2020, 6:30 a.m. UTC | #1
On (20/11/27 11:48), Bingbu Cao wrote:
> The lock in ov9734 is used to protect the streaming state and
> serialize the stream on and off callbacks, it should be hold before
> checking the streaming state in ov9734_set_stream().
> 
> Reported-by: Tomasz Figa <tfiga@chromium.org>
> Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org>
> Signed-off-by: Bingbu Cao <bingbu.cao@intel.com>

Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>

	-ss
diff mbox series

Patch

diff --git a/drivers/media/i2c/ov9734.c b/drivers/media/i2c/ov9734.c
index 4b9a2e9288e7..e212465489e8 100644
--- a/drivers/media/i2c/ov9734.c
+++ b/drivers/media/i2c/ov9734.c
@@ -637,10 +637,12 @@  static int ov9734_set_stream(struct v4l2_subdev *sd, int enable)
 	struct i2c_client *client = v4l2_get_subdevdata(sd);
 	int ret = 0;
 
-	if (ov9734->streaming == enable)
+	mutex_lock(&ov9734->mutex);
+	if (ov9734->streaming == enable) {
+		mutex_unlock(&ov9734->mutex);
 		return 0;
+	}
 
-	mutex_lock(&ov9734->mutex);
 	if (enable) {
 		ret = pm_runtime_get_sync(&client->dev);
 		if (ret < 0) {