AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
@ 2026-07-04 10:11 John Olender
  2026-07-08 16:37 ` Alex Deucher
  0 siblings, 1 reply; 6+ messages in thread
From: John Olender @ 2026-07-04 10:11 UTC (permalink / raw)
  To: amd-gfx
  Cc: kenneth.feng, alexander.deucher, asad.kamal, lijo.lazar,
	hawking.zhang, kevinyang.wang, John Olender

The soft_pp_table is not contained within the vbios when using a
pp_table override since commit 3cfe433630508 ("drm/amd/pm: Use uploaded
size for legacy custom PPTable").

Fixes: e30b3e3ab51ad ("drm/amdgpu/pm: add pp_entries_max() helper")
Signed-off-by: John Olender <john.olender@gmail.com>
---
 drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
index 7ebc1344023ff..19023a850e882 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
+++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
@@ -833,14 +833,10 @@ static inline uint32_t pp_entries_max(const struct pp_hwmgr *hwmgr,
 				      const void *sub_table,
 				      size_t hdr_size, size_t rec_size)
 {
-	struct amdgpu_device *adev = (struct amdgpu_device *)hwmgr->adev;
-	const char *bios_end = (const char *)adev->bios + adev->bios_size;
 	const char *pp_end   = (const char *)hwmgr->soft_pp_table
 			       + hwmgr->soft_pp_table_size;
 	const char *entries  = (const char *)sub_table + hdr_size;
 
-	if (pp_end > bios_end)
-		return 0;
 	if (!rec_size || entries >= pp_end)
 		return 0;
 	return (uint32_t)((pp_end - entries) / rec_size);

base-commit: e3cc8c108f9a91728f9ff6e24cbf3b41c58b8f8b
-- 
2.47.3


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

* Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
  2026-07-04 10:11 [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max() John Olender
@ 2026-07-08 16:37 ` Alex Deucher
  2026-07-09  9:57   ` Kamal, Asad
  0 siblings, 1 reply; 6+ messages in thread
From: Alex Deucher @ 2026-07-08 16:37 UTC (permalink / raw)
  To: John Olender
  Cc: amd-gfx, kenneth.feng, alexander.deucher, asad.kamal, lijo.lazar,
	hawking.zhang, kevinyang.wang

On Sat, Jul 4, 2026 at 6:19 AM John Olender <john.olender@gmail.com> wrote:
>
> The soft_pp_table is not contained within the vbios when using a
> pp_table override since commit 3cfe433630508 ("drm/amd/pm: Use uploaded
> size for legacy custom PPTable").
>
> Fixes: e30b3e3ab51ad ("drm/amdgpu/pm: add pp_entries_max() helper")
> Signed-off-by: John Olender <john.olender@gmail.com>

Removing this will effectively remove the bounds check from tables
read from the bios.  I don't think we want to do that.

Alex

> ---
>  drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 4 ----
>  1 file changed, 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> index 7ebc1344023ff..19023a850e882 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> @@ -833,14 +833,10 @@ static inline uint32_t pp_entries_max(const struct pp_hwmgr *hwmgr,
>                                       const void *sub_table,
>                                       size_t hdr_size, size_t rec_size)
>  {
> -       struct amdgpu_device *adev = (struct amdgpu_device *)hwmgr->adev;
> -       const char *bios_end = (const char *)adev->bios + adev->bios_size;
>         const char *pp_end   = (const char *)hwmgr->soft_pp_table
>                                + hwmgr->soft_pp_table_size;
>         const char *entries  = (const char *)sub_table + hdr_size;
>
> -       if (pp_end > bios_end)
> -               return 0;
>         if (!rec_size || entries >= pp_end)
>                 return 0;
>         return (uint32_t)((pp_end - entries) / rec_size);
>
> base-commit: e3cc8c108f9a91728f9ff6e24cbf3b41c58b8f8b
> --
> 2.47.3
>

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

* RE: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
  2026-07-08 16:37 ` Alex Deucher
