Re: [PATCH] fix: drm/vmwgfx: vmw_user_shader_alloc: fix base object refcount leak on ttm_base_object_init failure
kernel test robot <[email protected]>
| Newsgroups | org.freedesktop.lists.dri-devel,dev.linux.lists.llvm,dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
Hi WenTao, kernel test robot noticed the following build errors: [auto build test ERROR on drm-misc/drm-misc-next] [also build test ERROR on daeinki-drm-exynos/exynos-drm-next drm/drm-next drm-i915/for-linux-next drm-i915/for-linux-next-fixes drm-tip/drm-tip linus/master v7.2-rc6 next-20260807] [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#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/WenTao-Liang/fix-drm-vmwgfx-vmw_user_shader_alloc-fix-base-object-refcount-leak-on-ttm_base_object_init-failure/20260807-080356 base: https://gitlab.freedesktop.org/drm/misc/kernel.git drm-misc-next patch link: https://lore.kernel.org/r/20260626150142.49732-1-vulab%40iscas.ac.cn patch subject: [PATCH] fix: drm/vmwgfx: vmw_user_shader_alloc: fix base object refcount leak on ttm_base_object_init failure config: arm64-randconfig-002-20260807 (https://download.01.org/0day-ci/archive/20260808/[email protected]/config) compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 12df34b8469b8095359de8c249cb1b2753fadeea) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260808/[email protected]/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All errors (new ones prefixed by >>): >> drivers/gpu/drm/vmwgfx/vmwgfx_shader.c:727:25: error: incompatible pointer types passing 'struct ttm_base_object *' to parameter of type 'struct ttm_base_object **' [-Wincompatible-pointer-types] 727 | ttm_base_object_unref(&ushader->base); | ^~~~~~~~~~~~~~ drivers/gpu/drm/vmwgfx/ttm_object.h:192:60: note: passing argument to parameter 'p_base' here 192 | extern void ttm_base_object_unref(struct ttm_base_object **p_base); | ^ 1 error generated. vim +727 drivers/gpu/drm/vmwgfx/vmwgfx_shader.c 684 685 static int vmw_user_shader_alloc(struct vmw_private *dev_priv, 686 struct vmw_bo *buffer, 687 size_t shader_size, 688 size_t offset, 689 SVGA3dShaderType shader_type, 690 uint8_t num_input_sig, 691 uint8_t num_output_sig, 692 struct ttm_object_file *tfile, 693 u32 *handle) 694 { 695 struct vmw_user_shader *ushader; 696 struct vmw_resource *res, *tmp; 697 int ret; 698 699 ushader = kzalloc_obj(*ushader); 700 if (unlikely(!ushader)) { 701 ret = -ENOMEM; 702 goto out; 703 } 704 705 res = &ushader->shader.res; 706 ushader->base.shareable = false; 707 ushader->base.tfile = NULL; 708 709 /* 710 * From here on, the destructor takes over resource freeing. 711 */ 712 713 ret = vmw_gb_shader_init(dev_priv, res, shader_size, 714 offset, shader_type, num_input_sig, 715 num_output_sig, buffer, 716 vmw_user_shader_free); 717 if (unlikely(ret != 0)) 718 goto out; 719 720 tmp = vmw_resource_reference(res); 721 ret = ttm_base_object_init(tfile, &ushader->base, false, 722 VMW_RES_SHADER, 723 &vmw_user_shader_base_release); 724 725 if (unlikely(ret != 0)) { 726 vmw_resource_unreference(&tmp); > 727 ttm_base_object_unref(&ushader->base); 728 goto out_err; 729 } 730 731 if (handle) 732 *handle = ushader->base.handle; 733 out_err: 734 vmw_resource_unreference(&res); 735 out: 736 return ret; 737 } 738 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki