mirror of
https://github.com/saymrwulf/xous-core.git
synced 2026-11-08 04:56:43 +00:00
kernel: server: remove bounds checks from take_waiting_message
This function has been rewritten to no longer have a bounds check. Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
parent
e4f7c7286d
commit
f2e2505d4b
1 changed files with 5 additions and 8 deletions
|
|
@ -333,12 +333,9 @@ impl Server {
|
|||
idx: usize,
|
||||
buf: Option<&MemoryRange>,
|
||||
) -> Result<WaitingMessage, xous_kernel::Error> {
|
||||
if idx > self.queue.len() {
|
||||
// println!("KERNEL: index exceeds queue length");
|
||||
return Err(xous_kernel::Error::BadAddress);
|
||||
}
|
||||
klog!("memory in queue[{}]: {:?}", idx, self.queue[idx]);
|
||||
let (pid, tid, server_addr, client_addr, len, forget, is_memory) = match self.queue[idx] {
|
||||
let current_val = self.queue.get_mut(idx).ok_or(xous_kernel::Error::BadAddress)?;
|
||||
klog!("memory in queue[{}]: {:?}", idx, val);
|
||||
let (pid, tid, server_addr, client_addr, len, forget, is_memory) = match *current_val {
|
||||
QueuedMessage::WaitingReturnMemory(pid, tid, server_addr, client_addr, len) => {
|
||||
(pid, tid, server_addr, client_addr, len, false, true)
|
||||
}
|
||||
|
|
@ -357,10 +354,10 @@ impl Server {
|
|||
let buf = buf.expect("memory message expected but no buffer passed!");
|
||||
if server_addr != buf.as_ptr() as usize || len != buf.len() {
|
||||
// println!("KERNEL: Memory is attached but the returned buffer doesn't match (len: {} vs {}), buf addr: {:08x} vs {:08x}", len, buf.len(), server_addr, buf.as_ptr() as usize);
|
||||
return Err(xous_kernel::Error::BadAddress);
|
||||
Err(xous_kernel::Error::BadAddress)?;
|
||||
}
|
||||
}
|
||||
self.queue[idx] = QueuedMessage::Empty;
|
||||
*current_val = QueuedMessage::Empty;
|
||||
self.queue_tail += 1;
|
||||
if self.queue_tail >= self.queue.len() {
|
||||
self.queue_tail = 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue