From: Chris Mason <mason@suse.com>
To: Dave Johnson <djohnson+linux-kernel@sw.starentnetworks.com>,
agruen@suse.de
Cc: Olaf Hering <olh@suse.de>, linux-kernel@vger.kernel.org
Subject: Re: cramfs mounts provide corrupted content since 2.6.15
Date: Tue, 28 Feb 2006 14:14:55 -0500 [thread overview]
Message-ID: <200602281414.57084.mason@suse.com> (raw)
In-Reply-To: <17411.10591.927433.619327@zeus.sw.starentnetworks.com>
On Monday 27 February 2006 11:31, Dave Johnson wrote:
> I think I've spotted an issue.
>
> Both ifind() and find_inode() will call the test function on inodes
> that still have I_LOCK|I_NEW set. This means everything that the
> test function needs _must_ be set in the set function (which is called
> while the inode_lock is still held).
>
> This could cause issues for inodes of 1 (only i_ino is getting set
> right now).
The problem is that two files are getting the same inode number because
their offsets are the same.
ls -lai:
3412140 -rw-r--r-- 1 root root 0 Jan 1 1970 ./etc/mtab
3412140 -rw-r--r-- 1 root root 1220 Jan 1 1970 ./etc/nsswitch.conf
So, if /etc/mtab is read first, /etc/nsswitch.conf ends up with size zero,
because it uses the mtab inode.
Andreas Gruenbacher suggested this change. Along with your patch, things
are working here again:
-chris
diff -r 0f4fc87886c2 fs/cramfs/inode.c
--- a/fs/cramfs/inode.c Fri Feb 24 16:18:23 2006 -0500
+++ b/fs/cramfs/inode.c Tue Feb 28 14:00:11 2006 -0500
@@ -36,7 +36,7 @@ static DECLARE_MUTEX(read_mutex);
/* These two macros may change in future, to provide better st_ino
semantics. */
-#define CRAMINO(x) ((x)->offset?(x)->offset<<2:1)
+#define CRAMINO(x) (((x)->offset && (x)->size)?(x)->offset<<2:1)
#define OFFSET(x) ((x)->i_ino)
next prev parent reply other threads:[~2006-02-28 19:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-25 11:08 cramfs mounts provide corrupted content since 2.6.15 Olaf Hering
2006-02-25 12:55 ` Olaf Hering
2006-02-25 16:38 ` Dave Johnson
2006-02-25 22:01 ` Olaf Hering
2006-02-27 16:31 ` Dave Johnson
2006-02-28 19:14 ` Chris Mason [this message]
2006-02-28 20:40 ` Dave Johnson
2006-02-28 20:53 ` Chris Mason
2006-02-28 21:08 ` Dave Johnson
2006-02-28 21:13 ` Chris Mason
[not found] ` <20060301155813.245d71ff.akpm@osdl.org>
[not found] ` <20060301235858.GA6792@suse.de>
[not found] ` <17414.16541.260439.712849@zeus.sw.starentnetworks.com>
[not found] ` <20060302115446.GA9708@suse.de>
[not found] ` <20060302093216.67b90533.akpm@osdl.org>
2006-03-02 17:45 ` [PATCH] " Dave Johnson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200602281414.57084.mason@suse.com \
--to=mason@suse.com \
--cc=agruen@suse.de \
--cc=djohnson+linux-kernel@sw.starentnetworks.com \
--cc=linux-kernel@vger.kernel.org \
--cc=olh@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox