|
@@ -128,12 +128,16 @@ static int __init ep93xx_rtc_probe(struct platform_device *pdev)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
- if (res == NULL)
|
|
|
|
- return -ENXIO;
|
|
|
|
|
|
+ if (res == NULL) {
|
|
|
|
+ err = -ENXIO;
|
|
|
|
+ goto fail_free;
|
|
|
|
+ }
|
|
|
|
|
|
res = request_mem_region(res->start, resource_size(res), pdev->name);
|
|
res = request_mem_region(res->start, resource_size(res), pdev->name);
|
|
- if (res == NULL)
|
|
|
|
- return -EBUSY;
|
|
|
|
|
|
+ if (res == NULL) {
|
|
|
|
+ err = -EBUSY;
|
|
|
|
+ goto fail_free;
|
|
|
|
+ }
|
|
|
|
|
|
ep93xx_rtc->mmio_base = ioremap(res->start, resource_size(res));
|
|
ep93xx_rtc->mmio_base = ioremap(res->start, resource_size(res));
|
|
if (ep93xx_rtc->mmio_base == NULL) {
|
|
if (ep93xx_rtc->mmio_base == NULL) {
|
|
@@ -169,6 +173,8 @@ fail:
|
|
pdev->dev.platform_data = NULL;
|
|
pdev->dev.platform_data = NULL;
|
|
}
|
|
}
|
|
release_mem_region(res->start, resource_size(res));
|
|
release_mem_region(res->start, resource_size(res));
|
|
|
|
+fail_free:
|
|
|
|
+ kfree(ep93xx_rtc);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|