2023-02-02 03:12:36

by Longlong Xia

[permalink] [raw]
Subject: [PATCH -next 0/3] cleanup of devtmpfs_*_node()

In one test, when modprobe zram, no zram device was found in the /dev.
But don't see any errors printed in jouranls/dmesg. Later we found out
that the reason was that device_add() did not check its return value when
calling devtmpfs_create_node(). So we hope to turn devtmpfs_*_node() &
devtmpfs_submit_req() into a function with no return value, and add some
debug info in the handle() that actually processes the request to let the
user know why the creation was not successful.

Patch [1] devtmpfs: convert to pr_fmt.
Patch [2] devtmpfs: add debug info to handle().
Patch [3] devtmpfs: Remove return value of devtmpfs_*_node() &
devtmpfs_submit_req().

Longlong Xia (3):
devtmpfs: convert to pr_fmt
devtmpfs: add debug info to handle()
devtmpfs: remove return value of devtmpfs_*_node() &
devtmpfs_submit_req()

drivers/base/base.h | 8 +++----
drivers/base/devtmpfs.c | 48 +++++++++++++++++++++++------------------
2 files changed, 31 insertions(+), 25 deletions(-)

--
2.25.1



2023-02-02 03:12:39

by Longlong Xia

[permalink] [raw]
Subject: [PATCH -next 3/3] devtmpfs: remove return value of devtmpfs_*_node() & devtmpfs_submit_req()

Because the return value of devtmpfs_*_node() and devtmpfs_submit_req()
are not used by their callers, change them into void functions.

Signed-off-by: Longlong Xia <[email protected]>
---
drivers/base/base.h | 8 ++++----
drivers/base/devtmpfs.c | 20 +++++++++-----------
2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/drivers/base/base.h b/drivers/base/base.h
index 2208af509ce8..ffb7321e39cf 100644
--- a/drivers/base/base.h
+++ b/drivers/base/base.h
@@ -198,11 +198,11 @@ extern void fw_devlink_drivers_done(void);
void device_pm_move_to_tail(struct device *dev);

#ifdef CONFIG_DEVTMPFS
-int devtmpfs_create_node(struct device *dev);
-int devtmpfs_delete_node(struct device *dev);
+void devtmpfs_create_node(struct device *dev);
+void devtmpfs_delete_node(struct device *dev);
#else
-static inline int devtmpfs_create_node(struct device *dev) { return 0; }
-static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
+static inline void devtmpfs_create_node(struct device *dev) { }
+static inline void devtmpfs_delete_node(struct device *dev) { }
#endif

void software_node_notify(struct device *dev);
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index 77ca64f708ce..3c4e61c99b77 100644
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -103,7 +103,7 @@ static inline int is_blockdev(struct device *dev)
static inline int is_blockdev(struct device *dev) { return 0; }
#endif

-static int devtmpfs_submit_req(struct req *req, const char *tmp)
+static void devtmpfs_submit_req(struct req *req, const char *tmp)
{
init_completion(&req->done);

@@ -116,24 +116,22 @@ static int devtmpfs_submit_req(struct req *req, const char *tmp)
wait_for_completion(&req->done);

kfree(tmp);
-
- return req->err;
}

-int devtmpfs_create_node(struct device *dev)
+void devtmpfs_create_node(struct device *dev)
{
const char *tmp = NULL;
struct req req;

if (!thread)
- return 0;
+ return;

req.mode = 0;
req.uid = GLOBAL_ROOT_UID;
req.gid = GLOBAL_ROOT_GID;
req.name = device_get_devnode(dev, &req.mode, &req.uid, &req.gid, &tmp);
if (!req.name)
- return -ENOMEM;
+ return;

if (req.mode == 0)
req.mode = 0600;
@@ -144,25 +142,25 @@ int devtmpfs_create_node(struct device *dev)

req.dev = dev;

- return devtmpfs_submit_req(&req, tmp);
+ devtmpfs_submit_req(&req, tmp);
}

-int devtmpfs_delete_node(struct device *dev)
+void devtmpfs_delete_node(struct device *dev)
{
const char *tmp = NULL;
struct req req;

if (!thread)
- return 0;
+ return;

req.name = device_get_devnode(dev, NULL, NULL, NULL, &tmp);
if (!req.name)
- return -ENOMEM;
+ return;

req.mode = 0;
req.dev = dev;

- return devtmpfs_submit_req(&req, tmp);
+ devtmpfs_submit_req(&req, tmp);
}

static int dev_mkdir(const char *name, umode_t mode)
--
2.25.1


2023-02-02 04:50:54

by Longlong Xia

[permalink] [raw]
Subject: Re:[PATCH -next] cleanup of devtmpfs_*_node()

Forget to CC mail list, will resend, please ignore
this one.