drm/amdgpu: Use flexible array member
authorLijo Lazar <lijo.lazar@amd.com>
Fri, 8 Apr 2022 03:41:04 +0000 (09:11 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 11 Apr 2022 17:50:35 +0000 (13:50 -0400)
Use flexible array member in ip discovery struct as recommended[1].

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays

v2: squash in struct_size fixes

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
drivers/gpu/drm/amd/include/discovery.h

index 5a18228..aaf2fc6 100644 (file)
@@ -430,7 +430,7 @@ static void amdgpu_discovery_read_harvest_bit_per_ip(struct amdgpu_device *adev,
                                 }
                         }
 next_ip:
-                       ip_offset += sizeof(*ip) + 4 * (ip->num_base_address - 1);
+                       ip_offset += struct_size(ip, base_address, ip->num_base_address);
                }
        }
 }
@@ -798,7 +798,7 @@ static int amdgpu_discovery_sysfs_ips(struct amdgpu_device *adev,
                        res = kobject_add(&ip_hw_instance->kobj, NULL,
                                          "%d", ip_hw_instance->num_instance);
 next_ip:
-                       ip_offset += sizeof(*ip) + 4 * (ip->num_base_address - 1);
+                       ip_offset += struct_size(ip, base_address, ip->num_base_address);
                }
        }
 
@@ -1063,7 +1063,7 @@ int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev)
                        }
 
 next_ip:
-                       ip_offset += sizeof(*ip) + 4 * (ip->num_base_address - 1);
+                       ip_offset += struct_size(ip, base_address, ip->num_base_address);
                }
        }
 
@@ -1113,7 +1113,7 @@ int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int hw_id, int n
                                        *revision = ip->revision;
                                return 0;
                        }
-                       ip_offset += sizeof(*ip) + 4 * (ip->num_base_address - 1);
+                       ip_offset += struct_size(ip, base_address, ip->num_base_address);
                }
        }
 
index a486769..b25026c 100644 (file)
@@ -93,7 +93,7 @@ typedef struct ip
        uint8_t harvest : 4;      /* Harvest */
        uint8_t reserved : 4;     /* Placeholder field */
 #endif
-       uint32_t base_address[1]; /* variable number of Addresses */
+       uint32_t base_address[]; /* variable number of Addresses */
 } ip;
 
 typedef struct die_header