Skip to content

Commit 49afe91

Browse files
committed
drm/amd: Fix UBSAN array-index-out-of-bounds for Powerplay headers
For pptable structs that use flexible array sizes, use flexible arrays. Link: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2039926 Reviewed-by: Mario Limonciello <[email protected]> Acked-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 7b1c626 commit 49afe91

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

drivers/gpu/drm/amd/pm/powerplay/hwmgr/pptable_v1_0.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ typedef struct _ATOM_Tonga_VCE_State_Record {
367367
typedef struct _ATOM_Tonga_VCE_State_Table {
368368
UCHAR ucRevId;
369369
UCHAR ucNumEntries;
370-
ATOM_Tonga_VCE_State_Record entries[1];
370+
ATOM_Tonga_VCE_State_Record entries[];
371371
} ATOM_Tonga_VCE_State_Table;
372372

373373
typedef struct _ATOM_Tonga_PowerTune_Table {
@@ -481,7 +481,7 @@ typedef struct _ATOM_Tonga_Hard_Limit_Record {
481481
typedef struct _ATOM_Tonga_Hard_Limit_Table {
482482
UCHAR ucRevId;
483483
UCHAR ucNumEntries;
484-
ATOM_Tonga_Hard_Limit_Record entries[1];
484+
ATOM_Tonga_Hard_Limit_Record entries[];
485485
} ATOM_Tonga_Hard_Limit_Table;
486486

487487
typedef struct _ATOM_Tonga_GPIO_Table {

drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_pptable.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ typedef struct _ATOM_Vega10_State {
129129
typedef struct _ATOM_Vega10_State_Array {
130130
UCHAR ucRevId;
131131
UCHAR ucNumEntries; /* Number of entries. */
132-
ATOM_Vega10_State states[1]; /* Dynamically allocate entries. */
132+
ATOM_Vega10_State states[]; /* Dynamically allocate entries. */
133133
} ATOM_Vega10_State_Array;
134134

135135
typedef struct _ATOM_Vega10_CLK_Dependency_Record {
@@ -169,37 +169,37 @@ typedef struct _ATOM_Vega10_GFXCLK_Dependency_Table {
169169
typedef struct _ATOM_Vega10_MCLK_Dependency_Table {
170170
UCHAR ucRevId;
171171
UCHAR ucNumEntries; /* Number of entries. */
172-
ATOM_Vega10_MCLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */
172+
ATOM_Vega10_MCLK_Dependency_Record entries[]; /* Dynamically allocate entries. */
173173
} ATOM_Vega10_MCLK_Dependency_Table;
174174

175175
typedef struct _ATOM_Vega10_SOCCLK_Dependency_Table {
176176
UCHAR ucRevId;
177177
UCHAR ucNumEntries; /* Number of entries. */
178-
ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */
178+
ATOM_Vega10_CLK_Dependency_Record entries[]; /* Dynamically allocate entries. */
179179
} ATOM_Vega10_SOCCLK_Dependency_Table;
180180

181181
typedef struct _ATOM_Vega10_DCEFCLK_Dependency_Table {
182182
UCHAR ucRevId;
183183
UCHAR ucNumEntries; /* Number of entries. */
184-
ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */
184+
ATOM_Vega10_CLK_Dependency_Record entries[]; /* Dynamically allocate entries. */
185185
} ATOM_Vega10_DCEFCLK_Dependency_Table;
186186

187187
typedef struct _ATOM_Vega10_PIXCLK_Dependency_Table {
188188
UCHAR ucRevId;
189189
UCHAR ucNumEntries; /* Number of entries. */
190-
ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */
190+
ATOM_Vega10_CLK_Dependency_Record entries[]; /* Dynamically allocate entries. */
191191
} ATOM_Vega10_PIXCLK_Dependency_Table;
192192

193193
typedef struct _ATOM_Vega10_DISPCLK_Dependency_Table {
194194
UCHAR ucRevId;
195195
UCHAR ucNumEntries; /* Number of entries.*/
196-
ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */
196+
ATOM_Vega10_CLK_Dependency_Record entries[]; /* Dynamically allocate entries. */
197197
} ATOM_Vega10_DISPCLK_Dependency_Table;
198198

199199
typedef struct _ATOM_Vega10_PHYCLK_Dependency_Table {
200200
UCHAR ucRevId;
201201
UCHAR ucNumEntries; /* Number of entries. */
202-
ATOM_Vega10_CLK_Dependency_Record entries[1]; /* Dynamically allocate entries. */
202+
ATOM_Vega10_CLK_Dependency_Record entries[]; /* Dynamically allocate entries. */
203203
} ATOM_Vega10_PHYCLK_Dependency_Table;
204204

205205
typedef struct _ATOM_Vega10_MM_Dependency_Record {
@@ -213,7 +213,7 @@ typedef struct _ATOM_Vega10_MM_Dependency_Record {
213213
typedef struct _ATOM_Vega10_MM_Dependency_Table {
214214
UCHAR ucRevId;
215215
UCHAR ucNumEntries; /* Number of entries */
216-
ATOM_Vega10_MM_Dependency_Record entries[1]; /* Dynamically allocate entries */
216+
ATOM_Vega10_MM_Dependency_Record entries[]; /* Dynamically allocate entries */
217217
} ATOM_Vega10_MM_Dependency_Table;
218218

219219
typedef struct _ATOM_Vega10_PCIE_Record {
@@ -225,7 +225,7 @@ typedef struct _ATOM_Vega10_PCIE_Record {
225225
typedef struct _ATOM_Vega10_PCIE_Table {
226226
UCHAR ucRevId;
227227
UCHAR ucNumEntries; /* Number of entries */
228-
ATOM_Vega10_PCIE_Record entries[1]; /* Dynamically allocate entries. */
228+
ATOM_Vega10_PCIE_Record entries[]; /* Dynamically allocate entries. */
229229
} ATOM_Vega10_PCIE_Table;
230230

231231
typedef struct _ATOM_Vega10_Voltage_Lookup_Record {
@@ -235,7 +235,7 @@ typedef struct _ATOM_Vega10_Voltage_Lookup_Record {
235235
typedef struct _ATOM_Vega10_Voltage_Lookup_Table {
236236
UCHAR ucRevId;
237237
UCHAR ucNumEntries; /* Number of entries */
238-
ATOM_Vega10_Voltage_Lookup_Record entries[1]; /* Dynamically allocate entries */
238+
ATOM_Vega10_Voltage_Lookup_Record entries[]; /* Dynamically allocate entries */
239239
} ATOM_Vega10_Voltage_Lookup_Table;
240240

241241
typedef struct _ATOM_Vega10_Fan_Table {
@@ -327,7 +327,7 @@ typedef struct _ATOM_Vega10_VCE_State_Record {
327327
typedef struct _ATOM_Vega10_VCE_State_Table {
328328
UCHAR ucRevId;
329329
UCHAR ucNumEntries;
330-
ATOM_Vega10_VCE_State_Record entries[1];
330+
ATOM_Vega10_VCE_State_Record entries[];
331331
} ATOM_Vega10_VCE_State_Table;
332332

333333
typedef struct _ATOM_Vega10_PowerTune_Table {
@@ -427,7 +427,7 @@ typedef struct _ATOM_Vega10_Hard_Limit_Record {
427427
typedef struct _ATOM_Vega10_Hard_Limit_Table {
428428
UCHAR ucRevId;
429429
UCHAR ucNumEntries;
430-
ATOM_Vega10_Hard_Limit_Record entries[1];
430+
ATOM_Vega10_Hard_Limit_Record entries[];
431431
} ATOM_Vega10_Hard_Limit_Table;
432432

433433
typedef struct _Vega10_PPTable_Generic_SubTable_Header {

0 commit comments

Comments
 (0)