Hi Juha-Pekka,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Juha-Pekka-Heikkila/drm-xe-pat-annotate-pat-index-table-with-compression-information/20240127-091231
base:   https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
patch link:    
https://lore.kernel.org/r/20240126210807.320671-4-juhapekka.heikkila%40gmail.com
patch subject: [PATCH 3/5] drm/xe: store bind time pat index to xe_bo
config: sparc-randconfig-r081-20240128 
(https://download.01.org/0day-ci/archive/20240131/[email protected]/config)
compiler: sparc64-linux-gcc (GCC) 13.2.0

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]>
| Reported-by: Dan Carpenter <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

New smatch warnings:
drivers/gpu/drm/xe/xe_pt.c:1265 __xe_pt_bind_vma() warn: possible memory leak 
of 'ifence'
drivers/gpu/drm/xe/xe_pt.c:1265 __xe_pt_bind_vma() warn: possible memory leak 
of 'rfence'

vim +/ifence +1265 drivers/gpu/drm/xe/xe_pt.c

dd08ebf6c3525a Matthew Brost       2023-03-30  1192  struct dma_fence *
9b9529ce379a08 Francois Dugast     2023-07-31  1193  __xe_pt_bind_vma(struct 
xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue *q,
dd08ebf6c3525a Matthew Brost       2023-03-30  1194              struct 
xe_sync_entry *syncs, u32 num_syncs,
dd08ebf6c3525a Matthew Brost       2023-03-30  1195              bool rebind)
dd08ebf6c3525a Matthew Brost       2023-03-30  1196  {
dd08ebf6c3525a Matthew Brost       2023-03-30  1197     struct 
xe_vm_pgtable_update entries[XE_VM_MAX_LEVEL * 2 + 1];
dd08ebf6c3525a Matthew Brost       2023-03-30  1198     struct 
xe_pt_migrate_pt_update bind_pt_update = {
dd08ebf6c3525a Matthew Brost       2023-03-30  1199             .base = {
dd08ebf6c3525a Matthew Brost       2023-03-30  1200                     .ops = 
xe_vma_is_userptr(vma) ? &userptr_bind_ops : &bind_ops,
dd08ebf6c3525a Matthew Brost       2023-03-30  1201                     .vma = 
vma,
fd84041d094ce8 Matthew Brost       2023-07-19  1202                     
.tile_id = tile->id,
dd08ebf6c3525a Matthew Brost       2023-03-30  1203             },
dd08ebf6c3525a Matthew Brost       2023-03-30  1204             .bind = true,
dd08ebf6c3525a Matthew Brost       2023-03-30  1205     };
21ed3327e388c2 Matthew Brost       2023-06-22  1206     struct xe_vm *vm = 
xe_vma_vm(vma);
dd08ebf6c3525a Matthew Brost       2023-03-30  1207     u32 num_entries;
dd08ebf6c3525a Matthew Brost       2023-03-30  1208     struct dma_fence *fence;
5387e865d90e92 Matthew Brost       2023-01-27  1209     struct 
invalidation_fence *ifence = NULL;
fd84041d094ce8 Matthew Brost       2023-07-19  1210     struct xe_range_fence 
*rfence;
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1211     struct xe_bo *bo = 
xe_vma_bo(vma);
dd08ebf6c3525a Matthew Brost       2023-03-30  1212     int err;
dd08ebf6c3525a Matthew Brost       2023-03-30  1213  
dd08ebf6c3525a Matthew Brost       2023-03-30  1214     bind_pt_update.locked = 
false;
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1215     xe_bo_assert_held(bo);
dd08ebf6c3525a Matthew Brost       2023-03-30  1216     xe_vm_assert_held(vm);
dd08ebf6c3525a Matthew Brost       2023-03-30  1217  
21ed3327e388c2 Matthew Brost       2023-06-22  1218     
vm_dbg(&xe_vma_vm(vma)->xe->drm,
dd08ebf6c3525a Matthew Brost       2023-03-30  1219            "Preparing bind, 
with range [%llx...%llx) engine %p.\n",
0e1a234618a86c Paulo Zanoni        2023-09-29  1220            
xe_vma_start(vma), xe_vma_end(vma), q);
dd08ebf6c3525a Matthew Brost       2023-03-30  1221  
876611c2b75689 Matt Roper          2023-06-01  1222     err = 
xe_pt_prepare_bind(tile, vma, entries, &num_entries, rebind);
dd08ebf6c3525a Matthew Brost       2023-03-30  1223     if (err)
dd08ebf6c3525a Matthew Brost       2023-03-30  1224             goto err;
c73acc1eeba5e3 Francois Dugast     2023-09-12  1225     xe_tile_assert(tile, 
num_entries <= ARRAY_SIZE(entries));
dd08ebf6c3525a Matthew Brost       2023-03-30  1226  
876611c2b75689 Matt Roper          2023-06-01  1227     
xe_vm_dbg_print_entries(tile_to_xe(tile), entries, num_entries);
fd84041d094ce8 Matthew Brost       2023-07-19  1228     
xe_pt_calc_rfence_interval(vma, &bind_pt_update, entries,
fd84041d094ce8 Matthew Brost       2023-07-19  1229                             
   num_entries);
dd08ebf6c3525a Matthew Brost       2023-03-30  1230  
85dbfe47d07cdd Thomas Hellström    2023-06-05  1231     /*
85dbfe47d07cdd Thomas Hellström    2023-06-05  1232      * If rebind, we have 
to invalidate TLB on !LR vms to invalidate
85dbfe47d07cdd Thomas Hellström    2023-06-05  1233      * cached PTEs point to 
freed memory. on LR vms this is done
85dbfe47d07cdd Thomas Hellström    2023-06-05  1234      * automatically when 
the context is re-enabled by the rebind worker,
85dbfe47d07cdd Thomas Hellström    2023-06-05  1235      * or in fault mode it 
was invalidated on PTE zapping.
85dbfe47d07cdd Thomas Hellström    2023-06-05  1236      *
85dbfe47d07cdd Thomas Hellström    2023-06-05  1237      * If !rebind, and 
scratch enabled VMs, there is a chance the scratch
85dbfe47d07cdd Thomas Hellström    2023-06-05  1238      * PTE is already 
cached in the TLB so it needs to be invalidated.
85dbfe47d07cdd Thomas Hellström    2023-06-05  1239      * on !LR VMs this is 
done in the ring ops preceding a batch, but on
85dbfe47d07cdd Thomas Hellström    2023-06-05  1240      * non-faulting LR, in 
particular on user-space batch buffer chaining,
85dbfe47d07cdd Thomas Hellström    2023-06-05  1241      * it needs to be done 
here.
85dbfe47d07cdd Thomas Hellström    2023-06-05  1242      */
fdb6a05383fab3 Thomas Hellström    2023-11-27  1243     if ((rebind && 
!xe_vm_in_lr_mode(vm) && !vm->batch_invalidate_tlb) ||
06951c2ee72df2 Thomas Hellström    2023-12-09  1244         (!rebind && 
xe_vm_has_scratch(vm) && xe_vm_in_preempt_fence_mode(vm))) {
5387e865d90e92 Matthew Brost       2023-01-27  1245             ifence = 
kzalloc(sizeof(*ifence), GFP_KERNEL);
5387e865d90e92 Matthew Brost       2023-01-27  1246             if (!ifence)
5387e865d90e92 Matthew Brost       2023-01-27  1247                     return 
ERR_PTR(-ENOMEM);
5387e865d90e92 Matthew Brost       2023-01-27  1248     }
5387e865d90e92 Matthew Brost       2023-01-27  1249  
fd84041d094ce8 Matthew Brost       2023-07-19  1250     rfence = 
kzalloc(sizeof(*rfence), GFP_KERNEL);
fd84041d094ce8 Matthew Brost       2023-07-19  1251     if (!rfence) {
fd84041d094ce8 Matthew Brost       2023-07-19  1252             kfree(ifence);
fd84041d094ce8 Matthew Brost       2023-07-19  1253             return 
ERR_PTR(-ENOMEM);
fd84041d094ce8 Matthew Brost       2023-07-19  1254     }
fd84041d094ce8 Matthew Brost       2023-07-19  1255  
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1256     /*
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1257      * BO which has 
XE_BO_SCANOUT_BIT set and was pinned as framebuffer
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1258      * before with 
different PAT index cannot be bound with different PAT
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1259      * index. This is to 
prevent switching CCS on/off from framebuffers
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1260      * on the fly.
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1261      */
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 @1262     if (bo) {
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1263             if (bo->flags & 
XE_BO_SCANOUT_BIT && bo->pat_index_scanout &&
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1264                 
bo->pat_index_scanout != vma->pat_index)
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26 @1265                     return 
ERR_PTR(-EINVAL);

Smatch wants a kfree(ifence) and kfree(rfence) before the return.

6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1266  
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1267             bo->pat_index = 
vma->pat_index;
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1268     }
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1269  
08dea7674533cf Matt Roper          2023-06-01  1270     fence = 
xe_migrate_update_pgtables(tile->migrate,
6fb884b76bd164 Juha-Pekka Heikkila 2024-01-26  1271                             
           vm, bo, q,
dd08ebf6c3525a Matthew Brost       2023-03-30  1272                             
           entries, num_entries,
dd08ebf6c3525a Matthew Brost       2023-03-30  1273                             
           syncs, num_syncs,
dd08ebf6c3525a Matthew Brost       2023-03-30  1274                             
           &bind_pt_update.base);

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to