[CRIU] [PATCH 1/2] don't assume the kernel has CONFIG_SECCOMP
Tycho Andersen
tycho.andersen at canonical.com
Thu Jun 25 09:00:26 PDT 2015
On Thu, Jun 25, 2015 at 06:25:38PM +0300, Pavel Emelyanov wrote:
> On 06/25/2015 06:18 PM, Tycho Andersen wrote:
> > On Thu, Jun 25, 2015 at 06:15:43PM +0300, Pavel Emelyanov wrote:
> >>
> >>>> Why is this required? If criu finds seccomp mark in /proc, then shouldn't
> >>>> it properly parse one?
> >>>
> >>> The problem is when it doesn't have Seccomp:. We won't get to 9 things
> >>> parsed, even though we check for 9 things. I suppose it's not strictly
> >>> necessary in the while() loop, but the check for success below
> >>> requires it.
> >>
> >> Ah, but then this check is not about CONFIG_HAS_SECCOMP (user space library) but
> >> purely about kernel. Either we meet one there or not, but we should not depend on
> >> the userspace library presence.
> >
> > We're not depending on the library presence, are we?
>
> Well, this hunk
>
> @@ -780,7 +785,13 @@ int parse_pid_status(pid_t pid, struct proc_status_creds *cr)
> if (bfdopenr(&f))
> return -1;
>
> - while (done < 9) {
> +#ifdef CONFIG_HAS_SECCOMP
> +#define THINGS_TO_PARSE 9
> +#else
> +#define THINGS_TO_PARSE 8
> +#endif
> +
> + while (done < THINGS_TO_PARSE) {
> str = breadline(&f);
> if (str == NULL)
> break;
>
> from patch #1 brings one :) If there's no seccomp.h header on the system the proc
> parsing code starts ignoring the Seccomp: field. While the field presence doesn't
> depend on it.
The header is linux/seccomp.h though, which is a kernel header (vs.
just seccomp.h, which is libseccomp).
> > The problem is
> > that a /proc/pid/status entry will simply not have a line containing
> > "Seccomp:" if it is kernel 3.11, but if we expect it to be there (by
> > requiring 9 successful things to parse), we will always fail on a 3.11
> > kernel.
>
> Yes, but on the other hand, if we don't have seccomp.h while process is seccomp-ed
> we will ignore this fact.
I guess there is a problem of what if you build an old criu and
upgrade your kernel to a new one that supports seccomp, so we probably
do need something a little better here.
Tycho
More information about the CRIU
mailing list