Re: [RFC 2/7] cramfs: create unique inode numbers

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <arnd@...>
Cc: <linux-fsdevel@...>, <linux-kernel@...>, <hch@...>
Date: Sunday, June 1, 2008 - 12:50 pm

On Sat, 31 May 2008 17:20:15 +0200, arnd@arndb.de wrote:

Couldn't this cause problems for NFS?  The same inode no longer has a
stable inode number across reboots.  Basing on dentry location can also
be an information leak and cause problems on 64bit machines with old
userspace.

We could keep the original approach and use a static counter otherwise.
Something roughly like this:

static ino_t cramfs_get_ino(struct super_block *sb,
			struct cramfs_inode *cramfs_inode)
{
	static ino_t counter;
	struct inode *inode;

	if (cramfs_inode->offset && cramfs_inode->size)
		return cramfs_inode->offset << 2;

	for (;;) {
		counter++;
		if (!counter & 3)
			counter++; /* skip numbers that could be offsets */
		inode = cramfs_iget(sb, counter);
		if (!inode)
			return counter; /* free to use */
		iput(inode);
	}
}


That seems to be solved with above approach as well.

Jörn

-- 
You can take my soul, but not my lack of enthusiasm.
-- Wally
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [RFC 2/7] cramfs: create unique inode numbers, Jörn, (Sun Jun 1, 12:50 pm)
Re: [RFC 2/7] cramfs: create unique inode numbers, Arnd Bergmann, (Sun Jun 1, 5:24 pm)