Hi Takashi, Reviewed and tested for sti machine. Acked-by: Arnaud Pouliquen <arnaud.pouliquen@xxxxxx> Regards Arnaud On 12/16/2016 10:26 AM, Takashi Sakamoto wrote: > This is a fix for Linux 4.10-rc1. > > In C language specification, a bit-field is interpreted as a signed or > unsigned integer type consisting of the specified number of bits. > > In GCC manual, the range of a signed bit field of N bits is from > -(2^N) / 2 to ((2^N) / 2) - 1 > https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Bit-Fields > > Therefore, when defined as 1 bit-field with signed type, variables can > represents -1 and 0. > > The snd-soc-hdmi-codec module includes a structure which has signed type > members with bit-fields. Codes of this module assign 0 and 1 to the > members. This seems to result in implementation-dependent behaviours. > > As of v4.10-rc1 merge window, outside of sound subsystem, this structure > is referred by below GPU modules. > - tda998x > - sti-drm > - mediatek-drm-hdmi > - msm > > As long as I review their codes relevant to the structure, the structure > members are used just for condition statements and printk formats. > My proposal of change is a bit intrusive to the printk formats but this > may be acceptable. > > Totally, it's reasonable to use unsigned type for the structure members. > This bug is detected by Sparse, static code analyzer with below warnings. > > ./include/sound/hdmi-codec.h:39:26: error: dubious one-bit signed bitfield > ./include/sound/hdmi-codec.h:40:28: error: dubious one-bit signed bitfield > ./include/sound/hdmi-codec.h:41:29: error: dubious one-bit signed bitfield > ./include/sound/hdmi-codec.h:42:31: error: dubious one-bit signed bitfield > > CC: Jyri Sarha <jsarha@xxxxxx> > CC: Jie Qiu <jie.qiu@xxxxxxxxxxxx> > CC: Arnaud Pouliquen <arnaud.pouliquen@xxxxxx> > CC: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > CC: dri-devel@xxxxxxxxxxxxxxxxxxxxx > CC: stable@xxxxxxxxxxxxxxx > Fixes: 09184118a8ab ("ASoC: hdmi-codec: Add hdmi-codec for external HDMI-encoders") > Signed-off-by: Takashi Sakamoto <o-takashi@xxxxxxxxxxxxx> > --- > include/sound/hdmi-codec.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/include/sound/hdmi-codec.h b/include/sound/hdmi-codec.h > index 530c57b..915c435 100644 > --- a/include/sound/hdmi-codec.h > +++ b/include/sound/hdmi-codec.h > @@ -36,10 +36,10 @@ struct hdmi_codec_daifmt { > HDMI_AC97, > HDMI_SPDIF, > } fmt; > - int bit_clk_inv:1; > - int frame_clk_inv:1; > - int bit_clk_master:1; > - int frame_clk_master:1; > + unsigned int bit_clk_inv:1; > + unsigned int frame_clk_inv:1; > + unsigned int bit_clk_master:1; > + unsigned int frame_clk_master:1; > }; > > /* > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html