mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 13:13:57 +08:00
rt2x00: Fix segementation fault
The queue_end() macro points to 1 position after the queue, which means that if we want to know if queue is at the end of the queue we should first increment the position and then check if it is a valid entry. This fixes a segmentation fault which only occurs when the device has enough endpoints to provide a dedicated endpoint for all TX queues (which likely won't happen for rt2500usb and rt73usb, but will happen for rt2800usb). Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
00627f229c
commit
d15cfc3ac7
@ -434,11 +434,11 @@ static int rt2x00usb_find_endpoints(struct rt2x00_dev *rt2x00dev)
|
||||
|
||||
if (usb_endpoint_is_bulk_in(ep_desc)) {
|
||||
rt2x00usb_assign_endpoint(rt2x00dev->rx, ep_desc);
|
||||
} else if (usb_endpoint_is_bulk_out(ep_desc)) {
|
||||
} else if (usb_endpoint_is_bulk_out(ep_desc) &&
|
||||
(queue != queue_end(rt2x00dev))) {
|
||||
rt2x00usb_assign_endpoint(queue, ep_desc);
|
||||
queue = queue_next(queue);
|
||||
|
||||
if (queue != queue_end(rt2x00dev))
|
||||
queue = queue_next(queue);
|
||||
tx_ep_desc = ep_desc;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user