summaryrefslogtreecommitdiff
path: root/sys/stand
diff options
context:
space:
mode:
authorjmcneill <jmcneill@NetBSD.org>2021-06-23 20:55:50 +0000
committerjmcneill <jmcneill@NetBSD.org>2021-06-23 20:55:50 +0000
commit6de79e17e2c2d52cca14bacee541af4afe53c50d (patch)
treefc84164ad99da3794a86eba3406c77d0622f4cca /sys/stand
parent72ffdcff9992eb4b92968c46c0d08d04bfb6664b (diff)
Fix buffer size for alignment adjusted block I/O reads.
Diffstat (limited to 'sys/stand')
-rw-r--r--sys/stand/efiboot/efiblock.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/stand/efiboot/efiblock.c b/sys/stand/efiboot/efiblock.c
index cee4c734693..efd494e0bc6 100644
--- a/sys/stand/efiboot/efiblock.c
+++ b/sys/stand/efiboot/efiblock.c
@@ -1,4 +1,4 @@
-/* $NetBSD: efiblock.c,v 1.15 2021/06/22 21:56:51 jmcneill Exp $ */
+/* $NetBSD: efiblock.c,v 1.16 2021/06/23 20:55:50 jmcneill Exp $ */
/*-
* Copyright (c) 2016 Kimihiro Nonaka <nonaka@netbsd.org>
@@ -133,7 +133,9 @@ efi_block_do_read_blockio(struct efi_block_dev *bdev, UINT64 off, void *buf,
blkbuf_offset = off % bdev->bio->Media->BlockSize;
blkbuf_size = (lba_end - lba_start) * bdev->bio->Media->BlockSize;
if (bdev->bio->Media->IoAlign > 1) {
- blkbuf_size += bdev->bio->Media->IoAlign - 1;
+ blkbuf_size = (blkbuf_size + bdev->bio-Media->IoAlign - 1) /
+ bdev->bio->Media->IoAlign *
+ bdev->bio->Media->IoAlign;
}
blkbuf = AllocatePool(blkbuf_size);