On 06/04, Kees Cook wrote: > > On Wed, Jun 3, 2015 at 3:09 PM, Tycho Andersen > > @@ -556,6 +557,11 @@ static int ptrace_setoptions(struct task_struct *child, unsigned long data) > > if (data & ~(unsigned long)PTRACE_O_MASK) > > return -EINVAL; > > > > +#ifdef CONFIG_CHECKPOINT_RESTORE > > + if (data & PTRACE_O_SUSPEND_SECCOMP && !may_suspend_seccomp()) > > + return -EPERM; > > +#endif > > I'd like to avoid seeing any #ifdefs added to the .c files. Using a > static inline for may_suspend_seccomp() should cause this statement to > be eliminated by the compiler. Agreed, me too, but see below. > > @@ -590,6 +590,11 @@ void secure_computing_strict(int this_syscall) > > { > > int mode = current->seccomp.mode; > > > > +#ifdef CONFIG_CHECKPOINT_RESTORE > > + if (unlikely(current->ptrace & PT_SUSPEND_SECCOMP)) > > + return; > > +#endif > > Could PT_SUSPEND_SECCOMP be defined to "0" with not > CONFIG_CHECKPOINT_RESTORE? Then this wouldn't need ifdefs, and should > be similarly eliminated by the compiler. Yes, but this way we add another ugly ifdef into .h, and if you read this code it is not clear that this check should be eliminated by gcc. I'd suggest if (config_enabled(CONFIG_CHECKPOINT_RESTORE) && unlikely(current->ptrace & PT_SUSPEND_SECCOMP)) return; Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html