[prev in list] [next in list] [prev in thread] [next in thread]
List: openbsd-bugs
Subject: Re: Reproducible kernel panic on 6.0: "mount -o async,nosoftdep -u /home; tar xfz base60.tgz"
From: Carlin Bingham <cb () viennan ! net>
Date: 2017-04-08 1:29:39
Message-ID: 20170408012939.ahn46gil5arnoewq () vorpal ! my ! domain
[Download RAW message or body]
On Fri, Feb 03, 2017 at 04:43:15PM +0800, Tinker wrote:
> Reproduction script:
>
> Boot your OpenBSD 6.0 MP machine which has /home mounted as softdep, and do:
>
> mount -o async,nosoftdep -u /home
>
> mkdir /home/exploit; cd /home/exploit
>
> tar xfz /YOUR/INSTALLER/DIR/base60.tgz
>
> tar xfz /YOUR/INSTALLER/DIR/base60.tgz
>
> Outcome: The kernel will go into panic with the error "panic:
> softdep_update_inodeblock: update failed".
>
The problem is that changing softdep with mount -u doesn't work on rw
volumes, per the man page:
This option is ignored when
using the -u flag and a file system is already mounted
read/write.
But this means async,nosoftdep causes the volume to end up with both
async and softdep.
This patch should prevent that from happening.
--
Carlin
Index: sys/ufs/ffs/ffs_vfsops.c
===================================================================
RCS file: /cvs/src/sys/ufs/ffs/ffs_vfsops.c,v
retrieving revision 1.164
diff -u -p -u -r1.164 ffs_vfsops.c
--- sys/ufs/ffs/ffs_vfsops.c 15 Sep 2016 02:00:18 -0000 1.164
+++ sys/ufs/ffs/ffs_vfsops.c 8 Apr 2017 01:22:42 -0000
@@ -279,6 +279,8 @@ ffs_mount(struct mount *mp, const char *
flags |= FORCECLOSE;
error = softdep_flushfiles(mp, flags, p);
#elif FFS_SOFTUPDATES
+ if (mp->mnt_flag & MNT_ASYNC)
+ return (EINVAL);
mp->mnt_flag |= MNT_SOFTDEP;
#endif
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic