On Tue, Jan 10, 2017 at 1:48 PM, Eric Dumazet <eric.duma...@gmail.com> wrote: > On Tue, 2017-01-10 at 21:08 +0100, Jesper Dangaard Brouer wrote: >> On Tue, 10 Jan 2017 10:44:59 -0800 Cong Wang <xiyou.wangc...@gmail.com> >> wrote: >> >> > On Tue, Jan 10, 2017 at 10:12 AM, David Miller <da...@davemloft.net> wrote: >> [...] >> > > You can keep showing us how expertly you can deflect the real >> > > issue we are discussion here, but that won't improve the situation >> > > at all I am afraid. >> > >> > Of course, there are just too many people too lazy to do a google search: >> > >> > https://lists.debian.org/debian-kernel/2013/05/msg00500.html >> >> My analysis of the problem shown in above link is not related to using >> all the stack space, but instead that skb->cb was not cleared. This >> can cause the ip_options_echo() call in icmp_send() to access garbage >> as this is: __ip_options_echo(dopt, skb, &IPCB(skb)->opt). >> >> Fixed by commit a622260254ee ("ip_tunnel: fix kernel panic with >> icmp_dest_unreach") >> https://git.kernel.org/torvalds/c/a622260254ee >> >> Thus, it is (likely) the __ip_options_echo() call that violates stack >> access, as it is passed in a pointer to the stack, and advance this >> based on garbage "optlen". >> > > I totally agree.
I can't agree, iptunnel or ipgre symbols are not in the above stack trace at all. Although I do agree that the above stack usage is not aggressive, especially when compared with the other I sent. My vague memory told me the original problem I fixed is related to vxlan but after trying to search all netdev archives in 2013 May/Jun, I still can't find it, perhaps it was reported to LKML or somewhere else rather than netdev. It was certainly a real problem. Even though the irq stack is 16K, but it is too easy to stack netdevices and stack qdisc's too, so for TX path I am not surprised at all if 16K could be exhausted eventually. Yeah, it is hard to blame one of them in the call chain, but 112 bytes _alone_ are aggressive for such a function deeply in the call stack. That's my whole point.