RE: [PATCH v4 0/7] kernel: introduce uaccess logging

From: David Laight
Date: Sat Dec 11 2021 - 12:23:32 EST


From: Peter Collingbourne
> Sent: 09 December 2021 22:16
>
> This patch series introduces a kernel feature known as uaccess
> logging, which allows userspace programs to be made aware of the
> address and size of uaccesses performed by the kernel during
> the servicing of a syscall. More details on the motivation
> for and interface to this feature are available in the file
> Documentation/admin-guide/uaccess-logging.rst added by the final
> patch in the series.

How does this work when get_user() and put_user() are used to
do optimised copies?

While adding checks to copy_to/from_user() is going to have
a measurable performance impact - even if nothing is done,
adding them to get/put_user() (and friends) is going to
make some hot paths really slow.

So maybe you could add it so KASAN test kernels, but you can't
sensibly enable it on a production kernel.

Now, it might be that you could semi-sensibly log 'data' transfers.
But have you actually looked at all the transfers that happen
for something like sendmsg().
The 'user copy hardening' code already has a significant impact
on that code (in many places).


David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)