ipl: Abort early if we know we will not reach the block Signed-off-by: Helge Deller <deller@gmx.de>
diff --git a/ipl/offset.c b/ipl/offset.c index c048461..fb2a6ff 100644 --- a/ipl/offset.c +++ b/ipl/offset.c
@@ -23,6 +23,13 @@ if (Debug) printf("offset_read(%d, 0x%p, %d, %lld)\r\n", fd, buf, count, devaddr); + /* abort early if we reach firmware limit */ + if (disk_2gb_limit && ((devaddr + count) >> 31)) { + printf("offset_read(%lld): block not reachable via firmware call\r\n", + devaddr + count); + return -1; + } + /* truncate 'count' according to max device/file size */ if (o->length > 0 && devaddr < o->length && devaddr + count > o->length) count = o->length - devaddr;