mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2025-12-24 19:30:11 +01:00
Fix must-check warnings and implement a few error paths.
This commit is contained in:
parent
b323ab52aa
commit
c9d752ff4f
3 changed files with 43 additions and 16 deletions
|
|
@ -311,7 +311,7 @@ int drm_init(struct drm_driver *driver,
|
|||
}
|
||||
|
||||
if (!drm_fb_loaded)
|
||||
pci_register_driver(&driver->pci_driver);
|
||||
return pci_register_driver(&driver->pci_driver);
|
||||
else {
|
||||
for (i = 0; pciidlist[i].vendor != 0; i++) {
|
||||
pid = &pciidlist[i];
|
||||
|
|
|
|||
|
|
@ -232,18 +232,22 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
|
|||
|
||||
if (!drm_fb_loaded) {
|
||||
pci_set_drvdata(pdev, dev);
|
||||
pci_request_regions(pdev, driver->pci_driver.name);
|
||||
ret = pci_request_regions(pdev, driver->pci_driver.name);
|
||||
if (ret)
|
||||
goto err_g1;
|
||||
}
|
||||
|
||||
pci_enable_device(pdev);
|
||||
ret = pci_enable_device(pdev);
|
||||
if (ret)
|
||||
goto err_g2;
|
||||
pci_set_master(pdev);
|
||||
|
||||
if ((ret = drm_fill_in_dev(dev, pdev, ent, driver))) {
|
||||
printk(KERN_ERR "DRM: fill_in_dev failed\n");
|
||||
goto err_g1;
|
||||
goto err_g3;
|
||||
}
|
||||
if ((ret = drm_get_head(dev, &dev->primary)))
|
||||
goto err_g1;
|
||||
goto err_g3;
|
||||
|
||||
DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
|
||||
driver->name, driver->major, driver->minor, driver->patchlevel,
|
||||
|
|
@ -251,12 +255,16 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
|
|||
|
||||
return 0;
|
||||
|
||||
err_g1:
|
||||
if (!drm_fb_loaded) {
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
pci_release_regions(pdev);
|
||||
err_g3:
|
||||
if (!drm_fb_loaded)
|
||||
pci_disable_device(pdev);
|
||||
}
|
||||
err_g2:
|
||||
if (!drm_fb_loaded)
|
||||
pci_release_regions(pdev);
|
||||
err_g1:
|
||||
if (!drm_fb_loaded)
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
|
||||
drm_free(dev, sizeof(*dev), DRM_MEM_STUB);
|
||||
printk(KERN_ERR "DRM: drm_get_dev failed.\n");
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -93,11 +93,15 @@ struct drm_sysfs_class *drm_sysfs_create(struct module *owner, char *name)
|
|||
retval = class_register(&cs->class);
|
||||
if (retval)
|
||||
goto error;
|
||||
class_create_file(&cs->class, &class_attr_version);
|
||||
retval = class_create_file(&cs->class, &class_attr_version);
|
||||
if (retval)
|
||||
goto error_with_class;
|
||||
|
||||
return cs;
|
||||
|
||||
error:
|
||||
error_with_class:
|
||||
class_unregister(&cs->class);
|
||||
error:
|
||||
kfree(cs);
|
||||
return ERR_PTR(retval);
|
||||
}
|
||||
|
|
@ -170,16 +174,31 @@ struct class_device *drm_sysfs_device_add(struct drm_sysfs_class *cs,
|
|||
if (retval)
|
||||
goto error;
|
||||
|
||||
class_device_create_file(&s_dev->class_dev, &cs->attr);
|
||||
retval = class_device_create_file(&s_dev->class_dev, &cs->attr);
|
||||
if (retval)
|
||||
goto error_with_device;
|
||||
|
||||
class_set_devdata(&s_dev->class_dev, head);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(class_device_attrs); i++)
|
||||
class_device_create_file(&s_dev->class_dev, &class_device_attrs[i]);
|
||||
for (i = 0; i < ARRAY_SIZE(class_device_attrs); i++) {
|
||||
retval = class_device_create_file(&s_dev->class_dev,
|
||||
&class_device_attrs[i]);
|
||||
if (retval)
|
||||
goto error_with_files;
|
||||
}
|
||||
|
||||
return &s_dev->class_dev;
|
||||
|
||||
error:
|
||||
error_with_files:
|
||||
while (i > 0)
|
||||
class_device_remove_file(&s_dev->class_dev,
|
||||
&class_device_attrs[--i]);
|
||||
class_device_remove_file(&s_dev->class_dev, &cs->attr);
|
||||
error_with_device:
|
||||
class_device_unregister(&s_dev->class_dev);
|
||||
error:
|
||||
kfree(s_dev);
|
||||
|
||||
return ERR_PTR(retval);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue