]>
Commit | Line | Data |
---|---|---|
0f2bcbd3 GKH |
1 | From 7e9e148af01ef388efb6e2490805970be4622792 Mon Sep 17 00:00:00 2001 |
2 | From: Marc Kleine-Budde <mkl@pengutronix.de> | |
3 | Date: Fri, 28 Feb 2014 14:52:01 +0100 | |
4 | Subject: can: flexcan: flexcan_open(): fix error path if flexcan_chip_start() fails | |
5 | ||
6 | From: Marc Kleine-Budde <mkl@pengutronix.de> | |
7 | ||
8 | commit 7e9e148af01ef388efb6e2490805970be4622792 upstream. | |
9 | ||
10 | If flexcan_chip_start() in flexcan_open() fails, the interrupt is not freed, | |
11 | this patch adds the missing cleanup. | |
12 | ||
13 | Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> | |
14 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
15 | ||
16 | --- | |
17 | drivers/net/can/flexcan.c | 4 +++- | |
18 | 1 file changed, 3 insertions(+), 1 deletion(-) | |
19 | ||
20 | --- a/drivers/net/can/flexcan.c | |
21 | +++ b/drivers/net/can/flexcan.c | |
22 | @@ -862,7 +862,7 @@ static int flexcan_open(struct net_devic | |
23 | /* start chip and queuing */ | |
24 | err = flexcan_chip_start(dev); | |
25 | if (err) | |
26 | - goto out_close; | |
27 | + goto out_free_irq; | |
28 | ||
29 | can_led_event(dev, CAN_LED_EVENT_OPEN); | |
30 | ||
31 | @@ -871,6 +871,8 @@ static int flexcan_open(struct net_devic | |
32 | ||
33 | return 0; | |
34 | ||
35 | + out_free_irq: | |
36 | + free_irq(dev->irq, dev); | |
37 | out_close: | |
38 | close_candev(dev); | |
39 | out: |