DF-3249 / fix.diff
--- a/sys/vfs/ext2fs/ext2_subr.c 2026-06-29 12:51:19.000000000 +0000 +++ b/sys/vfs/ext2fs/ext2_subr.c 2026-10-26 03:28:45.669473983 +0000 @@ -176,17 +176,21 @@ end = start - fs->e2fs_contigsumsize; if (end < 0) end = -1; - loc = start / NBBY; - bit = 1 << (start % NBBY); - for (i = start; i > end; i--) { - if ((bbp[loc] & bit) != 0) - break; - if ((i & (NBBY - 1)) != 0) - bit >>= 1; - else { - loc--; - bit = 1 << (NBBY - 1); + if (start >= 0) { + loc = start / NBBY; + bit = 1 << (start % NBBY); + for (i = start; i > end; i--) { + if ((bbp[loc] & bit) != 0) + break; + if ((i & (NBBY - 1)) != 0) + bit >>= 1; + else { + loc--; + bit = 1 << (NBBY - 1); + } } + } else { + i = start; /* bno == 0: nothing before bit 0 */ } back = start - i; |