aboutsummaryrefslogtreecommitdiff
path: root/net/switchdev/switchdev.c
diff options
context:
space:
mode:
authorAlexander Potapenko <[email protected]>2017-07-19 20:27:30 +0200
committerLinus Torvalds <[email protected]>2017-07-19 15:33:50 -0700
commitbeaec533fc2701a28a4d667f67c9f59c6e4e0d13 (patch)
treed865dda1b1bf9c50ada3b4a8344aba60186c42fe /net/switchdev/switchdev.c
parente06fdaf40a5c021dd4a2ec797e8b724f07360070 (diff)
llist: clang: introduce member_address_is_nonnull()
Currently llist_for_each_entry() and llist_for_each_entry_safe() iterate until &pos->member != NULL. But when building the kernel with Clang, the compiler assumes &pos->member cannot be NULL if the member's offset is greater than 0 (which would be equivalent to the object being non-contiguous in memory). Therefore the loop condition is always true, and the loops become infinite. To work around this, introduce the member_address_is_nonnull() macro, which casts object pointer to uintptr_t, thus letting the member pointer to be NULL. Signed-off-by: Alexander Potapenko <[email protected]> Tested-by: Sodagudi Prasad <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'net/switchdev/switchdev.c')
0 files changed, 0 insertions, 0 deletions