From: Faiz Abbas Date: Wed, 4 Sep 2019 14:40:12 +0000 (+0530) Subject: disk: part_dos: Allocate at least one block size for mbr X-Git-Tag: v2019.10-rc4~5^2~3 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7aed3d380981565b5bb2810d5d13aad1ff994f1a;p=oweals%2Fu-boot.git disk: part_dos: Allocate at least one block size for mbr The blk_dread() following the mbr allocation reads one block from the device. This will lead to overflow if block size is greater than the size of legacy_mbr. Fix this by allocating at least one block size. Signed-off-by: Faiz Abbas Acked-by: Alexey Brodkin --- diff --git a/disk/part_dos.c b/disk/part_dos.c index aae9d95906..8ddc13b50c 100644 --- a/disk/part_dos.c +++ b/disk/part_dos.c @@ -93,7 +93,8 @@ static int test_block_type(unsigned char *buffer) static int part_test_dos(struct blk_desc *dev_desc) { #ifndef CONFIG_SPL_BUILD - ALLOC_CACHE_ALIGN_BUFFER(legacy_mbr, mbr, 1); + ALLOC_CACHE_ALIGN_BUFFER(legacy_mbr, mbr, + DIV_ROUND_UP(dev_desc->blksz, sizeof(legacy_mbr))); if (blk_dread(dev_desc, 0, 1, (ulong *)mbr) != 1) return -1;