[kernel] Fix error when log data wraps ring buffer

The offset wasn't being properly masked.
This commit is contained in:
Justin C. Miller
2023-03-16 19:43:51 -07:00
parent bfab4f085e
commit 2a4c286f2b

View File

@@ -95,11 +95,11 @@ logger::get_entry(uint64_t seen, void *buffer, size_t size)
} }
size_t off = m_start; size_t off = m_start;
j6_log_entry *ent = util::at<j6_log_entry>(m_buffer, off); j6_log_entry *ent = util::at<j6_log_entry>(m_buffer, offset(off));
while (seen >= ent->id) { while (seen >= ent->id) {
off += ent->bytes; off += ent->bytes;
kassert(off < m_end, "Got to the end while looking for new log entry"); kassert(off < m_end, "Got to the end while looking for new log entry");
ent = util::at<j6_log_entry>(m_buffer, off); ent = util::at<j6_log_entry>(m_buffer, offset(off));
} }
if (size >= ent->bytes) if (size >= ent->bytes)