Messages in this thread | | | Date | Tue, 26 Oct 2021 10:26:41 +0200 | Subject | Re: [PATCH] md/raid5: Fix implicit type conversion | From | Paul Menzel <> |
| |
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@iscas.ac.cn> > --- > 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
| |