[PATCH 0/2] Clang: avoid undefined behavior in llist iterators

From: Alexander Potapenko
Date: Fri Sep 23 2016 - 09:23:28 EST


This patch set fixes problems with pointer arithmetics overflow in
llist iterators, llist_for_each_entry() and llist_for_each_entry_safe().
Clang turns those macros into infinite loops, because they're operating
with "negative" pointers.

As a follow-up it may make sense to convert other uses of llist_entry()
to llist_entry_safe(), or even replace uses of container_of() with
container_of_safe().

Alexander Potapenko (2):
include/linux: provide a safe version of container_of()
llist: introduce llist_entry_safe()

include/linux/kernel.h | 15 +++++++++++++++
include/linux/llist.h | 26 +++++++++++++++++++-------
2 files changed, 34 insertions(+), 7 deletions(-)

--
2.8.0.rc3.226.g39d4020