On 14/02/18 15:39, Fabio Estevam wrote:
From: Fabio Estevam fabio.estevam@nxp.com
{ 0 } only clears the first member of the structure.
Not according to the C99 and C11 standards. C11 6.7.9.21 (C99 has the same statement):
If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.
C11 6.7.9.10 defines that "objects that have static storage duration" shall be initialized to zero.
So according to both C11 and C99 standards {0} should (and must) initialize the entire structure to zero.
The first member of the snd_soc_dapm_update struct is a pointer, and writing 0 to a pointer results in a sparse warning.
This is the actual problem you are trying to fix? The comment about { 0 } only clearing the first member is probably bogus, your actual problem is that it should have been { NULL } ?
So the fix works (because of 6.7.9.21 quoted above) but the commit message is incorrect/misleading about what the problem is and why this is a fix for it.
Use the empty struct initializer that clears all the struct members and fixes the sparse warning.
Cc: Charles Keepax ckeepax@opensource.cirrus.com Signed-off-by: Fabio Estevam fabio.estevam@nxp.com
sound/soc/codecs/wm9713.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c index 3d6cf00..643863b 100644 --- a/sound/soc/codecs/wm9713.c +++ b/sound/soc/codecs/wm9713.c @@ -235,7 +235,7 @@ static int wm9713_hp_mixer_put(struct snd_kcontrol *kcontrol, struct soc_mixer_control *mc = (struct soc_mixer_control *)kcontrol->private_value; unsigned int mixer, mask, shift, old;
- struct snd_soc_dapm_update update = { 0 };
struct snd_soc_dapm_update update = {}; bool change;
mixer = mc->shift >> 8;