diff mbox

drm: check for !kdev in drm_unplug_minor()

Message ID 1384339346-31664-1-git-send-email-dh.herrmann@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

David Herrmann Nov. 13, 2013, 10:42 a.m. UTC
We moved minor deallocation to drm_dev_free() in:
  commit 8f6599da8e772fa8de54cdf98e9e03cbaf3946da
  Author: David Herrmann <dh.herrmann@gmail.com>
  Date:   Sun Oct 20 18:55:45 2013 +0200

      drm: delay minor destruction to drm_dev_free()

However, this causes a call to drm_unplug_minor(), which should just do
nothing as drm_dev_unregister() already called this.

But a separate patch caused kdev lifetime changes:
  commit 5bdebb183c9702a8c57a01dff09337be3de337a6
  Author: Dave Airlie <airlied@redhat.com>
  Date:   Fri Oct 11 14:07:25 2013 +1000

      drm/sysfs: sort out minor and connector device object lifetimes.

Thus making our dev_is_registered() call useles (and even segfault if it
is NULL). Replace it with a simple !kdev test and we're fine.

Reported-by: Huax Lu <huax.lu@intel.com>
Reported-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
---
 drivers/gpu/drm/drm_stub.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Daniel Vetter Nov. 14, 2013, 8:52 a.m. UTC | #1
On Wed, Nov 13, 2013 at 11:42:26AM +0100, David Herrmann wrote:
> We moved minor deallocation to drm_dev_free() in:
>   commit 8f6599da8e772fa8de54cdf98e9e03cbaf3946da
>   Author: David Herrmann <dh.herrmann@gmail.com>
>   Date:   Sun Oct 20 18:55:45 2013 +0200
> 
>       drm: delay minor destruction to drm_dev_free()
> 
> However, this causes a call to drm_unplug_minor(), which should just do
> nothing as drm_dev_unregister() already called this.
> 
> But a separate patch caused kdev lifetime changes:
>   commit 5bdebb183c9702a8c57a01dff09337be3de337a6
>   Author: Dave Airlie <airlied@redhat.com>
>   Date:   Fri Oct 11 14:07:25 2013 +1000
> 
>       drm/sysfs: sort out minor and connector device object lifetimes.
> 
> Thus making our dev_is_registered() call useles (and even segfault if it
> is NULL). Replace it with a simple !kdev test and we're fine.
> 
> Reported-by: Huax Lu <huax.lu@intel.com>
> Reported-by: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: David Herrmann <dh.herrmann@gmail.com>

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71208
Tested-by: lu hua <huax.lu@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>


> ---
>  drivers/gpu/drm/drm_stub.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
> index c200136..f53d524 100644
> --- a/drivers/gpu/drm/drm_stub.c
> +++ b/drivers/gpu/drm/drm_stub.c
> @@ -338,7 +338,7 @@ err_idr:
>   */
>  static void drm_unplug_minor(struct drm_minor *minor)
>  {
> -	if (!minor || !device_is_registered(minor->kdev))
> +	if (!minor || !minor->kdev)
>  		return;
>  
>  #if defined(CONFIG_DEBUG_FS)
> -- 
> 1.8.4.2
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index c200136..f53d524 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -338,7 +338,7 @@  err_idr:
  */
 static void drm_unplug_minor(struct drm_minor *minor)
 {
-	if (!minor || !device_is_registered(minor->kdev))
+	if (!minor || !minor->kdev)
 		return;
 
 #if defined(CONFIG_DEBUG_FS)