diff options
-rw-r--r-- | drivers/usb/host/isp1760-if.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c index b605224fb9e3..61de62cdb1dd 100644 --- a/drivers/usb/host/isp1760-if.c +++ b/drivers/usb/host/isp1760-if.c | |||
@@ -56,14 +56,18 @@ static int of_isp1760_probe(struct platform_device *dev) | |||
56 | return -ENOMEM; | 56 | return -ENOMEM; |
57 | 57 | ||
58 | ret = of_address_to_resource(dp, 0, &memory); | 58 | ret = of_address_to_resource(dp, 0, &memory); |
59 | if (ret) | 59 | if (ret) { |
60 | return -ENXIO; | 60 | ret = -ENXIO; |
61 | goto free_data; | ||
62 | } | ||
61 | 63 | ||
62 | res_len = resource_size(&memory); | 64 | res_len = resource_size(&memory); |
63 | 65 | ||
64 | res = request_mem_region(memory.start, res_len, dev_name(&dev->dev)); | 66 | res = request_mem_region(memory.start, res_len, dev_name(&dev->dev)); |
65 | if (!res) | 67 | if (!res) { |
66 | return -EBUSY; | 68 | ret = -EBUSY; |
69 | goto free_data; | ||
70 | } | ||
67 | 71 | ||
68 | if (of_irq_map_one(dp, 0, &oirq)) { | 72 | if (of_irq_map_one(dp, 0, &oirq)) { |
69 | ret = -ENODEV; | 73 | ret = -ENODEV; |
@@ -125,6 +129,7 @@ free_gpio: | |||
125 | gpio_free(drvdata->rst_gpio); | 129 | gpio_free(drvdata->rst_gpio); |
126 | release_reg: | 130 | release_reg: |
127 | release_mem_region(memory.start, res_len); | 131 | release_mem_region(memory.start, res_len); |
132 | free_data: | ||
128 | kfree(drvdata); | 133 | kfree(drvdata); |
129 | return ret; | 134 | return ret; |
130 | } | 135 | } |