Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-7-1]: src/usr.sbin/makefs Pull up following revision(s) (requeste...



details:   https://anonhg.NetBSD.org/src/rev/578da9900c39
branches:  netbsd-7-1
changeset: 319876:578da9900c39
user:      martin <martin%NetBSD.org@localhost>
date:      Thu Jun 14 19:40:07 2018 +0000

description:
Pull up following revision(s) (requested by maya in ticket #1615):

        usr.sbin/makefs/ffs.c: revision 1.70

PR/52828: Mark Johnston: makefs UFS2 lazy inode initialization is buggy
makefs(8) emulates UFS2 in performing lazy initialization of inode
blocks when allocating and writing inodes. However, it only ever
initializes one inode block at a time, which may be insufficient.

If so, a later initialization may clobber an inode, resulting in
an inconsistent filesystem.

I committed a minimal fix for the problem to FreeBSD:
https://svnweb.freebsd.org/changeset/base/326912

diffstat:

 usr.sbin/makefs/ffs.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (27 lines):

diff -r 1be24e34cf2f -r 578da9900c39 usr.sbin/makefs/ffs.c
--- a/usr.sbin/makefs/ffs.c     Thu Jun 14 19:36:53 2018 +0000
+++ b/usr.sbin/makefs/ffs.c     Thu Jun 14 19:40:07 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ffs.c,v 1.63.6.1 2015/04/14 05:08:09 snj Exp $ */
+/*     $NetBSD: ffs.c,v 1.63.6.1.6.1 2018/06/14 19:40:07 martin Exp $  */
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -71,7 +71,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: ffs.c,v 1.63.6.1 2015/04/14 05:08:09 snj Exp $");
+__RCSID("$NetBSD: ffs.c,v 1.63.6.1.6.1 2018/06/14 19:40:07 martin Exp $");
 #endif /* !__lint */
 
 #include <sys/param.h>
@@ -1102,7 +1102,7 @@
         * Initialize inode blocks on the fly for UFS2.
         */
        initediblk = ufs_rw32(cgp->cg_initediblk, fsopts->needswap);
-       if (ffs_opts->version == 2 &&
+       while (ffs_opts->version == 2 &&
            (uint32_t)(cgino + FFS_INOPB(fs)) > initediblk &&
            initediblk < ufs_rw32(cgp->cg_niblk, fsopts->needswap)) {
                memset(buf, 0, fs->fs_bsize);



Home | Main Index | Thread Index | Old Index