Re: [PATCH] md/raid5: Fix implicit type conversion
From: Paul Menzel <hidden>
Date: 2021-10-26 08:26:54
Also in:
lkml
Dear Jiasheng, On 26.10.21 10:12, Jiasheng Jiang wrote:
The variable 'cpu' is defined as ULONG. However in the for_each_present_cpu, its value is assigned to -1. That doesn't make sense and in the cpumask_next() it is implicitly type conversed to INT.
The description of the macro in `include/linux/cpumask.h` says:
* for_each_cpu - iterate over every cpu in a mask * @cpu: the (optionally unsigned) integer iterator * @mask: the cpumask pointer
It is universally accepted that the implicit type conversion is terrible. Also, having the good programming custom will set an example for others. Thus, it might be better to change the definition of 'cpu' from UINT to INT.
Maybe get the macro description fixed first, and then update the users?
quoted hunk ↗ jump to hunk
Fixes: 738a273 ("md/raid5: fix allocation of 'scribble' array.") Signed-off-by: Jiasheng Jiang <redacted> --- drivers/md/raid5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 7d4ff8a..c7b88eb 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c@@ -2425,7 +2425,7 @@ static int scribble_alloc(struct raid5_percpu *percpu, static int resize_chunks(struct r5conf *conf, int new_disks, int new_sectors) { - unsigned long cpu; + int cpu;
Why not `long cpu`?
int err = 0; /*
Kind regards, Paul