Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbedca39 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

[ALSA] Fix re-use of va_list



The va_list is designed to be used only once.  The current code
may pass va_list arguments multiple times and may cause Oops.
Copy/release the arguments temporarily to avoid this problem.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 5b15c95f
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -120,7 +120,10 @@ int snd_iprintf(struct snd_info_buffer *buffer, char *fmt,...)
	len = buffer->len - buffer->size;
	len = buffer->len - buffer->size;
	va_start(args, fmt);
	va_start(args, fmt);
	for (;;) {
	for (;;) {
		res = vsnprintf(buffer->buffer + buffer->curr, len, fmt, args);
		va_list ap;
		va_copy(ap, args);
		res = vsnprintf(buffer->buffer + buffer->curr, len, fmt, ap);
		va_end(ap);
		if (res < len)
		if (res < len)
			break;
			break;
		err = resize_info_buffer(buffer, buffer->len + PAGE_SIZE);
		err = resize_info_buffer(buffer, buffer->len + PAGE_SIZE);