On Thu, Aug 18, 2016 at 08:11:15AM -0600, Philp Prindeville wrote: > > It seems unlikely to me that this sort of locking problem hasn't existed > elsewhere before and that an entirely new mechanism for handling it is > needed... How are similar re-entrancy issues handled elsewhere? > Virtual devices like vxlan and geneve drop packets if the ouput device (after encapsulation) is the same as the encapsulating device. It's possible to bypass this check by stacking devices. In this case, recursion occurs until __dev_queue_xmit() triggers the XMIT_RECURSION_LIMIT. If the qdisc isn't noqueue so that recursion isn't stopped by __dev_queue_xmit(), then it's possible to fill the skb's headroom and the packet gets drop after pskb_expand_head() fails. In any case only the faulty path is affected and the system remains stable. It'd be nice to have PPP working this way, but this is made really difficult by the number of locks used in the xmit path. Even checking if the output interface is also the encapsulating one isn't trivial. The L2TP layer doesn't access the upper interface. It may not even be a PPP device in case of L2TPv3. -- To unsubscribe from this list: send the line "unsubscribe linux-ppp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html