Skip to contentSkip to conversation

scsi: pm80xx: Avoid -Wflex-array-member-not-at-end warnings

PATCH Superseded Gustavo A. R. Silva 4 participants 4 messages Sep 4, 2025 – Sep 8, 2025

Subsystems (2)

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 scsi: pm80xx: Avoid -Wflex-array-member-not-at-end warnings

Remove unused field residual_count in a couple of structures, and with this, fix the following -Wflex-array-member-not-at-end warnings:

drivers/scsi/pm8001/pm8001_hwi.h:342:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] drivers/scsi/pm8001/pm80xx_hwi.h:561:32: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

---
Changes in v2:
- Remove unused field residual_count. (James)

v1:
- Link: https://lore.kernel.org/linux-hardening/aLiMoNzLs1_bu4eJ@kspp/

 drivers/scsi/pm8001/pm8001_hwi.h | 3 ++-
 drivers/scsi/pm8001/pm80xx_hwi.h | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
drivers/scsi/pm8001/pm8001_hwi.h +2 -1
index fc2127dcb58d..170853dbf952 100644
@@ -339,8 +339,9 @@ struct ssp_completion_resp {
 	__le32	status;
 	__le32	param;
 	__le32	ssptag_rescv_rescpad;
+
+	/* Must be last --ends in a flexible-array member. */
 	struct ssp_response_iu  ssp_resp_iu;
-	__le32	residual_count;
 } __attribute__((packed, aligned(4)));
 
 
drivers/scsi/pm8001/pm80xx_hwi.h +2 -1
index eb8fd37b2066..b13d42701b1b 100644
@@ -558,8 +558,9 @@ struct ssp_completion_resp {
 	__le32	status;
 	__le32	param;
 	__le32	ssptag_rescv_rescpad;
+
+	/* Must be last --ends in a flexible-array member. */
 	struct ssp_response_iu ssp_resp_iu;
-	__le32	residual_count;
 } __attribute__((packed, aligned(4)));
 
 #define SSP_RESCV_BIT	0x00010000
Signature · 1 line
2.43.0
Reviewed-by on v2 1/1
#1 lore raw
Quoted 9 lines · Gustavo A. R. Silva

Remove unused field residual_count in a couple of structures, and with this, fix the following -Wflex-array-member-not-at-end warnings:

drivers/scsi/pm8001/pm8001_hwi.h:342:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] drivers/scsi/pm8001/pm80xx_hwi.h:561:32: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

oh, indeed, v1 is wrong, and v2 is right fix.

Quoted 44 lines

---
Changes in v2:
- Remove unused field residual_count. (James)

v1:
- Link: https://lore.kernel.org/linux-hardening/aLiMoNzLs1_bu4eJ@kspp/

 drivers/scsi/pm8001/pm8001_hwi.h | 3 ++-
 drivers/scsi/pm8001/pm80xx_hwi.h | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
drivers/scsi/pm8001/pm8001_hwi.h +2 -1
index fc2127dcb58d..170853dbf952 100644
@@ -339,8 +339,9 @@ struct ssp_completion_resp {
        __le32  status;
        __le32  param;
        __le32  ssptag_rescv_rescpad;
+
+       /* Must be last --ends in a flexible-array member. */
        struct ssp_response_iu  ssp_resp_iu;
-       __le32  residual_count;
 } __attribute__((packed, aligned(4)));
 
 
drivers/scsi/pm8001/pm80xx_hwi.h +2 -2
index eb8fd37b2066..b13d42701b1b 100644
@@ -558,8 +558,9 @@ struct ssp_completion_resp {
        __le32  status;
        __le32  param;
        __le32  ssptag_rescv_rescpad;
+
+       /* Must be last --ends in a flexible-array member. */
        struct ssp_response_iu ssp_resp_iu;
-       __le32  residual_count;
 } __attribute__((packed, aligned(4)));
 
 #define SSP_RESCV_BIT  0x00010000
--

2.43.0

Reviewed-by on v2 1/1
#2 lore raw
In reply to Gustavo A. R. Silva
Quoted 8 lines · Gustavo A. R. Silva

Remove unused field residual_count in a couple of structures, and with this, fix the following -Wflex-array-member-not-at-end warnings:

drivers/scsi/pm8001/pm8001_hwi.h:342:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] drivers/scsi/pm8001/pm80xx_hwi.h:561:32: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

Personally I think that it would be better to comment-out the residual_count member, so that future developers can know about this field and why it is not there.

Anyway,

Quoted 41 lines

---
Changes in v2:
- Remove unused field residual_count. (James)

v1:
- Link: https://urldefense.com/v3/__https://lore.kernel.org/linux-hardening/aLiMoNzLs1_bu4eJ@kspp/__;!!ACWV5N9M2RV99hQ!OLkXLNymYqQz8gxMAEHXcks7WQ22V0FhWPT1wD58j2Zoq0rgh_0zDnxZnBV0wK-FEGTDmnSbCMbqSVJGScIysEk$

  drivers/scsi/pm8001/pm8001_hwi.h | 3 ++-
  drivers/scsi/pm8001/pm80xx_hwi.h | 3 ++-
  2 files changed, 4 insertions(+), 2 deletions(-)
drivers/scsi/pm8001/pm8001_hwi.h +2 -1
index fc2127dcb58d..170853dbf952 100644
@@ -339,8 +339,9 @@ struct ssp_completion_resp {
  	__le32	status;
  	__le32	param;
  	__le32	ssptag_rescv_rescpad;
+
+	/* Must be last --ends in a flexible-array member. */
  	struct ssp_response_iu  ssp_resp_iu;
-	__le32	residual_count;
  } __attribute__((packed, aligned(4)));
 
 
drivers/scsi/pm8001/pm80xx_hwi.h +2 -1
index eb8fd37b2066..b13d42701b1b 100644
@@ -558,8 +558,9 @@ struct ssp_completion_resp {
  	__le32	status;
  	__le32	param;
  	__le32	ssptag_rescv_rescpad;
+
+	/* Must be last --ends in a flexible-array member. */
  	struct ssp_response_iu ssp_resp_iu;
-	__le32	residual_count;
  } __attribute__((packed, aligned(4)));
 
  #define SSP_RESCV_BIT	0x00010000
#3 lore raw
Quoted 11 lines · John Garry
Quoted 8 lines · Gustavo A. R. Silva

Remove unused field residual_count in a couple of structures, and with this, fix the following -Wflex-array-member-not-at-end warnings:

drivers/scsi/pm8001/pm8001_hwi.h:342:33: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member- not-at-end] drivers/scsi/pm8001/pm80xx_hwi.h:561:32: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member- not-at-end]

Personally I think that it would be better to comment-out the residual_count member, so that future developers can know about this field and why it is not there.

I agree. I'll send v3.

Quoted 4 lines

Anyway,

Thanks!
-Gustavo