@ 2026-07-09  9:57   ` Kamal, Asad
  2026-07-09 10:38     ` John Olender
  0 siblings, 1 reply; 6+ messages in thread
From: Kamal, Asad @ 2026-07-09  9:57 UTC (permalink / raw)
  To: Alex Deucher, John Olender
  Cc: amd-gfx@lists.freedesktop.org, Feng, Kenneth, Deucher, Alexander,
	Lazar, Lijo, Zhang, Hawking, Wang, Yang(Kevin)

AMD General

Hi @John Olender,

Good catch. However,  as Alex points out, removing the check entirely drops protection for VBIOS-sourced tables.

Instead of removing the check, could you condition it on hardcode_pp_table? When it is NULL we are on the VBIOS path and the bios_end check should stay. When it is non-NULL a custom table was uploaded via sysfs and the check can be skipped — soft_pp_table_size is already set to the kernel-supplied upload size.

if (!hwmgr->hardcode_pp_table) {
        const char *bios_end = (const char *)adev->bios + adev->bios_size;
        if (pp_end > bios_end)
                return 0;
}

This fixes your regression while keeping Alex's concern addressed. Please let me know if it ok with you.

Thanks & Regards
Asad
-----Original Message-----
From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of Alex Deucher
Sent: Wednesday, July 8, 2026 10:08 PM
To: John Olender <john.olender@gmail.com>
Cc: amd-gfx@lists.freedesktop.org; Feng, Kenneth <Kenneth.Feng@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Kamal, Asad <Asad.Kamal@amd.com>; Lazar, Lijo <Lijo.Lazar@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>; Wang, Yang(Kevin) <KevinYang.Wang@amd.com>
Subject: Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()

