mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +00:00
Kernel: Don't update write_pos in DoubleBuffer if userspace copy fails
This commit is contained in:
parent
c3b670c092
commit
63a1be1406
1 changed files with 2 additions and 2 deletions
|
@ -47,10 +47,10 @@ ssize_t DoubleBuffer::write(const UserOrKernelBuffer& data, size_t size)
|
||||||
Locker locker(m_lock);
|
Locker locker(m_lock);
|
||||||
size_t bytes_to_write = min(size, m_space_for_writing);
|
size_t bytes_to_write = min(size, m_space_for_writing);
|
||||||
u8* write_ptr = m_write_buffer->data + m_write_buffer->size;
|
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))
|
if (!data.read(write_ptr, bytes_to_write))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
m_write_buffer->size += bytes_to_write;
|
||||||
|
compute_lockfree_metadata();
|
||||||
if (m_unblock_callback && !m_empty)
|
if (m_unblock_callback && !m_empty)
|
||||||
m_unblock_callback();
|
m_unblock_callback();
|
||||||
return (ssize_t)bytes_to_write;
|
return (ssize_t)bytes_to_write;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue