Re: [PATCH v5 08/11] devm-helpers: Add resource managed version of debugfs directory create function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le 23/03/2024 à 17:43, Marek Behún a écrit :
A few drivers register a devm action to remove a debugfs directory,
implementing a one-liner function that calls debufs_remove_recursive().
Help drivers avoid this repeated implementations by adding managed
version of debugfs directory create function.

Use the new function devm_debugfs_create_dir() in the following
drivers:
   drivers/crypto/caam/ctrl.c
   drivers/gpu/drm/bridge/ti-sn65dsi86.c
   drivers/hwmon/hp-wmi-sensors.c
   drivers/hwmon/mr75203.c
   drivers/hwmon/pmbus/pmbus_core.c

Also use the action function devm_debugfs_dir_recursive_drop() in
driver
   drivers/gpio/gpio-mockup.c

As per Dan Williams' request [1], do not touch the driver
   drivers/cxl/mem.c

[1] https://lore.kernel.org/linux-gpio/65d7918b358a5_1ee3129432@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.notmuch/

Signed-off-by: Marek Behún <kabel@xxxxxxxxxx>
---
  drivers/crypto/caam/ctrl.c            | 16 +++--------
  drivers/gpio/gpio-mockup.c            | 11 ++------
  drivers/gpu/drm/bridge/ti-sn65dsi86.c | 13 ++-------
  drivers/hwmon/hp-wmi-sensors.c        | 15 ++--------
  drivers/hwmon/mr75203.c               | 15 ++++------
  drivers/hwmon/pmbus/pmbus_core.c      | 16 ++++-------
  include/linux/devm-helpers.h          | 40 +++++++++++++++++++++++++++
  7 files changed, 61 insertions(+), 65 deletions(-)

...

diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c
index 455eecf6380e..adbe0fe09490 100644
--- a/drivers/gpio/gpio-mockup.c
+++ b/drivers/gpio/gpio-mockup.c
@@ -12,6 +12,7 @@
  #include <linux/cleanup.h>
  #include <linux/debugfs.h>
  #include <linux/device.h>
+#include <linux/devm-helpers.h>
  #include <linux/gpio/driver.h>
  #include <linux/interrupt.h>
  #include <linux/irq.h>
@@ -390,13 +391,6 @@ static void gpio_mockup_debugfs_setup(struct device *dev,
  	}
  }
-static void gpio_mockup_debugfs_cleanup(void *data)
-{
-	struct gpio_mockup_chip *chip = data;
-
-	debugfs_remove_recursive(chip->dbg_dir);
-}
-
  static void gpio_mockup_dispose_mappings(void *data)
  {
  	struct gpio_mockup_chip *chip = data;
@@ -480,7 +474,8 @@ static int gpio_mockup_probe(struct platform_device *pdev)
gpio_mockup_debugfs_setup(dev, chip); - return devm_add_action_or_reset(dev, gpio_mockup_debugfs_cleanup, chip);
+	return devm_add_action_or_reset(dev, devm_debugfs_dir_recursive_drop,
+					chip->dbg_dir);

This look strange. Shouldn't the debugfs_create_dir() call in gpio_mockup_debugfs_setup() be changed, instead?

(I've not look in the previous version if something was said about it, so apologies if already discussed)

  }
static const struct of_device_id gpio_mockup_of_match[] = {

...


diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
index 50a8b9c3f94d..50f348fca108 100644
--- a/drivers/hwmon/mr75203.c
+++ b/drivers/hwmon/mr75203.c
@@ -10,6 +10,7 @@
  #include <linux/bits.h>
  #include <linux/clk.h>
  #include <linux/debugfs.h>
+#include <linux/devm-helpers.h>
  #include <linux/hwmon.h>
  #include <linux/kstrtox.h>
  #include <linux/module.h>
@@ -216,17 +217,11 @@ static const struct file_operations pvt_ts_coeff_j_fops = {
  	.llseek = default_llseek,
  };
-static void devm_pvt_ts_dbgfs_remove(void *data)
-{
-	struct pvt_device *pvt = (struct pvt_device *)data;
-
-	debugfs_remove_recursive(pvt->dbgfs_dir);
-	pvt->dbgfs_dir = NULL;
-}
-
  static int pvt_ts_dbgfs_create(struct pvt_device *pvt, struct device *dev)
  {
-	pvt->dbgfs_dir = debugfs_create_dir(dev_name(dev), NULL);
+	pvt->dbgfs_dir = devm_debugfs_create_dir(dev, dev_name(dev), NULL);
+	if (IS_ERR(pvt->dbgfs_dir))
+		return PTR_ERR(pvt->dbgfs_dir);

Not sure if the test and error handling should be added here.
*If I'm correct*, functions related to debugfs already handle this case and just do nothing. And failure in debugfs related code is not considered as something that need to be reported and abort a probe function.

Maybe the same other (already existing) tests in this patch should be removed as well, in a separated patch.

just my 2c

CJ

debugfs_create_u32("ts_coeff_h", 0644, pvt->dbgfs_dir,
  			   &pvt->ts_coeff.h);
@@ -237,7 +232,7 @@ static int pvt_ts_dbgfs_create(struct pvt_device *pvt, struct device *dev)
  	debugfs_create_file("ts_coeff_j", 0644, pvt->dbgfs_dir, pvt,
  			    &pvt_ts_coeff_j_fops);
- return devm_add_action_or_reset(dev, devm_pvt_ts_dbgfs_remove, pvt);
+	return 0;
  }

...





[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux