Hi Alex, On 28.07.23 21:42, Alejandro Colomar wrote: > 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. Sounds good, confirmed. Thanks, Michael > In this case, just call > .BR bpf () > again with the same parameters. > > >> .B EBADF >> .I fd >> is not an open file descriptor. >