Commit 4ac387f5 authored by David Herrmann's avatar David Herrmann Committed by Dave Airlie

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: default avatarDavid Herrmann <dh.herrmann@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent f73aca50
...@@ -343,15 +343,17 @@ static void drm_unplug_minor(struct drm_minor *minor) ...@@ -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) ...@@ -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 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags) ...@@ -562,13 +561,11 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
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) ...@@ -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); ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment