The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] drm/radeon: replace 1-element arrays with flexible-array members
@ 2023-10-27 16:58 José Pekkarinen
  2023-10-27 17:55 ` Deucher, Alexander
  0 siblings, 1 reply; 5+ messages in thread
From: José Pekkarinen @ 2023-10-27 16:58 UTC (permalink / raw)
  To: alexander.deucher, christian.koenig, Xinhui.Pan, skhan
  Cc: José Pekkarinen, airlied, daniel, amd-gfx, dri-devel,
	linux-kernel, linux-kernel-mentees

Reported by coccinelle, the following patch will move the
following 1 element arrays to flexible arrays.

drivers/gpu/drm/radeon/atombios.h:5523:32-48: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:5545:32-48: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:5461:34-44: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4447:30-40: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4236:30-41: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7044:24-37: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7054:24-37: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7095:28-45: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7553:8-17: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7559:8-17: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:3896:27-37: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:5443:16-25: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:5454:34-43: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4603:21-32: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:6299:32-44: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4628:32-46: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:6285:29-39: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4296:30-36: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4756:28-36: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:4064:22-35: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7327:9-24: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7332:32-53: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:6030:8-17: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7362:26-41: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7369:29-44: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7349:24-32: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)
drivers/gpu/drm/radeon/atombios.h:7355:27-35: WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)

Signed-off-by: José Pekkarinen <jose.pekkarinen@foxhound.fi>
---
 drivers/gpu/drm/radeon/atombios.h | 54 +++++++++++++++----------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/radeon/atombios.h b/drivers/gpu/drm/radeon/atombios.h
index 8a6621f1e82c..7fa1606be92c 100644
--- a/drivers/gpu/drm/radeon/atombios.h
+++ b/drivers/gpu/drm/radeon/atombios.h
@@ -3893,7 +3893,7 @@ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
 typedef struct _ATOM_GPIO_PIN_LUT
 {
   ATOM_COMMON_TABLE_HEADER  sHeader;
-  ATOM_GPIO_PIN_ASSIGNMENT	asGPIO_Pin[1];
+  ATOM_GPIO_PIN_ASSIGNMENT	asGPIO_Pin[];
 }ATOM_GPIO_PIN_LUT;
 
 /****************************************************************************/	
@@ -4061,7 +4061,7 @@ typedef struct _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT         //usSrcDstTableOffset
   UCHAR               ucNumberOfSrc;
   USHORT              usSrcObjectID[1];
   UCHAR               ucNumberOfDst;
-  USHORT              usDstObjectID[1];
+  USHORT              usDstObjectID[];
 }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
 
 
@@ -4233,7 +4233,7 @@ typedef struct  _ATOM_CONNECTOR_DEVICE_TAG_RECORD
   ATOM_COMMON_RECORD_HEADER   sheader;
   UCHAR                       ucNumberOfDevice;
   UCHAR                       ucReserved;
-  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[1];         //This Id is same as "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
+  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[];          //This Id is same as "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
 }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
 
 
@@ -4293,7 +4293,7 @@ typedef struct  _ATOM_OBJECT_GPIO_CNTL_RECORD
   ATOM_COMMON_RECORD_HEADER   sheader;
   UCHAR                       ucFlags;                // Future expnadibility
   UCHAR                       ucNumberOfPins;         // Number of GPIO pins used to control the object
-  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[1];              // the real gpio pin pair determined by number of pins ucNumberOfPins
+  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[];               // the real gpio pin pair determined by number of pins ucNumberOfPins
 }ATOM_OBJECT_GPIO_CNTL_RECORD;
 
 //Definitions for GPIO pin state 
@@ -4444,7 +4444,7 @@ typedef struct  _ATOM_BRACKET_LAYOUT_RECORD
   UCHAR                       ucWidth;
   UCHAR                       ucConnNum;
   UCHAR                       ucReserved;
-  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[1];
+  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[];
 }ATOM_BRACKET_LAYOUT_RECORD;
 
 /****************************************************************************/	
@@ -4600,7 +4600,7 @@ typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
    UCHAR    ucVoltageControlAddress;
    UCHAR    ucVoltageControlOffset;	 	
    ULONG    ulReserved;
-   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
+   VOLTAGE_LUT_ENTRY asVolI2cLut[];         // end with 0xff
 }ATOM_I2C_VOLTAGE_OBJECT_V3;
 
 // ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
@@ -4625,7 +4625,7 @@ typedef struct  _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
    UCHAR    ucLeakageEntryNum;           // indicate the entry number of LeakageId/Voltage Lut table
    UCHAR    ucReserved[2];               
    ULONG    ulMaxVoltageLevel;
-   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];   
+   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[];
 }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
 
 
@@ -4753,7 +4753,7 @@ typedef struct _ATOM_POWER_SOURCE_INFO
 {
 		ATOM_COMMON_TABLE_HEADER		asHeader;
 		UCHAR												asPwrbehave[16];
-		ATOM_POWER_SOURCE_OBJECT		asPwrObj[1];
+		ATOM_POWER_SOURCE_OBJECT		asPwrObj[];
 }ATOM_POWER_SOURCE_INFO;
 
 
@@ -5440,7 +5440,7 @@ typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
 typedef struct _ATOM_I2C_DATA_RECORD
 {
   UCHAR         ucNunberOfBytes;                                              //Indicates how many bytes SW needs to write to the external ASIC for one block, besides to "Start" and "Stop"
-  UCHAR         ucI2CData[1];                                                 //I2C data in bytes, should be less than 16 bytes usually
+  UCHAR         ucI2CData[];                                                  //I2C data in bytes, should be less than 16 bytes usually
 }ATOM_I2C_DATA_RECORD;
 
 
@@ -5451,14 +5451,14 @@ typedef struct _ATOM_I2C_DEVICE_SETUP_INFO
   UCHAR		                        ucSSChipID;             //SS chip being used
   UCHAR		                        ucSSChipSlaveAddr;      //Slave Address to set up this SS chip
   UCHAR                           ucNumOfI2CDataRecords;  //number of data block
-  ATOM_I2C_DATA_RECORD            asI2CData[1];  
+  ATOM_I2C_DATA_RECORD            asI2CData[];
 }ATOM_I2C_DEVICE_SETUP_INFO;
 
 //==========================================================================================
 typedef struct  _ATOM_ASIC_MVDD_INFO
 {
   ATOM_COMMON_TABLE_HEADER	      sHeader; 
-  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[1];
+  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[];
 }ATOM_ASIC_MVDD_INFO;
 
 //==========================================================================================
@@ -5520,7 +5520,7 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2
 {
   ATOM_COMMON_TABLE_HEADER	      sHeader; 
-  ATOM_ASIC_SS_ASSIGNMENT_V2		  asSpreadSpectrum[1];      //this is point only. 
+  ATOM_ASIC_SS_ASSIGNMENT_V2		  asSpreadSpectrum[];       //this is point only.
 }ATOM_ASIC_INTERNAL_SS_INFO_V2;
 
 typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
@@ -5542,7 +5542,7 @@ typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
 {
   ATOM_COMMON_TABLE_HEADER	      sHeader; 
-  ATOM_ASIC_SS_ASSIGNMENT_V3		  asSpreadSpectrum[1];      //this is pointer only. 
+  ATOM_ASIC_SS_ASSIGNMENT_V3		  asSpreadSpectrum[];       //this is pointer only.
 }ATOM_ASIC_INTERNAL_SS_INFO_V3;
 
 
@@ -6027,7 +6027,7 @@ typedef struct _ENABLE_SCALER_PARAMETERS
   UCHAR ucScaler;            // ATOM_SCALER1, ATOM_SCALER2
   UCHAR ucEnable;            // ATOM_SCALER_DISABLE or ATOM_SCALER_CENTER or ATOM_SCALER_EXPANSION
   UCHAR ucTVStandard;        // 
-  UCHAR ucPadding[1];
+  UCHAR ucPadding[];
 }ENABLE_SCALER_PARAMETERS; 
 #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS 
 
@@ -6282,7 +6282,7 @@ typedef union _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
 
 typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
 	ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS			ulMemoryID;
-	ULONG															        aulMemData[1];
+	ULONG															        aulMemData[];
 }ATOM_MEMORY_SETTING_DATA_BLOCK;
 
 
@@ -6296,7 +6296,7 @@ typedef struct _ATOM_INIT_REG_BLOCK{
 	USHORT													usRegIndexTblSize;													//size of asRegIndexBuf
 	USHORT													usRegDataBlkSize;														//size of ATOM_MEMORY_SETTING_DATA_BLOCK
 	ATOM_INIT_REG_INDEX_FORMAT			asRegIndexBuf[1];
-	ATOM_MEMORY_SETTING_DATA_BLOCK	asRegDataBuf[1];
+	ATOM_MEMORY_SETTING_DATA_BLOCK	asRegDataBuf[];
 }ATOM_INIT_REG_BLOCK;
 
 #define END_OF_REG_INDEX_BLOCK  0x0ffff
@@ -7041,7 +7041,7 @@ typedef struct _ATOM_DISP_OUT_INFO
 	USHORT ptrTransmitterInfo;
 	USHORT ptrEncoderInfo;
 	ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
-	ASIC_ENCODER_INFO      asEncoderInfo[1];
+	ASIC_ENCODER_INFO      asEncoderInfo[];
 }ATOM_DISP_OUT_INFO;
 
 typedef struct _ATOM_DISP_OUT_INFO_V2
@@ -7051,7 +7051,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V2
 	USHORT ptrEncoderInfo;
   USHORT ptrMainCallParserFar;                  // direct address of main parser call in VBIOS binary. 
 	ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
-	ASIC_ENCODER_INFO      asEncoderInfo[1];
+	ASIC_ENCODER_INFO      asEncoderInfo[];
 }ATOM_DISP_OUT_INFO_V2;
 
 
@@ -7092,7 +7092,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V3
   UCHAR  ucCoreRefClkSource;                    // value of CORE_REF_CLK_SOURCE
   UCHAR  ucDispCaps;
   UCHAR  ucReserved[2];
-  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for alligment only
+  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[];      // for alligment only
 }ATOM_DISP_OUT_INFO_V3;
 
 //ucDispCaps
@@ -7324,12 +7324,12 @@ typedef struct _CLOCK_CONDITION_SETTING_ENTRY{
   USHORT usMaxClockFreq;
   UCHAR  ucEncodeMode;
   UCHAR  ucPhySel;
-  ULONG  ulAnalogSetting[1];
+  ULONG  ulAnalogSetting[];
 }CLOCK_CONDITION_SETTING_ENTRY;
 
 typedef struct _CLOCK_CONDITION_SETTING_INFO{
   USHORT usEntrySize;
-  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
+  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[];
 }CLOCK_CONDITION_SETTING_INFO;
 
 typedef struct _PHY_CONDITION_REG_VAL{
@@ -7346,27 +7346,27 @@ typedef struct _PHY_CONDITION_REG_VAL_V2{
 typedef struct _PHY_CONDITION_REG_INFO{
   USHORT usRegIndex;
   USHORT usSize;
-  PHY_CONDITION_REG_VAL asRegVal[1];
+  PHY_CONDITION_REG_VAL asRegVal[];
 }PHY_CONDITION_REG_INFO;
 
 typedef struct _PHY_CONDITION_REG_INFO_V2{
   USHORT usRegIndex;
   USHORT usSize;
-  PHY_CONDITION_REG_VAL_V2 asRegVal[1];
+  PHY_CONDITION_REG_VAL_V2 asRegVal[];
 }PHY_CONDITION_REG_INFO_V2;
 
 typedef struct _PHY_ANALOG_SETTING_INFO{
   UCHAR  ucEncodeMode;
   UCHAR  ucPhySel;
   USHORT usSize;
-  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
+  PHY_CONDITION_REG_INFO  asAnalogSetting[];
 }PHY_ANALOG_SETTING_INFO;
 
 typedef struct _PHY_ANALOG_SETTING_INFO_V2{
   UCHAR  ucEncodeMode;
   UCHAR  ucPhySel;
   USHORT usSize;
-  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[1];
+  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[];
 }PHY_ANALOG_SETTING_INFO_V2;
 
 typedef struct _GFX_HAVESTING_PARAMETERS {
@@ -7550,13 +7550,13 @@ typedef struct _ATOM_TMDS_INFO
 typedef struct _ATOM_ENCODER_ANALOG_ATTRIBUTE
 {
   UCHAR ucTVStandard;     //Same as TV standards defined above, 
-  UCHAR ucPadding[1];
+  UCHAR ucPadding[];
 }ATOM_ENCODER_ANALOG_ATTRIBUTE;
 
 typedef struct _ATOM_ENCODER_DIGITAL_ATTRIBUTE
 {
   UCHAR ucAttribute;      //Same as other digital encoder attributes defined above
-  UCHAR ucPadding[1];		
+  UCHAR ucPadding[];
 }ATOM_ENCODER_DIGITAL_ATTRIBUTE;
 
 typedef union _ATOM_ENCODER_ATTRIBUTE
-- 
2.39.2


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

* RE: [PATCH] drm/radeon: replace 1-element arrays with flexible-array members
  2023-10-27 16:58 [PATCH] drm/radeon: replace 1-element arrays with flexible-array members José Pekkarinen
@ 2023-10-27 17:55 ` Deucher, Alexander
  2023-10-28 11:29   ` José Pekkarinen
  0 siblings, 1 reply; 5+ messages in thread
From: Deucher, Alexander @ 2023-10-27 17:55 UTC (permalink / raw)
  To: José Pekkarinen, Koenig, Christian, Pan, Xinhui,
	skhan@linuxfoundation.org
  Cc: airlied@gmail.com, daniel@ffwll.ch, amd-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	linux-kernel-mentees@lists.linuxfoundation.org

[Public]

> -----Original Message-----
> From: José Pekkarinen <jose.pekkarinen@foxhound.fi>
> Sent: Friday, October 27, 2023 12:59 PM
> To: Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig, Christian
> <Christian.Koenig@amd.com>; Pan, Xinhui <Xinhui.Pan@amd.com>;
> skhan@linuxfoundation.org
> Cc: José Pekkarinen <jose.pekkarinen@foxhound.fi>; airlied@gmail.com;
> daniel@ffwll.ch; amd-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; linux-kernel-
> mentees@lists.linuxfoundation.org
> Subject: [PATCH] drm/radeon: replace 1-element arrays with flexible-array
> members
>
> Reported by coccinelle, the following patch will move the following 1 element
> arrays to flexible arrays.
>
> drivers/gpu/drm/radeon/atombios.h:5523:32-48: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:5545:32-48: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:5461:34-44: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4447:30-40: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4236:30-41: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7044:24-37: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7054:24-37: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7095:28-45: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7553:8-17: WARNING use flexible-array
> member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7559:8-17: WARNING use flexible-array
> member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:3896:27-37: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:5443:16-25: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:5454:34-43: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4603:21-32: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:6299:32-44: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4628:32-46: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:6285:29-39: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4296:30-36: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4756:28-36: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:4064:22-35: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7327:9-24: WARNING use flexible-array
> member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7332:32-53: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:6030:8-17: WARNING use flexible-array
> member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7362:26-41: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7369:29-44: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7349:24-32: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
> drivers/gpu/drm/radeon/atombios.h:7355:27-35: WARNING use flexible-
> array member instead
> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> length-and-one-element-arrays)
>
> Signed-off-by: José Pekkarinen <jose.pekkarinen@foxhound.fi>

Please verify that changing these to variable sized arrays does not break any calculations based on the old size in the driver.  More below.

> ---
>  drivers/gpu/drm/radeon/atombios.h | 54 +++++++++++++++----------------
>  1 file changed, 27 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/atombios.h
> b/drivers/gpu/drm/radeon/atombios.h
> index 8a6621f1e82c..7fa1606be92c 100644
> --- a/drivers/gpu/drm/radeon/atombios.h
> +++ b/drivers/gpu/drm/radeon/atombios.h
> @@ -3893,7 +3893,7 @@ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
> typedef struct _ATOM_GPIO_PIN_LUT  {
>    ATOM_COMMON_TABLE_HEADER  sHeader;
> -  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[1];
> +  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[];
>  }ATOM_GPIO_PIN_LUT;
>
>
> /******************************************************************
> **********/
> @@ -4061,7 +4061,7 @@ typedef struct
> _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT         //usSrcDstTableOffset
>    UCHAR               ucNumberOfSrc;
>    USHORT              usSrcObjectID[1];
>    UCHAR               ucNumberOfDst;
> -  USHORT              usDstObjectID[1];
> +  USHORT              usDstObjectID[];
>  }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
>
>
> @@ -4233,7 +4233,7 @@ typedef struct
> _ATOM_CONNECTOR_DEVICE_TAG_RECORD
>    ATOM_COMMON_RECORD_HEADER   sheader;
>    UCHAR                       ucNumberOfDevice;
>    UCHAR                       ucReserved;
> -  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[1];         //This Id is same as
> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
> +  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[];          //This Id is same as
> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
>  }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
>
>
> @@ -4293,7 +4293,7 @@ typedef struct
> _ATOM_OBJECT_GPIO_CNTL_RECORD
>    ATOM_COMMON_RECORD_HEADER   sheader;
>    UCHAR                       ucFlags;                // Future expnadibility
>    UCHAR                       ucNumberOfPins;         // Number of GPIO pins used to
> control the object
> -  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[1];              // the real gpio pin pair
> determined by number of pins ucNumberOfPins
> +  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[];               // the real gpio pin pair
> determined by number of pins ucNumberOfPins
>  }ATOM_OBJECT_GPIO_CNTL_RECORD;
>
>  //Definitions for GPIO pin state
> @@ -4444,7 +4444,7 @@ typedef struct
> _ATOM_BRACKET_LAYOUT_RECORD
>    UCHAR                       ucWidth;
>    UCHAR                       ucConnNum;
>    UCHAR                       ucReserved;
> -  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[1];
> +  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[];
>  }ATOM_BRACKET_LAYOUT_RECORD;
>
>
> /******************************************************************
> **********/
> @@ -4600,7 +4600,7 @@ typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
>     UCHAR    ucVoltageControlAddress;
>     UCHAR    ucVoltageControlOffset;
>     ULONG    ulReserved;
> -   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
> +   VOLTAGE_LUT_ENTRY asVolI2cLut[];         // end with 0xff
>  }ATOM_I2C_VOLTAGE_OBJECT_V3;
>
>  // ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
> @@ -4625,7 +4625,7 @@ typedef struct
> _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
>     UCHAR    ucLeakageEntryNum;           // indicate the entry number of
> LeakageId/Voltage Lut table
>     UCHAR    ucReserved[2];
>     ULONG    ulMaxVoltageLevel;
> -   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];
> +   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[];
>  }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
>
>
> @@ -4753,7 +4753,7 @@ typedef struct _ATOM_POWER_SOURCE_INFO  {
>               ATOM_COMMON_TABLE_HEADER                asHeader;
>               UCHAR
>                                       asPwrbehave[16];
> -             ATOM_POWER_SOURCE_OBJECT                asPwrObj[1];
> +             ATOM_POWER_SOURCE_OBJECT                asPwrObj[];
>  }ATOM_POWER_SOURCE_INFO;
>
>
> @@ -5440,7 +5440,7 @@ typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
> typedef struct _ATOM_I2C_DATA_RECORD  {
>    UCHAR         ucNunberOfBytes;                                              //Indicates how many
> bytes SW needs to write to the external ASIC for one block, besides to "Start"
> and "Stop"
> -  UCHAR         ucI2CData[1];                                                 //I2C data in bytes,
> should be less than 16 bytes usually
> +  UCHAR         ucI2CData[];                                                  //I2C data in bytes, should
> be less than 16 bytes usually
>  }ATOM_I2C_DATA_RECORD;
>
>
> @@ -5451,14 +5451,14 @@ typedef struct
> _ATOM_I2C_DEVICE_SETUP_INFO
>    UCHAR                                      ucSSChipID;             //SS chip being used
>    UCHAR                                      ucSSChipSlaveAddr;      //Slave Address to
> set up this SS chip
>    UCHAR                           ucNumOfI2CDataRecords;  //number of data block
> -  ATOM_I2C_DATA_RECORD            asI2CData[1];
> +  ATOM_I2C_DATA_RECORD            asI2CData[];
>  }ATOM_I2C_DEVICE_SETUP_INFO;
>
>
> //=================================================================
> =========================
>  typedef struct  _ATOM_ASIC_MVDD_INFO
>  {
>    ATOM_COMMON_TABLE_HEADER         sHeader;
> -  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[1];
> +  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[];
>  }ATOM_ASIC_MVDD_INFO;
>
>
> //=================================================================
> =========================
> @@ -5520,7 +5520,7 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
> typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2  {
>    ATOM_COMMON_TABLE_HEADER         sHeader;
> -  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[1];
> //this is point only.
> +  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[];
> //this is point only.
>  }ATOM_ASIC_INTERNAL_SS_INFO_V2;
>
>  typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3 @@ -5542,7 +5542,7 @@
> typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3  typedef struct
> _ATOM_ASIC_INTERNAL_SS_INFO_V3  {
>    ATOM_COMMON_TABLE_HEADER         sHeader;
> -  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[1];
> //this is pointer only.
> +  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[];
> //this is pointer only.
>  }ATOM_ASIC_INTERNAL_SS_INFO_V3;
>
>
> @@ -6027,7 +6027,7 @@ typedef struct _ENABLE_SCALER_PARAMETERS
>    UCHAR ucScaler;            // ATOM_SCALER1, ATOM_SCALER2
>    UCHAR ucEnable;            // ATOM_SCALER_DISABLE or
> ATOM_SCALER_CENTER or ATOM_SCALER_EXPANSION
>    UCHAR ucTVStandard;        //
> -  UCHAR ucPadding[1];
> +  UCHAR ucPadding[];

This may actually be a 1 element array.  It’s just padding at the end of the table.

>  }ENABLE_SCALER_PARAMETERS;
>  #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS
>
> @@ -6282,7 +6282,7 @@ typedef union
> _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>
>  typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
>       ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>       ulMemoryID;
> -     ULONG
>                                                               aulMemData[1];
> +     ULONG
>                                                               aulMemData[];
>  }ATOM_MEMORY_SETTING_DATA_BLOCK;
>
>
> @@ -6296,7 +6296,7 @@ typedef struct _ATOM_INIT_REG_BLOCK{
>       USHORT
>                                               usRegIndexTblSize;
>
>                       //size of asRegIndexBuf
>       USHORT
>                                               usRegDataBlkSize;
>
>                               //size of
> ATOM_MEMORY_SETTING_DATA_BLOCK
>       ATOM_INIT_REG_INDEX_FORMAT
>       asRegIndexBuf[1];
> -     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[1];
> +     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[];
>  }ATOM_INIT_REG_BLOCK;
>

This one needs special handling as you have multiple variable sized arrays.

>  #define END_OF_REG_INDEX_BLOCK  0x0ffff @@ -7041,7 +7041,7 @@
> typedef struct _ATOM_DISP_OUT_INFO
>       USHORT ptrTransmitterInfo;
>       USHORT ptrEncoderInfo;
>       ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
> -     ASIC_ENCODER_INFO      asEncoderInfo[1];
> +     ASIC_ENCODER_INFO      asEncoderInfo[];

Same here.

>  }ATOM_DISP_OUT_INFO;
>
>  typedef struct _ATOM_DISP_OUT_INFO_V2
> @@ -7051,7 +7051,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V2
>       USHORT ptrEncoderInfo;
>    USHORT ptrMainCallParserFar;                  // direct address of main parser call
> in VBIOS binary.
>       ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
> -     ASIC_ENCODER_INFO      asEncoderInfo[1];
> +     ASIC_ENCODER_INFO      asEncoderInfo[];

Same here.

>  }ATOM_DISP_OUT_INFO_V2;
>
>
> @@ -7092,7 +7092,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V3
>    UCHAR  ucCoreRefClkSource;                    // value of CORE_REF_CLK_SOURCE
>    UCHAR  ucDispCaps;
>    UCHAR  ucReserved[2];
> -  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for alligment only
> +  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[];      // for alligment only
>  }ATOM_DISP_OUT_INFO_V3;
>
>  //ucDispCaps
> @@ -7324,12 +7324,12 @@ typedef struct
> _CLOCK_CONDITION_SETTING_ENTRY{
>    USHORT usMaxClockFreq;
>    UCHAR  ucEncodeMode;
>    UCHAR  ucPhySel;
> -  ULONG  ulAnalogSetting[1];
> +  ULONG  ulAnalogSetting[];
>  }CLOCK_CONDITION_SETTING_ENTRY;
>
>  typedef struct _CLOCK_CONDITION_SETTING_INFO{
>    USHORT usEntrySize;
> -  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
> +  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[];
>  }CLOCK_CONDITION_SETTING_INFO;
>
>  typedef struct _PHY_CONDITION_REG_VAL{
> @@ -7346,27 +7346,27 @@ typedef struct _PHY_CONDITION_REG_VAL_V2{
> typedef struct _PHY_CONDITION_REG_INFO{
>    USHORT usRegIndex;
>    USHORT usSize;
> -  PHY_CONDITION_REG_VAL asRegVal[1];
> +  PHY_CONDITION_REG_VAL asRegVal[];
>  }PHY_CONDITION_REG_INFO;
>
>  typedef struct _PHY_CONDITION_REG_INFO_V2{
>    USHORT usRegIndex;
>    USHORT usSize;
> -  PHY_CONDITION_REG_VAL_V2 asRegVal[1];
> +  PHY_CONDITION_REG_VAL_V2 asRegVal[];
>  }PHY_CONDITION_REG_INFO_V2;
>
>  typedef struct _PHY_ANALOG_SETTING_INFO{
>    UCHAR  ucEncodeMode;
>    UCHAR  ucPhySel;
>    USHORT usSize;
> -  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
> +  PHY_CONDITION_REG_INFO  asAnalogSetting[];
>  }PHY_ANALOG_SETTING_INFO;
>
>  typedef struct _PHY_ANALOG_SETTING_INFO_V2{
>    UCHAR  ucEncodeMode;
>    UCHAR  ucPhySel;
>    USHORT usSize;
> -  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[1];
> +  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[];
>  }PHY_ANALOG_SETTING_INFO_V2;
>
>  typedef struct _GFX_HAVESTING_PARAMETERS { @@ -7550,13 +7550,13
> @@ typedef struct _ATOM_TMDS_INFO  typedef struct
> _ATOM_ENCODER_ANALOG_ATTRIBUTE  {
>    UCHAR ucTVStandard;     //Same as TV standards defined above,
> -  UCHAR ucPadding[1];
> +  UCHAR ucPadding[];

This may actually be a 1 element array.  It’s just padding at the end of the table.

>  }ATOM_ENCODER_ANALOG_ATTRIBUTE;
>
>  typedef struct _ATOM_ENCODER_DIGITAL_ATTRIBUTE  {
>    UCHAR ucAttribute;      //Same as other digital encoder attributes defined
> above
> -  UCHAR ucPadding[1];
> +  UCHAR ucPadding[];

Same here.

Alex

>  }ATOM_ENCODER_DIGITAL_ATTRIBUTE;
>
>  typedef union _ATOM_ENCODER_ATTRIBUTE
> --
> 2.39.2


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

* Re: [PATCH] drm/radeon: replace 1-element arrays with flexible-array members
  2023-10-27 17:55 ` Deucher, Alexander
@ 2023-10-28 11:29   ` José Pekkarinen
  2023-10-31 15:45     ` Alex Deucher
  0 siblings, 1 reply; 5+ messages in thread
From: José Pekkarinen @ 2023-10-28 11:29 UTC (permalink / raw)
  To: Deucher, Alexander
  Cc: Koenig, Christian, Pan, Xinhui, skhan, airlied, daniel, amd-gfx,
	dri-devel, linux-kernel, linux-kernel-mentees

On 2023-10-27 20:55, Deucher, Alexander wrote:
> [Public]
> 
>> -----Original Message-----
>> From: José Pekkarinen <jose.pekkarinen@foxhound.fi>
>> Sent: Friday, October 27, 2023 12:59 PM
>> To: Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig, Christian
>> <Christian.Koenig@amd.com>; Pan, Xinhui <Xinhui.Pan@amd.com>;
>> skhan@linuxfoundation.org
>> Cc: José Pekkarinen <jose.pekkarinen@foxhound.fi>; airlied@gmail.com;
>> daniel@ffwll.ch; amd-gfx@lists.freedesktop.org; dri-
>> devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; 
>> linux-kernel-
>> mentees@lists.linuxfoundation.org
>> Subject: [PATCH] drm/radeon: replace 1-element arrays with 
>> flexible-array
>> members
>> 
>> Reported by coccinelle, the following patch will move the following 1 
>> element
>> arrays to flexible arrays.
>> 
>> drivers/gpu/drm/radeon/atombios.h:5523:32-48: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:5545:32-48: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:5461:34-44: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4447:30-40: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4236:30-41: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7044:24-37: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7054:24-37: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7095:28-45: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7553:8-17: WARNING use 
>> flexible-array
>> member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7559:8-17: WARNING use 
>> flexible-array
>> member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:3896:27-37: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:5443:16-25: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:5454:34-43: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4603:21-32: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:6299:32-44: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4628:32-46: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:6285:29-39: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4296:30-36: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4756:28-36: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:4064:22-35: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7327:9-24: WARNING use 
>> flexible-array
>> member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7332:32-53: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:6030:8-17: WARNING use 
>> flexible-array
>> member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7362:26-41: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7369:29-44: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7349:24-32: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> drivers/gpu/drm/radeon/atombios.h:7355:27-35: WARNING use flexible-
>> array member instead
>> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> length-and-one-element-arrays)
>> 
>> Signed-off-by: José Pekkarinen <jose.pekkarinen@foxhound.fi>
> 
> Please verify that changing these to variable sized arrays does not
> break any calculations based on the old size in the driver.  More
> below.
> 
>> ---
>>  drivers/gpu/drm/radeon/atombios.h | 54 
>> +++++++++++++++----------------
>>  1 file changed, 27 insertions(+), 27 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/radeon/atombios.h
>> b/drivers/gpu/drm/radeon/atombios.h
>> index 8a6621f1e82c..7fa1606be92c 100644
>> --- a/drivers/gpu/drm/radeon/atombios.h
>> +++ b/drivers/gpu/drm/radeon/atombios.h
>> @@ -3893,7 +3893,7 @@ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
>> typedef struct _ATOM_GPIO_PIN_LUT  {
>>    ATOM_COMMON_TABLE_HEADER  sHeader;
>> -  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[1];
>> +  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[];
>>  }ATOM_GPIO_PIN_LUT;
>> 
>> 
>> /******************************************************************
>> **********/
>> @@ -4061,7 +4061,7 @@ typedef struct
>> _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT         //usSrcDstTableOffset
>>    UCHAR               ucNumberOfSrc;
>>    USHORT              usSrcObjectID[1];
>>    UCHAR               ucNumberOfDst;
>> -  USHORT              usDstObjectID[1];
>> +  USHORT              usDstObjectID[];
>>  }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
>> 
>> 
>> @@ -4233,7 +4233,7 @@ typedef struct
>> _ATOM_CONNECTOR_DEVICE_TAG_RECORD
>>    ATOM_COMMON_RECORD_HEADER   sheader;
>>    UCHAR                       ucNumberOfDevice;
>>    UCHAR                       ucReserved;
>> -  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[1];         //This Id is 
>> same as
>> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
>> +  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[];          //This Id is 
>> same as
>> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
>>  }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
>> 
>> 
>> @@ -4293,7 +4293,7 @@ typedef struct
>> _ATOM_OBJECT_GPIO_CNTL_RECORD
>>    ATOM_COMMON_RECORD_HEADER   sheader;
>>    UCHAR                       ucFlags;                // Future 
>> expnadibility
>>    UCHAR                       ucNumberOfPins;         // Number of 
>> GPIO pins used to
>> control the object
>> -  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[1];              // the real 
>> gpio pin pair
>> determined by number of pins ucNumberOfPins
>> +  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[];               // the real 
>> gpio pin pair
>> determined by number of pins ucNumberOfPins
>>  }ATOM_OBJECT_GPIO_CNTL_RECORD;
>> 
>>  //Definitions for GPIO pin state
>> @@ -4444,7 +4444,7 @@ typedef struct
>> _ATOM_BRACKET_LAYOUT_RECORD
>>    UCHAR                       ucWidth;
>>    UCHAR                       ucConnNum;
>>    UCHAR                       ucReserved;
>> -  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[1];
>> +  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[];
>>  }ATOM_BRACKET_LAYOUT_RECORD;
>> 
>> 
>> /******************************************************************
>> **********/
>> @@ -4600,7 +4600,7 @@ typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
>>     UCHAR    ucVoltageControlAddress;
>>     UCHAR    ucVoltageControlOffset;
>>     ULONG    ulReserved;
>> -   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
>> +   VOLTAGE_LUT_ENTRY asVolI2cLut[];         // end with 0xff
>>  }ATOM_I2C_VOLTAGE_OBJECT_V3;
>> 
>>  // ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
>> @@ -4625,7 +4625,7 @@ typedef struct
>> _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
>>     UCHAR    ucLeakageEntryNum;           // indicate the entry number 
>> of
>> LeakageId/Voltage Lut table
>>     UCHAR    ucReserved[2];
>>     ULONG    ulMaxVoltageLevel;
>> -   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];
>> +   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[];
>>  }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
>> 
>> 
>> @@ -4753,7 +4753,7 @@ typedef struct _ATOM_POWER_SOURCE_INFO  {
>>               ATOM_COMMON_TABLE_HEADER                asHeader;
>>               UCHAR
>>                                       asPwrbehave[16];
>> -             ATOM_POWER_SOURCE_OBJECT                asPwrObj[1];
>> +             ATOM_POWER_SOURCE_OBJECT                asPwrObj[];
>>  }ATOM_POWER_SOURCE_INFO;
>> 
>> 
>> @@ -5440,7 +5440,7 @@ typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
>> typedef struct _ATOM_I2C_DATA_RECORD  {
>>    UCHAR         ucNunberOfBytes;                                      
>>         //Indicates how many
>> bytes SW needs to write to the external ASIC for one block, besides to 
>> "Start"
>> and "Stop"
>> -  UCHAR         ucI2CData[1];                                         
>>         //I2C data in bytes,
>> should be less than 16 bytes usually
>> +  UCHAR         ucI2CData[];                                          
>>         //I2C data in bytes, should
>> be less than 16 bytes usually
>>  }ATOM_I2C_DATA_RECORD;
>> 
>> 
>> @@ -5451,14 +5451,14 @@ typedef struct
>> _ATOM_I2C_DEVICE_SETUP_INFO
>>    UCHAR                                      ucSSChipID;             
>> //SS chip being used
>>    UCHAR                                      ucSSChipSlaveAddr;      
>> //Slave Address to
>> set up this SS chip
>>    UCHAR                           ucNumOfI2CDataRecords;  //number of 
>> data block
>> -  ATOM_I2C_DATA_RECORD            asI2CData[1];
>> +  ATOM_I2C_DATA_RECORD            asI2CData[];
>>  }ATOM_I2C_DEVICE_SETUP_INFO;
>> 
>> 
>> //=================================================================
>> =========================
>>  typedef struct  _ATOM_ASIC_MVDD_INFO
>>  {
>>    ATOM_COMMON_TABLE_HEADER         sHeader;
>> -  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[1];
>> +  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[];
>>  }ATOM_ASIC_MVDD_INFO;
>> 
>> 
>> //=================================================================
>> =========================
>> @@ -5520,7 +5520,7 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
>> typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2  {
>>    ATOM_COMMON_TABLE_HEADER         sHeader;
>> -  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[1];
>> //this is point only.
>> +  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[];
>> //this is point only.
>>  }ATOM_ASIC_INTERNAL_SS_INFO_V2;
>> 
>>  typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3 @@ -5542,7 +5542,7 @@
>> typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3  typedef struct
>> _ATOM_ASIC_INTERNAL_SS_INFO_V3  {
>>    ATOM_COMMON_TABLE_HEADER         sHeader;
>> -  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[1];
>> //this is pointer only.
>> +  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[];
>> //this is pointer only.
>>  }ATOM_ASIC_INTERNAL_SS_INFO_V3;
>> 
>> 
>> @@ -6027,7 +6027,7 @@ typedef struct _ENABLE_SCALER_PARAMETERS
>>    UCHAR ucScaler;            // ATOM_SCALER1, ATOM_SCALER2
>>    UCHAR ucEnable;            // ATOM_SCALER_DISABLE or
>> ATOM_SCALER_CENTER or ATOM_SCALER_EXPANSION
>>    UCHAR ucTVStandard;        //
>> -  UCHAR ucPadding[1];
>> +  UCHAR ucPadding[];
> 
> This may actually be a 1 element array.  It’s just padding at the end
> of the table.
> 
>>  }ENABLE_SCALER_PARAMETERS;
>>  #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS
>> 
>> @@ -6282,7 +6282,7 @@ typedef union
>> _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>> 
>>  typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
>>       ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>>       ulMemoryID;
>> -     ULONG
>>                                                               
>> aulMemData[1];
>> +     ULONG
>>                                                               
>> aulMemData[];
>>  }ATOM_MEMORY_SETTING_DATA_BLOCK;
>> 
>> 
>> @@ -6296,7 +6296,7 @@ typedef struct _ATOM_INIT_REG_BLOCK{
>>       USHORT
>>                                               usRegIndexTblSize;
>> 
>>                       //size of asRegIndexBuf
>>       USHORT
>>                                               usRegDataBlkSize;
>> 
>>                               //size of
>> ATOM_MEMORY_SETTING_DATA_BLOCK
>>       ATOM_INIT_REG_INDEX_FORMAT
>>       asRegIndexBuf[1];
>> -     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[1];
>> +     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[];
>>  }ATOM_INIT_REG_BLOCK;
>> 
> 
> This one needs special handling as you have multiple variable sized 
> arrays.

     I'm happy to add any special handling in v2, though
I may need to understand what that special handling would
be. Would you mind to elaborate? Otherwise I can just leave
the sensitive cases and the paddings untouched and resend
the patch with the rest of cases converted.

> 
>>  #define END_OF_REG_INDEX_BLOCK  0x0ffff @@ -7041,7 +7041,7 @@
>> typedef struct _ATOM_DISP_OUT_INFO
>>       USHORT ptrTransmitterInfo;
>>       USHORT ptrEncoderInfo;
>>       ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
>> -     ASIC_ENCODER_INFO      asEncoderInfo[1];
>> +     ASIC_ENCODER_INFO      asEncoderInfo[];
> 
> Same here.
> 
>>  }ATOM_DISP_OUT_INFO;
>> 
>>  typedef struct _ATOM_DISP_OUT_INFO_V2
>> @@ -7051,7 +7051,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V2
>>       USHORT ptrEncoderInfo;
>>    USHORT ptrMainCallParserFar;                  // direct address of 
>> main parser call
>> in VBIOS binary.
>>       ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
>> -     ASIC_ENCODER_INFO      asEncoderInfo[1];
>> +     ASIC_ENCODER_INFO      asEncoderInfo[];
> 
> Same here.
> 
>>  }ATOM_DISP_OUT_INFO_V2;
>> 
>> 
>> @@ -7092,7 +7092,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V3
>>    UCHAR  ucCoreRefClkSource;                    // value of 
>> CORE_REF_CLK_SOURCE
>>    UCHAR  ucDispCaps;
>>    UCHAR  ucReserved[2];
>> -  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for 
>> alligment only
>> +  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[];      // for 
>> alligment only
>>  }ATOM_DISP_OUT_INFO_V3;
>> 
>>  //ucDispCaps
>> @@ -7324,12 +7324,12 @@ typedef struct
>> _CLOCK_CONDITION_SETTING_ENTRY{
>>    USHORT usMaxClockFreq;
>>    UCHAR  ucEncodeMode;
>>    UCHAR  ucPhySel;
>> -  ULONG  ulAnalogSetting[1];
>> +  ULONG  ulAnalogSetting[];
>>  }CLOCK_CONDITION_SETTING_ENTRY;
>> 
>>  typedef struct _CLOCK_CONDITION_SETTING_INFO{
>>    USHORT usEntrySize;
>> -  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
>> +  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[];
>>  }CLOCK_CONDITION_SETTING_INFO;
>> 
>>  typedef struct _PHY_CONDITION_REG_VAL{
>> @@ -7346,27 +7346,27 @@ typedef struct _PHY_CONDITION_REG_VAL_V2{
>> typedef struct _PHY_CONDITION_REG_INFO{
>>    USHORT usRegIndex;
>>    USHORT usSize;
>> -  PHY_CONDITION_REG_VAL asRegVal[1];
>> +  PHY_CONDITION_REG_VAL asRegVal[];
>>  }PHY_CONDITION_REG_INFO;
>> 
>>  typedef struct _PHY_CONDITION_REG_INFO_V2{
>>    USHORT usRegIndex;
>>    USHORT usSize;
>> -  PHY_CONDITION_REG_VAL_V2 asRegVal[1];
>> +  PHY_CONDITION_REG_VAL_V2 asRegVal[];
>>  }PHY_CONDITION_REG_INFO_V2;
>> 
>>  typedef struct _PHY_ANALOG_SETTING_INFO{
>>    UCHAR  ucEncodeMode;
>>    UCHAR  ucPhySel;
>>    USHORT usSize;
>> -  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
>> +  PHY_CONDITION_REG_INFO  asAnalogSetting[];
>>  }PHY_ANALOG_SETTING_INFO;
>> 
>>  typedef struct _PHY_ANALOG_SETTING_INFO_V2{
>>    UCHAR  ucEncodeMode;
>>    UCHAR  ucPhySel;
>>    USHORT usSize;
>> -  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[1];
>> +  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[];
>>  }PHY_ANALOG_SETTING_INFO_V2;
>> 
>>  typedef struct _GFX_HAVESTING_PARAMETERS { @@ -7550,13 +7550,13
>> @@ typedef struct _ATOM_TMDS_INFO  typedef struct
>> _ATOM_ENCODER_ANALOG_ATTRIBUTE  {
>>    UCHAR ucTVStandard;     //Same as TV standards defined above,
>> -  UCHAR ucPadding[1];
>> +  UCHAR ucPadding[];
> 
> This may actually be a 1 element array.  It’s just padding at the end
> of the table.
> 
>>  }ATOM_ENCODER_ANALOG_ATTRIBUTE;
>> 
>>  typedef struct _ATOM_ENCODER_DIGITAL_ATTRIBUTE  {
>>    UCHAR ucAttribute;      //Same as other digital encoder attributes 
>> defined
>> above
>> -  UCHAR ucPadding[1];
>> +  UCHAR ucPadding[];
> 
> Same here.
> 
> Alex
> 
>>  }ATOM_ENCODER_DIGITAL_ATTRIBUTE;
>> 
>>  typedef union _ATOM_ENCODER_ATTRIBUTE
>> --
>> 2.39.2

     Thanks for the comments!

     José.

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

* Re: [PATCH] drm/radeon: replace 1-element arrays with flexible-array members
  2023-10-28 11:29   ` José Pekkarinen
@ 2023-10-31 15:45     ` Alex Deucher
  2023-10-31 17:00       ` José Pekkarinen
  0 siblings, 1 reply; 5+ messages in thread
From: Alex Deucher @ 2023-10-31 15:45 UTC (permalink / raw)
  To: José Pekkarinen
  Cc: Deucher, Alexander, linux-kernel-mentees, Pan, Xinhui,
	linux-kernel, amd-gfx, dri-devel, skhan, Koenig, Christian

On Sat, Oct 28, 2023 at 8:05 AM José Pekkarinen
<jose.pekkarinen@foxhound.fi> wrote:
>
> On 2023-10-27 20:55, Deucher, Alexander wrote:
> > [Public]
> >
> >> -----Original Message-----
> >> From: José Pekkarinen <jose.pekkarinen@foxhound.fi>
> >> Sent: Friday, October 27, 2023 12:59 PM
> >> To: Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig, Christian
> >> <Christian.Koenig@amd.com>; Pan, Xinhui <Xinhui.Pan@amd.com>;
> >> skhan@linuxfoundation.org
> >> Cc: José Pekkarinen <jose.pekkarinen@foxhound.fi>; airlied@gmail.com;
> >> daniel@ffwll.ch; amd-gfx@lists.freedesktop.org; dri-
> >> devel@lists.freedesktop.org; linux-kernel@vger.kernel.org;
> >> linux-kernel-
> >> mentees@lists.linuxfoundation.org
> >> Subject: [PATCH] drm/radeon: replace 1-element arrays with
> >> flexible-array
> >> members
> >>
> >> Reported by coccinelle, the following patch will move the following 1
> >> element
> >> arrays to flexible arrays.
> >>
> >> drivers/gpu/drm/radeon/atombios.h:5523:32-48: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:5545:32-48: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:5461:34-44: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4447:30-40: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4236:30-41: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7044:24-37: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7054:24-37: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7095:28-45: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7553:8-17: WARNING use
> >> flexible-array
> >> member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7559:8-17: WARNING use
> >> flexible-array
> >> member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:3896:27-37: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:5443:16-25: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:5454:34-43: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4603:21-32: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:6299:32-44: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4628:32-46: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:6285:29-39: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4296:30-36: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4756:28-36: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:4064:22-35: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7327:9-24: WARNING use
> >> flexible-array
> >> member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7332:32-53: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:6030:8-17: WARNING use
> >> flexible-array
> >> member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7362:26-41: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7369:29-44: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7349:24-32: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >> drivers/gpu/drm/radeon/atombios.h:7355:27-35: WARNING use flexible-
> >> array member instead
> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
> >> length-and-one-element-arrays)
> >>
> >> Signed-off-by: José Pekkarinen <jose.pekkarinen@foxhound.fi>
> >
> > Please verify that changing these to variable sized arrays does not
> > break any calculations based on the old size in the driver.  More
> > below.
> >
> >> ---
> >>  drivers/gpu/drm/radeon/atombios.h | 54
> >> +++++++++++++++----------------
> >>  1 file changed, 27 insertions(+), 27 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/radeon/atombios.h
> >> b/drivers/gpu/drm/radeon/atombios.h
> >> index 8a6621f1e82c..7fa1606be92c 100644
> >> --- a/drivers/gpu/drm/radeon/atombios.h
> >> +++ b/drivers/gpu/drm/radeon/atombios.h
> >> @@ -3893,7 +3893,7 @@ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
> >> typedef struct _ATOM_GPIO_PIN_LUT  {
> >>    ATOM_COMMON_TABLE_HEADER  sHeader;
> >> -  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[1];
> >> +  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[];
> >>  }ATOM_GPIO_PIN_LUT;
> >>
> >>
> >> /******************************************************************
> >> **********/
> >> @@ -4061,7 +4061,7 @@ typedef struct
> >> _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT         //usSrcDstTableOffset
> >>    UCHAR               ucNumberOfSrc;
> >>    USHORT              usSrcObjectID[1];
> >>    UCHAR               ucNumberOfDst;
> >> -  USHORT              usDstObjectID[1];
> >> +  USHORT              usDstObjectID[];
> >>  }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
> >>
> >>
> >> @@ -4233,7 +4233,7 @@ typedef struct
> >> _ATOM_CONNECTOR_DEVICE_TAG_RECORD
> >>    ATOM_COMMON_RECORD_HEADER   sheader;
> >>    UCHAR                       ucNumberOfDevice;
> >>    UCHAR                       ucReserved;
> >> -  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[1];         //This Id is
> >> same as
> >> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
> >> +  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[];          //This Id is
> >> same as
> >> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
> >>  }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
> >>
> >>
> >> @@ -4293,7 +4293,7 @@ typedef struct
> >> _ATOM_OBJECT_GPIO_CNTL_RECORD
> >>    ATOM_COMMON_RECORD_HEADER   sheader;
> >>    UCHAR                       ucFlags;                // Future
> >> expnadibility
> >>    UCHAR                       ucNumberOfPins;         // Number of
> >> GPIO pins used to
> >> control the object
> >> -  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[1];              // the real
> >> gpio pin pair
> >> determined by number of pins ucNumberOfPins
> >> +  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[];               // the real
> >> gpio pin pair
> >> determined by number of pins ucNumberOfPins
> >>  }ATOM_OBJECT_GPIO_CNTL_RECORD;
> >>
> >>  //Definitions for GPIO pin state
> >> @@ -4444,7 +4444,7 @@ typedef struct
> >> _ATOM_BRACKET_LAYOUT_RECORD
> >>    UCHAR                       ucWidth;
> >>    UCHAR                       ucConnNum;
> >>    UCHAR                       ucReserved;
> >> -  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[1];
> >> +  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[];
> >>  }ATOM_BRACKET_LAYOUT_RECORD;
> >>
> >>
> >> /******************************************************************
> >> **********/
> >> @@ -4600,7 +4600,7 @@ typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
> >>     UCHAR    ucVoltageControlAddress;
> >>     UCHAR    ucVoltageControlOffset;
> >>     ULONG    ulReserved;
> >> -   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
> >> +   VOLTAGE_LUT_ENTRY asVolI2cLut[];         // end with 0xff
> >>  }ATOM_I2C_VOLTAGE_OBJECT_V3;
> >>
> >>  // ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
> >> @@ -4625,7 +4625,7 @@ typedef struct
> >> _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
> >>     UCHAR    ucLeakageEntryNum;           // indicate the entry number
> >> of
> >> LeakageId/Voltage Lut table
> >>     UCHAR    ucReserved[2];
> >>     ULONG    ulMaxVoltageLevel;
> >> -   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];
> >> +   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[];
> >>  }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
> >>
> >>
> >> @@ -4753,7 +4753,7 @@ typedef struct _ATOM_POWER_SOURCE_INFO  {
> >>               ATOM_COMMON_TABLE_HEADER                asHeader;
> >>               UCHAR
> >>                                       asPwrbehave[16];
> >> -             ATOM_POWER_SOURCE_OBJECT                asPwrObj[1];
> >> +             ATOM_POWER_SOURCE_OBJECT                asPwrObj[];
> >>  }ATOM_POWER_SOURCE_INFO;
> >>
> >>
> >> @@ -5440,7 +5440,7 @@ typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
> >> typedef struct _ATOM_I2C_DATA_RECORD  {
> >>    UCHAR         ucNunberOfBytes;
> >>         //Indicates how many
> >> bytes SW needs to write to the external ASIC for one block, besides to
> >> "Start"
> >> and "Stop"
> >> -  UCHAR         ucI2CData[1];
> >>         //I2C data in bytes,
> >> should be less than 16 bytes usually
> >> +  UCHAR         ucI2CData[];
> >>         //I2C data in bytes, should
> >> be less than 16 bytes usually
> >>  }ATOM_I2C_DATA_RECORD;
> >>
> >>
> >> @@ -5451,14 +5451,14 @@ typedef struct
> >> _ATOM_I2C_DEVICE_SETUP_INFO
> >>    UCHAR                                      ucSSChipID;
> >> //SS chip being used
> >>    UCHAR                                      ucSSChipSlaveAddr;
> >> //Slave Address to
> >> set up this SS chip
> >>    UCHAR                           ucNumOfI2CDataRecords;  //number of
> >> data block
> >> -  ATOM_I2C_DATA_RECORD            asI2CData[1];
> >> +  ATOM_I2C_DATA_RECORD            asI2CData[];
> >>  }ATOM_I2C_DEVICE_SETUP_INFO;
> >>
> >>
> >> //=================================================================
> >> =========================
> >>  typedef struct  _ATOM_ASIC_MVDD_INFO
> >>  {
> >>    ATOM_COMMON_TABLE_HEADER         sHeader;
> >> -  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[1];
> >> +  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[];
> >>  }ATOM_ASIC_MVDD_INFO;
> >>
> >>
> >> //=================================================================
> >> =========================
> >> @@ -5520,7 +5520,7 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
> >> typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2  {
> >>    ATOM_COMMON_TABLE_HEADER         sHeader;
> >> -  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[1];
> >> //this is point only.
> >> +  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[];
> >> //this is point only.
> >>  }ATOM_ASIC_INTERNAL_SS_INFO_V2;
> >>
> >>  typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3 @@ -5542,7 +5542,7 @@
> >> typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3  typedef struct
> >> _ATOM_ASIC_INTERNAL_SS_INFO_V3  {
> >>    ATOM_COMMON_TABLE_HEADER         sHeader;
> >> -  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[1];
> >> //this is pointer only.
> >> +  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[];
> >> //this is pointer only.
> >>  }ATOM_ASIC_INTERNAL_SS_INFO_V3;
> >>
> >>
> >> @@ -6027,7 +6027,7 @@ typedef struct _ENABLE_SCALER_PARAMETERS
> >>    UCHAR ucScaler;            // ATOM_SCALER1, ATOM_SCALER2
> >>    UCHAR ucEnable;            // ATOM_SCALER_DISABLE or
> >> ATOM_SCALER_CENTER or ATOM_SCALER_EXPANSION
> >>    UCHAR ucTVStandard;        //
> >> -  UCHAR ucPadding[1];
> >> +  UCHAR ucPadding[];
> >
> > This may actually be a 1 element array.  It’s just padding at the end
> > of the table.
> >
> >>  }ENABLE_SCALER_PARAMETERS;
> >>  #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS
> >>
> >> @@ -6282,7 +6282,7 @@ typedef union
> >> _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
> >>
> >>  typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
> >>       ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
> >>       ulMemoryID;
> >> -     ULONG
> >>
> >> aulMemData[1];
> >> +     ULONG
> >>
> >> aulMemData[];
> >>  }ATOM_MEMORY_SETTING_DATA_BLOCK;
> >>
> >>
> >> @@ -6296,7 +6296,7 @@ typedef struct _ATOM_INIT_REG_BLOCK{
> >>       USHORT
> >>                                               usRegIndexTblSize;
> >>
> >>                       //size of asRegIndexBuf
> >>       USHORT
> >>                                               usRegDataBlkSize;
> >>
> >>                               //size of
> >> ATOM_MEMORY_SETTING_DATA_BLOCK
> >>       ATOM_INIT_REG_INDEX_FORMAT
> >>       asRegIndexBuf[1];
> >> -     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[1];
> >> +     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[];
> >>  }ATOM_INIT_REG_BLOCK;
> >>
> >
> > This one needs special handling as you have multiple variable sized
> > arrays.
>
>      I'm happy to add any special handling in v2, though
> I may need to understand what that special handling would
> be. Would you mind to elaborate? Otherwise I can just leave
> the sensitive cases and the paddings untouched and resend
> the patch with the rest of cases converted.


I'm not sure how we want to handle back to back variable sized arrays.
I'd say just skip these cases for now.

Alex

>
> >
> >>  #define END_OF_REG_INDEX_BLOCK  0x0ffff @@ -7041,7 +7041,7 @@
> >> typedef struct _ATOM_DISP_OUT_INFO
> >>       USHORT ptrTransmitterInfo;
> >>       USHORT ptrEncoderInfo;
> >>       ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
> >> -     ASIC_ENCODER_INFO      asEncoderInfo[1];
> >> +     ASIC_ENCODER_INFO      asEncoderInfo[];
> >
> > Same here.
> >
> >>  }ATOM_DISP_OUT_INFO;
> >>
> >>  typedef struct _ATOM_DISP_OUT_INFO_V2
> >> @@ -7051,7 +7051,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V2
> >>       USHORT ptrEncoderInfo;
> >>    USHORT ptrMainCallParserFar;                  // direct address of
> >> main parser call
> >> in VBIOS binary.
> >>       ASIC_TRANSMITTER_INFO  asTransmitterInfo[1];
> >> -     ASIC_ENCODER_INFO      asEncoderInfo[1];
> >> +     ASIC_ENCODER_INFO      asEncoderInfo[];
> >
> > Same here.
> >
> >>  }ATOM_DISP_OUT_INFO_V2;
> >>
> >>
> >> @@ -7092,7 +7092,7 @@ typedef struct _ATOM_DISP_OUT_INFO_V3
> >>    UCHAR  ucCoreRefClkSource;                    // value of
> >> CORE_REF_CLK_SOURCE
> >>    UCHAR  ucDispCaps;
> >>    UCHAR  ucReserved[2];
> >> -  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[1];     // for
> >> alligment only
> >> +  ASIC_TRANSMITTER_INFO_V2  asTransmitterInfo[];      // for
> >> alligment only
> >>  }ATOM_DISP_OUT_INFO_V3;
> >>
> >>  //ucDispCaps
> >> @@ -7324,12 +7324,12 @@ typedef struct
> >> _CLOCK_CONDITION_SETTING_ENTRY{
> >>    USHORT usMaxClockFreq;
> >>    UCHAR  ucEncodeMode;
> >>    UCHAR  ucPhySel;
> >> -  ULONG  ulAnalogSetting[1];
> >> +  ULONG  ulAnalogSetting[];
> >>  }CLOCK_CONDITION_SETTING_ENTRY;
> >>
> >>  typedef struct _CLOCK_CONDITION_SETTING_INFO{
> >>    USHORT usEntrySize;
> >> -  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[1];
> >> +  CLOCK_CONDITION_SETTING_ENTRY asClkCondSettingEntry[];
> >>  }CLOCK_CONDITION_SETTING_INFO;
> >>
> >>  typedef struct _PHY_CONDITION_REG_VAL{
> >> @@ -7346,27 +7346,27 @@ typedef struct _PHY_CONDITION_REG_VAL_V2{
> >> typedef struct _PHY_CONDITION_REG_INFO{
> >>    USHORT usRegIndex;
> >>    USHORT usSize;
> >> -  PHY_CONDITION_REG_VAL asRegVal[1];
> >> +  PHY_CONDITION_REG_VAL asRegVal[];
> >>  }PHY_CONDITION_REG_INFO;
> >>
> >>  typedef struct _PHY_CONDITION_REG_INFO_V2{
> >>    USHORT usRegIndex;
> >>    USHORT usSize;
> >> -  PHY_CONDITION_REG_VAL_V2 asRegVal[1];
> >> +  PHY_CONDITION_REG_VAL_V2 asRegVal[];
> >>  }PHY_CONDITION_REG_INFO_V2;
> >>
> >>  typedef struct _PHY_ANALOG_SETTING_INFO{
> >>    UCHAR  ucEncodeMode;
> >>    UCHAR  ucPhySel;
> >>    USHORT usSize;
> >> -  PHY_CONDITION_REG_INFO  asAnalogSetting[1];
> >> +  PHY_CONDITION_REG_INFO  asAnalogSetting[];
> >>  }PHY_ANALOG_SETTING_INFO;
> >>
> >>  typedef struct _PHY_ANALOG_SETTING_INFO_V2{
> >>    UCHAR  ucEncodeMode;
> >>    UCHAR  ucPhySel;
> >>    USHORT usSize;
> >> -  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[1];
> >> +  PHY_CONDITION_REG_INFO_V2  asAnalogSetting[];
> >>  }PHY_ANALOG_SETTING_INFO_V2;
> >>
> >>  typedef struct _GFX_HAVESTING_PARAMETERS { @@ -7550,13 +7550,13
> >> @@ typedef struct _ATOM_TMDS_INFO  typedef struct
> >> _ATOM_ENCODER_ANALOG_ATTRIBUTE  {
> >>    UCHAR ucTVStandard;     //Same as TV standards defined above,
> >> -  UCHAR ucPadding[1];
> >> +  UCHAR ucPadding[];
> >
> > This may actually be a 1 element array.  It’s just padding at the end
> > of the table.
> >
> >>  }ATOM_ENCODER_ANALOG_ATTRIBUTE;
> >>
> >>  typedef struct _ATOM_ENCODER_DIGITAL_ATTRIBUTE  {
> >>    UCHAR ucAttribute;      //Same as other digital encoder attributes
> >> defined
> >> above
> >> -  UCHAR ucPadding[1];
> >> +  UCHAR ucPadding[];
> >
> > Same here.
> >
> > Alex
> >
> >>  }ATOM_ENCODER_DIGITAL_ATTRIBUTE;
> >>
> >>  typedef union _ATOM_ENCODER_ATTRIBUTE
> >> --
> >> 2.39.2
>
>      Thanks for the comments!
>
>      José.

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

* Re: [PATCH] drm/radeon: replace 1-element arrays with flexible-array members
  2023-10-31 15:45     ` Alex Deucher
@ 2023-10-31 17:00       ` José Pekkarinen
  0 siblings, 0 replies; 5+ messages in thread
From: José Pekkarinen @ 2023-10-31 17:00 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Deucher, Alexander, linux-kernel-mentees, Pan, Xinhui,
	linux-kernel, amd-gfx, dri-devel, skhan, Koenig, Christian

On 2023-10-31 17:45, Alex Deucher wrote:
> On Sat, Oct 28, 2023 at 8:05 AM José Pekkarinen
> <jose.pekkarinen@foxhound.fi> wrote:
>> 
>> On 2023-10-27 20:55, Deucher, Alexander wrote:
>> > [Public]
>> >
>> >> -----Original Message-----
>> >> From: José Pekkarinen <jose.pekkarinen@foxhound.fi>
>> >> Sent: Friday, October 27, 2023 12:59 PM
>> >> To: Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig, Christian
>> >> <Christian.Koenig@amd.com>; Pan, Xinhui <Xinhui.Pan@amd.com>;
>> >> skhan@linuxfoundation.org
>> >> Cc: José Pekkarinen <jose.pekkarinen@foxhound.fi>; airlied@gmail.com;
>> >> daniel@ffwll.ch; amd-gfx@lists.freedesktop.org; dri-
>> >> devel@lists.freedesktop.org; linux-kernel@vger.kernel.org;
>> >> linux-kernel-
>> >> mentees@lists.linuxfoundation.org
>> >> Subject: [PATCH] drm/radeon: replace 1-element arrays with
>> >> flexible-array
>> >> members
>> >>
>> >> Reported by coccinelle, the following patch will move the following 1
>> >> element
>> >> arrays to flexible arrays.
>> >>
>> >> drivers/gpu/drm/radeon/atombios.h:5523:32-48: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:5545:32-48: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:5461:34-44: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4447:30-40: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4236:30-41: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7044:24-37: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7054:24-37: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7095:28-45: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7553:8-17: WARNING use
>> >> flexible-array
>> >> member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7559:8-17: WARNING use
>> >> flexible-array
>> >> member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:3896:27-37: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:5443:16-25: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:5454:34-43: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4603:21-32: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:6299:32-44: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4628:32-46: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:6285:29-39: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4296:30-36: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4756:28-36: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:4064:22-35: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7327:9-24: WARNING use
>> >> flexible-array
>> >> member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7332:32-53: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:6030:8-17: WARNING use
>> >> flexible-array
>> >> member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7362:26-41: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7369:29-44: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7349:24-32: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >> drivers/gpu/drm/radeon/atombios.h:7355:27-35: WARNING use flexible-
>> >> array member instead
>> >> (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-
>> >> length-and-one-element-arrays)
>> >>
>> >> Signed-off-by: José Pekkarinen <jose.pekkarinen@foxhound.fi>
>> >
>> > Please verify that changing these to variable sized arrays does not
>> > break any calculations based on the old size in the driver.  More
>> > below.
>> >
>> >> ---
>> >>  drivers/gpu/drm/radeon/atombios.h | 54
>> >> +++++++++++++++----------------
>> >>  1 file changed, 27 insertions(+), 27 deletions(-)
>> >>
>> >> diff --git a/drivers/gpu/drm/radeon/atombios.h
>> >> b/drivers/gpu/drm/radeon/atombios.h
>> >> index 8a6621f1e82c..7fa1606be92c 100644
>> >> --- a/drivers/gpu/drm/radeon/atombios.h
>> >> +++ b/drivers/gpu/drm/radeon/atombios.h
>> >> @@ -3893,7 +3893,7 @@ typedef struct _ATOM_GPIO_PIN_ASSIGNMENT
>> >> typedef struct _ATOM_GPIO_PIN_LUT  {
>> >>    ATOM_COMMON_TABLE_HEADER  sHeader;
>> >> -  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[1];
>> >> +  ATOM_GPIO_PIN_ASSIGNMENT   asGPIO_Pin[];
>> >>  }ATOM_GPIO_PIN_LUT;
>> >>
>> >>
>> >> /******************************************************************
>> >> **********/
>> >> @@ -4061,7 +4061,7 @@ typedef struct
>> >> _ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT         //usSrcDstTableOffset
>> >>    UCHAR               ucNumberOfSrc;
>> >>    USHORT              usSrcObjectID[1];
>> >>    UCHAR               ucNumberOfDst;
>> >> -  USHORT              usDstObjectID[1];
>> >> +  USHORT              usDstObjectID[];
>> >>  }ATOM_SRC_DST_TABLE_FOR_ONE_OBJECT;
>> >>
>> >>
>> >> @@ -4233,7 +4233,7 @@ typedef struct
>> >> _ATOM_CONNECTOR_DEVICE_TAG_RECORD
>> >>    ATOM_COMMON_RECORD_HEADER   sheader;
>> >>    UCHAR                       ucNumberOfDevice;
>> >>    UCHAR                       ucReserved;
>> >> -  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[1];         //This Id is
>> >> same as
>> >> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
>> >> +  ATOM_CONNECTOR_DEVICE_TAG   asDeviceTag[];          //This Id is
>> >> same as
>> >> "ATOM_DEVICE_XXX_SUPPORT", 1 is only for allocation
>> >>  }ATOM_CONNECTOR_DEVICE_TAG_RECORD;
>> >>
>> >>
>> >> @@ -4293,7 +4293,7 @@ typedef struct
>> >> _ATOM_OBJECT_GPIO_CNTL_RECORD
>> >>    ATOM_COMMON_RECORD_HEADER   sheader;
>> >>    UCHAR                       ucFlags;                // Future
>> >> expnadibility
>> >>    UCHAR                       ucNumberOfPins;         // Number of
>> >> GPIO pins used to
>> >> control the object
>> >> -  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[1];              // the real
>> >> gpio pin pair
>> >> determined by number of pins ucNumberOfPins
>> >> +  ATOM_GPIO_PIN_CONTROL_PAIR  asGpio[];               // the real
>> >> gpio pin pair
>> >> determined by number of pins ucNumberOfPins
>> >>  }ATOM_OBJECT_GPIO_CNTL_RECORD;
>> >>
>> >>  //Definitions for GPIO pin state
>> >> @@ -4444,7 +4444,7 @@ typedef struct
>> >> _ATOM_BRACKET_LAYOUT_RECORD
>> >>    UCHAR                       ucWidth;
>> >>    UCHAR                       ucConnNum;
>> >>    UCHAR                       ucReserved;
>> >> -  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[1];
>> >> +  ATOM_CONNECTOR_LAYOUT_INFO  asConnInfo[];
>> >>  }ATOM_BRACKET_LAYOUT_RECORD;
>> >>
>> >>
>> >> /******************************************************************
>> >> **********/
>> >> @@ -4600,7 +4600,7 @@ typedef struct  _ATOM_I2C_VOLTAGE_OBJECT_V3
>> >>     UCHAR    ucVoltageControlAddress;
>> >>     UCHAR    ucVoltageControlOffset;
>> >>     ULONG    ulReserved;
>> >> -   VOLTAGE_LUT_ENTRY asVolI2cLut[1];        // end with 0xff
>> >> +   VOLTAGE_LUT_ENTRY asVolI2cLut[];         // end with 0xff
>> >>  }ATOM_I2C_VOLTAGE_OBJECT_V3;
>> >>
>> >>  // ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
>> >> @@ -4625,7 +4625,7 @@ typedef struct
>> >> _ATOM_LEAKAGE_VOLTAGE_OBJECT_V3
>> >>     UCHAR    ucLeakageEntryNum;           // indicate the entry number
>> >> of
>> >> LeakageId/Voltage Lut table
>> >>     UCHAR    ucReserved[2];
>> >>     ULONG    ulMaxVoltageLevel;
>> >> -   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[1];
>> >> +   LEAKAGE_VOLTAGE_LUT_ENTRY_V2 asLeakageIdLut[];
>> >>  }ATOM_LEAKAGE_VOLTAGE_OBJECT_V3;
>> >>
>> >>
>> >> @@ -4753,7 +4753,7 @@ typedef struct _ATOM_POWER_SOURCE_INFO  {
>> >>               ATOM_COMMON_TABLE_HEADER                asHeader;
>> >>               UCHAR
>> >>                                       asPwrbehave[16];
>> >> -             ATOM_POWER_SOURCE_OBJECT                asPwrObj[1];
>> >> +             ATOM_POWER_SOURCE_OBJECT                asPwrObj[];
>> >>  }ATOM_POWER_SOURCE_INFO;
>> >>
>> >>
>> >> @@ -5440,7 +5440,7 @@ typedef struct _ATOM_FUSION_SYSTEM_INFO_V2
>> >> typedef struct _ATOM_I2C_DATA_RECORD  {
>> >>    UCHAR         ucNunberOfBytes;
>> >>         //Indicates how many
>> >> bytes SW needs to write to the external ASIC for one block, besides to
>> >> "Start"
>> >> and "Stop"
>> >> -  UCHAR         ucI2CData[1];
>> >>         //I2C data in bytes,
>> >> should be less than 16 bytes usually
>> >> +  UCHAR         ucI2CData[];
>> >>         //I2C data in bytes, should
>> >> be less than 16 bytes usually
>> >>  }ATOM_I2C_DATA_RECORD;
>> >>
>> >>
>> >> @@ -5451,14 +5451,14 @@ typedef struct
>> >> _ATOM_I2C_DEVICE_SETUP_INFO
>> >>    UCHAR                                      ucSSChipID;
>> >> //SS chip being used
>> >>    UCHAR                                      ucSSChipSlaveAddr;
>> >> //Slave Address to
>> >> set up this SS chip
>> >>    UCHAR                           ucNumOfI2CDataRecords;  //number of
>> >> data block
>> >> -  ATOM_I2C_DATA_RECORD            asI2CData[1];
>> >> +  ATOM_I2C_DATA_RECORD            asI2CData[];
>> >>  }ATOM_I2C_DEVICE_SETUP_INFO;
>> >>
>> >>
>> >> //=================================================================
>> >> =========================
>> >>  typedef struct  _ATOM_ASIC_MVDD_INFO
>> >>  {
>> >>    ATOM_COMMON_TABLE_HEADER         sHeader;
>> >> -  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[1];
>> >> +  ATOM_I2C_DEVICE_SETUP_INFO      asI2CSetup[];
>> >>  }ATOM_ASIC_MVDD_INFO;
>> >>
>> >>
>> >> //=================================================================
>> >> =========================
>> >> @@ -5520,7 +5520,7 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO
>> >> typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2  {
>> >>    ATOM_COMMON_TABLE_HEADER         sHeader;
>> >> -  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[1];
>> >> //this is point only.
>> >> +  ATOM_ASIC_SS_ASSIGNMENT_V2           asSpreadSpectrum[];
>> >> //this is point only.
>> >>  }ATOM_ASIC_INTERNAL_SS_INFO_V2;
>> >>
>> >>  typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3 @@ -5542,7 +5542,7 @@
>> >> typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3  typedef struct
>> >> _ATOM_ASIC_INTERNAL_SS_INFO_V3  {
>> >>    ATOM_COMMON_TABLE_HEADER         sHeader;
>> >> -  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[1];
>> >> //this is pointer only.
>> >> +  ATOM_ASIC_SS_ASSIGNMENT_V3           asSpreadSpectrum[];
>> >> //this is pointer only.
>> >>  }ATOM_ASIC_INTERNAL_SS_INFO_V3;
>> >>
>> >>
>> >> @@ -6027,7 +6027,7 @@ typedef struct _ENABLE_SCALER_PARAMETERS
>> >>    UCHAR ucScaler;            // ATOM_SCALER1, ATOM_SCALER2
>> >>    UCHAR ucEnable;            // ATOM_SCALER_DISABLE or
>> >> ATOM_SCALER_CENTER or ATOM_SCALER_EXPANSION
>> >>    UCHAR ucTVStandard;        //
>> >> -  UCHAR ucPadding[1];
>> >> +  UCHAR ucPadding[];
>> >
>> > This may actually be a 1 element array.  It’s just padding at the end
>> > of the table.
>> >
>> >>  }ENABLE_SCALER_PARAMETERS;
>> >>  #define ENABLE_SCALER_PS_ALLOCATION ENABLE_SCALER_PARAMETERS
>> >>
>> >> @@ -6282,7 +6282,7 @@ typedef union
>> >> _ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>> >>
>> >>  typedef struct _ATOM_MEMORY_SETTING_DATA_BLOCK{
>> >>       ATOM_MEMORY_SETTING_ID_CONFIG_ACCESS
>> >>       ulMemoryID;
>> >> -     ULONG
>> >>
>> >> aulMemData[1];
>> >> +     ULONG
>> >>
>> >> aulMemData[];
>> >>  }ATOM_MEMORY_SETTING_DATA_BLOCK;
>> >>
>> >>
>> >> @@ -6296,7 +6296,7 @@ typedef struct _ATOM_INIT_REG_BLOCK{
>> >>       USHORT
>> >>                                               usRegIndexTblSize;
>> >>
>> >>                       //size of asRegIndexBuf
>> >>       USHORT
>> >>                                               usRegDataBlkSize;
>> >>
>> >>                               //size of
>> >> ATOM_MEMORY_SETTING_DATA_BLOCK
>> >>       ATOM_INIT_REG_INDEX_FORMAT
>> >>       asRegIndexBuf[1];
>> >> -     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[1];
>> >> +     ATOM_MEMORY_SETTING_DATA_BLOCK  asRegDataBuf[];
>> >>  }ATOM_INIT_REG_BLOCK;
>> >>
>> >
>> > This one needs special handling as you have multiple variable sized
>> > arrays.
>> 
>>      I'm happy to add any special handling in v2, though
>> I may need to understand what that special handling would
>> be. Would you mind to elaborate? Otherwise I can just leave
>> the sensitive cases and the paddings untouched and resend
>> the patch with the rest of cases converted.
> 
> 
> I'm not sure how we want to handle back to back variable sized arrays.
> I'd say just skip these cases for now.

     Very good, I'll be sending v2 soon. thanks for the comments!

     José.

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

end of thread, other threads:[~2023-10-31 17:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-27 16:58 [PATCH] drm/radeon: replace 1-element arrays with flexible-array members José Pekkarinen
2023-10-27 17:55 ` Deucher, Alexander
2023-10-28 11:29   ` José Pekkarinen
2023-10-31 15:45     ` Alex Deucher
2023-10-31 17:00       ` José Pekkarinen

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