1
0
mirror of https://git.proxmox.com/git/mirror_zfs.git synced 2025-02-24 15:58:47 +03:00
mirror_zfs/include
Rob Norris 30ea442961 zfs_log: add flex array fields to log record structs
ZIL log record structs (lr_XX_t) are frequently allocated with extra
space after the struct to carry variable-sized "payload" items.

Linux 6.10+ compiled with CONFIG_FORTIFY_SOURCE has been doing runtime
bounds checking on memcpy() calls. Because these types had no indicator
that they might use more space than their simple definition,
__fortify_memcpy_chk will frequently complain about overruns eg:

    memcpy: detected field-spanning write (size 7) of single field
        "lr + 1" at zfs_log.c:425 (size 0)
    memcpy: detected field-spanning write (size 9) of single field
        "(char *)(lr + 1)" at zfs_log.c:593 (size 0)
    memcpy: detected field-spanning write (size 4) of single field
        "(char *)(lr + 1) + snamesize" at zfs_log.c:594 (size 0)
    memcpy: detected field-spanning write (size 7) of single field
        "lr + 1" at zfs_log.c:425 (size 0)
    memcpy: detected field-spanning write (size 9) of single field
        "(char *)(lr + 1)" at zfs_log.c:593 (size 0)
    memcpy: detected field-spanning write (size 4) of single field
        "(char *)(lr + 1) + snamesize" at zfs_log.c:594 (size 0)
    memcpy: detected field-spanning write (size 7) of single field
        "lr + 1" at zfs_log.c:425 (size 0)
    memcpy: detected field-spanning write (size 9) of single field
        "(char *)(lr + 1)" at zfs_log.c:593 (size 0)
    memcpy: detected field-spanning write (size 4) of single field
        "(char *)(lr + 1) + snamesize" at zfs_log.c:594 (size 0)

To fix this, this commit adds flex array fields to all lr_XX_t structs
that require them, and then uses those fields to access that
end-of-struct area rather than more complicated casts and pointer
addition.

Sponsored-by: https://despairlabs.com/sponsor/
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Closes 
Closes 
2024-11-04 10:34:48 -08:00
..
os Linux 6.11: add compat macro for page_mapping() 2024-08-22 15:42:14 -07:00
sys zfs_log: add flex array fields to log record structs 2024-11-04 10:34:48 -08:00
.gitignore
cityhash.h
libnvpair.h
libuutil_common.h
libuutil_impl.h
libuutil.h
libzfs_core.h
libzfs.h Add ashift validation when adding devices to a pool 2024-04-29 13:50:05 -07:00
libzfsbootenv.h
libzutil.h zpool: Add slot power control, print power status 2024-01-29 15:12:06 -08:00
Makefile.am brt: lift internal definitions into _impl header 2023-11-28 12:56:43 -08:00
thread_pool.h
zfeature_common.h
zfs_comutil.h
zfs_deleg.h
zfs_fletcher.h
zfs_namecheck.h
zfs_prop.h