lkml.org 
[lkml]   [2006]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 2.6.15 Bug? New security model?
On Wed, 8 Feb 2006 14:11:24 -0800 Chris Wright wrote:

> * Bernd Schubert (bernd-schubert@gmx.de) wrote:
> > Er, you mean /proc/fs/reiserfs/{partition}/on-disk-super?
>
> Yup.
>
> > bernd@bathl ~>grep attrs_cleared /proc/fs/reiserfs/hda6/on-disk-super
> > flags: 1[attrs_cleared]
>
> > > 2) does mount -o attrs ... make a difference?
> >
> > Yes, 2.6.13 now makes the same trouble. No difference with 2.6.15.3.
> > I played with mount -o noattrs, this makes no difference with 2.6.13, but has
> > some effects to 2.6.15.3. Creating files in /var/run is possible again,
> > lsattr gives "lsattr: Inappropriate ioctl for device While reading flags
> > on /var/run", but deleting files in /var/run is still impossible (still
> > rather bad for the init-scripts).

Is the filesystem in question old - could it be created initially in the
reiserfs v3.5 format (used with 2.2.x kernels) and later converted to
v3.6 (by mounting with the "conv" option)?

> Yes, that's what I thought. There's still some backward logic in there.
> noattrs vs. attrs triggers whether the code path that's patched in
> 2.6.15.3 is taken. I'll dig a bit more, but hopefully the reiserfs folks
> can fix this for us.

Here is a simple test case which reproduces the problem with a
filesystem converted from v3.5:

# dd if=/dev/zero of=tmp.img bs=1M count=100
# mkreiserfs --format 3.5 -f tmp.img
# mount -t reiserfs -o loop,conv tmp.img /mnt/disk/
# umount /mnt/disk/
# reiserfsck --clean-attributes tmp.img
# mount -t reiserfs -o loop tmp.img /mnt/disk/

At this point, I get obviously wrong attributes on /mnt/disk:

# lsattr -d /mnt/disk/
-----a--c---- /mnt/disk/

BTW, this breaks even with kernels earlier than 2.6.15.2, if you also
add the "attrs" options to the last mount command.

Apparently the reiserfs attrs code has been broken for such converted
filesystems for some time, but it could be enabled only with the "attrs"
option, so people were not hitting this. However, the following patch:

http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2949ccf9379678df66ecf2ca70ed4656159eacdd

changed the logic to enable the "attrs" option on all filesystems which
have the reiserfs_attrs_cleared flag. But that patch was broken - it
did not really set the option properly, so the attrs-related breakage
did not became visible until yet another patch:

http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d35c602870ece3166cff3d25fbc687a7f707acf3

which later made into 2.6.15.2, and caused problems for some people.

I have noticed that fs/reiserfs/inode.c:init_inode() does not initialize
REISERFS_I(inode)->i_attrs and inode->i_flags (as done by
sd_attrs_to_i_attrs()) in the branch for v1 stat data; maybe this causes
the problem?
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2006-02-11 22:58    [W:0.046 / U:2.544 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site