Message ID | 20190904144012.26829-1-faiz_abbas@ti.com |
---|---|
State | Accepted |
Commit | 7aed3d380981565b5bb2810d5d13aad1ff994f1a |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot] disk: part_dos: Allocate at least one block size for mbr | expand |
Hi Faiz, > -----Original Message----- > From: Faiz Abbas <faiz_abbas@ti.com> > Sent: Wednesday, September 4, 2019 5:40 PM > To: u-boot@lists.denx.de > Cc: trini@konsulko.com; Alexey Brodkin <abrodkin@synopsys.com>; paulemge@forallsecure.com; > faiz_abbas@ti.com > Subject: [PATCH] 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 <faiz_abbas@ti.com> Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
On Wed, Sep 04, 2019 at 08:10:12PM +0530, Faiz Abbas wrote: > 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 <faiz_abbas@ti.com> > Acked-by: Alexey Brodkin <abrodkin@synopsys.com> Applied to u-boot/master, thanks!
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;
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 <faiz_abbas@ti.com> --- disk/part_dos.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)