Subject: Re: [PATCH] filter: added BPF random opcode

From: Daniel Borkmann <[email-masked]>
Date: Tue, 15 Apr 2014 17:04:18 +0200

On 04/15/2014 04:41 PM, Eric Dumazet wrote:
> On Tue, 2014-04-15 at 09:24 +0200, Daniel Borkmann wrote:
>
>>> @@ -773,6 +779,7 @@ static bool convert_bpf_extensions(struct sock_filter *fp,
>>>    	case SKF_AD_OFF + SKF_AD_NLATTR:
>>>    	case SKF_AD_OFF + SKF_AD_NLATTR_NEST:
>>>    	case SKF_AD_OFF + SKF_AD_CPU:
>>> +	case SKF_AD_OFF + SKF_AD_RANDOM:
>>
>> I think instead of a function call, this sould rather be modelled
>> directly into the internal insn set and thus converted differently,
>> so we can spare us the call.
>
> Hmmm... this would need percpu storage, thus preempt disable/enable
> calls, and prandom_u32_state() is about 40 instructions.
>
> This is really not worth the pain.

Absolutely, that was not what I meant actually. Calling to
prandom_u32_state() is fine, no need to have another prng just
for that. I was just wondering if it makes sense to model that
directly as an instruction into a jump-table target that calls
prandom_u32() from there instead 'indirectly'. Need to think
about this a bit more ...