Hi Dan

Thanks for reporting this, will submit a change to fix this.

Abhinav

On 2021-02-28 23:14, Dan Carpenter wrote:
tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
master
head:   fe07bfda2fb9cdef8a4d4008a409bb02f35f1bd8
commit: d11a93690df7e9a7e07c0784ecad019a627b1449 drm/msm/dp: add
debugfs support to DP driver
config: arm64-randconfig-m031-20210301 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/gpu/drm/msm/dp/dp_debug.c:218 dp_debug_init() warn: passing
zero to 'PTR_ERR'

Old smatch warnings:
drivers/gpu/drm/msm/dp/dp_debug.c:227 dp_debug_init() warn: passing
zero to 'PTR_ERR'

vim +/PTR_ERR +218 drivers/gpu/drm/msm/dp/dp_debug.c

d11a93690df7e9 Abhinav Kumar 2020-09-12  209  static int
dp_debug_init(struct dp_debug *dp_debug)
d11a93690df7e9 Abhinav Kumar 2020-09-12  210  {
d11a93690df7e9 Abhinav Kumar 2020-09-12  211    int rc = 0;
d11a93690df7e9 Abhinav Kumar 2020-09-12  212    struct dp_debug_private
*debug = container_of(dp_debug,
d11a93690df7e9 Abhinav Kumar 2020-09-12  213                    struct
dp_debug_private, dp_debug);
d11a93690df7e9 Abhinav Kumar 2020-09-12 214 struct dentry *dir, *file;
d11a93690df7e9 Abhinav Kumar 2020-09-12  215
d11a93690df7e9 Abhinav Kumar 2020-09-12  216    dir =
debugfs_create_dir(DEBUG_NAME, NULL);
d11a93690df7e9 Abhinav Kumar 2020-09-12 217 if (IS_ERR_OR_NULL(dir)) {
d11a93690df7e9 Abhinav Kumar 2020-09-12 @218            rc = PTR_ERR(dir);
d11a93690df7e9 Abhinav Kumar 2020-09-12  219            DRM_ERROR("[%s]
debugfs create dir failed, rc = %d\n",
d11a93690df7e9 Abhinav Kumar 2020-09-12  220                              
DEBUG_NAME, rc);
d11a93690df7e9 Abhinav Kumar 2020-09-12  221            goto error;

Debugfs function never return NULL, but actually debugfs functions
aren't supposed to be checked in the normal case (the abnormal case is
where you are trying to dereference "dir" and "file" within the driver
itself, so it doesn't apply here).

So then the function becomes a lot simpler, if it's written in the
canonical way.  This should probably be documented better in the
Documentation/filesystems/debugfs.rst file...  :/

static void dp_debug_init(struct dp_debug *dp_debug)
{
        struct dp_debug_private *debug = container_of(dp_debug,
                                                      struct dp_debug_private, 
dp_debug);

        debug->root = debugfs_create_dir(DEBUG_NAME, NULL);
        debugfs_create_file("dp_debug", 0444, dir, debug, &dp_debug_fops);
}

d11a93690df7e9 Abhinav Kumar 2020-09-12  222    }
d11a93690df7e9 Abhinav Kumar 2020-09-12  223
d11a93690df7e9 Abhinav Kumar 2020-09-12  224    file =
debugfs_create_file("dp_debug", 0444, dir,
d11a93690df7e9 Abhinav Kumar 2020-09-12 225 debug, &dp_debug_fops); d11a93690df7e9 Abhinav Kumar 2020-09-12 226 if (IS_ERR_OR_NULL(file)) {
d11a93690df7e9 Abhinav Kumar 2020-09-12  227            rc = PTR_ERR(file);
d11a93690df7e9 Abhinav Kumar 2020-09-12  228            DRM_ERROR("[%s]
debugfs create file failed, rc=%d\n",
d11a93690df7e9 Abhinav Kumar 2020-09-12  229                              
DEBUG_NAME, rc);
d11a93690df7e9 Abhinav Kumar 2020-09-12  230            goto error_remove_dir;
d11a93690df7e9 Abhinav Kumar 2020-09-12  231    }
d11a93690df7e9 Abhinav Kumar 2020-09-12  232
d11a93690df7e9 Abhinav Kumar 2020-09-12  233    debug->root = dir;
d11a93690df7e9 Abhinav Kumar 2020-09-12  234    return rc;
d11a93690df7e9 Abhinav Kumar 2020-09-12  235   error_remove_dir:
d11a93690df7e9 Abhinav Kumar 2020-09-12  236    debugfs_remove(dir);
d11a93690df7e9 Abhinav Kumar 2020-09-12  237   error:
d11a93690df7e9 Abhinav Kumar 2020-09-12  238    return rc;
d11a93690df7e9 Abhinav Kumar 2020-09-12  239  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Reply via email to