]> git.baikalelectronics.ru Git - kernel.git/commit
dm flakey: don't corrupt the zero page
authorMikulas Patocka <mpatocka@redhat.com>
Sun, 22 Jan 2023 19:02:57 +0000 (14:02 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Mar 2023 08:34:23 +0000 (09:34 +0100)
commit3cc2810e2d340b7470a84479206446d27d83160f
tree9da0785111a5adbde16334c0ea554dfbcee03994
parenta103e5cf55bc74b15401e83fd650e694e4abb3b2
dm flakey: don't corrupt the zero page

commit 8594d8276f236c23a4d6685632435f1577787b6e upstream.

When we need to zero some range on a block device, the function
__blkdev_issue_zero_pages submits a write bio with the bio vector pointing
to the zero page. If we use dm-flakey with corrupt bio writes option, it
will corrupt the content of the zero page which results in crashes of
various userspace programs. Glibc assumes that memory returned by mmap is
zeroed and it uses it for calloc implementation; if the newly mapped
memory is not zeroed, calloc will return non-zeroed memory.

Fix this bug by testing if the page is equal to ZERO_PAGE(0) and
avoiding the corruption in this case.

Cc: stable@vger.kernel.org
Fixes: abd2f25984ab ("dm flakey: Properly corrupt multi-page bios.")
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reviewed-by: Sweet Tea Dorminy <sweettea-kernel@dorminy.me>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/dm-flakey.c