This series resolves reported smatch warnings against the recently-introduced
Allwinner A31/A83T CSI, ISP and MIPI CSI-2 drivers.
Smatch was ran again on the updated tree and no longer shows any error or
warning.
Changes since v1:
- Added fixes for static struct declarations;
- Fixed ISP commit titles by replacing bridge with proc.
Paul
Paul Kocialkowski (11):
media: sun6i-csi: bridge: Fix return code handling in stream off path
media: sun6i-csi: bridge: Error out on invalid port to fix warning
media: sunxi-csi: bridge: Declare subdev ops as static
media: sun6i-csi: capture: Remove useless ret initialization
media: sun6i-mipi-csi2: Fix return code handling in stream off path
media: sun8i-a83t-mipi-csi2: Fix return code handling in stream off
path
media: sun6i-isp: proc: Fix return code handling in stream off path
media: sun6i-isp: proc: Error out on invalid port to fix warning
media: sunxi-isp: proc: Declare subdev ops as static
media: sun6i-isp: capture: Fix uninitialized variable use
media: sun6i-isp: params: Fix incorrect indentation
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c | 8 ++++----
.../media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c | 2 +-
.../platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 5 ++---
.../sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c | 5 ++---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c | 4 ++--
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c | 4 ++--
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c | 8 ++++----
7 files changed, 17 insertions(+), 19 deletions(-)
--
2.38.1
Explicitly set ret to zero on disable path to avoid a related smatch
warning. This makes initialization at declaration useless.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
index 86d20c1c35ed..88df3a73ebfa 100644
--- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
+++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
@@ -415,8 +415,7 @@ static int sun6i_csi_bridge_s_stream(struct v4l2_subdev *subdev, int on)
struct sun6i_csi_bridge_source *source;
struct v4l2_subdev *source_subdev;
struct media_pad *remote_pad;
- /* Initialize to 0 to use both in disable label (ret != 0) and off. */
- int ret = 0;
+ int ret;
/* Source */
@@ -436,6 +435,7 @@ static int sun6i_csi_bridge_s_stream(struct v4l2_subdev *subdev, int on)
if (!on) {
v4l2_subdev_call(source_subdev, video, s_stream, 0);
+ ret = 0;
goto disable;
}
--
2.38.1
Explicitly set ret to zero instead of assigning it and overwriting it later,
which is a bit confusing to understand.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
.../media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c b/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c
index 484ac5f054d5..a220ce849b41 100644
--- a/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c
+++ b/drivers/media/platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c
@@ -188,7 +188,8 @@ static int sun6i_mipi_csi2_s_stream(struct v4l2_subdev *subdev, int on)
return -ENODEV;
if (!on) {
- ret = v4l2_subdev_call(source_subdev, video, s_stream, 0);
+ v4l2_subdev_call(source_subdev, video, s_stream, 0);
+ ret = 0;
goto disable;
}
@@ -280,8 +281,6 @@ static int sun6i_mipi_csi2_s_stream(struct v4l2_subdev *subdev, int on)
return 0;
disable:
- if (!on)
- ret = 0;
phy_power_off(dphy);
sun6i_mipi_csi2_disable(csi2_dev);
--
2.38.1
The enabled variable is only set for a valid port and used later,
which triggers an uninitialized use smatch warning. Explicitly error
out in that case to fix the warning.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
index 88df3a73ebfa..4517c0346eef 100644
--- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
+++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
@@ -663,7 +663,7 @@ sun6i_csi_bridge_notifier_bound(struct v4l2_async_notifier *notifier,
enabled = !bridge->source_parallel.expected;
break;
default:
- break;
+ return -EINVAL;
}
source->subdev = remote_subdev;
--
2.38.1
The static keyword is missing in the v4l2 subdev ops definition for the proc.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
index 4f34c1bc8be9..1ca4673df2b3 100644
--- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
+++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
@@ -342,7 +342,7 @@ static const struct v4l2_subdev_pad_ops sun6i_isp_proc_pad_ops = {
.set_fmt = sun6i_isp_proc_set_fmt,
};
-const struct v4l2_subdev_ops sun6i_isp_proc_subdev_ops = {
+static const struct v4l2_subdev_ops sun6i_isp_proc_subdev_ops = {
.video = &sun6i_isp_proc_video_ops,
.pad = &sun6i_isp_proc_pad_ops,
};
--
2.38.1
The enabled variable is only set for a valid port and used later,
which triggers an uninitialized use smatch warning. Explicitly error
out in that case to fix the warning.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
index a95709d2c573..4f34c1bc8be9 100644
--- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
+++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
@@ -416,7 +416,7 @@ static int sun6i_isp_proc_notifier_bound(struct v4l2_async_notifier *notifier,
enabled = !proc->source_csi0.expected;
break;
default:
- break;
+ return -EINVAL;
}
source->subdev = remote_subdev;
--
2.38.1
While the stride_chroma variable was previously initialized to zero,
it's actually stride_chroma_div4 that is set to hardware registers.
Initialize it to zero instead to avoid an uninitialized variable use
and get rid of the associated smatch warning.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c
index 4b592820845a..1595a9607775 100644
--- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c
+++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_capture.c
@@ -108,8 +108,8 @@ sun6i_isp_capture_buffer_configure(struct sun6i_isp_device *isp_dev,
void sun6i_isp_capture_configure(struct sun6i_isp_device *isp_dev)
{
unsigned int width, height;
- unsigned int stride_luma, stride_chroma = 0;
- unsigned int stride_luma_div4, stride_chroma_div4;
+ unsigned int stride_luma, stride_chroma;
+ unsigned int stride_luma_div4, stride_chroma_div4 = 0;
const struct sun6i_isp_capture_format *format;
const struct v4l2_format_info *info;
u32 pixelformat;
--
2.38.1
Explicitly set ret to zero on disable path to avoid a related smatch
warning. This makes initialization at declaration useless.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
index d69d2be0add2..a95709d2c573 100644
--- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
+++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c
@@ -173,8 +173,7 @@ static int sun6i_isp_proc_s_stream(struct v4l2_subdev *subdev, int on)
struct sun6i_isp_proc_source *source;
struct v4l2_subdev *source_subdev;
struct media_pad *remote_pad;
- /* Initialize to 0 to use both in disable label (ret != 0) and off. */
- int ret = 0;
+ int ret;
/* Source */
@@ -195,6 +194,7 @@ static int sun6i_isp_proc_s_stream(struct v4l2_subdev *subdev, int on)
if (!on) {
sun6i_isp_proc_irq_disable(isp_dev);
v4l2_subdev_call(source_subdev, video, s_stream, 0);
+ ret = 0;
goto disable;
}
--
2.38.1
Remove a heading whitespace that results in a smatch warning.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c
index 8039e311cb1c..7b41a13162b9 100644
--- a/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c
+++ b/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_params.c
@@ -183,8 +183,8 @@ void sun6i_isp_params_configure(struct sun6i_isp_device *isp_dev)
if (state->configured)
goto complete;
- sun6i_isp_params_configure_modules(isp_dev,
- &sun6i_isp_params_config_default);
+ sun6i_isp_params_configure_modules(isp_dev,
+ &sun6i_isp_params_config_default);
state->configured = true;
--
2.38.1
Explicitly set ret to zero instead of assigning it and overwriting it later,
which is a bit confusing to understand.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
.../sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c b/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c
index d993c09a4820..cd2e92ae2293 100644
--- a/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c
+++ b/drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c
@@ -220,7 +220,8 @@ static int sun8i_a83t_mipi_csi2_s_stream(struct v4l2_subdev *subdev, int on)
return -ENODEV;
if (!on) {
- ret = v4l2_subdev_call(source_subdev, video, s_stream, 0);
+ v4l2_subdev_call(source_subdev, video, s_stream, 0);
+ ret = 0;
goto disable;
}
@@ -312,8 +313,6 @@ static int sun8i_a83t_mipi_csi2_s_stream(struct v4l2_subdev *subdev, int on)
return 0;
disable:
- if (!on)
- ret = 0;
phy_power_off(dphy);
sun8i_a83t_mipi_csi2_disable(csi2_dev);
--
2.38.1
There is no particular need to assign ret when declaring it as
it will be assigned before there is any chance to return it.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
index 6d34f5c0768f..cf6aadbc130b 100644
--- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
+++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_capture.c
@@ -832,7 +832,7 @@ static int sun6i_csi_capture_open(struct file *file)
{
struct sun6i_csi_device *csi_dev = video_drvdata(file);
struct sun6i_csi_capture *capture = &csi_dev->capture;
- int ret = 0;
+ int ret;
if (mutex_lock_interruptible(&capture->lock))
return -ERESTARTSYS;
--
2.38.1
The static keyword is missing in the v4l2 subdev ops definition for the bridge.
Signed-off-by: Paul Kocialkowski <[email protected]>
---
drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
index 4517c0346eef..7fcb0815cb42 100644
--- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
+++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c
@@ -587,7 +587,7 @@ static const struct v4l2_subdev_pad_ops sun6i_csi_bridge_pad_ops = {
.set_fmt = sun6i_csi_bridge_set_fmt,
};
-const struct v4l2_subdev_ops sun6i_csi_bridge_subdev_ops = {
+static const struct v4l2_subdev_ops sun6i_csi_bridge_subdev_ops = {
.video = &sun6i_csi_bridge_video_ops,
.pad = &sun6i_csi_bridge_pad_ops,
};
--
2.38.1