Message ID | 20190613133439.GA6715@kroah.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: no need to check return value of debugfs_create functions | expand |
On Thu, Jun 13, 2019 at 03:34:39PM +0200, Greg Kroah-Hartman wrote: > When calling debugfs functions, there is no need to ever check the > return value. The function can work or not, but the code logic should > never do something different based on this. > > Because there is no need to check these functions, a number of local > functions can be made to return void to simplify things as nothing can > fail. > > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Cc: Maxime Ripard <maxime.ripard@bootlin.com> > Cc: Sean Paul <sean@poorly.run> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> > Cc: dri-devel@lists.freedesktop.org > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Ah there was more, kinda wondered. Applied to drm-misc-next, thanks. btw wrt changing function signatures, there's a few more as a quick $ git grep debugfs -- include/drm shows. Do you plan to do the s/int/void/ on all these functions/hooks too once the driver patches have landed? Otherwise could put that as a nice todo item into Documentation/gpu/todo.rst for outreachy/gsoc and other bored people. -Daniel > --- > drivers/gpu/drm/drm_connector.c | 6 +--- > drivers/gpu/drm/drm_crtc.c | 4 +-- > drivers/gpu/drm/drm_debugfs.c | 53 +++++++------------------------ > drivers/gpu/drm/drm_debugfs_crc.c | 28 ++++------------ > drivers/gpu/drm/drm_drv.c | 5 --- > drivers/gpu/drm/drm_internal.h | 20 +++++------- > 6 files changed, 29 insertions(+), 87 deletions(-) > > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > index b34c3d38bf15..5e9e0c2a9e5c 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -464,10 +464,7 @@ int drm_connector_register(struct drm_connector *connector) > if (ret) > goto unlock; > > - ret = drm_debugfs_connector_add(connector); > - if (ret) { > - goto err_sysfs; > - } > + drm_debugfs_connector_add(connector); > > if (connector->funcs->late_register) { > ret = connector->funcs->late_register(connector); > @@ -482,7 +479,6 @@ int drm_connector_register(struct drm_connector *connector) > > err_debugfs: > drm_debugfs_connector_remove(connector); > -err_sysfs: > drm_sysfs_connector_remove(connector); > unlock: > mutex_unlock(&connector->mutex); > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 790ba5941954..4936e1080e41 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -122,9 +122,7 @@ int drm_crtc_register_all(struct drm_device *dev) > int ret = 0; > > drm_for_each_crtc(crtc, dev) { > - if (drm_debugfs_crtc_add(crtc)) > - DRM_ERROR("Failed to initialize debugfs entry for CRTC '%s'.\n", > - crtc->name); > + drm_debugfs_crtc_add(crtc); > > if (crtc->funcs->late_register) > ret = crtc->funcs->late_register(crtc); > diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c > index f8468eae0503..6f2802e9bfb5 100644 > --- a/drivers/gpu/drm/drm_debugfs.c > +++ b/drivers/gpu/drm/drm_debugfs.c > @@ -226,10 +226,6 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id, > mutex_init(&minor->debugfs_lock); > sprintf(name, "%d", minor_id); > minor->debugfs_root = debugfs_create_dir(name, root); > - if (!minor->debugfs_root) { > - DRM_ERROR("Cannot create /sys/kernel/debug/dri/%s\n", name); > - return -1; > - } > > ret = drm_debugfs_create_files(drm_debugfs_list, DRM_DEBUGFS_ENTRIES, > minor->debugfs_root, minor); > @@ -310,17 +306,15 @@ static void drm_debugfs_remove_all_files(struct drm_minor *minor) > mutex_unlock(&minor->debugfs_lock); > } > > -int drm_debugfs_cleanup(struct drm_minor *minor) > +void drm_debugfs_cleanup(struct drm_minor *minor) > { > if (!minor->debugfs_root) > - return 0; > + return; > > drm_debugfs_remove_all_files(minor); > > debugfs_remove_recursive(minor->debugfs_root); > minor->debugfs_root = NULL; > - > - return 0; > } > > static int connector_show(struct seq_file *m, void *data) > @@ -438,38 +432,24 @@ static const struct file_operations drm_connector_fops = { > .write = connector_write > }; > > -int drm_debugfs_connector_add(struct drm_connector *connector) > +void drm_debugfs_connector_add(struct drm_connector *connector) > { > struct drm_minor *minor = connector->dev->primary; > - struct dentry *root, *ent; > + struct dentry *root; > > if (!minor->debugfs_root) > - return -1; > + return; > > root = debugfs_create_dir(connector->name, minor->debugfs_root); > - if (!root) > - return -ENOMEM; > - > connector->debugfs_entry = root; > > /* force */ > - ent = debugfs_create_file("force", S_IRUGO | S_IWUSR, root, connector, > - &drm_connector_fops); > - if (!ent) > - goto error; > + debugfs_create_file("force", S_IRUGO | S_IWUSR, root, connector, > + &drm_connector_fops); > > /* edid */ > - ent = debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, > - connector, &drm_edid_fops); > - if (!ent) > - goto error; > - > - return 0; > - > -error: > - debugfs_remove_recursive(connector->debugfs_entry); > - connector->debugfs_entry = NULL; > - return -ENOMEM; > + debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, connector, > + &drm_edid_fops); > } > > void drm_debugfs_connector_remove(struct drm_connector *connector) > @@ -482,7 +462,7 @@ void drm_debugfs_connector_remove(struct drm_connector *connector) > connector->debugfs_entry = NULL; > } > > -int drm_debugfs_crtc_add(struct drm_crtc *crtc) > +void drm_debugfs_crtc_add(struct drm_crtc *crtc) > { > struct drm_minor *minor = crtc->dev->primary; > struct dentry *root; > @@ -490,23 +470,14 @@ int drm_debugfs_crtc_add(struct drm_crtc *crtc) > > name = kasprintf(GFP_KERNEL, "crtc-%d", crtc->index); > if (!name) > - return -ENOMEM; > + return; > > root = debugfs_create_dir(name, minor->debugfs_root); > kfree(name); > - if (!root) > - return -ENOMEM; > > crtc->debugfs_entry = root; > > - if (drm_debugfs_crtc_crc_add(crtc)) > - goto error; > - > - return 0; > - > -error: > - drm_debugfs_crtc_remove(crtc); > - return -ENOMEM; > + drm_debugfs_crtc_crc_add(crtc); > } > > void drm_debugfs_crtc_remove(struct drm_crtc *crtc) > diff --git a/drivers/gpu/drm/drm_debugfs_crc.c b/drivers/gpu/drm/drm_debugfs_crc.c > index 00e743153e94..f9e317046551 100644 > --- a/drivers/gpu/drm/drm_debugfs_crc.c > +++ b/drivers/gpu/drm/drm_debugfs_crc.c > @@ -344,33 +344,19 @@ static const struct file_operations drm_crtc_crc_data_fops = { > .release = crtc_crc_release, > }; > > -int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) > +void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) > { > - struct dentry *crc_ent, *ent; > + struct dentry *crc_ent; > > if (!crtc->funcs->set_crc_source || !crtc->funcs->verify_crc_source) > - return 0; > + return; > > crc_ent = debugfs_create_dir("crc", crtc->debugfs_entry); > - if (!crc_ent) > - return -ENOMEM; > - > - ent = debugfs_create_file("control", S_IRUGO, crc_ent, crtc, > - &drm_crtc_crc_control_fops); > - if (!ent) > - goto error; > - > - ent = debugfs_create_file("data", S_IRUGO, crc_ent, crtc, > - &drm_crtc_crc_data_fops); > - if (!ent) > - goto error; > - > - return 0; > - > -error: > - debugfs_remove_recursive(crc_ent); > > - return -ENOMEM; > + debugfs_create_file("control", S_IRUGO, crc_ent, crtc, > + &drm_crtc_crc_control_fops); > + debugfs_create_file("data", S_IRUGO, crc_ent, crtc, > + &drm_crtc_crc_data_fops); > } > > /** > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 862621494a93..da9a83da37eb 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -1161,11 +1161,6 @@ static int __init drm_core_init(void) > } > > drm_debugfs_root = debugfs_create_dir("dri", NULL); > - if (!drm_debugfs_root) { > - ret = -ENOMEM; > - DRM_ERROR("Cannot create debugfs-root: %d\n", ret); > - goto error; > - } > > ret = register_chrdev(DRM_MAJOR, "drm", &drm_stub_fops); > if (ret < 0) > diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h > index e19ac7ca602d..938a6f06d7c7 100644 > --- a/drivers/gpu/drm/drm_internal.h > +++ b/drivers/gpu/drm/drm_internal.h > @@ -126,12 +126,12 @@ void drm_gem_print_info(struct drm_printer *p, unsigned int indent, > #if defined(CONFIG_DEBUG_FS) > int drm_debugfs_init(struct drm_minor *minor, int minor_id, > struct dentry *root); > -int drm_debugfs_cleanup(struct drm_minor *minor); > -int drm_debugfs_connector_add(struct drm_connector *connector); > +void drm_debugfs_cleanup(struct drm_minor *minor); > +void drm_debugfs_connector_add(struct drm_connector *connector); > void drm_debugfs_connector_remove(struct drm_connector *connector); > -int drm_debugfs_crtc_add(struct drm_crtc *crtc); > +void drm_debugfs_crtc_add(struct drm_crtc *crtc); > void drm_debugfs_crtc_remove(struct drm_crtc *crtc); > -int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc); > +void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc); > #else > static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id, > struct dentry *root) > @@ -139,30 +139,26 @@ static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id, > return 0; > } > > -static inline int drm_debugfs_cleanup(struct drm_minor *minor) > +static inline void drm_debugfs_cleanup(struct drm_minor *minor) > { > - return 0; > } > > -static inline int drm_debugfs_connector_add(struct drm_connector *connector) > +static inline void drm_debugfs_connector_add(struct drm_connector *connector) > { > - return 0; > } > static inline void drm_debugfs_connector_remove(struct drm_connector *connector) > { > } > > -static inline int drm_debugfs_crtc_add(struct drm_crtc *crtc) > +static inline void drm_debugfs_crtc_add(struct drm_crtc *crtc) > { > - return 0; > } > static inline void drm_debugfs_crtc_remove(struct drm_crtc *crtc) > { > } > > -static inline int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) > +static inline void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) > { > - return 0; > } > > #endif > -- > 2.22.0 >
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index b34c3d38bf15..5e9e0c2a9e5c 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -464,10 +464,7 @@ int drm_connector_register(struct drm_connector *connector) if (ret) goto unlock; - ret = drm_debugfs_connector_add(connector); - if (ret) { - goto err_sysfs; - } + drm_debugfs_connector_add(connector); if (connector->funcs->late_register) { ret = connector->funcs->late_register(connector); @@ -482,7 +479,6 @@ int drm_connector_register(struct drm_connector *connector) err_debugfs: drm_debugfs_connector_remove(connector); -err_sysfs: drm_sysfs_connector_remove(connector); unlock: mutex_unlock(&connector->mutex); diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 790ba5941954..4936e1080e41 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -122,9 +122,7 @@ int drm_crtc_register_all(struct drm_device *dev) int ret = 0; drm_for_each_crtc(crtc, dev) { - if (drm_debugfs_crtc_add(crtc)) - DRM_ERROR("Failed to initialize debugfs entry for CRTC '%s'.\n", - crtc->name); + drm_debugfs_crtc_add(crtc); if (crtc->funcs->late_register) ret = crtc->funcs->late_register(crtc); diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index f8468eae0503..6f2802e9bfb5 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -226,10 +226,6 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id, mutex_init(&minor->debugfs_lock); sprintf(name, "%d", minor_id); minor->debugfs_root = debugfs_create_dir(name, root); - if (!minor->debugfs_root) { - DRM_ERROR("Cannot create /sys/kernel/debug/dri/%s\n", name); - return -1; - } ret = drm_debugfs_create_files(drm_debugfs_list, DRM_DEBUGFS_ENTRIES, minor->debugfs_root, minor); @@ -310,17 +306,15 @@ static void drm_debugfs_remove_all_files(struct drm_minor *minor) mutex_unlock(&minor->debugfs_lock); } -int drm_debugfs_cleanup(struct drm_minor *minor) +void drm_debugfs_cleanup(struct drm_minor *minor) { if (!minor->debugfs_root) - return 0; + return; drm_debugfs_remove_all_files(minor); debugfs_remove_recursive(minor->debugfs_root); minor->debugfs_root = NULL; - - return 0; } static int connector_show(struct seq_file *m, void *data) @@ -438,38 +432,24 @@ static const struct file_operations drm_connector_fops = { .write = connector_write }; -int drm_debugfs_connector_add(struct drm_connector *connector) +void drm_debugfs_connector_add(struct drm_connector *connector) { struct drm_minor *minor = connector->dev->primary; - struct dentry *root, *ent; + struct dentry *root; if (!minor->debugfs_root) - return -1; + return; root = debugfs_create_dir(connector->name, minor->debugfs_root); - if (!root) - return -ENOMEM; - connector->debugfs_entry = root; /* force */ - ent = debugfs_create_file("force", S_IRUGO | S_IWUSR, root, connector, - &drm_connector_fops); - if (!ent) - goto error; + debugfs_create_file("force", S_IRUGO | S_IWUSR, root, connector, + &drm_connector_fops); /* edid */ - ent = debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, - connector, &drm_edid_fops); - if (!ent) - goto error; - - return 0; - -error: - debugfs_remove_recursive(connector->debugfs_entry); - connector->debugfs_entry = NULL; - return -ENOMEM; + debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, connector, + &drm_edid_fops); } void drm_debugfs_connector_remove(struct drm_connector *connector) @@ -482,7 +462,7 @@ void drm_debugfs_connector_remove(struct drm_connector *connector) connector->debugfs_entry = NULL; } -int drm_debugfs_crtc_add(struct drm_crtc *crtc) +void drm_debugfs_crtc_add(struct drm_crtc *crtc) { struct drm_minor *minor = crtc->dev->primary; struct dentry *root; @@ -490,23 +470,14 @@ int drm_debugfs_crtc_add(struct drm_crtc *crtc) name = kasprintf(GFP_KERNEL, "crtc-%d", crtc->index); if (!name) - return -ENOMEM; + return; root = debugfs_create_dir(name, minor->debugfs_root); kfree(name); - if (!root) - return -ENOMEM; crtc->debugfs_entry = root; - if (drm_debugfs_crtc_crc_add(crtc)) - goto error; - - return 0; - -error: - drm_debugfs_crtc_remove(crtc); - return -ENOMEM; + drm_debugfs_crtc_crc_add(crtc); } void drm_debugfs_crtc_remove(struct drm_crtc *crtc) diff --git a/drivers/gpu/drm/drm_debugfs_crc.c b/drivers/gpu/drm/drm_debugfs_crc.c index 00e743153e94..f9e317046551 100644 --- a/drivers/gpu/drm/drm_debugfs_crc.c +++ b/drivers/gpu/drm/drm_debugfs_crc.c @@ -344,33 +344,19 @@ static const struct file_operations drm_crtc_crc_data_fops = { .release = crtc_crc_release, }; -int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) +void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) { - struct dentry *crc_ent, *ent; + struct dentry *crc_ent; if (!crtc->funcs->set_crc_source || !crtc->funcs->verify_crc_source) - return 0; + return; crc_ent = debugfs_create_dir("crc", crtc->debugfs_entry); - if (!crc_ent) - return -ENOMEM; - - ent = debugfs_create_file("control", S_IRUGO, crc_ent, crtc, - &drm_crtc_crc_control_fops); - if (!ent) - goto error; - - ent = debugfs_create_file("data", S_IRUGO, crc_ent, crtc, - &drm_crtc_crc_data_fops); - if (!ent) - goto error; - - return 0; - -error: - debugfs_remove_recursive(crc_ent); - return -ENOMEM; + debugfs_create_file("control", S_IRUGO, crc_ent, crtc, + &drm_crtc_crc_control_fops); + debugfs_create_file("data", S_IRUGO, crc_ent, crtc, + &drm_crtc_crc_data_fops); } /** diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 862621494a93..da9a83da37eb 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -1161,11 +1161,6 @@ static int __init drm_core_init(void) } drm_debugfs_root = debugfs_create_dir("dri", NULL); - if (!drm_debugfs_root) { - ret = -ENOMEM; - DRM_ERROR("Cannot create debugfs-root: %d\n", ret); - goto error; - } ret = register_chrdev(DRM_MAJOR, "drm", &drm_stub_fops); if (ret < 0) diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index e19ac7ca602d..938a6f06d7c7 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -126,12 +126,12 @@ void drm_gem_print_info(struct drm_printer *p, unsigned int indent, #if defined(CONFIG_DEBUG_FS) int drm_debugfs_init(struct drm_minor *minor, int minor_id, struct dentry *root); -int drm_debugfs_cleanup(struct drm_minor *minor); -int drm_debugfs_connector_add(struct drm_connector *connector); +void drm_debugfs_cleanup(struct drm_minor *minor); +void drm_debugfs_connector_add(struct drm_connector *connector); void drm_debugfs_connector_remove(struct drm_connector *connector); -int drm_debugfs_crtc_add(struct drm_crtc *crtc); +void drm_debugfs_crtc_add(struct drm_crtc *crtc); void drm_debugfs_crtc_remove(struct drm_crtc *crtc); -int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc); +void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc); #else static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id, struct dentry *root) @@ -139,30 +139,26 @@ static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id, return 0; } -static inline int drm_debugfs_cleanup(struct drm_minor *minor) +static inline void drm_debugfs_cleanup(struct drm_minor *minor) { - return 0; } -static inline int drm_debugfs_connector_add(struct drm_connector *connector) +static inline void drm_debugfs_connector_add(struct drm_connector *connector) { - return 0; } static inline void drm_debugfs_connector_remove(struct drm_connector *connector) { } -static inline int drm_debugfs_crtc_add(struct drm_crtc *crtc) +static inline void drm_debugfs_crtc_add(struct drm_crtc *crtc) { - return 0; } static inline void drm_debugfs_crtc_remove(struct drm_crtc *crtc) { } -static inline int drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) +static inline void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc) { - return 0; } #endif
When calling debugfs functions, there is no need to ever check the return value. The function can work or not, but the code logic should never do something different based on this. Because there is no need to check these functions, a number of local functions can be made to return void to simplify things as nothing can fail. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: dri-devel@lists.freedesktop.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/gpu/drm/drm_connector.c | 6 +--- drivers/gpu/drm/drm_crtc.c | 4 +-- drivers/gpu/drm/drm_debugfs.c | 53 +++++++------------------------ drivers/gpu/drm/drm_debugfs_crc.c | 28 ++++------------ drivers/gpu/drm/drm_drv.c | 5 --- drivers/gpu/drm/drm_internal.h | 20 +++++------- 6 files changed, 29 insertions(+), 87 deletions(-)