bio-integrity: use struct_size() in kmalloc()
PATCH 1/1 bio-integrity: use struct_size() in kmalloc()
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct foo {
int stuff;
void *entry[];
};instance = kmalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper:
instance = kmalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
--- block/bio-integrity.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
block/bio-integrity.c +2 -2
@@ -57,8 +57,8 @@ struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio,unsigned inline_vecs;if (!bs || !mempool_initialized (&bs->bio_integrity_pool)) { - bip =kmalloc (sizeof (struct bio_integrity_payload ) + -sizeof (struct bio_vec ) * nr_vecs, gfp_mask); + bip =kmalloc (struct_size (bip, bip_inline_vecs, nr_vecs), + gfp_mask); inline_vecs = nr_vecs; }else { bip =mempool_alloc (&bs->bio_integrity_pool, gfp_mask);
Signature · 1 line
2.20.1