unsigned int i;
int e;
+ if (WARN_ON(nvmap_dev != NULL)) {
+ dev_err(&pdev->dev, "only one nvmap device may be present\n");
+ return -ENODEV;
+ }
+
+ dev = kzalloc(sizeof(*dev), GFP_KERNEL);
+ if (!dev) {
+ dev_err(&pdev->dev, "out of memory for device\n");
+ return -ENOMEM;
+ }
+
+ nvmap_dev = dev;
+
nvmap_init(pdev);
plat = pdev->dev.platform_data;
if (!plat) {
dev_err(&pdev->dev, "no platform data?\n");
+ nvmap_dev = NULL;
+ kfree(dev);
return -ENODEV;
}
* as separate IO virtual address ranges.
*/
pdev->dev.dma_parms = &nvmap_dma_parameters;
-
- if (WARN_ON(nvmap_dev != NULL)) {
- dev_err(&pdev->dev, "only one nvmap device may be present\n");
- return -ENODEV;
- }
-
- dev = kzalloc(sizeof(*dev), GFP_KERNEL);
- if (!dev) {
- dev_err(&pdev->dev, "out of memory for device\n");
- return -ENOMEM;
- }
-
- nvmap_dev = dev;
-
dev->dev_user.minor = MISC_DYNAMIC_MINOR;
dev->dev_user.name = "nvmap";
dev->dev_user.fops = &nvmap_user_fops;
kfree(dev->heaps);
if (dev->dev_user.minor != MISC_DYNAMIC_MINOR)
misc_deregister(&dev->dev_user);
- kfree(dev);
nvmap_dev = NULL;
+ kfree(dev);
return e;
}