tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 2bd48302750c652889a2604b3df8b591c1d3af08 commit: 8afa13a0583f94c14607e3041c02f068ac8fb628 [5594/9257] drm/vmwgfx: Implement DRIVER_GEM config: arm64-randconfig-m031-20211222 (https://download.01.org/0day-ci/archive/20211223/202112230826.ADH6zTe0-lkp@xxxxxxxxx/config) compiler: aarch64-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> smatch warnings: drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c:1177 vmw_translate_mob_ptr() warn: passing zero to 'PTR_ERR' drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c:1231 vmw_translate_guest_ptr() warn: passing zero to 'PTR_ERR' vim +/PTR_ERR +1177 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1163 static int vmw_translate_mob_ptr(struct vmw_private *dev_priv, ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1164 struct vmw_sw_context *sw_context, ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1165 SVGAMobId *id, f1d34bfd70b1b4 Thomas Hellstrom 2018-06-19 1166 struct vmw_buffer_object **vmw_bo_p) ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1167 { b139d43dacef68 Thomas Hellstrom 2018-09-26 1168 struct vmw_buffer_object *vmw_bo; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1169 uint32_t handle = *id; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1170 struct vmw_relocation *reloc; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1171 int ret; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1172 b139d43dacef68 Thomas Hellstrom 2018-09-26 1173 vmw_validation_preload_bo(sw_context->ctx); 8afa13a0583f94 Zack Rusin 2021-12-06 1174 vmw_bo = vmw_user_bo_noref_lookup(sw_context->filp, handle); 8afa13a0583f94 Zack Rusin 2021-12-06 1175 if (IS_ERR_OR_NULL(vmw_bo)) { 5724f899ed8265 Deepak Rawat 2019-02-11 1176 VMW_DEBUG_USER("Could not find or use MOB buffer.\n"); b139d43dacef68 Thomas Hellstrom 2018-09-26 @1177 return PTR_ERR(vmw_bo); This used to be an IS_ERR() check. But now it is IS_ERR_OR_NULL(). When a function returns both error pointers and NULL, that means errors are errors and NULL is when the feature is disabled in the .config or by the admin at runtime. But vmw_user_bo_noref_lookup() is not optional and it can never actually return NULL... This code works but it was better before with the IS_ERR() check. ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1178 } b139d43dacef68 Thomas Hellstrom 2018-09-26 1179 ret = vmw_validation_add_bo(sw_context->ctx, vmw_bo, true, false); 8afa13a0583f94 Zack Rusin 2021-12-06 1180 ttm_bo_put(&vmw_bo->base); b139d43dacef68 Thomas Hellstrom 2018-09-26 1181 if (unlikely(ret != 0)) b139d43dacef68 Thomas Hellstrom 2018-09-26 1182 return ret; b139d43dacef68 Thomas Hellstrom 2018-09-26 1183 fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1184 reloc = vmw_validation_mem_alloc(sw_context->ctx, sizeof(*reloc)); fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1185 if (!reloc) b139d43dacef68 Thomas Hellstrom 2018-09-26 1186 return -ENOMEM; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1187 ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1188 reloc->mob_loc = id; 9c079b8ce8bf8e Thomas Hellstrom 2018-09-26 1189 reloc->vbo = vmw_bo; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1190 ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1191 *vmw_bo_p = vmw_bo; fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1192 list_add_tail(&reloc->head, &sw_context->bo_relocations); fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1193 ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1194 return 0; ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1195 } ddcda24e3bec1d Thomas Hellstrom 2012-11-21 1196 e2fa3a76839ada Thomas Hellstrom 2011-10-04 1197 /** 2cd80dbd35518d Zack Rusin 2021-05-05 1198 * vmw_translate_guest_ptr - Prepare to translate a user-space buffer handle 680360a4d3f695 Deepak Rawat 2019-02-13 1199 * to a valid SVGAGuestPtr e2fa3a76839ada Thomas Hellstrom 2011-10-04 1200 * c0951b797e7d0f Thomas Hellstrom 2012-11-20 1201 * @dev_priv: Pointer to a device private structure. c0951b797e7d0f Thomas Hellstrom 2012-11-20 1202 * @sw_context: The software context used for this command batch validation. c0951b797e7d0f Thomas Hellstrom 2012-11-20 1203 * @ptr: Pointer to the user-space handle to be translated. 680360a4d3f695 Deepak Rawat 2019-02-13 1204 * @vmw_bo_p: Points to a location that, on successful return will carry a 680360a4d3f695 Deepak Rawat 2019-02-13 1205 * non-reference-counted pointer to the DMA buffer identified by the user-space 680360a4d3f695 Deepak Rawat 2019-02-13 1206 * handle in @id. e2fa3a76839ada Thomas Hellstrom 2011-10-04 1207 * c0951b797e7d0f Thomas Hellstrom 2012-11-20 1208 * This function saves information needed to translate a user-space buffer c0951b797e7d0f Thomas Hellstrom 2012-11-20 1209 * handle to a valid SVGAGuestPtr. The translation does not take place c0951b797e7d0f Thomas Hellstrom 2012-11-20 1210 * immediately, but during a call to vmw_apply_relocations(). 680360a4d3f695 Deepak Rawat 2019-02-13 1211 * c0951b797e7d0f Thomas Hellstrom 2012-11-20 1212 * This function builds a relocation list and a list of buffers to validate. c0951b797e7d0f Thomas Hellstrom 2012-11-20 1213 * The former needs to be freed using either vmw_apply_relocations() or c0951b797e7d0f Thomas Hellstrom 2012-11-20 1214 * vmw_free_relocations(). The latter needs to be freed using c0951b797e7d0f Thomas Hellstrom 2012-11-20 1215 * vmw_clear_validations. e2fa3a76839ada Thomas Hellstrom 2011-10-04 1216 */ 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1217 static int vmw_translate_guest_ptr(struct vmw_private *dev_priv, fb1d9738ca053e Jakob Bornecrantz 2009-12-10 1218 struct vmw_sw_context *sw_context, 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1219 SVGAGuestPtr *ptr, f1d34bfd70b1b4 Thomas Hellstrom 2018-06-19 1220 struct vmw_buffer_object **vmw_bo_p) fb1d9738ca053e Jakob Bornecrantz 2009-12-10 1221 { b139d43dacef68 Thomas Hellstrom 2018-09-26 1222 struct vmw_buffer_object *vmw_bo; 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1223 uint32_t handle = ptr->gmrId; fb1d9738ca053e Jakob Bornecrantz 2009-12-10 1224 struct vmw_relocation *reloc; 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1225 int ret; fb1d9738ca053e Jakob Bornecrantz 2009-12-10 1226 b139d43dacef68 Thomas Hellstrom 2018-09-26 1227 vmw_validation_preload_bo(sw_context->ctx); 8afa13a0583f94 Zack Rusin 2021-12-06 1228 vmw_bo = vmw_user_bo_noref_lookup(sw_context->filp, handle); 8afa13a0583f94 Zack Rusin 2021-12-06 1229 if (IS_ERR_OR_NULL(vmw_bo)) { 5724f899ed8265 Deepak Rawat 2019-02-11 1230 VMW_DEBUG_USER("Could not find or use GMR region.\n"); b139d43dacef68 Thomas Hellstrom 2018-09-26 @1231 return PTR_ERR(vmw_bo); fb1d9738ca053e Jakob Bornecrantz 2009-12-10 1232 } b139d43dacef68 Thomas Hellstrom 2018-09-26 1233 ret = vmw_validation_add_bo(sw_context->ctx, vmw_bo, false, false); 8afa13a0583f94 Zack Rusin 2021-12-06 1234 ttm_bo_put(&vmw_bo->base); b139d43dacef68 Thomas Hellstrom 2018-09-26 1235 if (unlikely(ret != 0)) b139d43dacef68 Thomas Hellstrom 2018-09-26 1236 return ret; b139d43dacef68 Thomas Hellstrom 2018-09-26 1237 fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1238 reloc = vmw_validation_mem_alloc(sw_context->ctx, sizeof(*reloc)); fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1239 if (!reloc) b139d43dacef68 Thomas Hellstrom 2018-09-26 1240 return -ENOMEM; fb1d9738ca053e Jakob Bornecrantz 2009-12-10 1241 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1242 reloc->location = ptr; 9c079b8ce8bf8e Thomas Hellstrom 2018-09-26 1243 reloc->vbo = vmw_bo; 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1244 *vmw_bo_p = vmw_bo; fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1245 list_add_tail(&reloc->head, &sw_context->bo_relocations); fc18afcf5fb2d8 Thomas Hellstrom 2018-09-26 1246 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1247 return 0; 4e4ddd47774313 Thomas Hellstrom 2010-02-21 1248 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx