linux-bcache.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH][next] bcache: Use struct_size() in kzalloc()
@ 2020-06-17 22:27 Gustavo A. R. Silva
  2020-06-17 22:27 ` Gustavo A. R. Silva
  2020-06-18  5:38 ` Coly Li
  0 siblings, 2 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2020-06-17 22:27 UTC (permalink / raw)
  To: Coly Li, Kent Overstreet; +Cc: linux-bcache, linux-kernel, 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 <gustavoars@kernel.org>
---
 drivers/md/bcache/writeback.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
index 1cf1e5016cb9..c0db3c860179 100644
--- a/drivers/md/bcache/writeback.c
+++ b/drivers/md/bcache/writeback.c
@@ -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;
-- 
2.27.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH][next] bcache: Use struct_size() in kzalloc()
  2020-06-17 22:27 [PATCH][next] bcache: Use struct_size() in kzalloc() Gustavo A. R. Silva
@ 2020-06-17 22:27 ` Gustavo A. R. Silva
  2020-06-18  5:38 ` Coly Li
  1 sibling, 0 replies; 6+ messages in thread
From: Gustavo A. R. Silva @ 2020-06-17 22:27 UTC (permalink / raw)
  To: Coly Li, Kent Overstreet; +Cc: linux-bcache, linux-kernel, 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 <gustavoars@kernel.org>
---
 drivers/md/bcache/writeback.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
index 1cf1e5016cb9..c0db3c860179 100644
--- a/drivers/md/bcache/writeback.c
+++ b/drivers/md/bcache/writeback.c
@@ -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;
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH][next] bcache: Use struct_size() in kzalloc()
  2020-06-17 22:27 [PATCH][next] bcache: Use struct_size() in kzalloc() Gustavo A. R. Silva
  2020-06-17 22:27 ` Gustavo A. R. Silva
@ 2020-06-18  5:38 ` Coly Li
  2020-06-18  5:42   ` Joe Perches
  1 sibling, 1 reply; 6+ messages in thread
From: Coly Li @ 2020-06-18  5:38 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Kent Overstreet, linux-bcache, linux-kernel, Gustavo A. R. Silva

On 2020/6/18 06:27, Gustavo A. R. Silva wrote:
> 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 <gustavoars@kernel.org> ---
>  drivers/md/bcache/writeback.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
> index 1cf1e5016cb9..c0db3c860179 100644
> --- a/drivers/md/bcache/writeback.c
> +++ b/drivers/md/bcache/writeback.c
> @@ -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 :-)

> +						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


>  				     GFP_KERNEL);
>  			if (!io)
>  				goto err;
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][next] bcache: Use struct_size() in kzalloc()
  2020-06-18  5:38 ` Coly Li
@ 2020-06-18  5:42   ` Joe Perches
  2020-06-18  5:42     ` Joe Perches
  2020-06-19 15:01     ` Coly Li
  0 siblings, 2 replies; 6+ messages in thread
From: Joe Perches @ 2020-06-18  5:42 UTC (permalink / raw)
  To: Coly Li, Gustavo A. R. Silva
  Cc: Kent Overstreet, linux-bcache, linux-kernel, Gustavo A. R. Silva

On Thu, 2020-06-18 at 13:38 +0800, Coly Li wrote:
> On 2020/6/18 06:27, Gustavo A. R. Silva wrote:
> > Make use of the struct_size() helper instead of an open-coded version
> > in order to avoid any potential type mistakes.
[]
> > diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
[]
> > -			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 :-)
> 
> > +						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 <joe@perches.com>
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

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][next] bcache: Use struct_size() in kzalloc()
  2020-06-18  5:42   ` Joe Perches
@ 2020-06-18  5:42     ` Joe Perches
  2020-06-19 15:01     ` Coly Li
  1 sibling, 0 replies; 6+ messages in thread
From: Joe Perches @ 2020-06-18  5:42 UTC (permalink / raw)
  To: Coly Li, Gustavo A. R. Silva
  Cc: Kent Overstreet, linux-bcache, linux-kernel, Gustavo A. R. Silva

On Thu, 2020-06-18 at 13:38 +0800, Coly Li wrote:
> On 2020/6/18 06:27, Gustavo A. R. Silva wrote:
> > Make use of the struct_size() helper instead of an open-coded version
> > in order to avoid any potential type mistakes.
[]
> > diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
[]
> > -			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 :-)
> 
> > +						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 <joe@perches.com>
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

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH][next] bcache: Use struct_size() in kzalloc()
  2020-06-18  5:42   ` Joe Perches
  2020-06-18  5:42     ` Joe Perches
@ 2020-06-19 15:01     ` Coly Li
  1 sibling, 0 replies; 6+ messages in thread
From: Coly Li @ 2020-06-19 15:01 UTC (permalink / raw)
  To: Joe Perches, Gustavo A. R. Silva
  Cc: Kent Overstreet, linux-bcache, linux-kernel, Gustavo A. R. Silva

On 2020/6/18 13:42, Joe Perches wrote:
> On Thu, 2020-06-18 at 13:38 +0800, Coly Li wrote:
>> On 2020/6/18 06:27, Gustavo A. R. Silva wrote:
>>> Make use of the struct_size() helper instead of an open-coded version
>>> in order to avoid any potential type mistakes.
> []
>>> diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c
> []
>>> -			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 :-)
>>
>>> +						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.

> 
> From bdc48fa11e46f867ea4d75fa59ee87a7f48be144 Mon Sep 17 00:00:00 2001
> From: Joe Perches <joe@perches.com>
> 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
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-06-19 15:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-17 22:27 [PATCH][next] bcache: Use struct_size() in kzalloc() Gustavo A. R. Silva
2020-06-17 22:27 ` Gustavo A. R. Silva
2020-06-18  5:38 ` Coly Li
2020-06-18  5:42   ` Joe Perches
2020-06-18  5:42     ` Joe Perches
2020-06-19 15:01     ` Coly Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).