On Mon, 05 Mar 2018 02:22:52 +0000 Ben Hutchings <ben.hutchings@xxxxxxxxxxxxxxx> wrote: > On Thu, 2018-02-15 at 16:16 +0100, Greg Kroah-Hartman wrote: > > 4.4-stable review patch. If anyone has any objections, please let me know. > > > > ------------------ > > > > From: Arnd Bergmann <arnd@xxxxxxxx> > > > > commit 9e343e87d2c4c707ef8fae2844864d4dde3a2d13 upstream. > [...] > > -static inline int map_word_andequal(struct map_info *map, map_word val1, map_word val2, map_word val3) > > -{ > > - int i; > > - > > - for (i = 0; i < map_words(map); i++) { > > - if ((val1.x[i] & val2.x[i]) != val3.x[i]) > > - return 0; > > - } > > - > > - return 1; > > -} > [...] > > +#define map_word_andequal(map, val1, val2, val3) \ > > +({ \ > > + int i, ret = 1; \ > > + for (i = 0; i < map_words(map); i++) { \ > > + if (((val1).x[i] & (val2).x[i]) != (val2).x[i]) { \ > [...] > > The right-hand side of this comparison is now using val2 instead of > val3. (This bug seems to be unfixed upstream.) Indeed. This being said, it's not buggy since all users of map_word_andequal() pass the same value to val2 and val3. Maybe we should just patch the macro and all call-sites to remove val3. > > Ben. > -- Boris Brezillon, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com