lkml.org 
[lkml]   [2019]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.0 030/262] mm/sparse: fix a bad comparison
    Date
    From: Qian Cai <cai@lca.pw>

    [ Upstream commit d778015ac95bc036af73342c878ab19250e01fe1 ]

    next_present_section_nr() could only return an unsigned number -1, so
    just check it specifically where compilers will convert -1 to unsigned
    if needed.

    mm/sparse.c: In function 'sparse_init_nid':
    mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
    ((section_nr >= 0) && \
    ^~
    mm/sparse.c:478:2: note: in expansion of macro
    'for_each_present_section_nr'
    for_each_present_section_nr(pnum_begin, pnum) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
    ((section_nr >= 0) && \
    ^~
    mm/sparse.c:497:2: note: in expansion of macro
    'for_each_present_section_nr'
    for_each_present_section_nr(pnum_begin, pnum) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    mm/sparse.c: In function 'sparse_init':
    mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
    ((section_nr >= 0) && \
    ^~
    mm/sparse.c:520:2: note: in expansion of macro
    'for_each_present_section_nr'
    for_each_present_section_nr(pnum_begin + 1, pnum_end) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~

    Link: http://lkml.kernel.org/r/20190228181839.86504-1-cai@lca.pw
    Fixes: c4e1be9ec113 ("mm, sparsemem: break out of loops early")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    mm/sparse.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/mm/sparse.c b/mm/sparse.c
    index 7ea5dc6c6b19..77a0554fa5bd 100644
    --- a/mm/sparse.c
    +++ b/mm/sparse.c
    @@ -197,7 +197,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 != -1) && \
    (section_nr <= __highest_present_section_nr)); \
    section_nr = next_present_section_nr(section_nr))

    --
    2.19.1
    \
     
     \ /
      Last update: 2019-03-27 20:35    [W:4.212 / U:0.432 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site