On Sun, Sep 08, 2024 at 02:10:30PM GMT, Heiner Kallweit wrote: > These changes make the error path a little more robust, because exit > steps in drm_core_exit() don't have to ensure any longer that they > work properly even if the associated init step wasn't executed. Please use imperative style when describing changes. E.g. "Do this and that because of ABCDEF". See Documentation/process/submitting-patches.rst > In addition these changes allow to annotate a few functions as __exit, > saving some memory if drm is built-in. This should be a separate commit. > > Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx> > --- > drivers/accel/drm_accel.c | 2 +- > drivers/gpu/drm/drm_drv.c | 18 ++++++++++++------ > drivers/gpu/drm/drm_panic.c | 4 ++-- > drivers/gpu/drm/drm_privacy_screen_x86.c | 2 +- > drivers/gpu/drm/drm_sysfs.c | 2 -- > 5 files changed, 16 insertions(+), 12 deletions(-) > > diff --git a/drivers/accel/drm_accel.c b/drivers/accel/drm_accel.c > index aa826033b..25fdbea36 100644 > --- a/drivers/accel/drm_accel.c > +++ b/drivers/accel/drm_accel.c > @@ -191,7 +191,7 @@ static const struct file_operations accel_stub_fops = { > .llseek = noop_llseek, > }; > > -void accel_core_exit(void) > +void __exit accel_core_exit(void) > { > unregister_chrdev(ACCEL_MAJOR, "accel"); > debugfs_remove(accel_debugfs_root); > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index ac30b0ec9..ea59994e5 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -1062,7 +1062,7 @@ static const struct file_operations drm_stub_fops = { > .llseek = noop_llseek, > }; > > -static void drm_core_exit(void) > +static void __exit drm_core_exit(void) > { > drm_privacy_screen_lookup_exit(); > drm_panic_exit(); > @@ -1084,18 +1084,18 @@ static int __init drm_core_init(void) > ret = drm_sysfs_init(); > if (ret < 0) { > DRM_ERROR("Cannot create DRM class: %d\n", ret); > - goto error; > + goto err_ida; > } > > drm_debugfs_root = debugfs_create_dir("dri", NULL); > > ret = register_chrdev(DRM_MAJOR, "drm", &drm_stub_fops); > if (ret < 0) > - goto error; > + goto err_debugfs; > > ret = accel_core_init(); > if (ret < 0) > - goto error; > + goto err_chrdev; > > drm_panic_init(); > > @@ -1106,8 +1106,14 @@ static int __init drm_core_init(void) > DRM_DEBUG("Initialized\n"); > return 0; > > -error: > - drm_core_exit(); > +err_chrdev: > + unregister_chrdev(DRM_MAJOR, "drm"); > +err_debugfs: > + debugfs_remove(drm_debugfs_root); > + drm_sysfs_destroy(); > +err_ida: > + WARN_ON(!xa_empty(&drm_minors_xa)); > + drm_connector_ida_destroy(); > return ret; > } > > diff --git a/drivers/gpu/drm/drm_panic.c b/drivers/gpu/drm/drm_panic.c > index 74412b7bf..d00fdb12d 100644 > --- a/drivers/gpu/drm/drm_panic.c > +++ b/drivers/gpu/drm/drm_panic.c > @@ -679,7 +679,7 @@ static void __init drm_panic_qr_init(void) > GFP_KERNEL); > } > > -static void drm_panic_qr_exit(void) > +static void __exit drm_panic_qr_exit(void) > { > kfree(qrbuf1); > qrbuf1 = NULL; > @@ -1058,7 +1058,7 @@ void __init drm_panic_init(void) > /** > * drm_panic_exit() - Free the resources taken by drm_panic_exit() > */ > -void drm_panic_exit(void) > +void __exit drm_panic_exit(void) > { > drm_panic_qr_exit(); > } > diff --git a/drivers/gpu/drm/drm_privacy_screen_x86.c b/drivers/gpu/drm/drm_privacy_screen_x86.c > index 72ed40e49..6be96a0cc 100644 > --- a/drivers/gpu/drm/drm_privacy_screen_x86.c > +++ b/drivers/gpu/drm/drm_privacy_screen_x86.c > @@ -98,7 +98,7 @@ void __init drm_privacy_screen_lookup_init(void) > } > } > > -void drm_privacy_screen_lookup_exit(void) > +void __exit drm_privacy_screen_lookup_exit(void) > { > if (arch_lookup.provider) > drm_privacy_screen_lookup_remove(&arch_lookup); > diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c > index a713f0500..f8577043e 100644 > --- a/drivers/gpu/drm/drm_sysfs.c > +++ b/drivers/gpu/drm/drm_sysfs.c > @@ -155,8 +155,6 @@ int drm_sysfs_init(void) > */ > void drm_sysfs_destroy(void) > { > - if (IS_ERR_OR_NULL(drm_class)) > - return; > drm_sysfs_acpi_unregister(); > class_destroy(drm_class); > drm_class = NULL; > -- > 2.46.0 > > -- With best wishes Dmitry