Subject: [PATCH 0/6] Fix issues reported by static analysis tool.

This patch series fixes some of the issues reported by static analysis
tool.

Pankaj Bharadiya (6):
media: staging: atomisp: remove redundent check
media: staging: atomisp: Remove useless if statement
media: staging: atomisp: Remove useless "ifndef ISP2401"
media: staging: atomisp: Fix potential NULL pointer dereference
media: staging: atomisp: Fix potential NULL pointer dereference
media: staging: atomisp: Fix potential NULL pointer dereference

drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c | 14 --------------
.../media/atomisp/pci/atomisp2/atomisp_compat_css20.c | 2 --
drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c | 8 --------
.../pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c | 3 ++-
.../staging/media/atomisp/pci/atomisp2/css2400/sh_css.c | 7 +++++--
5 files changed, 7 insertions(+), 27 deletions(-)

--
2.7.4



Subject: [PATCH 5/6] media: staging: atomisp: Fix potential NULL pointer dereference

In sh_css_config_input_network(), "stream" is being dereferenced
before it is null checked.
Fix it by moving the "stream" pointer dereference after it has been
properly null checked.

Signed-off-by: Pankaj Bharadiya <[email protected]>
---
drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
index c771e4b..eb84d51 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
@@ -529,11 +529,12 @@ static enum ia_css_err
sh_css_config_input_network(struct ia_css_stream *stream)
{
unsigned int fmt_type;
- struct ia_css_pipe *pipe = stream->last_pipe;
+ struct ia_css_pipe *pipe;
struct ia_css_binary *binary = NULL;
enum ia_css_err err = IA_CSS_SUCCESS;

assert(stream != NULL);
+ pipe = stream->last_pipe;
assert(pipe != NULL);

ia_css_debug_dtrace(IA_CSS_DEBUG_TRACE_PRIVATE,
--
2.7.4


Subject: [PATCH 4/6] media: staging: atomisp: Fix potential NULL pointer dereference

In ia_css_pipe_get_primary_binarydesc(), "pipe" is being dereferenced
before it is null checked.
Fix it by moving the "pipe" pointer dereference after it has been
properly null checked.

Signed-off-by: Pankaj Bharadiya <[email protected]>
---
.../atomisp/pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c b/drivers/staging/media/atomisp/pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c
index 98a2a3e..ca86157 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c
@@ -554,7 +554,7 @@ void ia_css_pipe_get_primary_binarydesc(
struct ia_css_frame_info *vf_info,
unsigned int stage_idx)
{
- enum ia_css_pipe_version pipe_version = pipe->config.isp_pipe_version;
+ enum ia_css_pipe_version pipe_version;
int mode;
unsigned int i;
struct ia_css_frame_info *out_infos[IA_CSS_BINARY_MAX_OUTPUT_PORTS];
@@ -567,6 +567,7 @@ void ia_css_pipe_get_primary_binarydesc(
/*assert(vf_info != NULL);*/
IA_CSS_ENTER_PRIVATE("");

+ pipe_version = pipe->config.isp_pipe_version;
if (pipe_version == IA_CSS_PIPE_VERSION_2_6_1)
mode = primary_hq_binary_modes[stage_idx];
else
--
2.7.4


Subject: [PATCH 2/6] media: staging: atomisp: Remove useless if statement

Local variable "requeue" is assigned only once to a constant "false"
value so "if(requeue)" condition will never be true.
Thus remove it.

Signed-off-by: Pankaj Bharadiya <[email protected]>
---
drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c | 14 --------------
1 file changed, 14 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
index fa6ea50..c8c4d1d 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c
@@ -883,7 +883,6 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
struct videobuf_buffer *vb = NULL;
struct atomisp_video_pipe *pipe = NULL;
struct atomisp_css_buffer buffer;
- bool requeue = false;
int err;
unsigned long irqflags;
struct atomisp_css_frame *frame = NULL;
@@ -1223,19 +1222,6 @@ void atomisp_buf_done(struct atomisp_sub_device *asd, int error,
#ifdef ISP2401
atomic_set(&pipe->wdt_count, 0);
#endif
- /*
- * Requeue should only be done for 3a and dis buffers.
- * Queue/dequeue order will change if driver recycles image buffers.
- */
- if (requeue) {
- err = atomisp_css_queue_buffer(asd,
- stream_id, css_pipe_id,
- buf_type, &buffer);
- if (err)
- dev_err(isp->dev, "%s, q to css fails: %d\n",
- __func__, err);
- return;
- }
if (!error && q_buffers)
atomisp_qbuffers_to_css(asd);
#ifdef ISP2401
--
2.7.4


Subject: [PATCH 6/6] media: staging: atomisp: Fix potential NULL pointer dereference

In verify_copy_out_frame_format(), "pipe" is being dereferenced before
it is null checked.
Fix it by moving the "pipe" pointer dereference after it has been
properly null checked.

Signed-off-by: Pankaj Bharadiya <[email protected]>
---
drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
index eb84d51..487e768 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/css2400/sh_css.c
@@ -455,12 +455,14 @@ static enum ia_css_frame_format yuv422_copy_formats[] = {
static enum ia_css_err
verify_copy_out_frame_format(struct ia_css_pipe *pipe)
{
- enum ia_css_frame_format out_fmt = pipe->output_info[0].format;
+ enum ia_css_frame_format out_fmt;
unsigned int i, found = 0;

assert(pipe != NULL);
assert(pipe->stream != NULL);

+ out_fmt = pipe->output_info[0].format;
+
switch (pipe->stream->config.input_config.format) {
case ATOMISP_INPUT_FORMAT_YUV420_8_LEGACY:
case ATOMISP_INPUT_FORMAT_YUV420_8:
--
2.7.4


Subject: [PATCH 3/6] media: staging: atomisp: Remove useless "ifndef ISP2401"

In atomisp_csi2_set_ffmt(), there is no reason to have
"#ifndef ISP2401" condition since code is identical in ifndef and
else sections. Hence remove redudent checks.

Signed-off-by: Pankaj Bharadiya <[email protected]>
---
drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c | 8 --------
1 file changed, 8 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c
index fa03b78..606ebdb 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c
@@ -90,11 +90,7 @@ int atomisp_csi2_set_ffmt(struct v4l2_subdev *sd,
{
struct atomisp_mipi_csi2_device *csi2 = v4l2_get_subdevdata(sd);
struct v4l2_mbus_framefmt *actual_ffmt =
-#ifndef ISP2401
__csi2_get_format(csi2, cfg, which, pad);
-#else
- __csi2_get_format(csi2, cfg, which, pad);
-#endif

if (pad == CSI2_PAD_SINK) {
const struct atomisp_in_fmt_conv *ic;
@@ -121,11 +117,7 @@ int atomisp_csi2_set_ffmt(struct v4l2_subdev *sd,

/* FIXME: DPCM decompression */
*actual_ffmt = *ffmt =
-#ifndef ISP2401
*__csi2_get_format(csi2, cfg, which, CSI2_PAD_SINK);
-#else
- *__csi2_get_format(csi2, cfg, which, CSI2_PAD_SINK);
-#endif

return 0;
}
--
2.7.4


Subject: [PATCH 1/6] media: staging: atomisp: remove redundent check

Assignment asd = &isp->asd[i] can never be null hence remove
redundent check.

Signed-off-by: Pankaj Bharadiya <[email protected]>
---
drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c
index f668c68..7a9f3c9 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_css20.c
@@ -4592,8 +4592,6 @@ int atomisp_css_isr_thread(struct atomisp_device *isp,
* delete wdt timer. */
for (i = 0; i < isp->num_of_streams; i++) {
asd = &isp->asd[i];
- if (!asd)
- continue;
if (asd->streaming != ATOMISP_DEVICE_STREAMING_ENABLED)
continue;
if (!atomisp_buffers_queued(asd))
--
2.7.4


2018-05-23 09:28:40

by Sakari Ailus

[permalink] [raw]
Subject: Re: [PATCH 0/6] Fix issues reported by static analysis tool.

Hi Pankaj,

On Wed, May 23, 2018 at 10:51:30AM +0530, Pankaj Bharadiya wrote:
> This patch series fixes some of the issues reported by static analysis
> tool.
>
> Pankaj Bharadiya (6):
> media: staging: atomisp: remove redundent check
> media: staging: atomisp: Remove useless if statement
> media: staging: atomisp: Remove useless "ifndef ISP2401"
> media: staging: atomisp: Fix potential NULL pointer dereference
> media: staging: atomisp: Fix potential NULL pointer dereference
> media: staging: atomisp: Fix potential NULL pointer dereference
>
> drivers/staging/media/atomisp/pci/atomisp2/atomisp_cmd.c | 14 --------------
> .../media/atomisp/pci/atomisp2/atomisp_compat_css20.c | 2 --
> drivers/staging/media/atomisp/pci/atomisp2/atomisp_csi2.c | 8 --------
> .../pci/atomisp2/css2400/camera/pipe/src/pipe_binarydesc.c | 3 ++-
> .../staging/media/atomisp/pci/atomisp2/css2400/sh_css.c | 7 +++++--
> 5 files changed, 7 insertions(+), 27 deletions(-)
>

I'm sorry to tell you that the atomisp driver was removed from the staging
tree some time ago.

--
Kind regards,

Sakari Ailus
[email protected]