USB: mos7720: fix to use list_for_each_entry_safe() when delete items
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>
Tue, 21 Aug 2012 03:28:45 +0000 (11:28 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Sep 2012 23:52:08 +0000 (16:52 -0700)
Since we will be removing items off the list using list_del() we need
to use a safer version of the list_for_each_entry() macro aptly named
list_for_each_entry_safe(). We should use the safe macro if the loop
involves deletions of items.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/mos7720.c

index a07dd3c8cfef3e408fbaa4bba593267621ccec71..9817d9d654c1f6a0d1d14a2007595acba48aa383 100644 (file)
@@ -281,7 +281,7 @@ static void send_deferred_urbs(unsigned long _mos_parport)
        int ret_val;
        unsigned long flags;
        struct mos7715_parport *mos_parport = (void *)_mos_parport;
-       struct urbtracker *urbtrack;
+       struct urbtracker *urbtrack, *tmp;
        struct list_head *cursor, *next;
 
        /* if release function ran, game over */
@@ -312,7 +312,7 @@ static void send_deferred_urbs(unsigned long _mos_parport)
        /* move contents of deferred_urbs list to active_urbs list and submit */
        list_for_each_safe(cursor, next, &mos_parport->deferred_urbs)
                list_move_tail(cursor, &mos_parport->active_urbs);
-       list_for_each_entry(urbtrack, &mos_parport->active_urbs,
+       list_for_each_entry_safe(urbtrack, tmp, &mos_parport->active_urbs,
                            urblist_entry) {
                ret_val = usb_submit_urb(urbtrack->urb, GFP_ATOMIC);
                dbg("%s: urb submitted", __func__);