Re: [RFC PATCH v8 1/9] Restartable sequences system call

From: Pavel Machek
Date: Sat Nov 26 2016 - 08:15:49 EST



Hi!

> Expose a new system call allowing each thread to register one userspace
> memory area to be used as an ABI between kernel and user-space for two
> purposes: user-space restartable sequences and quick access to read the
> current CPU number value from user-space.
>
> * Restartable sequences (per-cpu atomics)
>
> Restartables sequences allow user-space to perform update operations on
> per-cpu data without requiring heavy-weight atomic operations.
>
> The restartable critical sections (percpu atomics) work has been started
> by Paul Turner and Andrew Hunter. It lets the kernel handle restart of
> critical sections. [1] [2] The re-implementation proposed here brings a
> few simplifications to the ABI which facilitates porting to other
> architectures and speeds up the user-space fast path. A locking-based
> fall-back, purely implemented in user-space, is proposed here to deal
> with debugger single-stepping. This fallback interacts with rseq_start()
> and rseq_finish(), which force retries in response to concurrent
> lock-based activity.

Hmm. Purely software fallback needed for singlestepping... Looks like this is malware
writer's dream come true...

Also if you ever get bug in the restartable code, debugger will be useless to debug it...
unless new abilities are added to debuggers to manually schedule threads on CPUs.

Is this good idea?

Pavel