mirror of https://gitee.com/openkylin/linux.git
treewide: Use struct_size() for vmalloc()-family
This only finds one hit in the entire tree, but here's the Coccinelle: // Directly refer to structure's field @@ identifier alloc =~ "vmalloc|vzalloc"; identifier VAR, ELEMENT; expression COUNT; @@ - alloc(sizeof(*VAR) + COUNT * sizeof(*VAR->ELEMENT)) + alloc(struct_size(VAR, ELEMENT, COUNT)) // mr = kzalloc(sizeof(*mr) + m * sizeof(mr->map[0]), GFP_KERNEL); @@ identifier alloc =~ "vmalloc|vzalloc"; identifier VAR, ELEMENT; expression COUNT; @@ - alloc(sizeof(*VAR) + COUNT * sizeof(VAR->ELEMENT[0])) + alloc(struct_size(VAR, ELEMENT, COUNT)) // Same pattern, but can't trivially locate the trailing element name, // or variable name. @@ identifier alloc =~ "vmalloc|vzalloc"; expression SOMETHING, COUNT, ELEMENT; @@ - alloc(sizeof(SOMETHING) + COUNT * sizeof(ELEMENT)) + alloc(CHECKME_struct_size(&SOMETHING, ELEMENT, COUNT)) Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
parent
acafe7e302
commit
b4b06db115
|
@ -144,8 +144,7 @@ nvkm_ramht_new(struct nvkm_device *device, u32 size, u32 align,
|
||||||
struct nvkm_ramht *ramht;
|
struct nvkm_ramht *ramht;
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
if (!(ramht = *pramht = vzalloc(sizeof(*ramht) +
|
if (!(ramht = *pramht = vzalloc(struct_size(ramht, data, (size >> 3)))))
|
||||||
(size >> 3) * sizeof(*ramht->data))))
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
ramht->device = device;
|
ramht->device = device;
|
||||||
|
|
Loading…
Reference in New Issue