#define list_for_each_entry_safe(pos, n, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member), \
- n = list_entry(pos->member.next, typeof(*pos), member); \
+ n = (&pos->member != (head) ? \
+ list_entry(pos->member.next, typeof(*pos), member) : NULL); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.next, typeof(*n), member))
static inline void notifier_call(struct notifier_list *l, int cmd)
{
struct notifier_block *n, *nn;
- list_for_each_entry_safe(n, nn, &l->notifier_head, notifier_entry)
- n->action(n, cmd);
+ list_for_each_entry_safe(n, nn, &l->notifier_head, notifier_entry) {
+ if (n)
+ n->action(n, cmd);
+ }
}
static inline int notifier_active(struct notifier_list *l)