On Sat, Jul 4, 2026 at 6:19 AM John Olender <john.olender@gmail.com> wrote:
>
> The soft_pp_table is not contained within the vbios when using a
> pp_table override since commit 3cfe433630508 ("drm/amd/pm: Use
> uploaded size for legacy custom PPTable").
>
> Fixes: e30b3e3ab51ad ("drm/amdgpu/pm: add pp_entries_max() helper")
> Signed-off-by: John Olender <john.olender@gmail.com>

Removing this will effectively remove the bounds check from tables read from the bios.  I don't think we want to do that.

Alex

> ---
>  drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 4 ----
>  1 file changed, 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> index 7ebc1344023ff..19023a850e882 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
> @@ -833,14 +833,10 @@ static inline uint32_t pp_entries_max(const struct pp_hwmgr *hwmgr,
>                                       const void *sub_table,
>                                       size_t hdr_size, size_t
> rec_size)  {
> -       struct amdgpu_device *adev = (struct amdgpu_device *)hwmgr->adev;
> -       const char *bios_end = (const char *)adev->bios + adev->bios_size;
>         const char *pp_end   = (const char *)hwmgr->soft_pp_table
>                                + hwmgr->soft_pp_table_size;
>         const char *entries  = (const char *)sub_table + hdr_size;
>
> -       if (pp_end > bios_end)
> -               return 0;
>         if (!rec_size || entries >= pp_end)
>                 return 0;
>         return (uint32_t)((pp_end - entries) / rec_size);
>
> base-commit: e3cc8c108f9a91728f9ff6e24cbf3b41c58b8f8b
> --
> 2.47.3
>

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

* Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
  2026-07-09  9:57   ` Kamal, Asad
@ 2026-07-09 10:38     ` John Olender
  2026-07-09 12:19       ` Kamal, Asad
  0 siblings, 1 reply; 6+ messages in thread
From: John Olender @ 2026-07-09 10:38 UTC (permalink / raw)
  To: Kamal, Asad, Alex Deucher
  Cc: amd-gfx@lists.freedesktop.org, Feng, Kenneth, Deucher, Alexander,
	Lazar, Lijo, Zhang, Hawking, Wang, Yang(Kevin)

On 7/9/26 5:57 AM, Kamal, Asad wrote:
> AMD General
> 
> Hi @John Olender,
> 
> Good catch. However,  as Alex points out, removing the check entirely drops protection for VBIOS-sourced tables.
> 
> Instead of removing the check, could you condition it on hardcode_pp_table? When it is NULL we are on the VBIOS path and the bios_end check should stay. When it is non-NULL a custom table was uploaded via sysfs and the check can be skipped — soft_pp_table_size is already set to the kernel-supplied upload size.
> 
> if (!hwmgr->hardcode_pp_table) {
>         const char *bios_end = (const char *)adev->bios + adev->bios_size;
>         if (pp_end > bios_end)
>                 return 0;
> }
> 
> This fixes your regression while keeping Alex's concern addressed. Please let me know if it ok with you.
> 
> Thanks & Regards
> Asad

Hmm.

Checking for vbios overflow when a table header is parsed should allow
pp_entries_max() to implicitly detect vbios overflow for the
vbios-provided pp_table.

Is there a reason all atom tables are not sanity checked in this way?
It seems odd that the pp_table header isn't trusted while the rest of
the table headers are.

Thanks,
John

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of Alex Deucher
> Sent: Wednesday, July 8, 2026 10:08 PM
> To: John Olender <john.olender@gmail.com>
> Cc: amd-gfx@lists.freedesktop.org; Feng, Kenneth <Kenneth.Feng@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Kamal, Asad <Asad.Kamal@amd.com>; Lazar, Lijo <Lijo.Lazar@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>; Wang, Yang(Kevin) <KevinYang.Wang@amd.com>
> Subject: Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
> 
> On Sat, Jul 4, 2026 at 6:19 AM John Olender <john.olender@gmail.com> wrote:
>>
>> The soft_pp_table is not contained within the vbios when using a
>> pp_table override since commit 3cfe433630508 ("drm/amd/pm: Use
>> uploaded size for legacy custom PPTable").
>>
>> Fixes: e30b3e3ab51ad ("drm/amdgpu/pm: add pp_entries_max() helper")
>> Signed-off-by: John Olender <john.olender@gmail.com>
> 
> Removing this will effectively remove the bounds check from tables read from the bios.  I don't think we want to do that.
> 
> Alex
> 
>> ---
>>  drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> index 7ebc1344023ff..19023a850e882 100644
>> --- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> @@ -833,14 +833,10 @@ static inline uint32_t pp_entries_max(const struct pp_hwmgr *hwmgr,
>>                                       const void *sub_table,
>>                                       size_t hdr_size, size_t
>> rec_size)  {
>> -       struct amdgpu_device *adev = (struct amdgpu_device *)hwmgr->adev;
>> -       const char *bios_end = (const char *)adev->bios + adev->bios_size;
>>         const char *pp_end   = (const char *)hwmgr->soft_pp_table
>>                                + hwmgr->soft_pp_table_size;
>>         const char *entries  = (const char *)sub_table + hdr_size;
>>
>> -       if (pp_end > bios_end)
>> -               return 0;
>>         if (!rec_size || entries >= pp_end)
>>                 return 0;
>>         return (uint32_t)((pp_end - entries) / rec_size);
>>
>> base-commit: e3cc8c108f9a91728f9ff6e24cbf3b41c58b8f8b
>> --
>> 2.47.3
>>


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

* RE: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
  2026-07-09 10:38     ` John Olender
@ 2026-07-09 12:19       ` Kamal, Asad
  2026-07-09 13:38         ` John Olender
  0 siblings, 1 reply; 6+ messages in thread
From: Kamal, Asad @ 2026-07-09 12:19 UTC (permalink / raw)
  To: John Olender, Alex Deucher
  Cc: amd-gfx@lists.freedesktop.org, Feng, Kenneth, Deucher, Alexander,
	Lazar, Lijo, Zhang, Hawking, Wang, Yang(Kevin)

AMD General

Hi @John Olender,

amdgpu_atom_parse_data_header() does not validate usStructureSize against the BIOS boundary — it reads the value directly from the BIOS bytes without any bounds check:

if (size)
    *size = CU16(idx);   /* raw BIOS read, no validation */
So soft_pp_table_size is whatever the VBIOS claims and cannot be trusted for the VBIOS path.

Regarding other ATOM tables — the PP table is unique in that the host driver parses its sub-tables entry-by-entry, using ucNumEntries from the BIOS to drive kzalloc() sizes and loop bounds. That is the direct exploit path this series addresses. Most other ATOM tables are either passed raw to firmware, read as a fixed-size struct, or executed as ATOM scripts — none use a BIOS-supplied count to allocate kernel memory in a loop, so an inflated usStructureSize is harmless for them.

The bios_end check in pp_entries_max() is still needed for the VBIOS path and the !hardcode_pp_table condition correctly gates it.

Thanks & Regards
Asad

-----Original Message-----
From: John Olender <john.olender@gmail.com>
Sent: Thursday, July 9, 2026 4:09 PM
To: Kamal, Asad <Asad.Kamal@amd.com>; Alex Deucher <alexdeucher@gmail.com>
Cc: amd-gfx@lists.freedesktop.org; Feng, Kenneth <Kenneth.Feng@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Lazar, Lijo <Lijo.Lazar@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>; Wang, Yang(Kevin) <KevinYang.Wang@amd.com>
Subject: Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()

On 7/9/26 5:57 AM, Kamal, Asad wrote:
> AMD General
>
> Hi @John Olender,
>
> Good catch. However,  as Alex points out, removing the check entirely drops protection for VBIOS-sourced tables.
>
> Instead of removing the check, could you condition it on hardcode_pp_table? When it is NULL we are on the VBIOS path and the bios_end check should stay. When it is non-NULL a custom table was uploaded via sysfs and the check can be skipped — soft_pp_table_size is already set to the kernel-supplied upload size.
>
> if (!hwmgr->hardcode_pp_table) {
>         const char *bios_end = (const char *)adev->bios + adev->bios_size;
>         if (pp_end > bios_end)
>                 return 0;
> }
>
> This fixes your regression while keeping Alex's concern addressed. Please let me know if it ok with you.
>
> Thanks & Regards
> Asad

Hmm.

Checking for vbios overflow when a table header is parsed should allow
pp_entries_max() to implicitly detect vbios overflow for the vbios-provided pp_table.

Is there a reason all atom tables are not sanity checked in this way?
It seems odd that the pp_table header isn't trusted while the rest of the table headers are.

Thanks,
John

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of
> Alex Deucher
> Sent: Wednesday, July 8, 2026 10:08 PM
> To: John Olender <john.olender@gmail.com>
> Cc: amd-gfx@lists.freedesktop.org; Feng, Kenneth
> <Kenneth.Feng@amd.com>; Deucher, Alexander
> <Alexander.Deucher@amd.com>; Kamal, Asad <Asad.Kamal@amd.com>; Lazar,
> Lijo <Lijo.Lazar@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>;
> Wang, Yang(Kevin) <KevinYang.Wang@amd.com>
> Subject: Re: [PATCH] drm/amd/pm: Remove vbios bounds check from
> pp_entries_max()
>
> On Sat, Jul 4, 2026 at 6:19 AM John Olender <john.olender@gmail.com> wrote:
>>
>> The soft_pp_table is not contained within the vbios when using a
>> pp_table override since commit 3cfe433630508 ("drm/amd/pm: Use
>> uploaded size for legacy custom PPTable").
>>
>> Fixes: e30b3e3ab51ad ("drm/amdgpu/pm: add pp_entries_max() helper")
>> Signed-off-by: John Olender <john.olender@gmail.com>
>
> Removing this will effectively remove the bounds check from tables read from the bios.  I don't think we want to do that.
>
> Alex
>
>> ---
>>  drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> index 7ebc1344023ff..19023a850e882 100644
>> --- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>> @@ -833,14 +833,10 @@ static inline uint32_t pp_entries_max(const struct pp_hwmgr *hwmgr,
>>                                       const void *sub_table,
>>                                       size_t hdr_size, size_t
>> rec_size)  {
>> -       struct amdgpu_device *adev = (struct amdgpu_device *)hwmgr->adev;
>> -       const char *bios_end = (const char *)adev->bios + adev->bios_size;
>>         const char *pp_end   = (const char *)hwmgr->soft_pp_table
>>                                + hwmgr->soft_pp_table_size;
>>         const char *entries  = (const char *)sub_table + hdr_size;
>>
>> -       if (pp_end > bios_end)
>> -               return 0;
>>         if (!rec_size || entries >= pp_end)
>>                 return 0;
>>         return (uint32_t)((pp_end - entries) / rec_size);
>>
>> base-commit: e3cc8c108f9a91728f9ff6e24cbf3b41c58b8f8b
>> --
>> 2.47.3
>>


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

* Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
  2026-07-09 12:19       ` Kamal, Asad
@ 2026-07-09 13:38         ` John Olender
  0 siblings, 0 replies; 6+ messages in thread
From: John Olender @ 2026-07-09 13:38 UTC (permalink / raw)
  To: Kamal, Asad, Alex Deucher
  Cc: amd-gfx@lists.freedesktop.org, Feng, Kenneth, Deucher, Alexander,
	Lazar, Lijo, Zhang, Hawking, Wang, Yang(Kevin)

On 7/9/26 8:19 AM, Kamal, Asad wrote:
> AMD General
> 
> Hi @John Olender,
> 
> amdgpu_atom_parse_data_header() does not validate usStructureSize against the BIOS boundary — it reads the value directly from the BIOS bytes without any bounds check:
> 
> if (size)
>     *size = CU16(idx);   /* raw BIOS read, no validation */
> So soft_pp_table_size is whatever the VBIOS claims and cannot be trusted for the VBIOS path.
> 

Just before this assignment is where I'm suggesting the parsed table
ends be sanity checked against the vbios size.  A table whose end
blatantly overflows the vbios would then be rejected early.

This would avoid redundant checks in the inline pp_entries_max().

Thanks,
John

> Regarding other ATOM tables — the PP table is unique in that the host driver parses its sub-tables entry-by-entry, using ucNumEntries from the BIOS to drive kzalloc() sizes and loop bounds. That is the direct exploit path this series addresses. Most other ATOM tables are either passed raw to firmware, read as a fixed-size struct, or executed as ATOM scripts — none use a BIOS-supplied count to allocate kernel memory in a loop, so an inflated usStructureSize is harmless for them.
> 
> The bios_end check in pp_entries_max() is still needed for the VBIOS path and the !hardcode_pp_table condition correctly gates it.
> 
> Thanks & Regards
> Asad
> 
> -----Original Message-----
> From: John Olender <john.olender@gmail.com>
> Sent: Thursday, July 9, 2026 4:09 PM
> To: Kamal, Asad <Asad.Kamal@amd.com>; Alex Deucher <alexdeucher@gmail.com>
> Cc: amd-gfx@lists.freedesktop.org; Feng, Kenneth <Kenneth.Feng@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Lazar, Lijo <Lijo.Lazar@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>; Wang, Yang(Kevin) <KevinYang.Wang@amd.com>
> Subject: Re: [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max()
> 
> On 7/9/26 5:57 AM, Kamal, Asad wrote:
>> AMD General
>>
>> Hi @John Olender,
>>
>> Good catch. However,  as Alex points out, removing the check entirely drops protection for VBIOS-sourced tables.
>>
>> Instead of removing the check, could you condition it on hardcode_pp_table? When it is NULL we are on the VBIOS path and the bios_end check should stay. When it is non-NULL a custom table was uploaded via sysfs and the check can be skipped — soft_pp_table_size is already set to the kernel-supplied upload size.
>>
>> if (!hwmgr->hardcode_pp_table) {
>>         const char *bios_end = (const char *)adev->bios + adev->bios_size;
>>         if (pp_end > bios_end)
>>                 return 0;
>> }
>>
>> This fixes your regression while keeping Alex's concern addressed. Please let me know if it ok with you.
>>
>> Thanks & Regards
>> Asad
> 
> Hmm.
> 
> Checking for vbios overflow when a table header is parsed should allow
> pp_entries_max() to implicitly detect vbios overflow for the vbios-provided pp_table.
> 
> Is there a reason all atom tables are not sanity checked in this way?
> It seems odd that the pp_table header isn't trusted while the rest of the table headers are.
> 
> Thanks,
> John
> 
>> -----Original Message-----
>> From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of
>> Alex Deucher
>> Sent: Wednesday, July 8, 2026 10:08 PM
>> To: John Olender <john.olender@gmail.com>
>> Cc: amd-gfx@lists.freedesktop.org; Feng, Kenneth
>> <Kenneth.Feng@amd.com>; Deucher, Alexander
>> <Alexander.Deucher@amd.com>; Kamal, Asad <Asad.Kamal@amd.com>; Lazar,
>> Lijo <Lijo.Lazar@amd.com>; Zhang, Hawking <Hawking.Zhang@amd.com>;
>> Wang, Yang(Kevin) <KevinYang.Wang@amd.com>
>> Subject: Re: [PATCH] drm/amd/pm: Remove vbios bounds check from
>> pp_entries_max()
>>
>> On Sat, Jul 4, 2026 at 6:19 AM John Olender <john.olender@gmail.com> wrote:
>>>
>>> The soft_pp_table is not contained within the vbios when using a
>>> pp_table override since commit 3cfe433630508 ("drm/amd/pm: Use
>>> uploaded size for legacy custom PPTable").
>>>
>>> Fixes: e30b3e3ab51ad ("drm/amdgpu/pm: add pp_entries_max() helper")
>>> Signed-off-by: John Olender <john.olender@gmail.com>
>>
>> Removing this will effectively remove the bounds check from tables read from the bios.  I don't think we want to do that.
>>
>> Alex
>>
>>> ---
>>>  drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 4 ----
>>>  1 file changed, 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>>> b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>>> index 7ebc1344023ff..19023a850e882 100644
>>> --- a/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>>> +++ b/drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h
>>> @@ -833,14 +833,10 @@ static inline uint32_t pp_entries_max(const struct pp_hwmgr *hwmgr,
>>>                                       const void *sub_table,
>>>                                       size_t hdr_size, size_t
>>> rec_size)  {
>>> -       struct amdgpu_device *adev = (struct amdgpu_device *)hwmgr->adev;
>>> -       const char *bios_end = (const char *)adev->bios + adev->bios_size;
>>>         const char *pp_end   = (const char *)hwmgr->soft_pp_table
>>>                                + hwmgr->soft_pp_table_size;
>>>         const char *entries  = (const char *)sub_table + hdr_size;
>>>
>>> -       if (pp_end > bios_end)
>>> -               return 0;
>>>         if (!rec_size || entries >= pp_end)
>>>                 return 0;
>>>         return (uint32_t)((pp_end - entries) / rec_size);
>>>
>>> base-commit: e3cc8c108f9a91728f9ff6e24cbf3b41c58b8f8b
>>> --
>>> 2.47.3
>>>
> 


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

end of thread, other threads:[~2026-07-09 13:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-04 10:11 [PATCH] drm/amd/pm: Remove vbios bounds check from pp_entries_max() John Olender
2026-07-08 16:37 ` Alex Deucher
2026-07-09  9:57   ` Kamal, Asad
2026-07-09 10:38     ` John Olender
2026-07-09 12:19       ` Kamal, Asad
2026-07-09 13:38         ` John Olender

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