|
@@ -2267,7 +2267,7 @@ static unsigned qh_completions(struct fotg210_hcd *fotg210,
|
|
struct fotg210_qh *qh)
|
|
struct fotg210_qh *qh)
|
|
{
|
|
{
|
|
struct fotg210_qtd *last, *end = qh->dummy;
|
|
struct fotg210_qtd *last, *end = qh->dummy;
|
|
- struct list_head *entry, *tmp;
|
|
|
|
|
|
+ struct fotg210_qtd *qtd, *tmp;
|
|
int last_status;
|
|
int last_status;
|
|
int stopped;
|
|
int stopped;
|
|
unsigned count = 0;
|
|
unsigned count = 0;
|
|
@@ -2301,12 +2301,10 @@ rescan:
|
|
* then let the queue advance.
|
|
* then let the queue advance.
|
|
* if queue is stopped, handles unlinks.
|
|
* if queue is stopped, handles unlinks.
|
|
*/
|
|
*/
|
|
- list_for_each_safe(entry, tmp, &qh->qtd_list) {
|
|
|
|
- struct fotg210_qtd *qtd;
|
|
|
|
|
|
+ list_for_each_entry_safe(qtd, tmp, &qh->qtd_list, qtd_list) {
|
|
struct urb *urb;
|
|
struct urb *urb;
|
|
u32 token = 0;
|
|
u32 token = 0;
|
|
|
|
|
|
- qtd = list_entry(entry, struct fotg210_qtd, qtd_list);
|
|
|
|
urb = qtd->urb;
|
|
urb = qtd->urb;
|
|
|
|
|
|
/* clean up any state from previous QTD ...*/
|
|
/* clean up any state from previous QTD ...*/
|
|
@@ -2544,14 +2542,11 @@ retry_xacterr:
|
|
* used for cleanup after errors, before HC sees an URB's TDs.
|
|
* used for cleanup after errors, before HC sees an URB's TDs.
|
|
*/
|
|
*/
|
|
static void qtd_list_free(struct fotg210_hcd *fotg210, struct urb *urb,
|
|
static void qtd_list_free(struct fotg210_hcd *fotg210, struct urb *urb,
|
|
- struct list_head *qtd_list)
|
|
|
|
|
|
+ struct list_head *head)
|
|
{
|
|
{
|
|
- struct list_head *entry, *temp;
|
|
|
|
-
|
|
|
|
- list_for_each_safe(entry, temp, qtd_list) {
|
|
|
|
- struct fotg210_qtd *qtd;
|
|
|
|
|
|
+ struct fotg210_qtd *qtd, *temp;
|
|
|
|
|
|
- qtd = list_entry(entry, struct fotg210_qtd, qtd_list);
|
|
|
|
|
|
+ list_for_each_entry_safe(qtd, temp, head, qtd_list) {
|
|
list_del(&qtd->qtd_list);
|
|
list_del(&qtd->qtd_list);
|
|
fotg210_qtd_free(fotg210, qtd);
|
|
fotg210_qtd_free(fotg210, qtd);
|
|
}
|
|
}
|