drm: simplify drm_put_minor()
Allow passing NULL as minor to simplify DRM destruction paths. Also remove the double-pointer reset as it is no longer needed. drm_put_minor() is only called when the underlying object is destroyed. Hence, resetting minors to NULL is not necessary. As drm_put_minor() is no longer used by other DRM files, we can make it static, too. Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
f73aca50b7
commit
4ac387f516
@ -343,15 +343,17 @@ static void drm_unplug_minor(struct drm_minor *minor)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_put_minor - Destroy DRM minor
|
* drm_put_minor - Destroy DRM minor
|
||||||
* @minor_p: Double pointer to DRM minor
|
* @minor: Minor to destroy
|
||||||
*
|
*
|
||||||
* This calls drm_unplug_minor() on the given minor and then frees it. The minor
|
* This calls drm_unplug_minor() on the given minor and then frees it. Nothing
|
||||||
* pointer is reset to NULL before this returns.
|
* is done if @minor is NULL. It is fine to call this on already unplugged
|
||||||
|
* minors.
|
||||||
* The global DRM mutex must be held by the caller.
|
* The global DRM mutex must be held by the caller.
|
||||||
*/
|
*/
|
||||||
int drm_put_minor(struct drm_minor **minor_p)
|
static void drm_put_minor(struct drm_minor *minor)
|
||||||
{
|
{
|
||||||
struct drm_minor *minor = *minor_p;
|
if (!minor)
|
||||||
|
return;
|
||||||
|
|
||||||
DRM_DEBUG("release secondary minor %d\n", minor->index);
|
DRM_DEBUG("release secondary minor %d\n", minor->index);
|
||||||
|
|
||||||
@ -364,10 +366,7 @@ int drm_put_minor(struct drm_minor **minor_p)
|
|||||||
idr_remove(&drm_minors_idr, minor->index);
|
idr_remove(&drm_minors_idr, minor->index);
|
||||||
|
|
||||||
kfree(minor);
|
kfree(minor);
|
||||||
*minor_p = NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_put_minor);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called via drm_exit() at module unload time or when pci device is
|
* Called via drm_exit() at module unload time or when pci device is
|
||||||
@ -562,13 +561,11 @@ err_unload:
|
|||||||
if (dev->driver->unload)
|
if (dev->driver->unload)
|
||||||
dev->driver->unload(dev);
|
dev->driver->unload(dev);
|
||||||
err_primary_node:
|
err_primary_node:
|
||||||
drm_put_minor(&dev->primary);
|
drm_put_minor(dev->primary);
|
||||||
err_render_node:
|
err_render_node:
|
||||||
if (dev->render)
|
drm_put_minor(dev->render);
|
||||||
drm_put_minor(&dev->render);
|
|
||||||
err_control_node:
|
err_control_node:
|
||||||
if (dev->control)
|
drm_put_minor(dev->control);
|
||||||
drm_put_minor(&dev->control);
|
|
||||||
err_agp:
|
err_agp:
|
||||||
if (dev->driver->bus->agp_destroy)
|
if (dev->driver->bus->agp_destroy)
|
||||||
dev->driver->bus->agp_destroy(dev);
|
dev->driver->bus->agp_destroy(dev);
|
||||||
@ -603,11 +600,9 @@ void drm_dev_unregister(struct drm_device *dev)
|
|||||||
list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
|
list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
|
||||||
drm_rmmap(dev, r_list->map);
|
drm_rmmap(dev, r_list->map);
|
||||||
|
|
||||||
if (dev->control)
|
drm_put_minor(dev->control);
|
||||||
drm_put_minor(&dev->control);
|
drm_put_minor(dev->render);
|
||||||
if (dev->render)
|
drm_put_minor(dev->primary);
|
||||||
drm_put_minor(&dev->render);
|
|
||||||
drm_put_minor(&dev->primary);
|
|
||||||
|
|
||||||
list_del(&dev->driver_item);
|
list_del(&dev->driver_item);
|
||||||
}
|
}
|
||||||
|
@ -1436,7 +1436,6 @@ extern struct drm_master *drm_master_get(struct drm_master *master);
|
|||||||
extern void drm_master_put(struct drm_master **master);
|
extern void drm_master_put(struct drm_master **master);
|
||||||
|
|
||||||
extern void drm_put_dev(struct drm_device *dev);
|
extern void drm_put_dev(struct drm_device *dev);
|
||||||
extern int drm_put_minor(struct drm_minor **minor);
|
|
||||||
extern void drm_unplug_dev(struct drm_device *dev);
|
extern void drm_unplug_dev(struct drm_device *dev);
|
||||||
extern unsigned int drm_debug;
|
extern unsigned int drm_debug;
|
||||||
extern unsigned int drm_rnodes;
|
extern unsigned int drm_rnodes;
|
||||||
|
Reference in New Issue
Block a user