diff options
| author | jmcneill <jmcneill@NetBSD.org> | 2021-06-23 20:55:50 +0000 |
|---|---|---|
| committer | jmcneill <jmcneill@NetBSD.org> | 2021-06-23 20:55:50 +0000 |
| commit | 6de79e17e2c2d52cca14bacee541af4afe53c50d (patch) | |
| tree | fc84164ad99da3794a86eba3406c77d0622f4cca | |
| parent | 72ffdcff9992eb4b92968c46c0d08d04bfb6664b (diff) | |
Fix buffer size for alignment adjusted block I/O reads.
| -rw-r--r-- | sys/stand/efiboot/efiblock.c | 6 |
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); |
