--- zzzz-none-000/linux-2.6.32.61/include/linux/list.h 2013-06-10 09:43:48.000000000 +0000 +++ virian-300e-630/linux-2.6.32.61/include/linux/list.h 2014-08-12 13:03:17.000000000 +0000 @@ -692,4 +692,23 @@ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ pos = n) +/* +++ + * AVM: backport from 3.15 + */ +#define hlist_entry_safe(ptr, type, member) \ + ({ typeof(ptr) ____ptr = (ptr); \ + ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ + }) + +#define hlist_for_each_entry_v3_15(pos, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +#define hlist_for_each_entry_safe_v3_15(pos, n, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*pos), member);\ + pos && ({ n = pos->member.next; 1; }); \ + pos = hlist_entry_safe(n, typeof(*pos), member)) +/* +++ */ + #endif