Bug 7737
Summary: | ReiserFS Sync Memory Corruption (CVE-2006-6128) | ||
---|---|---|---|
Product: | File System | Reporter: | Daniel Drake (dsd) |
Component: | ReiserFS | Assignee: | Eric Sandeen (sandeen) |
Status: | CLOSED PATCH_ALREADY_AVAILABLE | ||
Severity: | normal | CC: | diegocg |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.19 | Subsystem: | |
Regression: | --- | Bisected commit-id: |
Description
Daniel Drake
2006-12-23 07:52:35 UTC
Please next time contact security@kernel.org first This one seems to be unique to a patch in the fedora kernel; see also https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=250625 It was fixed as of kernel-2.6.19-1.2911.fc6 ----- linux-2.6-reiserfs-dentry-ref.patch did: - .kill_sb = kill_block_super, + .kill_sb = reiserfs_kill_sb, and then: +static void reiserfs_kill_sb(struct super_block *s) +{ + if (REISERFS_SB(s)) { + if (REISERFS_SB(s)->xattr_root) { + d_invalidate(REISERFS_SB(s)->xattr_root); + dput(REISERFS_SB(s)->xattr_root); + REISERFS_SB(s)->xattr_root = NULL; + } + if (REISERFS_SB(s)->priv_root) { + d_invalidate(REISERFS_SB(s)->priv_root); + dput(REISERFS_SB(s)->priv_root); + REISERFS_SB(s)->priv_root = NULL; + } + kill_block_super(s); + } +} but that means the VFS superblock never goes through kill_block_super if the reiser-specific SB isn't there. Upstream is: static void reiserfs_kill_sb(struct super_block *s) { if (REISERFS_SB(s)) { #ifdef CONFIG_REISERFS_FS_XATTR if (REISERFS_SB(s)->xattr_root) { d_invalidate(REISERFS_SB(s)->xattr_root); dput(REISERFS_SB(s)->xattr_root); REISERFS_SB(s)->xattr_root = NULL; } #endif if (REISERFS_SB(s)->priv_root) { d_invalidate(REISERFS_SB(s)->priv_root); dput(REISERFS_SB(s)->priv_root); REISERFS_SB(s)->priv_root = NULL; } } kill_block_super(s); } i.e. call kill_block_super in all cases. (see also http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=edc666e2ff9ec2e4e9510f1127c68c22cffc93f6) w/o that kill_block_super the half-set-up superblock is hanging around on a failed mount, waiting to go boom. -Eric |