Hi Michael, Alexei, On 2023-07-21 14:06, Michael Weiß wrote: > Since commit c3494801cd1785e2 ("bpf: check pending signals while > verifying programs", bpf() may also fail with EAGAIN if the verifier > detects pending signals. > > This was triggered in the cmld of GyroidOS when loading a cgroups > device program during container start. We had a look in the man page > and where confused that EAGAIN was not listed as possible error. > Digging in the kernel source revealed the EAGAIN in the verifier > introduced by the commit above. Further investigation showed that > libbpf already wraps that case, by a retry loop. > > Since GyroidOS uses the system call directly and not libbpf, we missed > to handle this error correctly. Thus, this hint in the man page for > the bpf() system call should be helpful for others who implement on > the low-level interface, too. > > Signed-off-by: Michael Weiß <michael.weiss@xxxxxxxxxxxxxxxxxxx> Thanks for the patch! I find a few sentences have some minor wording issues. I'll propose a small change to your proposal. Please check. If you confirm it, I'll amend your commit, so you don't need to resend. See below Cheers, Alex > --- > man2/bpf.2 | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/man2/bpf.2 b/man2/bpf.2 > index d32435a1d..7cef7f24d 100644 > --- a/man2/bpf.2 > +++ b/man2/bpf.2 > @@ -991,6 +991,16 @@ and examine > .I log_buf > for the specific reason provided by the verifier. > .TP > +.B EAGAIN > +For > +.BR BPF_PROG_LOAD , > +indicates that needed resources are blocked. > +This is due to the verifier detects pending signals while it is checking > +the bpf program about its validity. > +In this case, just call > +.BR bpf () > +again with the same parameters. > +.TP diff --git a/man2/bpf.2 b/man2/bpf.2 index 7cef7f24d..ea68e1293 100644 --- a/man2/bpf.2 +++ b/man2/bpf.2 @@ -995,8 +995,8 @@ .SH ERRORS For .BR BPF_PROG_LOAD , indicates that needed resources are blocked. -This is due to the verifier detects pending signals while it is checking -the bpf program about its validity. +This happens when the verifier detects pending signals +while it is checking the validity of the bpf program. In this case, just call .BR bpf () again with the same parameters. > .B EBADF > .I fd > is not an open file descriptor. -- <http://www.alejandro-colomar.es/> GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature