Message ID | 20220517212234.868181-1-keescook@chromium.org (mailing list archive) |
---|---|
Headers | show |
Series | bitmap: Fix return values to be unsigned | expand |
On Tue, May 17, 2022 at 02:22:32PM -0700, Kees Cook wrote: > Hi, > > As mentioned in the last patch: > > Both nodemask and bitmap routines had mixed return values that provided > potentially signed results that could never happen. This was leading to > the compiler getting confusing about the range of possible return values > (it was thinking things could be negative where they could not be). Fix > all the nodemask and bitmap routines that should be returning unsigned > (or bool) values. Silences GCC 12 warnings: > > mm/swapfile.c: In function ‘setup_swap_info’: > mm/swapfile.c:2291:47: error: array subscript -1 is below array bounds of ‘struct plist_node[]’ [-Werror=array-bounds] > 2291 | p->avail_lists[i].prio = 1; > | ~~~~~~~~~~~~~~^~~ > In file included from mm/swapfile.c:16: > ./include/linux/swap.h:292:27: note: while referencing ‘avail_lists’ > 292 | struct plist_node avail_lists[]; /* > | ^~~~~~~~~~~ > > This splits up the patch into the bitmap and nodemask halves, and drops > a needless change to the random node helper. > > I note that Alexey and Rasmus touched on this area in the past, fixing > up node ids to be unsigned: > > ce0725f78a56 ("numa: make "nr_online_nodes" unsigned int") > b9726c26dc21 ("numa: make "nr_node_ids" unsigned int") > 33c4fa8c6763 ("linux/nodemask.h: update bitmap wrappers to take unsigned int") > > If anyone else would like to carry this, please let me know. I'm happy > to carry it in my tree. I think it should go thru my tree, if no objections. > -Kees > > Kees Cook (2): > bitmap: Fix return values to be unsigned > nodemask: Fix return values to be unsigned Can you please also add patch for tools? Thanks, Yury > include/linux/bitmap.h | 14 +++++++------- > include/linux/nodemask.h | 38 +++++++++++++++++++------------------- > lib/bitmap.c | 28 ++++++++++++++-------------- > lib/nodemask.c | 2 +- > 4 files changed, 41 insertions(+), 41 deletions(-) > > -- > 2.32.0
On May 17, 2022 3:21:00 PM PDT, Yury Norov <yury.norov@gmail.com> wrote: >On Tue, May 17, 2022 at 02:22:32PM -0700, Kees Cook wrote: >> Hi, >> >> As mentioned in the last patch: >> >> Both nodemask and bitmap routines had mixed return values that provided >> potentially signed results that could never happen. This was leading to >> the compiler getting confusing about the range of possible return values >> (it was thinking things could be negative where they could not be). Fix >> all the nodemask and bitmap routines that should be returning unsigned >> (or bool) values. Silences GCC 12 warnings: >> >> mm/swapfile.c: In function ‘setup_swap_info’: >> mm/swapfile.c:2291:47: error: array subscript -1 is below array bounds of ‘struct plist_node[]’ [-Werror=array-bounds] >> 2291 | p->avail_lists[i].prio = 1; >> | ~~~~~~~~~~~~~~^~~ >> In file included from mm/swapfile.c:16: >> ./include/linux/swap.h:292:27: note: while referencing ‘avail_lists’ >> 292 | struct plist_node avail_lists[]; /* >> | ^~~~~~~~~~~ >> >> This splits up the patch into the bitmap and nodemask halves, and drops >> a needless change to the random node helper. >> >> I note that Alexey and Rasmus touched on this area in the past, fixing >> up node ids to be unsigned: >> >> ce0725f78a56 ("numa: make "nr_online_nodes" unsigned int") >> b9726c26dc21 ("numa: make "nr_node_ids" unsigned int") >> 33c4fa8c6763 ("linux/nodemask.h: update bitmap wrappers to take unsigned int") >> >> If anyone else would like to carry this, please let me know. I'm happy >> to carry it in my tree. > >I think it should go thru my tree, if no objections. Sure thing! Thanks for the review. I'll send a v3 with the variable updated and tools/ refreshed. -Kees