On Mon, Oct 03, 2022 at 10:51:02PM +0000, Edgecombe, Rick P wrote: > CC Mike about ptrace/CRIU question. > > On Mon, 2022-10-03 at 12:01 -0700, Kees Cook wrote: > > On Thu, Sep 29, 2022 at 03:29:20PM -0700, Rick Edgecombe wrote: > > > From: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> > > > > > > Add three new arch_prctl() handles: > > > > > > - ARCH_CET_ENABLE/DISABLE enables or disables the specified > > > feature. Returns 0 on success or an error. > > > > > > - ARCH_CET_LOCK prevents future disabling or enabling of the > > > specified feature. Returns 0 on success or an error > > > > > > The features are handled per-thread and inherited over > > > fork(2)/clone(2), > > > but reset on exec(). ... > > > +#include <linux/sched.h> > > > +#include <linux/bitops.h> > > > +#include <asm/prctl.h> > > > + > > > +long cet_prctl(struct task_struct *task, int option, unsigned long > > > features) > > > +{ > > > + if (option == ARCH_CET_LOCK) { > > > + task->thread.features_locked |= features; > > > + return 0; > > > + } > > > + > > > + /* Don't allow via ptrace */ > > > + if (task != current) > > > + return -EINVAL; > > > > ... but locking _is_ allowed via ptrace? If that intended, it should > > be > > explicitly mentioned in the commit log and in a comment here. > > I believe CRIU needs to lock via ptrace as well. Maybe Mike can > confirm. Actually, I didn't use ptrace for locking, I did it with "plain" arch_prctl(). I still can't say for sure CRIU won't need this, I didn't have time yet to have a closer look at this set. -- Sincerely yours, Mike.