Re: [PATCH v4 0/7] kernel: introduce uaccess logging
From: Peter Collingbourne <hidden>
Date: 2021-12-13 19:48:49
Also in:
lkml
On Sat, Dec 11, 2021 at 9:23 AM David Laight [off-list ref] wrote:
From: Peter Collingbournequoted
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).
Hi David, Yes, I realised after I sent out my patch (and while writing test cases for it) that it didn't cover get_user()/put_user(). I have a patch under development that will add this coverage. I used it to run my invalid syscall and uname benchmarks and the results were basically the same as without the coverage. Are you aware of any benchmarks that cover sendmsg()? I can try to look at writing my own if not. I was also planning to write a benchmark that uses getresuid() as this was the simplest syscall that I could find that does multiple put_user() calls. Peter _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel