On Mon, 05 Mar 2018 02:22:52 +0000 Ben Hutchings ben.hutchings@codethink.co.uk 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@arndb.de
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.