@@ -401,13 +401,12 @@ static int alloc_requests(struct eth_dev *dev, struct gether *link, unsigned n)
401
401
static void rx_fill (struct eth_dev * dev , gfp_t gfp_flags )
402
402
{
403
403
struct usb_request * req ;
404
+ struct usb_request * tmp ;
404
405
unsigned long flags ;
405
406
406
407
/* fill unused rxq slots with some skb */
407
408
spin_lock_irqsave (& dev -> req_lock , flags );
408
- while (!list_empty (& dev -> rx_reqs )) {
409
- req = container_of (dev -> rx_reqs .next ,
410
- struct usb_request , list );
409
+ list_for_each_entry_safe (req , tmp , & dev -> rx_reqs , list ) {
411
410
list_del_init (& req -> list );
412
411
spin_unlock_irqrestore (& dev -> req_lock , flags );
413
412
@@ -527,7 +526,7 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb,
527
526
return NETDEV_TX_BUSY ;
528
527
}
529
528
530
- req = container_of ( dev -> tx_reqs . next , struct usb_request , list );
529
+ req = list_first_entry ( & dev -> tx_reqs , struct usb_request , list );
531
530
list_del (& req -> list );
532
531
533
532
/* temporarily stop TX queue when the freelist empties */
@@ -1122,6 +1121,7 @@ void gether_disconnect(struct gether *link)
1122
1121
{
1123
1122
struct eth_dev * dev = link -> ioport ;
1124
1123
struct usb_request * req ;
1124
+ struct usb_request * tmp ;
1125
1125
1126
1126
WARN_ON (!dev );
1127
1127
if (!dev )
@@ -1138,9 +1138,7 @@ void gether_disconnect(struct gether *link)
1138
1138
*/
1139
1139
usb_ep_disable (link -> in_ep );
1140
1140
spin_lock (& dev -> req_lock );
1141
- while (!list_empty (& dev -> tx_reqs )) {
1142
- req = container_of (dev -> tx_reqs .next ,
1143
- struct usb_request , list );
1141
+ list_for_each_entry_safe (req , tmp , & dev -> tx_reqs , list ) {
1144
1142
list_del (& req -> list );
1145
1143
1146
1144
spin_unlock (& dev -> req_lock );
@@ -1152,9 +1150,7 @@ void gether_disconnect(struct gether *link)
1152
1150
1153
1151
usb_ep_disable (link -> out_ep );
1154
1152
spin_lock (& dev -> req_lock );
1155
- while (!list_empty (& dev -> rx_reqs )) {
1156
- req = container_of (dev -> rx_reqs .next ,
1157
- struct usb_request , list );
1153
+ list_for_each_entry_safe (req , tmp , & dev -> rx_reqs , list ) {
1158
1154
list_del (& req -> list );
1159
1155
1160
1156
spin_unlock (& dev -> req_lock );
0 commit comments