Re: [PATCH] drm/radeon: silence UBSAN warning (v3)

2024-04-16 Thread Kees Cook
On Fri, Apr 12, 2024 at 10:28:19AM -0400, Alex Deucher wrote:
> Convert a variable sized array from [1] to [].
> 
> v2: fix up a few more.
> v3: integrate comments from Kees.
> 
> Tested-by: Jeff Johnson 
> Acked-by: Christian König  (v1)
> Signed-off-by: Alex Deucher 

LGTM! :)

Reviewed-by: Kees Cook 

-- 
Kees Cook


[PATCH] drm/radeon: silence UBSAN warning (v3)

2024-04-12 Thread Alex Deucher
Convert a variable sized array from [1] to [].

v2: fix up a few more.
v3: integrate comments from Kees.

Tested-by: Jeff Johnson 
Acked-by: Christian König  (v1)
Signed-off-by: Alex Deucher 
Cc: keesc...@chromium.org
---
 drivers/gpu/drm/radeon/pptable.h | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/radeon/pptable.h b/drivers/gpu/drm/radeon/pptable.h
index 94947229888ba..b7f22597ee95e 100644
--- a/drivers/gpu/drm/radeon/pptable.h
+++ b/drivers/gpu/drm/radeon/pptable.h
@@ -424,7 +424,7 @@ typedef struct _ATOM_PPLIB_SUMO_CLOCK_INFO{
 typedef struct _ATOM_PPLIB_STATE_V2
 {
   //number of valid dpm levels in this state; Driver uses it to calculate 
the whole 
-  //size of the state: sizeof(ATOM_PPLIB_STATE_V2) + (ucNumDPMLevels - 1) 
* sizeof(UCHAR)
+  //size of the state: struct_size(ATOM_PPLIB_STATE_V2, clockInfoIndex, 
ucNumDPMLevels)
   UCHAR ucNumDPMLevels;
   
   //a index to the array of nonClockInfos
@@ -432,14 +432,14 @@ typedef struct _ATOM_PPLIB_STATE_V2
   /**
   * Driver will read the first ucNumDPMLevels in this array
   */
-  UCHAR clockInfoIndex[1];
+  UCHAR clockInfoIndex[] __counted_by(ucNumDPMLevels);
 } ATOM_PPLIB_STATE_V2;
 
 typedef struct _StateArray{
 //how many states we have 
 UCHAR ucNumEntries;
 
-ATOM_PPLIB_STATE_V2 states[1];
+ATOM_PPLIB_STATE_V2 states[] __counted_by(ucNumEntries);
 }StateArray;
 
 
@@ -450,7 +450,7 @@ typedef struct _ClockInfoArray{
 //sizeof(ATOM_PPLIB_CLOCK_INFO)
 UCHAR ucEntrySize;
 
-UCHAR clockInfo[1];
+UCHAR clockInfo[] __counted_by(ucNumEntries);
 }ClockInfoArray;
 
 typedef struct _NonClockInfoArray{
@@ -460,7 +460,7 @@ typedef struct _NonClockInfoArray{
 //sizeof(ATOM_PPLIB_NONCLOCK_INFO)
 UCHAR ucEntrySize;
 
-ATOM_PPLIB_NONCLOCK_INFO nonClockInfo[1];
+ATOM_PPLIB_NONCLOCK_INFO nonClockInfo[] __counted_by(ucNumEntries);
 }NonClockInfoArray;
 
 typedef struct _ATOM_PPLIB_Clock_Voltage_Dependency_Record
-- 
2.44.0