[alsa-devel] [PATCH] ALSA: seq: initialize whole fields of automatic variable with union type

Takashi Iwai tiwai at suse.de
Tue Aug 30 07:11:52 CEST 2016


On Tue, 30 Aug 2016 02:11:54 +0200,
Takashi Sakamoto wrote:
> 
> Currently, automatic variable of 'union ioctl_arg' type is initialized
> by designated initialization. Although, the actual effect is interpretation
> of early element of int type and initialization of 'int pversion'.
> Therefore the first field corresponding to int type is initialized to zero.
> This is against my expectation to initialize whole fields.
> 
> This commit uses memset() to initialize the variable, instead of designated
> initialization.
> 
> Fixes: 04a56dd8ed0d ('ALSA: seq: change ioctl command operation to get data in kernel space')
> Signed-off-by: Takashi Sakamoto <o-takashi at sakamocchi.jp>
> ---
>  sound/core/seq/seq_clientmgr.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c
> index 286394b..fd50c38 100644
> --- a/sound/core/seq/seq_clientmgr.c
> +++ b/sound/core/seq/seq_clientmgr.c
> @@ -2100,7 +2100,7 @@ static long snd_seq_ioctl(struct file *file, unsigned int cmd,
>  		struct snd_seq_client_pool	client_pool;
>  		struct snd_seq_remove_events	remove_events;
>  		struct snd_seq_query_subs	query_subs;
> -	} buf = {0};
> +	} buf;
>  	const struct ioctl_handler *handler;
>  	unsigned long size;
>  	int err;
> @@ -2114,6 +2114,9 @@ static long snd_seq_ioctl(struct file *file, unsigned int cmd,
>  	}
>  	if (handler->cmd == 0)
>  		return -ENOTTY;
> +
> +	memset(&buf, 0, sizeof(union ioctl_arg));

The common practice is to pass sizeof(buf).


Takashi


More information about the Alsa-devel mailing list