Takashi Iwai 782005
From 780d815dcc9b34d93ae69385a8465c38d423ff0f Mon Sep 17 00:00:00 2001
Takashi Iwai 782005
From: Tom Rix <trix@redhat.com>
Takashi Iwai 782005
Date: Mon, 10 Aug 2020 21:25:18 +0200
Takashi Iwai 782005
Subject: [PATCH] media: tw5864: check status of tw5864_frameinterval_get
Takashi Iwai 782005
Git-commit: 780d815dcc9b34d93ae69385a8465c38d423ff0f
Takashi Iwai 782005
Patch-mainline: v5.10-rc1
Takashi Iwai 782005
References: git-fixes
Takashi Iwai 782005
Takashi Iwai 782005
clang static analysis reports this problem
Takashi Iwai 782005
Takashi Iwai 782005
tw5864-video.c:773:32: warning: The left expression of the compound
Takashi Iwai 782005
  assignment is an uninitialized value.
Takashi Iwai 782005
  The computed value will also be garbage
Takashi Iwai 782005
        fintv->stepwise.max.numerator *= std_max_fps;
Takashi Iwai 782005
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
Takashi Iwai 782005
Takashi Iwai 782005
stepwise.max is set with frameinterval, which comes from
Takashi Iwai 782005
Takashi Iwai 782005
	ret = tw5864_frameinterval_get(input, &frameinterval);
Takashi Iwai 782005
	fintv->stepwise.step = frameinterval;
Takashi Iwai 782005
	fintv->stepwise.min = frameinterval;
Takashi Iwai 782005
	fintv->stepwise.max = frameinterval;
Takashi Iwai 782005
	fintv->stepwise.max.numerator *= std_max_fps;
Takashi Iwai 782005
Takashi Iwai 782005
When tw5864_frameinterval_get() fails, frameinterval is not
Takashi Iwai 782005
set. So check the status and fix another similar problem.
Takashi Iwai 782005
Takashi Iwai 782005
Signed-off-by: Tom Rix <trix@redhat.com>
Takashi Iwai 782005
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Takashi Iwai 782005
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Takashi Iwai 782005
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 782005
Takashi Iwai 782005
---
Takashi Iwai 782005
 drivers/media/pci/tw5864/tw5864-video.c | 6 ++++++
Takashi Iwai 782005
 1 file changed, 6 insertions(+)
Takashi Iwai 782005
Takashi Iwai 782005
diff --git a/drivers/media/pci/tw5864/tw5864-video.c b/drivers/media/pci/tw5864/tw5864-video.c
Takashi Iwai 782005
index f4bc72bbe2c5..9131265c2b87 100644
Takashi Iwai 782005
--- a/drivers/media/pci/tw5864/tw5864-video.c
Takashi Iwai 782005
+++ b/drivers/media/pci/tw5864/tw5864-video.c
Takashi Iwai 782005
@@ -767,6 +767,9 @@ static int tw5864_enum_frameintervals(struct file *file, void *priv,
Takashi Iwai 782005
 	fintv->type = V4L2_FRMIVAL_TYPE_STEPWISE;
Takashi Iwai 782005
 
Takashi Iwai 782005
 	ret = tw5864_frameinterval_get(input, &frameinterval);
Takashi Iwai 782005
+	if (ret)
Takashi Iwai 782005
+		return ret;
Takashi Iwai 782005
+
Takashi Iwai 782005
 	fintv->stepwise.step = frameinterval;
Takashi Iwai 782005
 	fintv->stepwise.min = frameinterval;
Takashi Iwai 782005
 	fintv->stepwise.max = frameinterval;
Takashi Iwai 782005
@@ -785,6 +788,9 @@ static int tw5864_g_parm(struct file *file, void *priv,
Takashi Iwai 782005
 	cp->capability = V4L2_CAP_TIMEPERFRAME;
Takashi Iwai 782005
 
Takashi Iwai 782005
 	ret = tw5864_frameinterval_get(input, &cp->timeperframe);
Takashi Iwai 782005
+	if (ret)
Takashi Iwai 782005
+		return ret;
Takashi Iwai 782005
+
Takashi Iwai 782005
 	cp->timeperframe.numerator *= input->frame_interval;
Takashi Iwai 782005
 	cp->capturemode = 0;
Takashi Iwai 782005
 	cp->readbuffers = 2;
Takashi Iwai 782005
-- 
Takashi Iwai 782005
2.16.4
Takashi Iwai 782005