If target < addr, then the first entry should be returned
a 'next', not consumed and ignored.
Signed-off-by: NeilBrown <neilb@suse.de>
p = decode48(cp);
elen = decode16(cp);
addr = decode32(cp);
- if (target < addr || target >= addr + elen)
+ if (target < addr) {
+ p = 0;
+ cp -= 12;
+ } else if (target >= addr + elen)
p = 0;
else
p += target - addr;
u64 p2;
p2 = decode48(cp);
elen = decode16(cp);
- addr = decode32(cp)
+ addr = decode32(cp);
if (elen == 0)
*nextp = ~0UL; /* no more meaningful
extents*/