@@ -962,6 +962,9 @@ static __init int legacy_init_one(struct legacy_probe *probe)
if (IS_ERR(pdev))
return PTR_ERR(pdev);
+ if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL))
+ return -ENOMEM;
+
ret = -EBUSY;
if (devm_request_region(&pdev->dev, io, 8, "pata_legacy") == NULL ||
devm_request_region(&pdev->dev, io + 0x0206, 1,
@@ -1008,12 +1011,14 @@ static __init int legacy_init_one(struct legacy_probe *probe)
if (!ata_dev_absent(dev)) {
legacy_host[probe->slot] = host;
ld->platform_dev = pdev;
+ devres_remove_group(&pdev->dev, NULL);
return 0;
}
}
ata_host_detach(host);
fail:
platform_device_unregister(pdev);
+ devres_release_group(&pdev->dev, NULL);
return ret;
}