Thread (19 messages) flat view 19 messages, 6 authors, 2016-11-29

Re: net: GPF in eth_header

From: Eric Dumazet <hidden>
Date: 2016-11-29 16:18:33
Also in: lkml

On Tue, 2016-11-29 at 16:31 +0100, Andrey Konovalov wrote:
=
The issue is not with skb_network_offset(), but with __skb_pull()
using skb_network_offset() as an argument.
No. The issue can happen with _any_ __skb_pull() with a 'negative'
argument, on 64bit arches.

skb_network_offset() is only one of the many cases this could happen if
a bug is added at some random place, including memory corruption from
a different kernel layer, or buggy hardware.
I'm not sure what would be the beast way to fix this, to add a check
before every __skb_pull(skb_network_offset()), to fix __skb_pull() to
work with signed ints, to add BUG_ON()'s in __skb_pull, or something
else.

What I meant is that you fixed this very instance of the bug, and I'm
pointing out that a similar one might hit us again.
As I said, adding a check in skb_network_offset() would not be generic
enough.

Sure, we can be proactive and add tests everywhere in the kernel, but we
also want to keep it reasonably fast.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help