drivers/gpu/drm/i915/gt/intel_workarounds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
In preparation for making the kmalloc family of allocators type aware,
we need to make sure that the returned type from the allocation matches
the type of the variable being assigned. (Before, the allocator would
always return "void *", which can be implicitly cast to any pointer type.)
The assigned type is "struct i915_wa *". The returned type, while
technically matching, will be const qualified. As there is no general
way to remove const qualifiers, adjust the allocation type to match
the assignment.
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Tvrtko Ursulin <tursulin@ursulin.net>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Gustavo Sousa <gustavo.sousa@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <intel-gfx@lists.freedesktop.org>
Cc: <dri-devel@lists.freedesktop.org>
---
drivers/gpu/drm/i915/gt/intel_workarounds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index 116683ebe074..b37e400f74e5 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -156,7 +156,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
if (IS_ALIGNED(wal->count, grow)) { /* Either uninitialized or full. */
struct i915_wa *list;
- list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
+ list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*list),
GFP_KERNEL);
if (!list) {
drm_err(&i915->drm, "No space for workaround init!\n");
--
2.34.1
Hi Kees, On Fri, Apr 25, 2025 at 11:13:58PM -0700, Kees Cook wrote: > In preparation for making the kmalloc family of allocators type aware, > we need to make sure that the returned type from the allocation matches > the type of the variable being assigned. (Before, the allocator would > always return "void *", which can be implicitly cast to any pointer type.) > > The assigned type is "struct i915_wa *". The returned type, while > technically matching, will be const qualified. As there is no general > way to remove const qualifiers, adjust the allocation type to match > the assignment. > > Signed-off-by: Kees Cook <kees@kernel.org> merged to drm-intel-gt-next. Thanks, Andi
On 26/04/2025 07:13, Kees Cook wrote:
> In preparation for making the kmalloc family of allocators type aware,
> we need to make sure that the returned type from the allocation matches
> the type of the variable being assigned. (Before, the allocator would
> always return "void *", which can be implicitly cast to any pointer type.)
>
> The assigned type is "struct i915_wa *". The returned type, while
> technically matching, will be const qualified. As there is no general
> way to remove const qualifiers, adjust the allocation type to match
> the assignment.
>
> Signed-off-by: Kees Cook <kees@kernel.org>
> ---
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Tvrtko Ursulin <tursulin@ursulin.net>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Gustavo Sousa <gustavo.sousa@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: <intel-gfx@lists.freedesktop.org>
> Cc: <dri-devel@lists.freedesktop.org>
> ---
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 116683ebe074..b37e400f74e5 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -156,7 +156,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> if (IS_ALIGNED(wal->count, grow)) { /* Either uninitialized or full. */
> struct i915_wa *list;
>
> - list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> + list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*list),
Will the sizeof stay, and if so, how will kmalloc be able to distinguish
the type? Or we expect one more churn on the same line?
Regards,
Tvrtko
> GFP_KERNEL);
> if (!list) {
> drm_err(&i915->drm, "No space for workaround init!\n");
On Mon, Apr 28, 2025 at 01:09:46PM +0100, Tvrtko Ursulin wrote:
>
> On 26/04/2025 07:13, Kees Cook wrote:
> > In preparation for making the kmalloc family of allocators type aware,
> > we need to make sure that the returned type from the allocation matches
> > the type of the variable being assigned. (Before, the allocator would
> > always return "void *", which can be implicitly cast to any pointer type.)
> >
> > The assigned type is "struct i915_wa *". The returned type, while
> > technically matching, will be const qualified. As there is no general
> > way to remove const qualifiers, adjust the allocation type to match
> > the assignment.
> >
> > Signed-off-by: Kees Cook <kees@kernel.org>
> > ---
> > Cc: Jani Nikula <jani.nikula@linux.intel.com>
> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Cc: Tvrtko Ursulin <tursulin@ursulin.net>
> > Cc: David Airlie <airlied@gmail.com>
> > Cc: Simona Vetter <simona@ffwll.ch>
> > Cc: Matt Roper <matthew.d.roper@intel.com>
> > Cc: Gustavo Sousa <gustavo.sousa@intel.com>
> > Cc: Andi Shyti <andi.shyti@linux.intel.com>
> > Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> > Cc: <intel-gfx@lists.freedesktop.org>
> > Cc: <dri-devel@lists.freedesktop.org>
> > ---
> > drivers/gpu/drm/i915/gt/intel_workarounds.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > index 116683ebe074..b37e400f74e5 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > @@ -156,7 +156,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> > if (IS_ALIGNED(wal->count, grow)) { /* Either uninitialized or full. */
> > struct i915_wa *list;
> > - list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> > + list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*list),
>
> Will the sizeof stay, and if so, how will kmalloc be able to distinguish the
> type? Or we expect one more churn on the same line?
It is expected that when (if?) this happens, there will be a pre-rc1
treewide change to convert kmalloc to kmalloc_obj[1]. (So, yes, this
call would change, but it'll happen separately.)
-Kees
[1] Here's what v4 looked like:
https://lore.kernel.org/lkml/20250315025852.it.568-kees@kernel.org/
v5 is still under development, but will look like this:
https://web.git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/log/?h=dev/v6.15-rc3%2b/alloc_obj/v5
--
Kees Cook
On Fri, 25 Apr 2025, Kees Cook <kees@kernel.org> wrote:
> In preparation for making the kmalloc family of allocators type aware,
> we need to make sure that the returned type from the allocation matches
> the type of the variable being assigned. (Before, the allocator would
> always return "void *", which can be implicitly cast to any pointer type.)
>
> The assigned type is "struct i915_wa *". The returned type, while
> technically matching, will be const qualified. As there is no general
> way to remove const qualifiers, adjust the allocation type to match
> the assignment.
>
> Signed-off-by: Kees Cook <kees@kernel.org>
Acked-by: Jani Nikula <jani.nikula@intel.com>
for merging via whichever tree you find best; please let us know if you
want us to pick this up via drm-intel.
> ---
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Tvrtko Ursulin <tursulin@ursulin.net>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Gustavo Sousa <gustavo.sousa@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: <intel-gfx@lists.freedesktop.org>
> Cc: <dri-devel@lists.freedesktop.org>
> ---
> drivers/gpu/drm/i915/gt/intel_workarounds.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> index 116683ebe074..b37e400f74e5 100644
> --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> @@ -156,7 +156,7 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
> if (IS_ALIGNED(wal->count, grow)) { /* Either uninitialized or full. */
> struct i915_wa *list;
>
> - list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*wa),
> + list = kmalloc_array(ALIGN(wal->count + 1, grow), sizeof(*list),
> GFP_KERNEL);
> if (!list) {
> drm_err(&i915->drm, "No space for workaround init!\n");
--
Jani Nikula, Intel
On Mon, Apr 28, 2025 at 02:40:16PM +0300, Jani Nikula wrote: > On Fri, 25 Apr 2025, Kees Cook <kees@kernel.org> wrote: > > In preparation for making the kmalloc family of allocators type aware, > > we need to make sure that the returned type from the allocation matches > > the type of the variable being assigned. (Before, the allocator would > > always return "void *", which can be implicitly cast to any pointer type.) > > > > The assigned type is "struct i915_wa *". The returned type, while > > technically matching, will be const qualified. As there is no general > > way to remove const qualifiers, adjust the allocation type to match > > the assignment. > > > > Signed-off-by: Kees Cook <kees@kernel.org> > > Acked-by: Jani Nikula <jani.nikula@intel.com> > > for merging via whichever tree you find best; please let us know if you > want us to pick this up via drm-intel. I was figuring each subsystem would want these individually, so please take this via drm-intel. (Or I can take it if you'd rather not.) Thanks! -Kees -- Kees Cook
Hi, On Wed, Apr 30, 2025 at 01:56:51PM -0700, Kees Cook wrote: > On Mon, Apr 28, 2025 at 02:40:16PM +0300, Jani Nikula wrote: > > On Fri, 25 Apr 2025, Kees Cook <kees@kernel.org> wrote: > > > In preparation for making the kmalloc family of allocators type aware, > > > we need to make sure that the returned type from the allocation matches > > > the type of the variable being assigned. (Before, the allocator would > > > always return "void *", which can be implicitly cast to any pointer type.) > > > > > > The assigned type is "struct i915_wa *". The returned type, while > > > technically matching, will be const qualified. As there is no general > > > way to remove const qualifiers, adjust the allocation type to match > > > the assignment. > > > > > > Signed-off-by: Kees Cook <kees@kernel.org> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> ... > > for merging via whichever tree you find best; please let us know if you > > want us to pick this up via drm-intel. > > I was figuring each subsystem would want these individually, so please > take this via drm-intel. (Or I can take it if you'd rather not.) Because I don't see this patch applied anywhere, and, given the file changed, I am merging it in drm-intel-gt-next. Andi
© 2016 - 2026 Red Hat, Inc.