Re: [PATCH] md/raid5: Fix implicit type conversion

From: Paul Menzel
Date: Tue Oct 26 2021 - 04:26:54 EST


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?

Fixes: 738a273 ("md/raid5: fix allocation of 'scribble' array.")
Signed-off-by: Jiasheng Jiang <jiasheng@xxxxxxxxxxx>
---
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