Commit 16549e3
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
Signed-off-by: bspengler-oss <94915855+bspengler-oss@users.noreply.github.com>1 parent 1f3444f commit 16549e3
1 file changed
+17
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
911 | 911 | | |
912 | 912 | | |
913 | 913 | | |
| 914 | + | |
| 915 | + | |
914 | 916 | | |
915 | 917 | | |
916 | 918 | | |
917 | 919 | | |
918 | | - | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
919 | 927 | | |
920 | 928 | | |
921 | 929 | | |
| |||
933 | 941 | | |
934 | 942 | | |
935 | 943 | | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
936 | 951 | | |
937 | | - | |
| 952 | + | |
938 | 953 | | |
939 | 954 | | |
940 | 955 | | |
| |||
0 commit comments