Hi All, Following definition of notifier_chain_register is from kernel/sys.c and for kernel 2.6.20.1 . static int notifier_chain_register(struct notifier_block **nl, struct notifier_block *n) { while ((*nl) != NULL) { if (n->priority > (*nl)->priority) break; nl = &((*nl)->next); } n->next = *nl; rcu_assign_pointer(*nl, n); return 0; } Since the first parameter is passed as a double ptr, the pointer itself is changed by the traversal and by rcu_assign_pointer(*nl, n) , right? And the new value will be address of notifier_block n. This means the new head of the notifier list is n with the highest priority( in terms of magnitude atleast ). My query is ,why are we loosing the notifiers during traversal in the first while loop, which have a priority > n->priority ? I am terribly confused here. Can somebody help me out here? Thank you ~psr -- play the game - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs