This is a note to let you know that I've just added the patch titled ALSA: info: Check for integer overflow in snd_info_entry_write() to the 3.18-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: alsa-info-check-for-integer-overflow-in-snd_info_entry_write.patch and it can be found in the queue-3.18 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From erickreyes@xxxxxxxxxx Thu Aug 16 12:07:22 2018 From: Erick Reyes <erickreyes@xxxxxxxxxx> Date: Wed, 15 Aug 2018 17:55:48 -0700 Subject: ALSA: info: Check for integer overflow in snd_info_entry_write() To: stable@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx, Jaroslav Kysela <perex@xxxxxxxx>, Takashi Iwai <tiwai@xxxxxxxx>, kernel-team@xxxxxxxxxxx, Vinod Koul <vkoul@xxxxxxxxxx>, Joe Perches <joe@xxxxxxxxxxx>, Al Viro <viro@xxxxxxxxxxxxxxxxxx>, alsa-devel@xxxxxxxxxxxxxxxx, Erick Reyes <erickreyes@xxxxxxxxxx>, Siqi Lin <siqilin@xxxxxxxxxx> Message-ID: <20180816005548.151269-1-erickreyes@xxxxxxxxxx> From: Erick Reyes <erickreyes@xxxxxxxxxx> Commit 4adb7bcbcb69 ("ALSA: core: Use seq_file for text proc file reads") heavily refactored ALSA procfs and fixed the overflow as a side-effect, so this fix only applies to kernels < 4.2 and there is no upstream equivalent snd_info_entry_write() resizes the buffer with an unsigned long size argument that gets truncated because resize_info_buffer() takes the size parameter as an unsigned int. On 64-bit kernels, this causes the following copy_to_user() to write out-of-bounds if (pos + count) can't be represented by an unsigned int. Signed-off-by: Siqi Lin <siqilin@xxxxxxxxxx> Signed-off-by: Erick Reyes <erickreyes@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- sound/core/info.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/sound/core/info.c +++ b/sound/core/info.c @@ -253,6 +253,7 @@ static ssize_t snd_info_entry_write(stru struct snd_info_buffer *buf; ssize_t size = 0; loff_t pos; + unsigned long realloc_size; data = file->private_data; if (snd_BUG_ON(!data)) @@ -261,7 +262,8 @@ static ssize_t snd_info_entry_write(stru pos = *offset; if (pos < 0 || (long) pos != pos || (ssize_t) count < 0) return -EIO; - if ((unsigned long) pos + (unsigned long) count < (unsigned long) pos) + realloc_size = (unsigned long) pos + (unsigned long) count; + if (realloc_size < (unsigned long) pos || realloc_size > UINT_MAX) return -EIO; switch (entry->content) { case SNDRV_INFO_CONTENT_TEXT: Patches currently in stable-queue which might be from erickreyes@xxxxxxxxxx are queue-3.18/alsa-info-check-for-integer-overflow-in-snd_info_entry_write.patch _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel