drm/radeon: cleanup properly if mmio mapping fails
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 12 Apr 2013 23:15:52 +0000 (19:15 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jun 2014 23:02:12 +0000 (16:02 -0700)
commit 0cd9cb76ae26a19df21abc6f94f5fff141e689c7 upstream.

If we fail to map the mmio BAR, skip driver tear down
that requires mmio.

Should fix:
https://bugzilla.kernel.org/show_bug.cgi?id=56541

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Weng Meiling <wengmeiling.weng@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/radeon/radeon_kms.c

index 3c2628b..9b46238 100644 (file)
@@ -39,8 +39,12 @@ int radeon_driver_unload_kms(struct drm_device *dev)
 
        if (rdev == NULL)
                return 0;
+       if (rdev->rmmio == NULL)
+               goto done_free;
        radeon_modeset_fini(rdev);
        radeon_device_fini(rdev);
+
+done_free:
        kfree(rdev);
        dev->dev_private = NULL;
        return 0;