* [PATCH v2 0/3] drm/v3d: Miscellaneous fixes
@ 2026-06-18 15:03 Maíra Canal
2026-06-18 15:03 ` [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them Maíra Canal
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Maíra Canal @ 2026-06-18 15:03 UTC (permalink / raw)
To: Melissa Wen, Iago Toral Quiroga, David Airlie, Simona Vetter
Cc: kernel-dev, dri-devel, Maíra Canal
Being brief, this small series collects a correctness fix (#1) reported by
Sashiko, a error-path fix (#2) reported by Sashiko, and a cleanup (#3)
found while reading the code.
The first patch is the only notable one: a v3d submission expands into a
chain of jobs (e.g. BIN + RENDER + CACHE CLEAN), but the BO list was only
ever attached to the last job. Since implicit synchronization is added
per-job and gated on job->bo_count, every job before the last one silently
skipped implicit dependencies. In practice the RENDER job could read a
buffer object while another context was still writing it. It's fixed by
looking up the BOs onto every job that references them.
Best regards,
- Maíra
To: Melissa Wen <mwen@igalia.com>
To: Iago Toral Quiroga <itoral@igalia.com>
To: David Airlie <airlied@gmail.com>
To: Simona Vetter <simona@ffwll.ch>
Cc: kernel-dev@igalia.com
Cc: dri-devel@lists.freedesktop.org
v1 -> v2: https://lore.kernel.org/r/20260610-v3d-cpu-job-fixes-v1-0-0d9c88989edc@igalia.com
- [1/3] Don't attach implicit dependencies to BIN jobs (Iago Toral)
- [2/3, 3/3] Add Iago's R-b (Iago Toral)
---
Maíra Canal (3):
drm/v3d: Associate BOs with every job that accesses them
drm/v3d: Reject invalid indirect BO handle in indirect CSD setup
drm/v3d: Use write_to_buffer() helper in performance query copy
drivers/gpu/drm/v3d/v3d_sched.c | 11 ++---------
drivers/gpu/drm/v3d/v3d_submit.c | 38 +++++++++++++++++++-------------------
2 files changed, 21 insertions(+), 28 deletions(-)
---
base-commit: 98b46e693b912eef0e6d497327489113845cbd15
change-id: 20260609-v3d-cpu-job-fixes-fbe2051bee3a
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them
2026-06-18 15:03 [PATCH v2 0/3] drm/v3d: Miscellaneous fixes Maíra Canal
@ 2026-06-18 15:03 ` Maíra Canal
2026-06-23 20:21 ` sashiko-bot
2026-06-18 15:03 ` [PATCH v2 2/3] drm/v3d: Reject invalid indirect BO handle in indirect CSD setup Maíra Canal
2026-06-18 15:03 ` [PATCH v2 3/3] drm/v3d: Use write_to_buffer() helper in performance query copy Maíra Canal
2 siblings, 1 reply; 7+ messages in thread
From: Maíra Canal @ 2026-06-18 15:03 UTC (permalink / raw)
To: Melissa Wen, Iago Toral Quiroga, David Airlie, Simona Vetter
Cc: kernel-dev, dri-devel, Maíra Canal
A submission can expand into a chain of jobs (e.g. bin + render + cache
clean), but v3d_lookup_bos() only looked up the user's BO list onto the
*last* job of the submission. Every earlier job was left with
bo_count == 0 and an empty bo[] array.
As a consequence, when implicit synchronization happens in
v3d_submit_lock_reservations(), earlier jobs get no implicit
dependencies at all, as the loop is gated on job->bo_count and earlier
jobs don't have any BO attached to them. With that, the RENDER job could
therefore be dispatched to the hardware and read a BO while another context
was still writing it, leading to data corruption.
Fix this by calling v3d_lookup_bos() for each job that references the
submission's BOs, so every job carries its own bo[]/bo_count and picks
up the correct implicit dependencies during reservation locking.
Fixes: dffa9b7a78c4 ("drm/v3d: Add missing implicit synchronization.")
Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
drivers/gpu/drm/v3d/v3d_submit.c | 36 +++++++++++++++++-------------------
1 file changed, 17 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
index ee2ac2540ed5..18467e448c91 100644
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
@@ -68,7 +68,6 @@ v3d_submit_unlock_reservations(struct v3d_submit *submit)
/**
* v3d_lookup_bos() - Sets up job->bo[] with the GEM objects
* referenced by the job.
- * @dev: DRM device
* @file_priv: DRM file for this fd
* @job: V3D job being set up
* @bo_handles: GEM handles
@@ -82,23 +81,19 @@ v3d_submit_unlock_reservations(struct v3d_submit *submit)
* failure, because that will happen at `v3d_job_free()`.
*/
static int
-v3d_lookup_bos(struct v3d_submit *submit, u64 bo_handles, u32 bo_count)
+v3d_lookup_bos(struct drm_file *file_priv, struct v3d_job *job,
+ u64 bo_handles, u32 bo_count)
{
- struct v3d_job *last_job = submit->jobs[submit->job_count - 1];
-
- last_job->bo_count = bo_count;
-
- if (!last_job->bo_count) {
- /* See comment on bo_index for why we have to check
- * this.
- */
- drm_warn(&submit->v3d->drm, "Rendering requires BOs\n");
+ if (!bo_count) {
+ drm_warn(&job->v3d->drm, "Rendering requires BOs\n");
return -EINVAL;
}
- return drm_gem_objects_lookup(submit->file_priv,
+ job->bo_count = bo_count;
+
+ return drm_gem_objects_lookup(file_priv,
(void __user *)(uintptr_t)bo_handles,
- last_job->bo_count, &last_job->bo);
+ job->bo_count, &job->bo);
}
static void
@@ -446,7 +441,8 @@ v3d_setup_csd_jobs_and_bos(struct v3d_submit *submit,
if (IS_ERR(clean_job))
return PTR_ERR(clean_job);
- return v3d_lookup_bos(submit, args->bo_handles, args->bo_handle_count);
+ return v3d_lookup_bos(submit->file_priv, &job->base,
+ args->bo_handles, args->bo_handle_count);
}
static void
@@ -1085,6 +1081,11 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
if (ret)
goto fail;
+ ret = v3d_lookup_bos(submit.file_priv, &render->base,
+ args->bo_handles, args->bo_handle_count);
+ if (ret)
+ goto fail;
+
if (args->flags & DRM_V3D_SUBMIT_CL_FLUSH_CACHE) {
clean_job = v3d_submit_add_job(&submit, V3D_CACHE_CLEAN);
if (IS_ERR(clean_job)) {
@@ -1097,10 +1098,6 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
if (ret)
goto fail;
- ret = v3d_lookup_bos(&submit, args->bo_handles, args->bo_handle_count);
- if (ret)
- goto fail;
-
ret = v3d_submit_lock_reservations(&submit);
if (ret)
goto fail;
@@ -1359,7 +1356,8 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
* the CSD and clean jobs in the case of indirect CSD job.
*/
if (args->bo_handle_count) {
- ret = v3d_lookup_bos(&submit, args->bo_handles, args->bo_handle_count);
+ ret = v3d_lookup_bos(submit.file_priv, &cpu_job->base,
+ args->bo_handles, args->bo_handle_count);
if (ret)
goto fail;
}
--
2.54.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] drm/v3d: Reject invalid indirect BO handle in indirect CSD setup
2026-06-18 15:03 [PATCH v2 0/3] drm/v3d: Miscellaneous fixes Maíra Canal
2026-06-18 15:03 ` [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them Maíra Canal
@ 2026-06-18 15:03 ` Maíra Canal
2026-06-23 20:37 ` sashiko-bot
2026-06-18 15:03 ` [PATCH v2 3/3] drm/v3d: Use write_to_buffer() helper in performance query copy Maíra Canal
2 siblings, 1 reply; 7+ messages in thread
From: Maíra Canal @ 2026-06-18 15:03 UTC (permalink / raw)
To: Melissa Wen, Iago Toral Quiroga, David Airlie, Simona Vetter
Cc: kernel-dev, dri-devel, Maíra Canal
v3d_get_cpu_indirect_csd_params() looks up the indirect buffer object
from a userspace-supplied handle but never checks the result. A bogus
or stale handle makes drm_gem_object_lookup() return NULL, which is
then stored in info->indirect and only dereferenced later when the
indirect CSD job runs, turning a userspace mistake into a NULL pointer
dereference in the kernel.
Bail out with -ENOENT as soon as the lookup fails, so the bad handle is
rejected at submission time.
Fixes: 18b8413b25b7 ("drm/v3d: Create a CPU job extension for a indirect CSD job")
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
drivers/gpu/drm/v3d/v3d_submit.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
index 18467e448c91..3a93dbfe71a2 100644
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
@@ -601,6 +601,8 @@ v3d_get_cpu_indirect_csd_params(struct drm_file *file_priv,
sizeof(indirect_csd.wg_uniform_offsets));
info->indirect = drm_gem_object_lookup(file_priv, indirect_csd.indirect);
+ if (!info->indirect)
+ return -ENOENT;
return 0;
}
--
2.54.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] drm/v3d: Use write_to_buffer() helper in performance query copy
2026-06-18 15:03 [PATCH v2 0/3] drm/v3d: Miscellaneous fixes Maíra Canal
2026-06-18 15:03 ` [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them Maíra Canal
2026-06-18 15:03 ` [PATCH v2 2/3] drm/v3d: Reject invalid indirect BO handle in indirect CSD setup Maíra Canal
@ 2026-06-18 15:03 ` Maíra Canal
2026-06-23 20:46 ` sashiko-bot
2 siblings, 1 reply; 7+ messages in thread
From: Maíra Canal @ 2026-06-18 15:03 UTC (permalink / raw)
To: Melissa Wen, Iago Toral Quiroga, David Airlie, Simona Vetter
Cc: kernel-dev, dri-devel, Maíra Canal
The copy of performance query results to the output buffer open-codes
the 32-bit/64-bit selection with two nearly identical loops. As the
write_to_buffer() helper already encapsulates the do_64bit decision,
use it instead of open-coding it.
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
drivers/gpu/drm/v3d/v3d_sched.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
index 53deae1a2eda..17751c8d7f16 100644
--- a/drivers/gpu/drm/v3d/v3d_sched.c
+++ b/drivers/gpu/drm/v3d/v3d_sched.c
@@ -594,15 +594,8 @@ v3d_write_performance_query_result(struct v3d_cpu_job *job, void *data,
v3d_perfmon_stop(v3d, perfmon, true);
- if (job->copy.do_64bit) {
- for (j = 0; j < perfmon->ncounters; j++)
- write_to_buffer_64(data, offset + j,
- perfmon->values[j]);
- } else {
- for (j = 0; j < perfmon->ncounters; j++)
- write_to_buffer_32(data, offset + j,
- perfmon->values[j]);
- }
+ for (j = 0; j < perfmon->ncounters; j++)
+ write_to_buffer(data, offset + j, job->copy.do_64bit, perfmon->values[j]);
v3d_perfmon_put(perfmon);
}
--
2.54.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them
2026-06-18 15:03 ` [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them Maíra Canal
@ 2026-06-23 20:21 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-06-23 20:21 UTC (permalink / raw)
To: Maíra Canal; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Incomplete fix: `bin` job lacks implicit synchronization dependencies due to missing BO attachment.
--
commit 847118b5a0479c86d14ca61360fb6fc43c737179
Author: Maíra Canal <mcanal@igalia.com>
drm/v3d: Associate BOs with every job that accesses them
This patch modifies the V3D driver to attach buffer objects (BOs) to every
job in a submission chain rather than just the last job. This is intended to
ensure all jobs receive the proper implicit synchronization dependencies
during reservation locking.
> diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
> index ee2ac2540ed50..18467e448c91f 100644
> --- a/drivers/gpu/drm/v3d/v3d_submit.c
> +++ b/drivers/gpu/drm/v3d/v3d_submit.c
[ ... ]
> @@ -1085,6 +1081,11 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
> if (ret)
> goto fail;
>
> + ret = v3d_lookup_bos(submit.file_priv, &render->base,
> + args->bo_handles, args->bo_handle_count);
> + if (ret)
> + goto fail;
> +
[Severity: High]
This is a pre-existing issue, but does the bin job also need to have BOs
attached to pick up the correct implicit dependencies?
The commit message indicates that v3d_lookup_bos() should be called for
each job that references the submission's BOs. However, it looks like
v3d_lookup_bos() is only being called for the render job here.
If a userspace client submits a binner command list, the bin job is created
earlier in v3d_submit_cl_ioctl() via v3d_submit_add_job(). Because
v3d_lookup_bos() is not called for it, bin->base.bo_count remains 0.
Could this cause the hardware to execute the bin job without implicit
synchronization, potentially leading to corrupted data if another context
is still writing to the BOs?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260618-v3d-cpu-job-fixes-v2-0-fec132484fc4@igalia.com?part=1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] drm/v3d: Reject invalid indirect BO handle in indirect CSD setup
2026-06-18 15:03 ` [PATCH v2 2/3] drm/v3d: Reject invalid indirect BO handle in indirect CSD setup Maíra Canal
@ 2026-06-23 20:37 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-06-23 20:37 UTC (permalink / raw)
To: Maíra Canal; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
Pre-existing issues:
- [Critical] Double-free of `query_info->queries` array during CPU job extension parsing failure.
- [Critical] Arbitrary kernel memory read and write primitive due to missing bounds checks on CPU job offsets.
- [High] Race condition and missing implicit synchronization due to unlocked `indirect_csd.indirect` GEM object.
- [High] Kernel crash (NULL pointer dereference) in `v3d_get_bo_vaddr()` when mapping imported PRIME buffers.
--
commit 4335f305c6546e229d21733e148fae0311963d61
Author: Maíra Canal <mcanal@igalia.com>
drm/v3d: Reject invalid indirect BO handle in indirect CSD setup
v3d_get_cpu_indirect_csd_params() looks up the indirect buffer object
from a userspace-supplied handle but never checks the result. A bogus
or stale handle makes drm_gem_object_lookup() return NULL, which is
then stored in info->indirect and only dereferenced later when the
indirect CSD job runs, turning a userspace mistake into a NULL pointer
dereference in the kernel.
> diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
> index 18467e448c91f..3a93dbfe71a2c 100644
> --- a/drivers/gpu/drm/v3d/v3d_submit.c
> +++ b/drivers/gpu/drm/v3d/v3d_submit.c
> @@ -601,6 +601,8 @@ v3d_get_cpu_indirect_csd_params(struct drm_file *file_priv,
> sizeof(indirect_csd.wg_uniform_offsets));
>
> info->indirect = drm_gem_object_lookup(file_priv, indirect_csd.indirect);
[Severity: High]
This is a pre-existing issue, but by not adding this buffer to the tracked bo
array, are we skipping implicit synchronization?
The indirect_csd.indirect GEM object is looked up and stored here, but it
doesn't appear to be appended to the job->base.bo array. As a result, does
v3d_submit_lock_reservations() bypass dma_resv locking and
drm_sched_job_add_implicit_dependencies() completely for this buffer?
When the CPU job later executes v3d_rewrite_csd_job_wg_counts_from_indirect():
drivers/gpu/drm/v3d/v3d_sched.c:v3d_rewrite_csd_job_wg_counts_from_indirect() {
...
((uint32_t *)indirect->vaddr)[uniform_idx] = wg_counts[i];
...
}
Will this modify the buffer concurrently without holding locks or waiting for
prior GPU operations? Note that the patch "drm/v3d: Associate BOs with every
job that accesses them" doesn't seem to cover indirect_csd.indirect.
[Severity: High]
This is a pre-existing issue, but does mapping this buffer safely handle
imported PRIME buffers?
If info->indirect is an imported PRIME buffer,
drm_gem_shmem_prime_import_sg_table() only populates the scatter-gather table
(shmem->sgt) and leaves shmem->pages as NULL.
When vmap() is eventually called on it:
drivers/gpu/drm/v3d/v3d_bo.c:v3d_get_bo_vaddr() {
...
bo->vaddr = vmap(obj->pages, obj->base.size >> PAGE_SHIFT, VM_MAP,
pgprot_writecombine(PAGE_KERNEL));
...
}
Could this pass a NULL page array to vmap() and trigger a kernel crash?
[Severity: Critical]
This is a pre-existing issue, but are the offsets used for this indirect buffer
checked against the bounds of the allocation?
In v3d_rewrite_csd_job_wg_counts_from_indirect(), the driver reads and writes
using the user-controlled offsets from indirect_csd.offset and
indirect_csd.wg_uniform_offsets:
drivers/gpu/drm/v3d/v3d_sched.c:v3d_rewrite_csd_job_wg_counts_from_indirect() {
...
wg_counts = (uint32_t *)(bo->vaddr + indirect_csd->offset);
...
((uint32_t *)indirect->vaddr)[uniform_idx] = wg_counts[i];
...
}
Are these offsets ever bounds-checked against the size of the respective
vmapped buffer objects? Could an unprivileged user supply arbitrary 32-bit
offsets to achieve out-of-bounds reads and writes relative to the vmap
allocations? (Similar missing bounds checks appear to exist in
v3d_timestamp_query() and v3d_reset_timestamp_queries()).
> + if (!info->indirect)
> + return -ENOENT;
[Severity: Critical]
This isn't a bug introduced by this patch, but could returning an error here
trigger a double-free if a timestamp query was parsed earlier in the same job?
If a failure occurs here (or in other CPU job parsing functions) and returns
an error to v3d_submit_cpu_ioctl(), it seems job cleanup is triggered via
v3d_submit_cleanup_jobs(), which unconditionally calls v3d_cpu_job_free().
If an error path already called v3d_timestamp_query_info_free() to clean up
the partially initialized array:
drivers/gpu/drm/v3d/v3d_submit.c:v3d_get_cpu_timestamp_query_params() {
...
error:
v3d_timestamp_query_info_free(&job->timestamp_query, i);
...
}
This executes kvfree(query_info->queries) but leaves the pointer dangling.
During the subsequent teardown:
drivers/gpu/drm/v3d/v3d_submit.c:v3d_cpu_job_free() {
...
v3d_timestamp_query_info_free(&job->timestamp_query,
job->timestamp_query.count);
...
}
Will this call kvfree() again on the same dangling pointer, resulting in a
double-free?
>
> return 0;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260618-v3d-cpu-job-fixes-v2-0-fec132484fc4@igalia.com?part=2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] drm/v3d: Use write_to_buffer() helper in performance query copy
2026-06-18 15:03 ` [PATCH v2 3/3] drm/v3d: Use write_to_buffer() helper in performance query copy Maíra Canal
@ 2026-06-23 20:46 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-06-23 20:46 UTC (permalink / raw)
To: Maíra Canal; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Pre-existing issues:
- [Critical] Missing bounds validation on user-controlled offsets and strides leads to arbitrary out-of-bounds kernel memory accesses.
- [Medium] Lockless read of 64-bit performance monitor counters can lead to torn reads and data races.
--
commit 142086c1a0afebcf8603865523c8298d5a01c455
Author: Maíra Canal <mcanal@igalia.com>
drm/v3d: Use write_to_buffer() helper in performance query copy
The copy of performance query results to the output buffer open-codes
the 32-bit/64-bit selection with two nearly identical loops. As the
write_to_buffer() helper already encapsulates the do_64bit decision,
use it instead of open-coding it.
> diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c
> index 53deae1a2eda9..17751c8d7f163 100644
> --- a/drivers/gpu/drm/v3d/v3d_sched.c
> +++ b/drivers/gpu/drm/v3d/v3d_sched.c
> @@ -594,15 +594,8 @@ v3d_write_performance_query_result(struct v3d_cpu_job *job, void *data,
>
> v3d_perfmon_stop(v3d, perfmon, true);
>
> - if (job->copy.do_64bit) {
> - for (j = 0; j < perfmon->ncounters; j++)
> - write_to_buffer_64(data, offset + j,
> - perfmon->values[j]);
> - } else {
> - for (j = 0; j < perfmon->ncounters; j++)
> - write_to_buffer_32(data, offset + j,
> - perfmon->values[j]);
> - }
> + for (j = 0; j < perfmon->ncounters; j++)
> + write_to_buffer(data, offset + j, job->copy.do_64bit, perfmon->values[j]);
[Severity: Medium]
This is a pre-existing issue, but can this lockless read of perfmon->values[j]
cause a torn read or data race on 32-bit architectures?
If a user submits a GPU job and a CPU copy job using the same perfmon ID
concurrently, the GPU job's completion might invoke v3d_perfmon_stop(),
which updates the values array under perfmon->lock, while the CPU job
concurrently reads it locklessly here.
>
> v3d_perfmon_put(perfmon);
> }
[Severity: Critical]
This is a pre-existing issue, but does this code write outside the bounds
of bo->vaddr?
In v3d_submit.c:v3d_get_cpu_copy_performance_query_params(), the
user-provided offset and stride are accepted and stored without
validating them against the mapped BO size:
job->copy.offset = copy.offset;
job->copy.stride = copy.stride;
Later, in v3d_sched.c:v3d_copy_performance_query(), the unvalidated
offset is added to the vmap kernel virtual address:
data = ((u8 *)bo->vaddr) + copy->offset;
And the destination pointer is incremented by an unvalidated stride for
subsequent writes:
data += copy->stride;
Can this lead to out-of-bounds kernel memory accesses if an incorrect
offset or stride is supplied via the V3D_SUBMIT_CPU ioctl?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260618-v3d-cpu-job-fixes-v2-0-fec132484fc4@igalia.com?part=3
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-06-23 20:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-18 15:03 [PATCH v2 0/3] drm/v3d: Miscellaneous fixes Maíra Canal
2026-06-18 15:03 ` [PATCH v2 1/3] drm/v3d: Associate BOs with every job that accesses them Maíra Canal
2026-06-23 20:21 ` sashiko-bot
2026-06-18 15:03 ` [PATCH v2 2/3] drm/v3d: Reject invalid indirect BO handle in indirect CSD setup Maíra Canal
2026-06-23 20:37 ` sashiko-bot
2026-06-18 15:03 ` [PATCH v2 3/3] drm/v3d: Use write_to_buffer() helper in performance query copy Maíra Canal
2026-06-23 20:46 ` sashiko-bot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.