Revert "btrfs: compression: drop kmap/kunmap from zstd"
This reverts commit
bbaf9715f3f5b5ff0de71da91fcc34ee9c198ed8.
The kmaps in compression code are still needed and cause crashes on
32bit machines (ARM, x86). Reproducible eg. by running fstest btrfs/004
with enabled LZO or ZSTD compression.
Example stacktrace with ZSTD on a 32bit ARM machine:
Unable to handle kernel NULL pointer dereference at virtual address
00000000
pgd =
c4159ed3
[
00000000] *pgd=
00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 210 Comm: kworker/u2:3 Not tainted 5.14.0-rc79+ #12
Hardware name: Allwinner sun4i/sun5i Families
Workqueue: btrfs-delalloc btrfs_work_helper
PC is at mmiocpy+0x48/0x330
LR is at ZSTD_compressStream_generic+0x15c/0x28c
(mmiocpy) from [<
c0629648>] (ZSTD_compressStream_generic+0x15c/0x28c)
(ZSTD_compressStream_generic) from [<
c06297dc>] (ZSTD_compressStream+0x64/0xa0)
(ZSTD_compressStream) from [<
c049444c>] (zstd_compress_pages+0x170/0x488)
(zstd_compress_pages) from [<
c0496798>] (btrfs_compress_pages+0x124/0x12c)
(btrfs_compress_pages) from [<
c043c068>] (compress_file_range+0x3c0/0x834)
(compress_file_range) from [<
c043c4ec>] (async_cow_start+0x10/0x28)
(async_cow_start) from [<
c0475c3c>] (btrfs_work_helper+0x100/0x230)
(btrfs_work_helper) from [<
c014ef68>] (process_one_work+0x1b4/0x418)
(process_one_work) from [<
c014f210>] (worker_thread+0x44/0x524)
(worker_thread) from [<
c0156aa4>] (kthread+0x180/0x1b0)
(kthread) from [<
c0100150>]
Link: https://lore.kernel.org/all/CAJCQCtT+OuemovPO7GZk8Y8=qtOObr0XTDp8jh4OHD6y84AFxw@mail.gmail.com/
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=214839
Signed-off-by: David Sterba <dsterba@suse.com>