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>
This commit is contained in:
parent
fd75bf7bfa
commit
7aed3d3809
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user