bcache: Use struct_size() in kzalloc()
PATCH 1/1 bcache: Use struct_size() in kzalloc()
Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes.
This code was detected with the help of Coccinelle and, audited and fixed manually.
--- drivers/md/bcache/writeback.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/md/bcache/writeback.c +2 -4
@@ -459,10 +459,8 @@ static void read_dirty(struct cached_dev *dc)for (i =0 ; i < nk; i++) { w = keys[i]; - io =kzalloc (sizeof (struct dirty_io ) + -sizeof (struct bio_vec ) * -DIV_ROUND_UP (KEY_SIZE (&w->key), -PAGE_SECTORS ), + io =kzalloc (struct_size (io, bio.bi_inline_vecs, +DIV_ROUND_UP (KEY_SIZE (&w->key),PAGE_SECTORS )),GFP_KERNEL );if (!io) goto err;
Signature · 1 line
2.27.0
Quoted 15 lines · Gustavo A. R. Silva
Make use of the
struct_size()helper instead of an open-coded version in order to avoid any potential type mistakes.This code was detected with the help of Coccinelle and, audited and fixed manually.
Signed-off-by Gustavo A. R. Silva <[email protected]> ---drivers/md/bcache/writeback.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)drivers/md/bcache/writeback.c +0
-0
drivers/md/bcache/writeback.c static void read_dirty(struct cached_dev *dc) · line 462
Quoted 8 lines
drivers/md/bcache/writeback.c +1
-4@@ -459,10 +459,8 @@ static void read_dirty(struct cached_dev *dc)for (i =0 ; i < nk; i++) { w = keys[i]; - io = kzalloc(sizeof(struct dirty_io) + - sizeof(struct bio_vec) * - DIV_ROUND_UP(KEY_SIZE(&w->key), - PAGE_SECTORS), + io = kzalloc(struct_size(io, bio.bi_inline_vecs,
^^^^^^^^^^^^^^^^^^ I like this :-)
drivers/md/bcache/writeback.c static void read_dirty(struct cached_dev *dc) · line 463
Quoted 1 line
drivers/md/bcache/writeback.c +1
-0+ DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS)),
The above line seems too long for 80 characters limitation. Does checkpatch.pl complain for this ?
Thanks.
Coly Li
Quoted 4 lines
drivers/md/bcache/writeback.c +0
-0GFP_KERNEL);if (!io) goto err;
Quoted 3 lines · Coly Li
Quoted 2 lines · Gustavo A. R. Silva
Make use of the
struct_size()helper instead of an open-coded version in order to avoid any potential type mistakes.
[]
Quoted 1 line
drivers/md/bcache/writeback.c
Quoted 1 line
drivers/md/bcache/writeback.c +0
-0
[]
Quoted 8 lines
drivers/md/bcache/writeback.c static void read_dirty(struct cached_dev *dc) · line 462
Quoted 5 lines
drivers/md/bcache/writeback.c +1
-4- io = kzalloc(sizeof(struct dirty_io) + - sizeof(struct bio_vec) * - DIV_ROUND_UP(KEY_SIZE(&w->key), - PAGE_SECTORS), + io = kzalloc(struct_size(io, bio.bi_inline_vecs,^^^^^^^^^^^^^^^^^^ I like this :-)
Quoted 4 lines
drivers/md/bcache/writeback.c static void read_dirty(struct cached_dev *dc) · line 463
Quoted 1 line
drivers/md/bcache/writeback.c +1
-0+ DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS)),The above line seems too long for 80 characters limitation. Does checkpatch.pl complain for this ?
No. checkpatch has changed:
From bdc48fa11e46f867ea4d75fa59ee87a7f48be144 Mon Sep 17 00:00:00 2001
From: Joe Perches <[email protected]>
Date: Fri, 29 May 2020 16:12:21 -0700
Subject: [PATCH] checkpatch/coding-style: deprecate 80-column warning
Yes, staying withing 80 columns is certainly still _preferred_. But it's not the hard limit that the checkpatch warnings imply, and other concerns can most certainly dominate.
Increase the default limit to 100 characters. Not because 100 characters is some hard limit either, but that's certainly a "what are you doing" kind of value and less likely to be about the occasional slightly longer lines.
Miscellanea:
- to avoid unnecessary whitespace changes in files, checkpatch will no longer emit a warning about line length when scanning files unless --strict is also used
- Add a bit to coding-style about alignment to open parenthesis
Quoted 1 line
Quoted 15 lines · Joe Perches
Quoted 3 lines · Coly Li
Quoted 2 lines · Gustavo A. R. Silva
Make use of the
struct_size()helper instead of an open-coded version in order to avoid any potential type mistakes.[]
Quoted 1 line
drivers/md/bcache/writeback.c
Quoted 1 line
drivers/md/bcache/writeback.c +0
-0[]
Quoted 8 lines
drivers/md/bcache/writeback.c static void read_dirty(struct cached_dev *dc) · line 462
Quoted 5 lines
drivers/md/bcache/writeback.c +1
-4- io = kzalloc(sizeof(struct dirty_io) + - sizeof(struct bio_vec) * - DIV_ROUND_UP(KEY_SIZE(&w->key), - PAGE_SECTORS), + io = kzalloc(struct_size(io, bio.bi_inline_vecs,^^^^^^^^^^^^^^^^^^ I like this :-)
Quoted 6 lines
Quoted 4 lines
drivers/md/bcache/writeback.c static void read_dirty(struct cached_dev *dc) · line 463
Quoted 1 line
drivers/md/bcache/writeback.c +1
-0+ DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS)),The above line seems too long for 80 characters limitation. Does checkpatch.pl complain for this ?
No. checkpatch has changed:
OK, then this patch is good for me.
Quoted 17 lines
From
bdc48fa11e46f867ea4d75fa59ee87a7f48be144Mon Sep 17 00:00:00 2001
From: Joe Perches <[email protected]>
Date: Fri, 29 May 2020 16:12:21 -0700
Subject: [PATCH] checkpatch/coding-style: deprecate 80-column warningYes, staying withing 80 columns is certainly still _preferred_. But it's not the hard limit that the checkpatch warnings imply, and other concerns can most certainly dominate.
Increase the default limit to 100 characters. Not because 100 characters is some hard limit either, but that's certainly a "what are you doing" kind of value and less likely to be about the occasional slightly longer lines.
Miscellanea:
Quoted 8 lines
- to avoid unnecessary whitespace changes in files, checkpatch will no longer emit a warning about line length when scanning files unless --strict is also used
- Add a bit to coding-style about alignment to open parenthesis
Signed-off-by Joe Perches <[email protected]>Signed-off-by Linus Torvalds <[email protected]>
I see. My current monitor may display 4 terminal window with 85 characters width, expending the limit to 100 characters means I probably have to change my current monitor with a good cause.
Thank you, for such good change.
Coly Li