Replace usages of kfree() with kvfree() for pointers which were allocated using kvmalloc(), as required by the kernel memory management API.
Use sizeof() on the type that a pointer references instead of the pointer itself. In this case, scheds and *scheds both happen to be pointers, so sizeof() will expand to the same value in either case, but using *scheds is more technically correct since scheds is an array of drm_gpu_scheduler *. Reported-by: kernel test robot <l...@intel.com> Reported-by: Julia Lawall <julia.law...@inria.fr> Closes: https://lore.kernel.org/r/202508120730.plbjlkbi-...@intel.com/ Signed-off-by: Brigham Campbell <m...@brighamcampbell.com> --- drivers/accel/rocket/rocket_job.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/accel/rocket/rocket_job.c b/drivers/accel/rocket/rocket_job.c index 5d4afd69230623215e3105da7153d2d010636d52..f6fe1a6d9264b7508a3adc03248e5a704c68c4f0 100644 --- a/drivers/accel/rocket/rocket_job.c +++ b/drivers/accel/rocket/rocket_job.c @@ -222,7 +222,7 @@ static int rocket_job_push(struct rocket_job *job) err_unlock: drm_gem_unlock_reservations(bos, job->in_bo_count + job->out_bo_count, &acquire_ctx); err: - kfree(bos); + kvfree(bos); return ret; } @@ -496,7 +496,8 @@ void rocket_job_fini(struct rocket_core *core) int rocket_job_open(struct rocket_file_priv *rocket_priv) { struct rocket_device *rdev = rocket_priv->rdev; - struct drm_gpu_scheduler **scheds = kmalloc_array(rdev->num_cores, sizeof(scheds), + struct drm_gpu_scheduler **scheds = kmalloc_array(rdev->num_cores, + sizeof(*scheds), GFP_KERNEL); unsigned int core; int ret; @@ -630,7 +631,7 @@ int rocket_ioctl_submit(struct drm_device *dev, void *data, struct drm_file *fil rocket_ioctl_submit_job(dev, file, &jobs[i]); exit: - kfree(jobs); + kvfree(jobs); return ret; } --- base-commit: a3daf184bd85d7c08ce948a79bb0e4cac2203923 change-id: 20250813-rocket-free-fix-3ca6a759a290 Thanks! Brigham Campbell <m...@brighamcampbell.com>