Thread (12 messages) 12 messages, 3 authors, 2022-11-09

Re: [PATCH] staging: fbtft: Use ARRAY_SIZE() to get argument count

From: Deepak R Varma <hidden>
Date: 2022-10-31 09:40:55
Also in: dri-devel, linux-staging, lkml

On Mon, Oct 31, 2022 at 12:41:40PM +0530, Deepak Varma wrote:
On Sat, Oct 29, 2022 at 07:34:26PM +0200, Julia Lawall wrote:
quoted

On Sat, 29 Oct 2022, Deepak R Varma wrote:
quoted
On Sat, Oct 29, 2022 at 09:32:50AM +0200, Greg Kroah-Hartman wrote:
quoted
On Fri, Oct 28, 2022 at 07:00:05PM +0530, Deepak R Varma wrote:
quoted
The ARRAY_SIZE(foo) macro should be preferred over sizeof operator
based computation such as sizeof(foo)/sizeof(foo[0]) for finding
number of elements in an array. Issue identified using coccicheck.

Signed-off-by: Deepak R Varma <redacted>
---
 drivers/staging/fbtft/fbtft.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index 2c2b5f1c1df3..5506a473be91 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -231,7 +231,7 @@ struct fbtft_par {
 	bool polarity;
 };

-#define NUMARGS(...)  (sizeof((int[]){__VA_ARGS__}) / sizeof(int))
+#define NUMARGS(...)  ARRAY_SIZE(((int[]){ __VA_ARGS__ }))
Please please please test-build your patches before sending them out.
To not do so just wastes reviewer resources :(
Hello Greg,
I did build the .ko files by making the driver/staging/fbtft/ path. I verified
.o and .ko files were built.

I did a make clean just now and was again able to rebuild without any errors.
Please see the attached log file.

Is there something wrong with the way I am firing the build?
The change is in the definition of a macro.  The compiler won't help you
in this case unless the macro is actually used in code that is compiled.
Find the uses and check for any nearby ifdefs.  For file foo.c you can
also do make foo.i to see the result of reducing ifdef and expanding
macros.  Then you can see if the code you changed is actually included in
the build.
Okay. This is helpful. I understand. Looking into the file where the macro
expansion is reported to be failed.
Hi Julia,
I could see the macro expansions in the .i files for the fbtft-core.c and
fb_hx8353d.c file. I am not sure why it built successfully on my x86 though. The
error in Kerbel bot seems to be specific to ARM arch. I will try that later
today. I am on the right track to the build error triage?

Also, while reviewing the macro expansion, I saw change in the computation that
seems odd to me. In the denominator of the expanded macro, there is a "+
((int)...." computation that I am not sure if is result of ARRAY_SIZE. I have
attached the old anf the new .i file diff for your review. If you get a change
could you help me understand why this additional computation is added to the
denominator?

Thank you,
./drv
Thank you,
./drv
quoted
julia
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help