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.