From: Wei Yongjun <yongjun_...@trendmicro.com.cn>

In case of error, the function debugfs_create_*() returns NULL
pointer not ERR_PTR() if debugfs is enabled. The IS_ERR() test
in the return value check should be replaced with NULL test.

Signed-off-by: Wei Yongjun <yongjun_...@trendmicro.com.cn>
---
 drivers/block/nbd.c | 50 ++++++++++++++++++++++++--------------------------
 1 file changed, 24 insertions(+), 26 deletions(-)

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index e4c5cc1..02bc697 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -895,49 +895,47 @@ static int nbd_dev_dbg_init(struct nbd_device *nbd)
        struct dentry *f;
 
        dir = debugfs_create_dir(nbd_name(nbd), nbd_dbg_dir);
-       if (IS_ERR_OR_NULL(dir)) {
-               dev_err(nbd_to_dev(nbd), "Failed to create debugfs dir for '%s' 
(%ld)\n",
-                       nbd_name(nbd), PTR_ERR(dir));
-               return PTR_ERR(dir);
+       if (!dir) {
+               dev_err(nbd_to_dev(nbd), "Failed to create debugfs dir for 
'%s'\n",
+                       nbd_name(nbd));
+               return -ENOMEM;
        }
        nbd->dbg_dir = dir;
 
        f = debugfs_create_file("tasks", 0444, dir, nbd, &nbd_dbg_tasks_ops);
-       if (IS_ERR_OR_NULL(f)) {
-               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'tasks', %ld\n",
-                       PTR_ERR(f));
-               return PTR_ERR(f);
+       if (!f) {
+               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'tasks'\n");
+               goto fail;
        }
 
        f = debugfs_create_u64("size_bytes", 0444, dir, &nbd->bytesize);
-       if (IS_ERR_OR_NULL(f)) {
-               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'size_bytes', %ld\n",
-                       PTR_ERR(f));
-               return PTR_ERR(f);
+       if (!f) {
+               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'size_bytes'\n");
+               goto fail;
        }
 
        f = debugfs_create_u32("timeout", 0444, dir, &nbd->xmit_timeout);
-       if (IS_ERR_OR_NULL(f)) {
-               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'timeout', %ld\n",
-                       PTR_ERR(f));
-               return PTR_ERR(f);
+       if (!f) {
+               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'timeout'\n");
+               goto fail;
        }
 
        f = debugfs_create_u32("blocksize", 0444, dir, &nbd->blksize);
-       if (IS_ERR_OR_NULL(f)) {
-               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'blocksize', %ld\n",
-                       PTR_ERR(f));
-               return PTR_ERR(f);
+       if (!f) {
+               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'blocksize'\n");
+               goto fail;
        }
 
        f = debugfs_create_file("flags", 0444, dir, &nbd, &nbd_dbg_flags_ops);
-       if (IS_ERR_OR_NULL(f)) {
-               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'flags', %ld\n",
-                       PTR_ERR(f));
-               return PTR_ERR(f);
+       if (!f) {
+               dev_err(nbd_to_dev(nbd), "Failed to create debugfs file 
'flags'\n");
+               goto fail;
        }
 
        return 0;
+fail:
+       debugfs_remove_recursive(nbd->dbg_dir);
+       return -ENOMEM;
 }
 
 static void nbd_dev_dbg_close(struct nbd_device *nbd)
@@ -950,8 +948,8 @@ static int nbd_dbg_init(void)
        struct dentry *dbg_dir;
 
        dbg_dir = debugfs_create_dir("nbd", NULL);
-       if (IS_ERR(dbg_dir))
-               return PTR_ERR(dbg_dir);
+       if (!dbg_dir)
+               return -ENOMEM;
 
        nbd_dbg_dir = dbg_dir;
 

Reply via email to