Re: [PATCH 2/2] media: drxk_hard: check if parameter is not NULL

2018-12-07 Thread Nick Desaulniers
On Fri, Dec 7, 2018 at 5:08 AM Mauro Carvalho Chehab
 wrote:
>
> There is a smatch warning:
> drivers/media/dvb-frontends/drxk_hard.c: 
> drivers/media/dvb-frontends/drxk_hard.c:1478 scu_command() error: we 
> previously assumed 'parameter' could be null (see line 1467)
>
> Telling that parameter might be NULL. Well, it can't, due to the
> way the driver works, but it doesn't hurt to add a check, in order
> to shut up smatch.

eh, yeah this function is kind of odd; the early return conditions are
a little tricky, but I agree that this check doesn't hurt to add.
Reviewed-by: Nick Desaulniers 

>
> Signed-off-by: Mauro Carvalho Chehab 
> ---
>  drivers/media/dvb-frontends/drxk_hard.c | 8 +---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/drxk_hard.c 
> b/drivers/media/dvb-frontends/drxk_hard.c
> index 84ac3f73f8fe..8ea1e45be710 100644
> --- a/drivers/media/dvb-frontends/drxk_hard.c
> +++ b/drivers/media/dvb-frontends/drxk_hard.c
> @@ -1474,9 +1474,11 @@ static int scu_command(struct drxk_state *state,
>
> /* assume that the command register is ready
> since it is checked afterwards */
> -   for (ii = parameter_len - 1; ii >= 0; ii -= 1) {
> -   buffer[cnt++] = (parameter[ii] & 0xFF);
> -   buffer[cnt++] = ((parameter[ii] >> 8) & 0xFF);
> +   if (parameter) {
> +   for (ii = parameter_len - 1; ii >= 0; ii -= 1) {
> +   buffer[cnt++] = (parameter[ii] & 0xFF);
> +   buffer[cnt++] = ((parameter[ii] >> 8) & 0xFF);
> +   }
> }
> buffer[cnt++] = (cmd & 0xFF);
> buffer[cnt++] = ((cmd >> 8) & 0xFF);
> --
> 2.19.2
>


-- 
Thanks,
~Nick Desaulniers


Re: [PATCH 2/3] media: drxj: get rid of uneeded casts

2018-08-07 Thread Nick Desaulniers
On Tue, Aug 7, 2018 at 5:26 AM Mauro Carvalho Chehab
 wrote:
>
> Instead of doing casts, use %zd to print sizes, in order to make
> smatch happier:
> drivers/media/dvb-frontends/drx39xyj/drxj.c:11814 drx_ctrl_u_code() 
> warn: argument 4 to %u specifier is cast from pointer
> drivers/media/dvb-frontends/drx39xyj/drxj.c:11845 drx_ctrl_u_code() 
> warn: argument 3 to %u specifier is cast from pointer
> drivers/media/dvb-frontends/drx39xyj/drxj.c:11869 drx_ctrl_u_code() 
> warn: argument 3 to %u specifier is cast from pointer
> drivers/media/dvb-frontends/drx39xyj/drxj.c:11878 drx_ctrl_u_code() 
> warn: argument 3 to %u specifier is cast from pointer
>
> Signed-off-by: Mauro Carvalho Chehab 
> ---
>  drivers/media/dvb-frontends/drx39xyj/drxj.c | 16 
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.c 
> b/drivers/media/dvb-frontends/drx39xyj/drxj.c
> index 2948d12d7c14..9628d4067fe1 100644
> --- a/drivers/media/dvb-frontends/drx39xyj/drxj.c
> +++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c
> @@ -11810,8 +11810,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance 
> *demod,
> block_hdr.CRC = be16_to_cpu(*(__be16 *)(mc_data));
> mc_data += sizeof(u16);
>
> -   pr_debug("%u: addr %u, size %u, flags 0x%04x, CRC 0x%04x\n",
> -   (unsigned)(mc_data - mc_data_init), block_hdr.addr,
> +   pr_debug("%zd: addr %u, size %u, flags 0x%04x, CRC 0x%04x\n",
> +   (mc_data - mc_data_init), block_hdr.addr,
>  block_hdr.size, block_hdr.flags, block_hdr.CRC);
>
> /* Check block header on:
> @@ -11841,8 +11841,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance 
> *demod,
> mc_block_nr_bytes,
> mc_data, 0x)) {
> rc = -EIO;
> -   pr_err("error writing firmware at pos %u\n",
> -  (unsigned)(mc_data - mc_data_init));
> +   pr_err("error writing firmware at pos %zd\n",
> +  mc_data - mc_data_init);
> goto release;
> }
> break;
> @@ -11865,8 +11865,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance 
> *demod,
> (u16)bytes_to_comp,
> (u8 *)mc_data_buffer,
> 0x)) {
> -   pr_err("error reading firmware at pos 
> %u\n",
> -  (unsigned)(mc_data - 
> mc_data_init));
> +   pr_err("error reading firmware at pos 
> %zd\n",
> +  mc_data - mc_data_init);
> return -EIO;
> }
>
> @@ -11874,8 +11874,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance 
> *demod,
> bytes_to_comp);
>
> if (result) {
> -   pr_err("error verifying firmware at 
> pos %u\n",
> -  (unsigned)(mc_data - 
> mc_data_init));
> +   pr_err("error verifying firmware at 
> pos %zd\n",
> +  mc_data - mc_data_init);
>     return -EIO;
>     }
>
> --
> 2.17.1
>

>From Documentation/printk-formats.txt, it looks like %zd is for
ssize_t, which is what I would expect for pointer subtracting (well
maybe intptr_t, but ssize_t should be word-size-independent).

Reviewed-by: Nick Desaulniers 

-- 
Thanks,
~Nick Desaulniers


Re: [PATCH] media: cleanup fall-through comments

2018-08-07 Thread Nick Desaulniers
On Tue, Aug 7, 2018 at 9:44 AM Greg KH  wrote:
>
> On Tue, Aug 07, 2018 at 09:33:03AM -0700, Nick Desaulniers wrote:
> > On Tue, Aug 7, 2018 at 5:07 AM Mauro Carvalho Chehab
> >  wrote:
> > >
> > > As Ian pointed out, adding a '-' to the fallthrough seems to meet
> > > the regex requirements at level 3 of the warning, at least when
> > > the comment fits into a single line.
> > >
> > > So, replace by a single line the comments that were broken into
> > > multiple lines just to make gcc -Wimplicit-fallthrough=3 happy.
> > >
> > > Suggested-by: Ian Arkver 
> > > Signed-off-by: Mauro Carvalho Chehab 
> > > ---
> > >  drivers/media/dvb-frontends/drx39xyj/drxj.c |  3 +--
> > >  drivers/media/dvb-frontends/drxd_hard.c |  6 ++
> > >  drivers/media/dvb-frontends/drxk_hard.c | 18 ++
> > >  drivers/staging/media/imx/imx-media-csi.c   |  3 +--
> > >  4 files changed, 10 insertions(+), 20 deletions(-)
> > >
> > > diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.c 
> > > b/drivers/media/dvb-frontends/drx39xyj/drxj.c
> > > index 2ddb7d218ace..2948d12d7c14 100644
> > > --- a/drivers/media/dvb-frontends/drx39xyj/drxj.c
> > > +++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c
> > > @@ -2841,8 +2841,7 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance 
> > > *demod, struct drx_cfg_mpeg_o
> > > /* coef = 188/204  */
> > > max_bit_rate =
> > > (ext_attr->curr_symbol_rate / 8) * nr_bits * 
> > > 188;
> > > -   /* pass through as b/c Annex A/c need following 
> > > settings */
> > > -   /* fall-through */
> > > +   /* fall-through - as b/c Annex A/C need following 
> > > settings */
> > > case DRX_STANDARD_ITU_B:
> > > rc = drxj_dap_write_reg16(dev_addr, 
> > > FEC_OC_FCT_USAGE__A, FEC_OC_FCT_USAGE__PRE, 0);
> > > if (rc != 0) {
> > > diff --git a/drivers/media/dvb-frontends/drxd_hard.c 
> > > b/drivers/media/dvb-frontends/drxd_hard.c
> > > index 11fc259e4383..684d428efb0d 100644
> > > --- a/drivers/media/dvb-frontends/drxd_hard.c
> > > +++ b/drivers/media/dvb-frontends/drxd_hard.c
> > > @@ -1970,8 +1970,7 @@ static int DRX_Start(struct drxd_state *state, s32 
> > > off)
> > > switch (p->transmission_mode) {
> > > default:/* Not set, detect it automatically */
> > > operationMode |= SC_RA_RAM_OP_AUTO_MODE__M;
> > > -   /* try first guess DRX_FFTMODE_8K */
> > > -   /* fall through */
> > > +   /* fall through - try first guess DRX_FFTMODE_8K 
> > > */
> > > case TRANSMISSION_MODE_8K:
> > > transmissionParams |= SC_RA_RAM_OP_PARAM_MODE_8K;
> > > if (state->type_A) {
> > > @@ -2144,8 +2143,7 @@ static int DRX_Start(struct drxd_state *state, s32 
> > > off)
> > > switch (p->modulation) {
> > > default:
> > > operationMode |= SC_RA_RAM_OP_AUTO_CONST__M;
> > > -   /* try first guess DRX_CONSTELLATION_QAM64 */
> > > -   /* fall through */
> > > +   /* fall through - try first guess 
> > > DRX_CONSTELLATION_QAM64 */
> > > case QAM_64:
> > > transmissionParams |= 
> > > SC_RA_RAM_OP_PARAM_CONST_QAM64;
> > > if (state->type_A) {
> > > diff --git a/drivers/media/dvb-frontends/drxk_hard.c 
> > > b/drivers/media/dvb-frontends/drxk_hard.c
> > > index ac10781d3550..f1886945a7bc 100644
> > > --- a/drivers/media/dvb-frontends/drxk_hard.c
> > > +++ b/drivers/media/dvb-frontends/drxk_hard.c
> > > @@ -3270,13 +3270,11 @@ static int dvbt_sc_command(struct drxk_state 
> > > *state,
> > > case OFDM_SC_RA_RAM_CMD_SET_PREF_PARAM:
> > > case OFDM_SC_RA_RAM_CMD_PROGRAM_PARAM:
> > > status |= write16(state, OFDM_SC_RA_RAM_PARAM1__A, 
> > > param1);
> > > -   /* All commands using 1 parameters */
> > > -   /* fall through */

Re: [PATCH] media: cleanup fall-through comments

2018-08-07 Thread Nick Desaulniers
gt; case TRANSMISSION_MODE_8K:
> transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K;
> break;
> @@ -3799,8 +3796,7 @@ static int set_dvbt(struct drxk_state *state, u16 
> intermediate_freqk_hz,
> default:
> case GUARD_INTERVAL_AUTO:
> operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_GUARD__M;
> -   /* try first guess DRX_GUARD_1DIV4 */
> -   /* fall through */
> +   /* fall through - try first guess DRX_GUARD_1DIV4 */
> case GUARD_INTERVAL_1_4:
> transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4;
> break;
> @@ -3841,8 +3837,7 @@ static int set_dvbt(struct drxk_state *state, u16 
> intermediate_freqk_hz,
> case QAM_AUTO:
> default:
> operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_CONST__M;
> -   /* try first guess DRX_CONSTELLATION_QAM64 */
> -   /* fall through */
> +   /* fall through - try first guess DRX_CONSTELLATION_QAM64 */
> case QAM_64:
> transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_CONST_QAM64;
> break;
> @@ -3885,8 +3880,7 @@ static int set_dvbt(struct drxk_state *state, u16 
> intermediate_freqk_hz,
> case FEC_AUTO:
> default:
> operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_RATE__M;
> -   /* try first guess DRX_CODERATE_2DIV3 */
> -   /* fall through */
> +   /* fall through - try first guess DRX_CODERATE_2DIV3 */
> case FEC_2_3:
> transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_RATE_2_3;
> break;
> diff --git a/drivers/staging/media/imx/imx-media-csi.c 
> b/drivers/staging/media/imx/imx-media-csi.c
> index b7ffd231c64b..cd2c291e1e94 100644
> --- a/drivers/staging/media/imx/imx-media-csi.c
> +++ b/drivers/staging/media/imx/imx-media-csi.c
> @@ -460,8 +460,7 @@ static int csi_idmac_setup_channel(struct csi_priv *priv)
> passthrough_cycles = incc->cycles;
> break;
> }
> -   /* for non-passthrough RGB565 (CSI-2 bus) */
> -   /* Falls through */
> +   /* fallthrough - non-passthrough RGB565 (CSI-2 bus) */
> default:
> burst_size = (image.pix.width & 0xf) ? 8 : 16;
> passthrough_bits = 16;
> --
> 2.17.1
>

Can we use the compiler attribute:

__attribute__((fallthrough))

rather than specifically formatted comments?  The thing to be careful
about with attributes is "what is the first version of the compiler
that implements these?"

https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/

seems to indicate that the comment parsing was implemented in gcc-7
(and also shows the compiler attribute being used)?
-- 
Thanks,
~Nick Desaulniers


[PATCH] [media] dvb-frontends: remove extraneous parens

2017-12-18 Thread Nick Desaulniers
Fixes 2 warnings from Clang about extra parentheses in a conditional,
that might have been meant as assignment.

Signed-off-by: Nick Desaulniers <ndesaulni...@google.com>
---
 drivers/media/dvb-frontends/drx39xyj/drxj.c | 2 +-
 drivers/media/dvb-frontends/drxk_hard.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb-frontends/drx39xyj/drxj.c 
b/drivers/media/dvb-frontends/drx39xyj/drxj.c
index 8cbd8cc21059..cf00a34ef0fc 100644
--- a/drivers/media/dvb-frontends/drx39xyj/drxj.c
+++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c
@@ -11074,7 +11074,7 @@ ctrl_power_mode(struct drx_demod_instance *demod, enum 
drx_power_mode *mode)
}
}
 
-   if ((*mode == DRX_POWER_UP)) {
+   if (*mode == DRX_POWER_UP) {
/* Restore analog & pin configuration */
 
/* Initialize default AFE configuration for VSB */
diff --git a/drivers/media/dvb-frontends/drxk_hard.c 
b/drivers/media/dvb-frontends/drxk_hard.c
index f59ac2e91c59..19cc84c69b3b 100644
--- a/drivers/media/dvb-frontends/drxk_hard.c
+++ b/drivers/media/dvb-frontends/drxk_hard.c
@@ -6062,7 +6062,7 @@ static int init_drxk(struct drxk_state *state)
u16 driver_version;
 
dprintk(1, "\n");
-   if ((state->m_drxk_state == DRXK_UNINITIALIZED)) {
+   if (state->m_drxk_state == DRXK_UNINITIALIZED) {
drxk_i2c_lock(state);
status = power_up_device(state);
if (status < 0)
-- 
2.15.1.504.g5279b80103-goog



[PATCH] [media] dvb-frontends: remove self assignments

2017-12-18 Thread Nick Desaulniers
These were leftover from:
commit 469ffe083665 ("[media] tda18271c2dd: Remove the CHK_ERROR macro")
and
commit 58d5eaec9f87 ("[media] drxd: Don't use a macro for CHK_ERROR ...")
that programmatically removed the CHK_ERROR macro, which left behind a
few self assignments that Clang warns about.  These instances aren't
errors.

Signed-off-by: Nick Desaulniers <ndesaulni...@google.com>
---
 drivers/media/dvb-frontends/drxd_hard.c| 3 ---
 drivers/media/dvb-frontends/tda18271c2dd.c | 1 -
 2 files changed, 4 deletions(-)

diff --git a/drivers/media/dvb-frontends/drxd_hard.c 
b/drivers/media/dvb-frontends/drxd_hard.c
index 0696bc62dcc9..ff18a0f7dc41 100644
--- a/drivers/media/dvb-frontends/drxd_hard.c
+++ b/drivers/media/dvb-frontends/drxd_hard.c
@@ -2140,7 +2140,6 @@ static int DRX_Start(struct drxd_state *state, s32 off)
}
break;
}
-   status = status;
if (status < 0)
break;
 
@@ -2251,7 +2250,6 @@ static int DRX_Start(struct drxd_state *state, s32 off)
break;
 
}
-   status = status;
if (status < 0)
break;
 
@@ -2318,7 +2316,6 @@ static int DRX_Start(struct drxd_state *state, s32 off)
}
break;
}
-   status = status;
if (status < 0)
break;
 
diff --git a/drivers/media/dvb-frontends/tda18271c2dd.c 
b/drivers/media/dvb-frontends/tda18271c2dd.c
index 2d2778be2d2f..45cd5ba0cf8a 100644
--- a/drivers/media/dvb-frontends/tda18271c2dd.c
+++ b/drivers/media/dvb-frontends/tda18271c2dd.c
@@ -674,7 +674,6 @@ static int PowerScan(struct tda_state *state,
Count = 20;
wait = true;
}
-   status = status;
if (status < 0)
break;
if (CID_Gain >= CID_Target) {
-- 
2.15.1.504.g5279b80103-goog