git: 02966cbdf03a - stable/13 - Fix fsck_ufs segfault when it needs to rerun.
Kirk McKusick
mckusick at FreeBSD.org
Wed Jun 2 19:38:57 UTC 2021
The branch stable/13 has been updated by mckusick:
URL: https://cgit.FreeBSD.org/src/commit/?id=02966cbdf03ae48a7c79cc75dd25eea9049ccb72
commit 02966cbdf03ae48a7c79cc75dd25eea9049ccb72
Author: Kirk McKusick <mckusick at FreeBSD.org>
AuthorDate: 2021-05-29 02:41:05 +0000
Commit: Kirk McKusick <mckusick at FreeBSD.org>
CommitDate: 2021-06-02 19:41:38 +0000
Fix fsck_ufs segfault when it needs to rerun.
Sponsored by: Netflix
(cherry picked from commit 5c9e9eb7a27feb24136c16706f3db8ce7c8bbc47)
---
sbin/fsck_ffs/inode.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c
index d4e5723f559f..ba2d5892238e 100644
--- a/sbin/fsck_ffs/inode.c
+++ b/sbin/fsck_ffs/inode.c
@@ -416,14 +416,14 @@ void
ginode(ino_t inumber, struct inode *ip)
{
ufs2_daddr_t iblk;
- static ino_t startinum = -1;
if (inumber < UFS_ROOTINO || inumber > maxino)
errx(EEXIT, "bad inode number %ju to ginode",
(uintmax_t)inumber);
ip->i_number = inumber;
- if (startinum != -1 &&
- inumber >= startinum && inumber < startinum + INOPB(&sblock)) {
+ if (icachebp != NULL &&
+ inumber >= icachebp->b_index &&
+ inumber < icachebp->b_index + INOPB(&sblock)) {
/* take an additional reference for the returned inode */
icachebp->b_refcnt++;
} else {
@@ -433,14 +433,14 @@ ginode(ino_t inumber, struct inode *ip)
brelse(icachebp);
icachebp = getdatablk(iblk, sblock.fs_bsize, BT_INODES);
if (icachebp->b_errs != 0) {
+ icachebp = NULL;
ip->i_bp = NULL;
ip->i_dp = &zino;
return;
}
- startinum = rounddown(inumber, INOPB(&sblock));
/* take a cache-hold reference on new icachebp */
icachebp->b_refcnt++;
- icachebp->b_index = startinum;
+ icachebp->b_index = rounddown(inumber, INOPB(&sblock));
}
ip->i_bp = icachebp;
if (sblock.fs_magic == FS_UFS1_MAGIC) {
More information about the dev-commits-src-branches
mailing list