diff --git a/disk/disk-uclass.c b/disk/disk-uclass.c index 32722cf917..f262105375 100644 --- a/disk/disk-uclass.c +++ b/disk/disk-uclass.c @@ -27,9 +27,17 @@ */ static int disk_blk_part_validate(struct udevice *dev, lbaint_t start, lbaint_t blkcnt) { + struct disk_part *part = dev_get_uclass_plat(dev); + if (device_get_uclass_id(dev) != UCLASS_PARTITION) return -ENOSYS; + if (start >= part->gpt_part_info.size) + return -E2BIG; + + if ((start + blkcnt) > part->gpt_part_info.size) + return -ERANGE; + return 0; }