diff mbox series

[2/3] dm-flakey: fix a bug with 32-bit highmem systems

Message ID alpine.LRH.2.21.2301221402580.15312@file01.intranet.prod.int.rdu2.redhat.com (mailing list archive)
State Accepted, archived
Delegated to: Mike Snitzer
Headers show
Series [1/3] dm-flakey: don't corrupt the zero page | expand

Commit Message

Mikulas Patocka Jan. 22, 2023, 7:03 p.m. UTC
The function page_address does not work with 32-bit systems with high
memory. Use bvec_kmap_local/kunmap_local instead.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org

---
 drivers/md/dm-flakey.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Comments

Sweet Tea Dorminy Jan. 23, 2023, 5 a.m. UTC | #1
On 1/22/23 14:03, Mikulas Patocka wrote:
> The function page_address does not work with 32-bit systems with high
> memory. Use bvec_kmap_local/kunmap_local instead.
> 
> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> Cc: stable@vger.kernel.org
Reviewed-by: Sweet Tea Dorminy <sweettea-kernel@dorminy.me>
> 
> ---
>   drivers/md/dm-flakey.c |    3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> Index: bcachefs/drivers/md/dm-flakey.c
> ===================================================================
> --- bcachefs.orig/drivers/md/dm-flakey.c	2023-01-22 16:58:40.000000000 +0100
> +++ bcachefs/drivers/md/dm-flakey.c	2023-01-22 17:13:53.000000000 +0100
> @@ -307,8 +307,9 @@ static void corrupt_bio_data(struct bio
>   			struct page *page = bio_iter_page(bio, iter);
>   			if (unlikely(page == ZERO_PAGE(0)))
>   				break;
> -			segment = (page_address(page) + bio_iter_offset(bio, iter));
> +			segment = bvec_kmap_local(&bvec);
>   			segment[corrupt_bio_byte] = fc->corrupt_bio_value;
> +			kunmap_local(segment);
>   			DMDEBUG("Corrupting data bio=%p by writing %u to byte %u "
>   				"(rw=%c bi_opf=%u bi_sector=%llu size=%u)\n",
>   				bio, fc->corrupt_bio_value, fc->corrupt_bio_byte,
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://listman.redhat.com/mailman/listinfo/dm-devel

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
diff mbox series

Patch

Index: bcachefs/drivers/md/dm-flakey.c
===================================================================
--- bcachefs.orig/drivers/md/dm-flakey.c	2023-01-22 16:58:40.000000000 +0100
+++ bcachefs/drivers/md/dm-flakey.c	2023-01-22 17:13:53.000000000 +0100
@@ -307,8 +307,9 @@  static void corrupt_bio_data(struct bio
 			struct page *page = bio_iter_page(bio, iter);
 			if (unlikely(page == ZERO_PAGE(0)))
 				break;
-			segment = (page_address(page) + bio_iter_offset(bio, iter));
+			segment = bvec_kmap_local(&bvec);
 			segment[corrupt_bio_byte] = fc->corrupt_bio_value;
+			kunmap_local(segment);
 			DMDEBUG("Corrupting data bio=%p by writing %u to byte %u "
 				"(rw=%c bi_opf=%u bi_sector=%llu size=%u)\n",
 				bio, fc->corrupt_bio_value, fc->corrupt_bio_byte,