]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
tg3: Fix irq alloc error cleanup path
authorMatt Carlson <mcarlson@broadcom.com>
Fri, 4 Nov 2011 09:15:01 +0000 (09:15 +0000)
committerJoe Jin <joe.jin@oracle.com>
Wed, 16 May 2012 02:32:10 +0000 (10:32 +0800)
This patch fixes a bug where the irq error cleanup path did not free all
the resources it allocated.

(cherry picked from commit 5bc09186deba2a016b60aa3923fc0e42838ce877)
Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Ben Li <benli@broadcom.com>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Reviewed-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/tg3.c

index a4a869cae4532cea0da71812a05419489d5bf07c..9aa7689eef7e2a17128d3a7323f352d56fe3d310 100644 (file)
@@ -9685,15 +9685,14 @@ static int tg3_open(struct net_device *dev)
                struct tg3_napi *tnapi = &tp->napi[i];
                err = tg3_request_irq(tp, i);
                if (err) {
-                       for (i--; i >= 0; i--)
+                       for (i--; i >= 0; i--) {
+                               tnapi = &tp->napi[i];
                                free_irq(tnapi->irq_vec, tnapi);
-                       break;
+                       }
+                       goto err_out2;
                }
        }
 
-       if (err)
-               goto err_out2;
-
        tg3_full_lock(tp, 0);
 
        err = tg3_init_hw(tp, 1);