From: Gabriel Krisman Bertazi Date: Tue, 17 Mar 2020 00:45:06 +0000 (-0400) Subject: um: ubd: Prevent buffer overrun on command completion X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~2447^2~12 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=6e682d53fc1ef73a169e2a5300326cb23abb32ee;p=linux.git um: ubd: Prevent buffer overrun on command completion On the hypervisor side, when completing commands and the pipe is full, we retry writing only the entries that failed, by offsetting io_req_buffer, but we don't reduce the number of bytes written, which can cause a buffer overrun of io_req_buffer, and write garbage to the pipe. Cc: Martyn Welch Signed-off-by: Gabriel Krisman Bertazi Signed-off-by: Richard Weinberger --- diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 247f95da057b..eca45ad2166c 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -1607,7 +1607,9 @@ int io_thread(void *arg) written = 0; do { - res = os_write_file(kernel_fd, ((char *) io_req_buffer) + written, n); + res = os_write_file(kernel_fd, + ((char *) io_req_buffer) + written, + n - written); if (res >= 0) { written += res; }