drivers/accel/rocket/rocket_job.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
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 <lkp@intel.com>
Reported-by: Julia Lawall <julia.lawall@inria.fr>
Closes: https://lore.kernel.org/r/202508120730.PLbjlKbI-lkp@intel.com/
Signed-off-by: Brigham Campbell <me@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 <me@brighamcampbell.com>
On Wed, Aug 13, 2025 at 6:02 PM Brigham Campbell <me@brighamcampbell.com> wrote: > > 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 <lkp@intel.com> > Reported-by: Julia Lawall <julia.lawall@inria.fr> > Closes: https://lore.kernel.org/r/202508120730.PLbjlKbI-lkp@intel.com/ > Signed-off-by: Brigham Campbell <me@brighamcampbell.com> Thanks, Brigham, I just went ahead and applied it to drm-misc-next. I also think two commits wouldn't have been worth it. Regards, Tomeu > --- > 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 <me@brighamcampbell.com> >
> Replace usages of kfree() with kvfree() for pointers which were > allocated using kvmalloc(), as required by the kernel memory management > API. How do you think about to add any tags (like “Fixes” and “Cc”) accordingly? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.17-rc1#n145 > Use sizeof() on the type that a pointer references instead of … Would it be helpful to offer desirable changes by separate update steps? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.17-rc1#n81 Regards, Markus
On Wed Aug 13, 2025 at 11:56 AM MDT, Markus Elfring wrote: >> Replace usages of kfree() with kvfree() for pointers which were >> allocated using kvmalloc(), as required by the kernel memory management >> API. > > How do you think about to add any tags (like “Fixes” and “Cc”) accordingly? > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.17-rc1#n145 All issues addressed by this patch were introduced by the following commit: Fixes: 0810d5ad88a1 ("accel/rocket: Add job submission IOCTL") >> Use sizeof() on the type that a pointer references instead of … > > Would it be helpful to offer desirable changes by separate update steps? > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.17-rc1#n81 Tomeu? Oded? Would either of you prefer that I split this patch into two patches (one to fix kfree()->kvfree() and another to fix sizeof())? I had considered splitting it into two patches, but the changes were so minor that I figured it wasn't worth it. Please let me know if you prefer separate patches and I'll gladly prep another revision. Thanks, Brigham
> I had considered splitting it into two patches, but the changes were so > minor that I figured it wasn't worth it. Please let me know if you > prefer separate patches and I'll gladly prep another revision. You can distinguish mentioned change possibilities better also according to their severity, can't you? Regards, Markus
© 2016 - 2025 Red Hat, Inc.