* [PATCH][next] scsi: mptlan: Replace one-element array with flexible-array member
@ 2021-03-24 23:33 Gustavo A. R. Silva
2021-04-06 4:53 ` Martin K. Petersen
0 siblings, 1 reply; 3+ messages in thread
From: Gustavo A. R. Silva @ 2021-03-24 23:33 UTC (permalink / raw)
To: Sathya Prakash, Sreekanth Reddy, Suganath Prabu Subramani
Cc: MPT-FusionLinux.pdl, linux-scsi, linux-kernel,
Gustavo A. R. Silva, linux-hardening
There is a regular need in the kernel to provide a way to declare having
a dynamically sized set of trailing elements in a structure. Kernel code
should always use “flexible array members”[1] for these cases. The older
style of one-element or zero-length arrays should no longer be used[2].
Refactor the code according to the use of a flexible-array member in
struct _SGE_TRANSACTION32 instead of one-element array.
Also, this helps with the ongoing efforts to enable -Warray-bounds by
fixing the following warning:
CC [M] drivers/message/fusion/mptlan.o
drivers/message/fusion/mptlan.c: In function ‘mpt_lan_sdu_send’:
drivers/message/fusion/mptlan.c:759:28: warning: array subscript 1 is above array bounds of ‘U32[1]’ {aka ‘unsigned int[1]’} [-Warray-bounds]
759 | pTrans->TransactionDetails[1] = cpu_to_le32((mac[2] << 24) |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/v5.10/process/deprecated.html#zero-length-and-one-element-arrays
Link: https://github.com/KSPP/linux/issues/79
Link: https://github.com/KSPP/linux/issues/109
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
drivers/message/fusion/lsi/mpi.h | 4 ++--
drivers/message/fusion/mptlan.c | 9 +++------
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/drivers/message/fusion/lsi/mpi.h b/drivers/message/fusion/lsi/mpi.h
index a575545d681f..eccbe54d43f3 100644
--- a/drivers/message/fusion/lsi/mpi.h
+++ b/drivers/message/fusion/lsi/mpi.h
@@ -424,8 +424,8 @@ typedef struct _SGE_TRANSACTION32
U8 ContextSize;
U8 DetailsLength;
U8 Flags;
- U32 TransactionContext[1];
- U32 TransactionDetails[1];
+ U32 TransactionContext;
+ U32 TransactionDetails[];
} SGE_TRANSACTION32, MPI_POINTER PTR_SGE_TRANSACTION32,
SGETransaction32_t, MPI_POINTER pSGETransaction32_t;
diff --git a/drivers/message/fusion/mptlan.c b/drivers/message/fusion/mptlan.c
index 7d3784aa20e5..3261cac762de 100644
--- a/drivers/message/fusion/mptlan.c
+++ b/drivers/message/fusion/mptlan.c
@@ -72,9 +72,6 @@ MODULE_VERSION(my_VERSION);
#define MPT_LAN_RECEIVE_POST_REQUEST_SIZE \
(sizeof(LANReceivePostRequest_t) - sizeof(SGE_MPI_UNION))
-#define MPT_LAN_TRANSACTION32_SIZE \
- (sizeof(SGETransaction32_t) - sizeof(u32))
-
/*
* Fusion MPT LAN private structures
*/
@@ -745,7 +742,7 @@ mpt_lan_sdu_send (struct sk_buff *skb, struct net_device *dev)
pTrans->ContextSize = sizeof(u32);
pTrans->DetailsLength = 2 * sizeof(u32);
pTrans->Flags = 0;
- pTrans->TransactionContext[0] = cpu_to_le32(ctx);
+ pTrans->TransactionContext = cpu_to_le32(ctx);
// dioprintk((KERN_INFO MYNAM ": %s/%s: BC = %08x, skb = %p, buff = %p\n",
// IOC_AND_NETDEV_NAMES_s_s(dev),
@@ -1159,7 +1156,7 @@ mpt_lan_post_receive_buckets(struct mpt_lan_priv *priv)
__func__, buckets, curr));
max = (mpt_dev->req_sz - MPT_LAN_RECEIVE_POST_REQUEST_SIZE) /
- (MPT_LAN_TRANSACTION32_SIZE + sizeof(SGESimple64_t));
+ (sizeof(SGETransaction32_t) + sizeof(SGESimple64_t));
while (buckets) {
mf = mpt_get_msg_frame(LanCtx, mpt_dev);
@@ -1234,7 +1231,7 @@ mpt_lan_post_receive_buckets(struct mpt_lan_priv *priv)
pTrans->ContextSize = sizeof(u32);
pTrans->DetailsLength = 0;
pTrans->Flags = 0;
- pTrans->TransactionContext[0] = cpu_to_le32(ctx);
+ pTrans->TransactionContext = cpu_to_le32(ctx);
pSimple = (SGESimple64_t *) pTrans->TransactionDetails;
--
2.27.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH][next] scsi: mptlan: Replace one-element array with flexible-array member
2021-03-24 23:33 [PATCH][next] scsi: mptlan: Replace one-element array with flexible-array member Gustavo A. R. Silva
@ 2021-04-06 4:53 ` Martin K. Petersen
2021-04-06 9:58 ` Gustavo A. R. Silva
0 siblings, 1 reply; 3+ messages in thread
From: Martin K. Petersen @ 2021-04-06 4:53 UTC (permalink / raw)
To: Gustavo A. R. Silva, Suganath Prabu Subramani, Sreekanth Reddy,
Sathya Prakash
Cc: Martin K . Petersen, linux-scsi, linux-kernel, linux-hardening,
MPT-FusionLinux.pdl
On Wed, 24 Mar 2021 18:33:44 -0500, Gustavo A. R. Silva wrote:
> There is a regular need in the kernel to provide a way to declare having
> a dynamically sized set of trailing elements in a structure. Kernel code
> should always use “flexible array members”[1] for these cases. The older
> style of one-element or zero-length arrays should no longer be used[2].
>
> Refactor the code according to the use of a flexible-array member in
> struct _SGE_TRANSACTION32 instead of one-element array.
>
> [...]
Applied to 5.13/scsi-queue, thanks!
[1/1] scsi: mptlan: Replace one-element array with flexible-array member
https://git.kernel.org/mkp/scsi/c/4e2e619f3c9e
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH][next] scsi: mptlan: Replace one-element array with flexible-array member
2021-04-06 4:53 ` Martin K. Petersen
@ 2021-04-06 9:58 ` Gustavo A. R. Silva
0 siblings, 0 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2021-04-06 9:58 UTC (permalink / raw)
To: Martin K. Petersen, Gustavo A. R. Silva, Suganath Prabu Subramani,
Sreekanth Reddy, Sathya Prakash
Cc: linux-scsi, linux-kernel, linux-hardening, MPT-FusionLinux.pdl
Hi Martin,
On 4/5/21 23:53, Martin K. Petersen wrote:
> On Wed, 24 Mar 2021 18:33:44 -0500, Gustavo A. R. Silva wrote:
>
>> There is a regular need in the kernel to provide a way to declare having
>> a dynamically sized set of trailing elements in a structure. Kernel code
>> should always use “flexible array members”[1] for these cases. The older
>> style of one-element or zero-length arrays should no longer be used[2].
>>
>> Refactor the code according to the use of a flexible-array member in
>> struct _SGE_TRANSACTION32 instead of one-element array.
>>
>> [...]
>
> Applied to 5.13/scsi-queue, thanks!
>
> [1/1] scsi: mptlan: Replace one-element array with flexible-array member
> https://git.kernel.org/mkp/scsi/c/4e2e619f3c9e
>
Thanks for this.
Could you apply this one, too:
https://lore.kernel.org/lkml/20210304203822.GA102218@embeddedor/
This was my last reply to the thread:
https://lore.kernel.org/lkml/d79bde59-16c5-e006-0e31-c33c17f0ce3d@embeddedor.com/
Thanks!
--
Gustavo
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-06 10:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-24 23:33 [PATCH][next] scsi: mptlan: Replace one-element array with flexible-array member Gustavo A. R. Silva
2021-04-06 4:53 ` Martin K. Petersen
2021-04-06 9:58 ` Gustavo A. R. Silva
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.