public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
@ 2025-04-26  6:13 Kees Cook
  2025-04-28 11:40 ` Jani Nikula
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Kees Cook @ 2025-04-26  6:13 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Kees Cook, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin,
	David Airlie, Simona Vetter, Matt Roper, Gustavo Sousa,
	Andi Shyti, Lucas De Marchi, intel-gfx, dri-devel, Gnattu OC,
	Nitin Gote, Ranu Maurya, Ville Syrjälä, Angus Chen,
	Juha-Pekka Heikkila, Yu Jiaoliang, Dnyaneshwar Bhadane,
	linux-kernel, linux-hardening

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


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
  2025-04-26  6:13 [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation Kees Cook
@ 2025-04-28 11:40 ` Jani Nikula
  2025-04-30 20:56   ` Kees Cook
  2025-04-28 12:09 ` Tvrtko Ursulin
  2025-05-07 15:50 ` Andi Shyti
  2 siblings, 1 reply; 7+ messages in thread
From: Jani Nikula @ 2025-04-28 11:40 UTC (permalink / raw)
  To: Kees Cook
  Cc: Kees Cook, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin,
	David Airlie, Simona Vetter, Matt Roper, Gustavo Sousa,
	Andi Shyti, Lucas De Marchi, intel-gfx, dri-devel, Gnattu OC,
	Nitin Gote, Ranu Maurya, Ville Syrjälä, Angus Chen,
	Juha-Pekka Heikkila, Yu Jiaoliang, Dnyaneshwar Bhadane,
	linux-kernel, linux-hardening

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
  2025-04-26  6:13 [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation Kees Cook
  2025-04-28 11:40 ` Jani Nikula
@ 2025-04-28 12:09 ` Tvrtko Ursulin
  2025-04-30 20:56   ` Kees Cook
  2025-05-07 15:50 ` Andi Shyti
  2 siblings, 1 reply; 7+ messages in thread
From: Tvrtko Ursulin @ 2025-04-28 12:09 UTC (permalink / raw)
  To: Kees Cook, Jani Nikula
  Cc: Joonas Lahtinen, Rodrigo Vivi, David Airlie, Simona Vetter,
	Matt Roper, Gustavo Sousa, Andi Shyti, Lucas De Marchi, intel-gfx,
	dri-devel, Gnattu OC, Nitin Gote, Ranu Maurya,
	Ville Syrjälä, Angus Chen, Juha-Pekka Heikkila,
	Yu Jiaoliang, Dnyaneshwar Bhadane, linux-kernel, linux-hardening


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");


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
  2025-04-28 12:09 ` Tvrtko Ursulin
@ 2025-04-30 20:56   ` Kees Cook
  0 siblings, 0 replies; 7+ messages in thread
From: Kees Cook @ 2025-04-30 20:56 UTC (permalink / raw)
  To: Tvrtko Ursulin
  Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, David Airlie,
	Simona Vetter, Matt Roper, Gustavo Sousa, Andi Shyti,
	Lucas De Marchi, intel-gfx, dri-devel, Gnattu OC, Nitin Gote,
	Ranu Maurya, Ville Syrjälä, Angus Chen,
	Juha-Pekka Heikkila, Yu Jiaoliang, Dnyaneshwar Bhadane,
	linux-kernel, linux-hardening

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
  2025-04-28 11:40 ` Jani Nikula
@ 2025-04-30 20:56   ` Kees Cook
  2025-05-07 13:05     ` Andi Shyti
  0 siblings, 1 reply; 7+ messages in thread
From: Kees Cook @ 2025-04-30 20:56 UTC (permalink / raw)
  To: Jani Nikula
  Cc: Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, David Airlie,
	Simona Vetter, Matt Roper, Gustavo Sousa, Andi Shyti,
	Lucas De Marchi, intel-gfx, dri-devel, Gnattu OC, Nitin Gote,
	Ranu Maurya, Ville Syrjälä, Angus Chen,
	Juha-Pekka Heikkila, Yu Jiaoliang, Dnyaneshwar Bhadane,
	linux-kernel, linux-hardening

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
  2025-04-30 20:56   ` Kees Cook
@ 2025-05-07 13:05     ` Andi Shyti
  0 siblings, 0 replies; 7+ messages in thread
From: Andi Shyti @ 2025-05-07 13:05 UTC (permalink / raw)
  To: Kees Cook
  Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin,
	David Airlie, Simona Vetter, Matt Roper, Gustavo Sousa,
	Andi Shyti, Lucas De Marchi, intel-gfx, dri-devel, Gnattu OC,
	Nitin Gote, Ranu Maurya, Ville Syrjälä, Angus Chen,
	Juha-Pekka Heikkila, Yu Jiaoliang, Dnyaneshwar Bhadane,
	linux-kernel, linux-hardening

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation
  2025-04-26  6:13 [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation Kees Cook
  2025-04-28 11:40 ` Jani Nikula
  2025-04-28 12:09 ` Tvrtko Ursulin
@ 2025-05-07 15:50 ` Andi Shyti
  2 siblings, 0 replies; 7+ messages in thread
From: Andi Shyti @ 2025-05-07 15:50 UTC (permalink / raw)
  To: Kees Cook
  Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin,
	David Airlie, Simona Vetter, Matt Roper, Gustavo Sousa,
	Andi Shyti, Lucas De Marchi, intel-gfx, dri-devel, Gnattu OC,
	Nitin Gote, Ranu Maurya, Ville Syrjälä, Angus Chen,
	Juha-Pekka Heikkila, Yu Jiaoliang, Dnyaneshwar Bhadane,
	linux-kernel, linux-hardening

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-05-07 15:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-26  6:13 [PATCH] drm/i915/gt: Remove const from struct i915_wa list allocation Kees Cook
2025-04-28 11:40 ` Jani Nikula
2025-04-30 20:56   ` Kees Cook
2025-05-07 13:05     ` Andi Shyti
2025-04-28 12:09 ` Tvrtko Ursulin
2025-04-30 20:56   ` Kees Cook
2025-05-07 15:50 ` Andi Shyti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox