Multilink PPP crash fix
I took out my can of RAID and went bug hunting.
The kernel was always crashing in this subroutine and the comment near the list walk clued me in.
I've run this fixed kernel all night and can no longer make it OOPS from a racy list walk.
It may be overkill to use ppp_lock instead of the finer grained locks but it works great so far
and I don't believe this routine gets called a lot.
---
Life is like a box of chocolates: Mass produced and usually stale.
drivers/net/ppp_generic.c renamed from drivers/net/ppp_generic.c.virgin +3 -2
@@ -1569,11 +1569,12 @@struct sk_buff_head *list = &ppp->mrq;u32 seq = skb->sequence; -/* N.B. we don't need to lock the list lock because we have the -ppp unit receive-side lock. */ +ppp_lock (ppp);for (p = list->next; p != (struct sk_buff *)list; p = p->next)if (seq_before (seq, p->sequence))break ; +ppp_unlock (ppp); +__skb_insert (skb, p->prev, p, list); }