CC: [email protected] CC: [email protected] In-Reply-To: <20211118111632.GE1147@kili> References: <20211118111632.GE1147@kili> TO: Dan Carpenter <[email protected]> TO: David Airlie <[email protected]> TO: Gerd Hoffmann <[email protected]> CC: [email protected] CC: [email protected] CC: [email protected]
Hi Dan, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on drm/drm-next] [also build test WARNING on v5.16-rc2] [cannot apply to next-20211118] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Dan-Carpenter/drm-virtio-Fix-an-NULL-vs-IS_ERR-bug-in-virtio_gpu_object_shmem_init/20211118-191927 base: git://anongit.freedesktop.org/drm/drm drm-next :::::: branch date: 5 days ago :::::: commit date: 5 days ago config: arm-randconfig-c002-20211118 (attached as .config) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://github.com/0day-ci/linux/commit/6484c76f0631613606ed7704c2c341a44709c0f9 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Dan-Carpenter/drm-virtio-Fix-an-NULL-vs-IS_ERR-bug-in-virtio_gpu_object_shmem_init/20211118-191927 git checkout 6484c76f0631613606ed7704c2c341a44709c0f9 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^ include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp' __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op)) ^ include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once' __cmp(unique_x, unique_y, op); }) ^ include/linux/minmax.h:28:26: note: expanded from macro '__cmp' #define __cmp(x, y, op) ((x) op (y) ? (x) : (y)) ^ crypto/testmgr.c:625:16: note: Assuming 'copied' is equal to 'copy_len' if (WARN_ON(copied != copy_len)) ^ include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON' int __ret_warn_on = !!(condition); \ ^~~~~~~~~ crypto/testmgr.c:625:8: note: Taking false branch if (WARN_ON(copied != copy_len)) ^ include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON' if (unlikely(__ret_warn_on)) \ ^ crypto/testmgr.c:625:4: note: Taking false branch if (WARN_ON(copied != copy_len)) ^ crypto/testmgr.c:600:14: note: Assuming 'i' is < field 'nents' for (i = 0; i < tsgl->nents; i++) { ^~~~~~~~~~~~~~~ crypto/testmgr.c:600:2: note: Loop condition is true. Entering loop body for (i = 0; i < tsgl->nents; i++) { ^ crypto/testmgr.c:601:25: note: Access to field 'offset' results in a dereference of an undefined pointer value (loaded from field 'div') unsigned int offset = partitions[i].div->offset; ^ ~~~ crypto/testmgr.c:1056:3: warning: Value stored to 'p' is never read [clang-analyzer-deadcode.DeadStores] p += scnprintf(p, end - p, " key_offset=%u", cfg->key_offset); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ crypto/testmgr.c:1056:3: note: Value stored to 'p' is never read p += scnprintf(p, end - p, " key_offset=%u", cfg->key_offset); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 15 warnings generated. Suppressed 15 warnings (15 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 19 warnings generated. kernel/kexec_core.c:771:4: warning: Value stored to 'addr' is never read [clang-analyzer-deadcode.DeadStores] addr = old_addr; ^ ~~~~~~~~ kernel/kexec_core.c:771:4: note: Value stored to 'addr' is never read addr = old_addr; ^ ~~~~~~~~ kernel/kexec_core.c:791:2: warning: Value stored to 'result' is never read [clang-analyzer-deadcode.DeadStores] result = 0; ^ ~ kernel/kexec_core.c:791:2: note: Value stored to 'result' is never read result = 0; ^ ~ Suppressed 17 warnings (17 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 17 warnings generated. Suppressed 17 warnings (16 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 19 warnings generated. drivers/char/tpm/tpm_tis_core.c:423:2: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores] rc = tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/char/tpm/tpm_tis_core.c:423:2: note: Value stored to 'rc' is never read rc = tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/char/tpm/tpm_tis_core.c:865:23: warning: Value stored to 'data' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct tpm_tis_data *data = dev_get_drvdata(&chip->dev); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/char/tpm/tpm_tis_core.c:865:23: note: Value stored to 'data' during its initialization is never read struct tpm_tis_data *data = dev_get_drvdata(&chip->dev); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 17 warnings (16 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 18 warnings generated. Suppressed 18 warnings (16 in non-user code, 2 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 18 warnings generated. Suppressed 18 warnings (17 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 18 warnings generated. Suppressed 18 warnings (17 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 16 warnings generated. Suppressed 16 warnings (16 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 20 warnings generated. >> drivers/gpu/drm/virtio/virtgpu_object.c:253:3: warning: Use of memory after >> it is freed [clang-analyzer-unix.Malloc] return ret; ^ ~~~ drivers/gpu/drm/virtio/virtgpu_object.c:227:2: note: Taking false branch if (IS_ERR(shmem_obj)) ^ drivers/gpu/drm/virtio/virtgpu_object.c:232:6: note: 'ret' is >= 0 if (ret < 0) ^~~ drivers/gpu/drm/virtio/virtgpu_object.c:232:2: note: Taking false branch if (ret < 0) ^ drivers/gpu/drm/virtio/virtgpu_object.c:237:6: note: Assuming 'fence' is null if (fence) { ^~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:237:2: note: Taking false branch if (fence) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:250:6: note: Assuming 'ret' is not equal to 0 if (ret != 0) { ^~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:250:2: note: Taking true branch if (ret != 0) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:252:3: note: Calling 'virtio_gpu_free_object' virtio_gpu_free_object(&shmem_obj->base); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:106:6: note: Assuming field 'created' is false if (bo->created) { ^~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:106:2: note: Taking false branch if (bo->created) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:112:2: note: Calling 'virtio_gpu_cleanup_object' virtio_gpu_cleanup_object(bo); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:69:6: note: Assuming the condition is true if (virtio_gpu_is_shmem(bo)) { ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:69:2: note: Taking true branch if (virtio_gpu_is_shmem(bo)) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:72:14: note: Field 'pages' is non-null if (shmem->pages) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:72:3: note: Taking true branch if (shmem->pages) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:73:8: note: Assuming field 'mapped' is 0 if (shmem->mapped) { ^~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:73:4: note: Taking false branch if (shmem->mapped) { ^ drivers/gpu/drm/virtio/virtgpu_object.c:80:4: note: Memory is released kfree(shmem->pages); ^~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:112:2: note: Returning; memory was released virtio_gpu_cleanup_object(bo); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:252:3: note: Returning; memory was released virtio_gpu_free_object(&shmem_obj->base); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:253:3: note: Use of memory after it is freed return ret; ^ ~~~ drivers/gpu/drm/virtio/virtgpu_object.c:260:3: warning: 4th function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] virtio_gpu_cmd_resource_create_blob(vgdev, bo, params, ^ drivers/gpu/drm/virtio/virtgpu_object.c:219:2: note: 'ents' declared without an initial value struct virtio_gpu_mem_entry *ents; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:227:6: note: Calling 'IS_ERR' if (IS_ERR(shmem_obj)) ^~~~~~~~~~~~~~~~~ include/linux/err.h:36:9: note: Assuming the condition is false return IS_ERR_VALUE((unsigned long)ptr); ^ include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE' #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ include/linux/err.h:36:2: note: Returning zero, which participates in a condition later return IS_ERR_VALUE((unsigned long)ptr); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:227:6: note: Returning from 'IS_ERR' if (IS_ERR(shmem_obj)) ^~~~~~~~~~~~~~~~~ drivers/gpu/drm/virtio/virtgpu_object.c:227:2: note: Taking false branch if (IS_ERR(shmem_obj)) ^ drivers/gpu/drm/virtio/virtgpu_object.c:232:6: note: 'ret' is >= 0 if (ret < 0) ^~~ drivers/gpu/drm/virtio/virtgpu_object.c:232:2: note: Taking false branch if (ret < 0) ^ drivers/gpu/drm/virtio/virtgpu_object.c:237:6: note: Assuming 'fence' is null if (fence) { vim +253 drivers/gpu/drm/virtio/virtgpu_object.c 2f2aa13724d568 Gerd Hoffmann 2020-02-07 210 dc5698e80cf724 Dave Airlie 2013-09-09 211 int virtio_gpu_object_create(struct virtio_gpu_device *vgdev, 4441235f9566e6 Gerd Hoffmann 2019-03-18 212 struct virtio_gpu_object_params *params, 530b28426a94b8 Gerd Hoffmann 2019-03-18 213 struct virtio_gpu_object **bo_ptr, 530b28426a94b8 Gerd Hoffmann 2019-03-18 214 struct virtio_gpu_fence *fence) dc5698e80cf724 Dave Airlie 2013-09-09 215 { e2324300f427ff Gerd Hoffmann 2019-08-29 216 struct virtio_gpu_object_array *objs = NULL; c66df701e783bc Gerd Hoffmann 2019-08-29 217 struct drm_gem_shmem_object *shmem_obj; dc5698e80cf724 Dave Airlie 2013-09-09 218 struct virtio_gpu_object *bo; 2f2aa13724d568 Gerd Hoffmann 2020-02-07 219 struct virtio_gpu_mem_entry *ents; 2f2aa13724d568 Gerd Hoffmann 2020-02-07 220 unsigned int nents; dc5698e80cf724 Dave Airlie 2013-09-09 221 int ret; dc5698e80cf724 Dave Airlie 2013-09-09 222 dc5698e80cf724 Dave Airlie 2013-09-09 223 *bo_ptr = NULL; dc5698e80cf724 Dave Airlie 2013-09-09 224 c66df701e783bc Gerd Hoffmann 2019-08-29 225 params->size = roundup(params->size, PAGE_SIZE); c66df701e783bc Gerd Hoffmann 2019-08-29 226 shmem_obj = drm_gem_shmem_create(vgdev->ddev, params->size); c66df701e783bc Gerd Hoffmann 2019-08-29 227 if (IS_ERR(shmem_obj)) c66df701e783bc Gerd Hoffmann 2019-08-29 228 return PTR_ERR(shmem_obj); c66df701e783bc Gerd Hoffmann 2019-08-29 229 bo = gem_to_virtio_gpu_obj(&shmem_obj->base); dc5698e80cf724 Dave Airlie 2013-09-09 230 556c62e85f9b97 Matthew Wilcox 2018-10-30 231 ret = virtio_gpu_resource_id_get(vgdev, &bo->hw_res_handle); e2324300f427ff Gerd Hoffmann 2019-08-29 232 if (ret < 0) e2324300f427ff Gerd Hoffmann 2019-08-29 233 goto err_free_gem; e2324300f427ff Gerd Hoffmann 2019-08-29 234 530b28426a94b8 Gerd Hoffmann 2019-03-18 235 bo->dumb = params->dumb; 530b28426a94b8 Gerd Hoffmann 2019-03-18 236 e2324300f427ff Gerd Hoffmann 2019-08-29 237 if (fence) { e2324300f427ff Gerd Hoffmann 2019-08-29 238 ret = -ENOMEM; e2324300f427ff Gerd Hoffmann 2019-08-29 239 objs = virtio_gpu_array_alloc(1); e2324300f427ff Gerd Hoffmann 2019-08-29 240 if (!objs) e2324300f427ff Gerd Hoffmann 2019-08-29 241 goto err_put_id; c66df701e783bc Gerd Hoffmann 2019-08-29 242 virtio_gpu_array_add_obj(objs, &bo->base.base); e2324300f427ff Gerd Hoffmann 2019-08-29 243 e2324300f427ff Gerd Hoffmann 2019-08-29 244 ret = virtio_gpu_array_lock_resv(objs); e2324300f427ff Gerd Hoffmann 2019-08-29 245 if (ret != 0) e2324300f427ff Gerd Hoffmann 2019-08-29 246 goto err_put_objs; e2324300f427ff Gerd Hoffmann 2019-08-29 247 } e2324300f427ff Gerd Hoffmann 2019-08-29 248 2f2aa13724d568 Gerd Hoffmann 2020-02-07 249 ret = virtio_gpu_object_shmem_init(vgdev, bo, &ents, &nents); 2f2aa13724d568 Gerd Hoffmann 2020-02-07 250 if (ret != 0) { 377f8331d0565e xndcn 2021-03-05 251 virtio_gpu_array_put_free(objs); 2f2aa13724d568 Gerd Hoffmann 2020-02-07 252 virtio_gpu_free_object(&shmem_obj->base); 2f2aa13724d568 Gerd Hoffmann 2020-02-07 @253 return ret; --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
