Message ID | 20240221-asahi-keyboards-v1-3-814b2e741790@jannau.net |
---|---|
State | Superseded |
Delegated to: | Marek Vasut |
Headers | show |
Series | USB keyboard improvements for asahi / desktop systems | expand |
On 2/21/24 08:25, Janne Grunau via B4 Relay wrote: > From: Janne Grunau <j@jannau.net> > > Discovered while trying to use the second interface in the USB keyboard > driver necessary on Apple USB keyboards. > > Signed-off-by: Janne Grunau <j@jannau.net> > --- > drivers/usb/host/xhci-ring.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > index b60661fe05..4446f5f098 100644 > --- a/drivers/usb/host/xhci-ring.c > +++ b/drivers/usb/host/xhci-ring.c > @@ -685,6 +685,9 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe, > reset_ep(udev, ep_index); > > ring = virt_dev->eps[ep_index].ring; > + if (!ring) > + return -1; Would it make sense to return e.g. -EINVAL or some other errno ?
Hej, On Wed, Feb 21, 2024, at 13:40, Marek Vasut wrote: > On 2/21/24 08:25, Janne Grunau via B4 Relay wrote: >> From: Janne Grunau <j@jannau.net> >> >> Discovered while trying to use the second interface in the USB keyboard >> driver necessary on Apple USB keyboards. >> >> Signed-off-by: Janne Grunau <j@jannau.net> >> --- >> drivers/usb/host/xhci-ring.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c >> index b60661fe05..4446f5f098 100644 >> --- a/drivers/usb/host/xhci-ring.c >> +++ b/drivers/usb/host/xhci-ring.c >> @@ -685,6 +685,9 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe, >> reset_ep(udev, ep_index); >> >> ring = virt_dev->eps[ep_index].ring; >> + if (!ring) >> + return -1; > > Would it make sense to return e.g. -EINVAL or some other errno ? Agreed, -EINVAL is good match as ep_index is directly derived from pipe argument. Janne
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index b60661fe05..4446f5f098 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -685,6 +685,9 @@ int xhci_bulk_tx(struct usb_device *udev, unsigned long pipe, reset_ep(udev, ep_index); ring = virt_dev->eps[ep_index].ring; + if (!ring) + return -1; + /* * How much data is (potentially) left before the 64KB boundary? * XHCI Spec puts restriction( TABLE 49 and 6.4.1 section of XHCI Spec) @@ -871,6 +874,8 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe, ep_index = usb_pipe_ep_index(pipe); ep_ring = virt_dev->eps[ep_index].ring; + if (!ep_ring) + return -1; /* * Check to see if the max packet size for the default control