mirror_zfs/module/os/linux/zfs
bspengler-oss 0dcb882037 Fix interaction of abd_iter_map()/abd_iter_unmap() with HIGHMEM
HIGHMEM kmap interfaces operate on only a single page at a time
yet ZFS hadn't accounted for this, resulting in crashes and
potential memory corruption on HIGHMEM (typically 32-bit) systems.
This was caught by PaX's KERNSEAL feature as it makes use of
HIGHMEM functionality on x64.

On typical 64-bit systems, this issue wouldn't have been observed,
as the map interfaces simply fall back to returning an address in
lowmem where the contiguous pages can be accessed directly.

Joint work with the PaX Team, tested by Mark van Dijk

Reviewed-by: RageLtMan <rageltman@sempervictus>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: bspengler-oss <94915855+bspengler-oss@users.noreply.github.com>
Closes #15668
Closes #18030
2025-12-19 19:55:14 -08:00
..
abd_os.c Fix interaction of abd_iter_map()/abd_iter_unmap() with HIGHMEM 2025-12-19 19:55:14 -08:00
arc_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
mmp_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
policy.c cred: properly pass and test creds on other threads (#17273) 2025-05-28 16:00:28 -07:00
qat_compress.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
qat_crypt.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
qat.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
spa_misc_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
trace.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_disk.c tunables: fix spelling 2025-06-17 10:50:26 -07:00
vdev_label_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
vdev_raidz.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_acl.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-04-16 09:59:45 -07:00
zfs_ctldir.c Linux: sync: remove async/sync accounting 2025-08-12 17:23:39 -07:00
zfs_debug.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_dir.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-04-16 09:59:45 -07:00
zfs_file_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_ioctl_os.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_racct.c SPDX: license tags: BSD-2-Clause 2025-04-16 09:59:44 -07:00
zfs_sysfs.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zfs_uio.c linux/uio: remove "skip" offset for UIO_ITER 2025-05-28 16:00:28 -07:00
zfs_vfsops.c enforce arc_dnode_limit 2025-08-07 12:11:34 -04:00
zfs_vnops_os.c Linux: zfs_putpage: document (and fix!) confusing sync/commit modes 2025-08-12 17:23:46 -07:00
zfs_znode_os.c Linux: sync: remove async/sync accounting 2025-08-12 17:23:39 -07:00
zio_crypt.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zpl_ctldir.c Linux 6.17: d_set_d_op() is no longer available 2025-10-21 10:36:35 -07:00
zpl_export.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zpl_file_range.c ioctl: remove FICLONE/FICLONERANGE/FIDEDUPERANGE compat 2025-06-17 10:50:27 -07:00
zpl_file.c Linux 6.18: replace write_cache_pages() 2025-12-17 11:24:44 -08:00
zpl_inode.c Linux 6.15: mkdir now returns struct dentry * 2025-05-28 16:00:28 -07:00
zpl_super.c Define sops->free_inode() to prevent use-after-free during lookup 2025-08-05 12:30:23 -04:00
zpl_xattr.c SPDX: license tags: CDDL-1.0 2025-04-16 09:59:44 -07:00
zvol_os.c Linux 6.18: block_device_operations->getgeo takes struct gendisk* 2025-12-17 11:24:44 -08:00