Shortlinks occupy the space of both di_db and di_ib when used. However, everywhere that wants to read or write a shortlink takes a pointer do di_db and promptly runs off the end of it into di_ib. This is fine on most architectures, if a little dodgy. However, on CHERI, the compiler can optionally restrict the bounds on pointers to subobjects to just that subobject, in order to mitigate intra-object buffer overflows, and this is enabled in CheriBSD's pure-capability kernels. Instead, clean this up by inserting a union such that a new di_shortlink can be added with the right size and element type, avoiding the need to cast and allowing the use of the DIP macro to access the field. This also mirrors how the ext2fs code implements extents support, with the exact same structure other than having a uint32_t i_data[] instead of a char di_shortlink[]. Reviewed by: mckusick, jhb Differential Revision: https://reviews.freebsd.org/D33650 |
||
---|---|---|
.. | ||
dumpvfscache | ||
localeck | ||
prtblknos | ||
README |
$FreeBSD$ This directory is for diagnostic programs. A diagnostic program is one that will inform you that something is wrong somewhere, for instance by traversing a kernel-structure and verifying the integrity. Please make a subdir per program, and add a brief description to this file. dumpvfscache program that can be used to examine the contents of the vfs name cache. localeck check for invalid/incomplete locales prtblknos Print out the blocks used by each inode in the list