From 63a1be14066c6367d37cc792a171d3dfaeac517f Mon Sep 17 00:00:00 2001 From: Sahan Fernando Date: Thu, 13 May 2021 12:19:53 +1000 Subject: [PATCH] Kernel: Don't update write_pos in DoubleBuffer if userspace copy fails --- Kernel/DoubleBuffer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/DoubleBuffer.cpp b/Kernel/DoubleBuffer.cpp index 2d3b39adac..41236e4c2b 100644 --- a/Kernel/DoubleBuffer.cpp +++ b/Kernel/DoubleBuffer.cpp @@ -47,10 +47,10 @@ ssize_t DoubleBuffer::write(const UserOrKernelBuffer& data, size_t size) Locker locker(m_lock); size_t bytes_to_write = min(size, m_space_for_writing); u8* write_ptr = m_write_buffer->data + m_write_buffer->size; - m_write_buffer->size += bytes_to_write; - compute_lockfree_metadata(); if (!data.read(write_ptr, bytes_to_write)) return -EFAULT; + m_write_buffer->size += bytes_to_write; + compute_lockfree_metadata(); if (m_unblock_callback && !m_empty) m_unblock_callback(); return (ssize_t)bytes_to_write;