Subject: Re: [PATCH net] net: filter: initialize A and X registers

From: Daniel Borkmann <[email-masked]>
Date: Wed, 23 Apr 2014 13:45:50 +0200

On 04/23/2014 07:13 AM, Eric Dumazet wrote:
> On Tue, 2014-04-22 at 23:57 -0400, David Miller wrote:
>> From: Alexei Starovoitov <[email-masked]>
>> Date: Tue, 22 Apr 2014 20:18:57 -0700
>>
>>> exisiting BPF verifier allows uninitialized access to registers,
>>> 'ret A' is considered to be a valid filter.
>>> So initialize A and X to zero to prevent leaking kernel memory
>>> In the future BPF verifier will be rejecting such filters
>>>
>>> Signed-off-by: Alexei Starovoitov <[email-masked]>
>>
>> Has the code always been like this?
>>
>> Did the eBPF changes introduce this problem either directly or
>> indirectly?
>
> Original code was fine AFAIK

Yep.

> Fixes: bd4cf0ed331a2 ("net: filter: rework/optimize internal BPF interpreter's instruction set")
>
> David, is it possible for you to push net-next tree ?

I think this would need to go into net tree first and then
for the upcoming changes, net would need to be merged into
net-next. This will create a minor merge conflict with the
BPF prandom extension; fix is to remove the defines near
__get_random_u32(), as they will be above __sk_run_filter()
already.