Patch "virtio-console: avoid DMA from stack" has been added to the 4.10-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
virtio-console: avoid DMA from stack
to the 4.10-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:
virtio-console-avoid-dma-from-stack.patch
and it can be found in the queue-4.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c4baad50297d84bde1a7ad45e50c73adae4a2192Mon Sep 17 00:00:00 2001
From: Omar Sandoval <[email protected]>
Date: Wed, 1 Feb 2017 00:02:27 -0800
Subject: virtio-console: avoid DMA from stack
From: Omar Sandoval <[email protected]>
commit c4baad50297d84bde1a7ad45e50c73adae4a2192 upstream.
put_chars() stuffs the buffer it gets into an sg, but that buffer may be on the stack. This breaks with CONFIG_VMAP_STACK=y (for me, it manifested as printks getting turned into NUL bytes).
--- drivers/char/virtio_console.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
drivers/char/virtio_console.c +10 -2
@@ -1136,6 +1136,8 @@ static int put_chars(u32 vtermno, const {struct port *port;struct scatterlist sg[1 ]; +void *data; +int ret;if (unlikely (early_put_chars))return early_put_chars (vtermno, buf, count);
@@ -1144,8 +1146,14 @@ static int put_chars(u32 vtermno, constif (!port)return -EPIPE ; -sg_init_one (sg, buf, count); -return __send_to_port (port, sg,1 , count, (void *)buf, false); + data =kmemdup (buf, count,GFP_ATOMIC ); +if (!data) +return -ENOMEM ; + +sg_init_one (sg, data, count); + ret =__send_to_port (port, sg,1 , count, data, false); +kfree (data); +return ret; }/*
Patches currently in stable-queue which might be from [email protected] are
queue-4.10/x86-efi-don-t-try-to-reserve-runtime-regions.patch queue-4.10/virtio-console-avoid-dma-from-stack.patch