On Tue, 21 Feb 2017 00:06:11 -0800 Alexei Starovoitov <alexei.starovoi...@gmail.com> wrote:
> On Mon, Feb 20, 2017 at 05:25:58PM +0100, Jesper Dangaard Brouer wrote: > > On Mon, 20 Feb 2017 16:57:34 +0100 > > Daniel Borkmann <dan...@iogearbox.net> wrote: > > > > > On 02/20/2017 04:35 PM, Jesper Dangaard Brouer wrote: > > > > It is confusing users of samples/bpf that exceeding the resource > > > > limits for RLIMIT_MEMLOCK result in an "Operation not permitted" > > > > message. This is due to bpf limits check return -EPERM. > > > > > > > > Instead return -ENOMEM, like most other users of this API. > > > > > > > > Fixes: aaac3ba95e4c ("bpf: charge user for creation of BPF maps and > > > > programs") > > > > Fixes: 6c9059817432 ("bpf: pre-allocate hash map elements") > > > > Fixes: 5ccb071e97fb ("bpf: fix overflow in prog accounting") > > > > > > Btw, last one just moves the helper so fixes doesn't really apply > > > there, but apart from that this is already uapi exposed behavior > > > like this for ~1.5yrs, so unfortunately too late to change now. I > > > think the original intention (arguably confusing in this context) > > > was that user doesn't have (rlimit) permission to allocate this > > > resource. > > > > This is obviously confusing end-users, thus it should be fixed IMHO. > > I don't think it's confusing and I think EPERM makes > the most sense as return code in such situation. Most other kernel users return ENOMEM. > There is also code in iovisor/bcc that specifically looking > for EPERM to adjust ulimit. If there is already a program that depend on this, then it is ABI and we cannot change it... drop this patch. > May be it's not documented properly, but that's different story. Documented it here: https://prototype-kernel.readthedocs.io/en/latest/bpf/troubleshooting.html -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer