On Thu, Aug 30, 2018 at 1:41 PM, Andrey Konovalov andreyknvl@google.com wrote:
arm64 has a feature called Top Byte Ignore, which allows to embed pointer tags into the top byte of each pointer. Userspace programs (such as HWASan, a memory debugging tool [1]) might use this feature and pass tagged user pointers to the kernel through syscalls or other interfaces.
This patch makes a few of the kernel interfaces accept tagged user pointers. The kernel is already able to handle user faults with tagged pointers and has the untagged_addr macro, which this patchset reuses.
Thanks!
[1] http://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html
Changes in v6:
- Added annotations for user pointer casts found by sparse.
Hi Catalin,
I've added annotations for the user pointer casts pointed by the new sparse flag -Wcast-from-as as you asked. I've used __force casts instead of adding specialized macros.
There are also non annotated casts for other pointer types (iomem, rcu) which are detected with the new flag, should I annotate those as well?
I'm not sure though what value would that bring though, as there are ~3000 various sparse warnings produced with the default flags anyway.
WDYT?
Thanks!
[1] https://github.com/lucvoo/sparse-dev/commit/5f960cb10f56ec2017c128ef9d16060e...