Messages in this thread | | | From | "Gustavo A. R. Silva" <> | Subject | Re: [PATCH] nvmet-fc: use zero-sized array and struct_size() in kzalloc() | Date | Sat, 23 Feb 2019 14:28:24 -0600 |
| |
Hey Joe,
On 2/23/19 2:05 PM, Joe Perches wrote: > On Sat, 2019-02-23 at 12:51 -0600, Gustavo A. R. Silva wrote: >> Update the code to use a zero-sized array instead of a pointer in >> structure nvmet_fc_tgt_queue and use struct_size() in kzalloc(). > [] >> This code was detected with the help of Coccinelle. > > Really? > Impressive script that found this one. >
See my comments below.
>> diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c > [] >> @@ -128,12 +128,12 @@ struct nvmet_fc_tgt_queue { >> struct nvmet_cq nvme_cq; >> struct nvmet_sq nvme_sq; >> struct nvmet_fc_tgt_assoc *assoc; >> - struct nvmet_fc_fcp_iod *fod; /* array of fcp_iods */ >> struct list_head fod_list; >> struct list_head pending_cmd_list; >> struct list_head avail_defer_list; >> struct workqueue_struct *work_q; >> struct kref ref; >> + struct nvmet_fc_fcp_iod fod[]; /* array of fcp_iods */ >> } __aligned(sizeof(unsigned long long)); > > Moving a pointer from the middle of a struct to > the end seems unusual for coccinelle. > >
Notice that the commit log says "detected", which does not imply the script made the transformation by itself. :)
And all the script detected was this piece of code:
queue = kzalloc((sizeof(*queue) + (sizeof(struct nvmet_fc_fcp_iod) * sqsize)), GFP_KERNEL);
Thanks -- Gustavo
| |