>This is incorrect: next_present_section_nr() returns "int" and -1 no >next section, this change would lead to infinite loop. int x = -1; unsigned long y = x; y is never less than 0 . But y is a large positive number. >On Sat, Oct 13, 2018 at 12:16 PM Peng Hao <penghao122@xxxxxxxxxxx> wrote: >> >> From: Peng Hao <peng.hao2@xxxxxxxxxx> >> >> In all use locations for for_each_present_section_nr, variable >> section_nr is unsigned. It is unnecessary to test if it is negative. >> >> Signed-off-by: Peng Hao <peng.hao2@xxxxxxxxxx> >> --- >> mm/sparse.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/mm/sparse.c b/mm/sparse.c >> index 10b07ee..a6f9f22 100644 >> --- a/mm/sparse.c >> +++ b/mm/sparse.c >> @@ -196,8 +196,7 @@ static inline int next_present_section_nr(int section_nr) >> } >> #define for_each_present_section_nr(start, section_nr) \ >> for (section_nr = next_present_section_nr(start-1); \ >> - ((section_nr >= 0) && \ >> - (section_nr <= __highest_present_section_nr)); \ >> + section_nr <= __highest_present_section_nr; \ >> section_nr = next_present_section_nr(section_nr)) >> >> static inline unsigned long first_present_section_nr(void) >> -- >> 1.8.3.1 >> >>