On Tue, Oct 09, 2018 at 04:47:20PM -0700, Maciej Żenczykowski wrote:
> Ah, yes, the (2**64 - 1) + 1 problem.
> 
> The fact max allowed remaining is (2**64 - 2) is perhaps surprising...
> should we clamp? or warn?
> 
> userspace has:
>   if (cb->entry->id == O_REMAIN)  info->remain++;
> should this error out in userspace if we end up at zero?
> 
> +-m quota --quota 18446744073709551615 --remain 18446744073709551614;;FAIL
> 
> this one really should also pass...

:-)

> kernel has:
>   if (atomic64_read(&q->counter) > q->quota + 1)
> this should probably be:
>   if (atomic64_read(&q->counter) && atomic64_read(&q->counter) - 1 > q->quota)
> 
> Also I think there's something ugly with
>  -m quota --quota 18446744073709551614
> vs
>  -m quota --quota 18446744073709551615
> 
> and thus possibly:
>   if (current_count <= skb->len) {
> should actually be
>   if (current_count && current_count <= skb->len) {
> 
> Maybe all of this would actually be easier if we were counting bytes
> used instead of bytes remaining.

I think so. This is still net-next, so noone is using it yet apart
from developers? Probably we can still change this to become
--consumed rather than --remain. I would take patches for nf-next if
you follow that path, no problem.

Thanks.

Reply via email to