All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	torvalds@osdl.org, akpm@osdl.org, alan@lxorguk.ukuu.org.uk,
	Marcel Holtmann <marcel@holtmann.org>, Neil Brown <neilb@suse.de>,
	Greg Kroah-Hartman <gregkh@suse.de>
Subject: [patch 23/23] Have ext2 reject file handles with bad inode numbers early.
Date: Thu, 3 Aug 2006 22:41:00 -0700	[thread overview]
Message-ID: <20060804054100.GX769@kroah.com> (raw)
In-Reply-To: <20060804053807.GA769@kroah.com>

[-- Attachment #1: have-ext2-reject-file-handles-with-bad-inode-numbers-early.patch --]
[-- Type: text/plain, Size: 2019 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Neil Brown <neilb@suse.de>

This prevents bad inode numbers from triggering errors in
ext2_get_inode.


Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 fs/ext2/super.c |   41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

--- linux-2.6.17.7.orig/fs/ext2/super.c
+++ linux-2.6.17.7/fs/ext2/super.c
@@ -252,6 +252,46 @@ static struct super_operations ext2_sops
 #endif
 };
 
+static struct dentry *ext2_get_dentry(struct super_block *sb, void *vobjp)
+{
+	__u32 *objp = vobjp;
+	unsigned long ino = objp[0];
+	__u32 generation = objp[1];
+	struct inode *inode;
+	struct dentry *result;
+
+	if (ino != EXT2_ROOT_INO && ino < EXT2_FIRST_INO(sb))
+		return ERR_PTR(-ESTALE);
+	if (ino > le32_to_cpu(EXT2_SB(sb)->s_es->s_inodes_count))
+		return ERR_PTR(-ESTALE);
+
+	/* iget isn't really right if the inode is currently unallocated!!
+	 * ext2_read_inode currently does appropriate checks, but
+	 * it might be "neater" to call ext2_get_inode first and check
+	 * if the inode is valid.....
+	 */
+	inode = iget(sb, ino);
+	if (inode == NULL)
+		return ERR_PTR(-ENOMEM);
+	if (is_bad_inode(inode)
+	    || (generation && inode->i_generation != generation)
+		) {
+		/* we didn't find the right inode.. */
+		iput(inode);
+		return ERR_PTR(-ESTALE);
+	}
+	/* now to find a dentry.
+	 * If possible, get a well-connected one
+	 */
+	result = d_alloc_anon(inode);
+	if (!result) {
+		iput(inode);
+		return ERR_PTR(-ENOMEM);
+	}
+	return result;
+}
+
+
 /* Yes, most of these are left as NULL!!
  * A NULL value implies the default, which works with ext2-like file
  * systems, but can be improved upon.
@@ -259,6 +299,7 @@ static struct super_operations ext2_sops
  */
 static struct export_operations ext2_export_ops = {
 	.get_parent = ext2_get_parent,
+	.get_dentry = ext2_get_dentry,
 };
 
 static unsigned long get_sb_block(void **data)

--

  parent reply	other threads:[~2006-08-04  5:45 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20060804053258.391158155@quad.kroah.org>
2006-08-04  5:38 ` [patch 00/23] -stable review Greg KH
2006-08-04  5:38   ` [patch 01/23] PCI: fix issues with extended conf space when MMCONFIG disabled because of e820 Greg KH
2006-08-04  5:38   ` [patch 02/23] Dont allow chmod() on the /proc/<pid>/ files Greg KH
2006-08-04  5:38   ` [patch 03/23] : H.323 helper: fix possible NULL-ptr dereference Greg KH
2006-08-04  5:38   ` [patch 04/23] scx200_acb: Fix the state machine Greg KH
2006-08-04  5:38   ` [patch 05/23] scx200_acb: Fix the block transactions Greg KH
2006-08-04  5:38   ` [patch 06/23] i2c: Fix ignore module parameter handling in i2c-core Greg KH
2006-08-04  5:39   ` [patch 07/23] sky2: NAPI bug Greg KH
2006-08-04  5:39   ` [patch 08/23] UHCI: Fix handling of short last packet Greg KH
2006-08-04  5:39   ` [patch 09/23] : Update frag_list in pskb_trim Greg KH
2006-08-04  5:39   ` [patch 10/23] VLAN state handling fix Greg KH
2006-08-04  5:39   ` [patch 11/23] Sparc64 quad-float emulation fix Greg KH
2006-08-04  5:39   ` [patch 12/23] invalidate_bdev() speedup Greg KH
2006-08-04  8:50     ` Christoph Hellwig
2006-08-04  9:04       ` Andrew Morton
2006-08-04 13:08         ` Arjan van de Ven
2006-08-04 13:25           ` Jes Sorensen
2006-08-04 15:18           ` Andrew Morton
2006-08-04  5:39   ` [patch 13/23] ieee1394: sbp2: enable auto spin-up for Maxtor disks Greg KH
2006-08-04  5:39   ` [patch 14/23] Fix race related problem when adding items to and svcrpc auth cache Greg KH
2006-08-04  5:39     ` Greg KH
2006-08-04  5:40   ` [patch 15/23] ext3 -nobh option causes oops Greg KH
2006-11-16 22:51     ` Adrian Bunk
2006-11-16 23:07       ` Badari Pulavarty
2006-11-17 16:47         ` Adrian Bunk
2006-08-04  5:40   ` [patch 16/23] ext3: avoid triggering ext3_error on bad NFS file handle Greg KH
2006-08-04 14:45     ` Eric Sandeen
2006-08-04 14:52       ` Christoph Hellwig
2006-08-04 15:35         ` Eric Sandeen
2006-08-05  1:28           ` Theodore Tso
2006-08-10  5:38           ` [stable] " Greg KH
2006-08-04  5:40   ` [patch 17/23] e1000: add forgotten PCI ID for supported device Greg KH
2006-08-04  5:40   ` [patch 18/23] cond_resched() fix Greg KH
2006-08-04  5:40   ` [patch 19/23] Fix budget-av compile failure Greg KH
2006-08-04  5:40   ` [patch 20/23] S390: fix futex_atomic_cmpxchg_inatomic Greg KH
2006-08-07  8:39     ` Martin Schwidefsky
2006-08-04  5:40   ` [patch 21/23] tty serialize flush_to_ldisc Greg KH
2006-08-04  5:40   ` [patch 22/23] Add stable branch to maintainers file Greg KH
2006-08-04  5:41   ` Greg KH [this message]
2006-08-04  7:18   ` [patch 00/23] -stable review Grant Coady
2006-08-04  7:20     ` Greg KH
2006-08-04  9:04   ` Jesper Juhl
2006-08-04  9:10     ` Patrick McHardy
2006-08-04  9:19       ` Jesper Juhl
2006-08-04  9:24         ` Patrick McHardy
2006-08-04  9:31           ` Jesper Juhl
2006-08-04  9:19     ` Andrew Morton
2006-08-04  9:22       ` Jesper Juhl
2006-08-04 13:50         ` Auke Kok

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=20060804054100.GX769@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcel@holtmann.org \
    --cc=neilb@suse.de \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@osdl.org \
    --cc=tytso@mit.edu \
    --cc=zwane@arm.linux.org.uk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.