If that is the case , then subscriptions of netlink_sock should have been updated after netlink_remove or netlink_release. I don't see that happening.
On Wednesday 03 September 2014 12:22 AM, David Miller wrote: > From: Harish Jenny Kandiga Nagaraj <harish_kand...@mentor.com> > Date: Tue, 2 Sep 2014 14:14:38 +0530 > >> In one of our random test runs we observed the crash mentioned in the >> previous mail. >> >> After debugging we found out that the call flow of the inline and static >> functions were >> netlink_release >> -----netlink_remove >> ---------__sk_del_bind_node >> --------------__hlist_del >> >> *pprev was NULL in __hlist_del function while deleting &sk->sk_bind_node >> hlist_node. Hence the patch was given. >> >> In netlink_remove function , first the sk_del_node_init function will be >> called. This internally calls __sk_del_node_init function. While deleting >> &sk->sk_node hlist_node using __sk_del_node function there is a NULL check >> with sk_hashed function. >> >> Why there is no NULL check for *pprev while deleting &sk->sk_bind_node ? > Because if ->subscriptions is non-zero, it must be on a list, and therefore > pprev must be non-NULL. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/