From c4a393e2963fcc9b4443723b43e002c2571d3cc1 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sat, 1 Feb 2020 22:02:20 +0100 Subject: [PATCH] Correctly index the dev ctx arr for slot states. --- xhcid/src/xhci/mod.rs | 2 +- xhcid/src/xhci/scheme.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/xhcid/src/xhci/mod.rs b/xhcid/src/xhci/mod.rs index cb817769ae..a1b9229859 100644 --- a/xhcid/src/xhci/mod.rs +++ b/xhcid/src/xhci/mod.rs @@ -337,7 +337,7 @@ impl Xhci { println!(" - Enable slot"); - self.run.ints[0].erdp.write(self.cmd.erdp()); // TODO: ? + self.run.ints[0].erdp.write(self.cmd.erdp()); let slot = Self::enable_port_slot(&mut self.cmd, &mut self.dbs); diff --git a/xhcid/src/xhci/scheme.rs b/xhcid/src/xhci/scheme.rs index ee57ec76ea..324998af8f 100644 --- a/xhcid/src/xhci/scheme.rs +++ b/xhcid/src/xhci/scheme.rs @@ -792,7 +792,8 @@ impl SchemeMut for Xhci { Ok(buf.len()) } EndpointHandleTy::Status(ref mut offset) => { - let status = self.dev_ctx.contexts.get(port_num).ok_or(Error::new(EBADF))?.endpoints.get(endp_num as usize).ok_or(Error::new(EBADF))?.a.read() & ENDPOINT_CONTEXT_STATUS_MASK; + let ps = self.port_states.get(&port_num).ok_or(Error::new(EBADF))?; + let status = self.dev_ctx.contexts.get(ps.slot as usize).ok_or(Error::new(EBADF))?.endpoints.get(endp_num as usize).ok_or(Error::new(EBADF))?.a.read() & ENDPOINT_CONTEXT_STATUS_MASK; let string = match status { // TODO: Give this its own enum.