diff options
| author | Christophe JAILLET <christophe.jaillet@wanadoo.fr> | 2024-05-25 19:00:31 +0300 |
|---|---|---|
| committer | Christian König <christian.koenig@amd.com> | 2024-05-27 10:50:05 +0300 |
| commit | 983095eaf6c161ef73d96152bfc1a99ca051cd57 (patch) | |
| tree | 8d1cf11267c0ba44fff5a204b883f3744c2dfcfa /include/linux | |
| parent | 3d9d313d518c5bc9e5ab6aeab86c9fa4bece095c (diff) | |
| download | linux-983095eaf6c161ef73d96152bfc1a99ca051cd57.tar.xz | |
dma-buf/fence-array: Add flex array to struct dma_fence_array
This is an effort to get rid of all multiplications from allocation
functions in order to prevent integer overflows [1][2].
The "struct dma_fence_array" can be refactored to add a flex array in order
to have the "callback structures allocated behind the array" be more
explicit.
Do so:
- makes the code more readable and safer.
- allows using __counted_by() for additional checks
- avoids some pointer arithmetic in dma_fence_array_enable_signaling()
Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments [1]
Link: https://github.com/KSPP/linux/issues/160 [2]
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/8b4e556e07b5dd78bb8a39b67ea0a43b199083c8.1716652811.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Christian König <christian.koenig@amd.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/dma-fence-array.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h index ec7f25def392..29c5650c1038 100644 --- a/include/linux/dma-fence-array.h +++ b/include/linux/dma-fence-array.h @@ -33,6 +33,7 @@ struct dma_fence_array_cb { * @num_pending: fences in the array still pending * @fences: array of the fences * @work: internal irq_work function + * @callbacks: array of callback helpers */ struct dma_fence_array { struct dma_fence base; @@ -43,6 +44,8 @@ struct dma_fence_array { struct dma_fence **fences; struct irq_work work; + + struct dma_fence_array_cb callbacks[] __counted_by(num_fences); }; /** |
