From: girish Date: Wed, 23 Jul 2008 19:23:29 +0000 (+0000) Subject: ext3/ext4: orphan list corruption due bad inode (Patch from Q-leap) X-Git-Tag: v1_9_50~150 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=27b8f3feb682d59d1531ff35acea964695e0d73b ext3/ext4: orphan list corruption due bad inode (Patch from Q-leap) b=16360 i=adilger i=johann --- diff --git a/ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch b/ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch new file mode 100644 index 0000000..7b0b046 --- /dev/null +++ b/ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch @@ -0,0 +1,28 @@ +Index: linux-2.6.22/fs/ext3/namei.c +=================================================================== +--- linux-2.6.22.orig/fs/ext3/namei.c 2007-11-15 13:41:18.000000000 +0100 ++++ linux-2.6.22/fs/ext3/namei.c 2007-11-15 13:44:28.000000000 +0100 +@@ -1019,6 +1019,11 @@ static struct dentry *ext3_lookup(struct + + if (!inode) + return ERR_PTR(-EACCES); ++ ++ if (is_bad_inode(inode)) { ++ iput(inode); ++ return ERR_PTR(-ENOENT); ++ } + } + return d_splice_alias(inode, dentry); + } +@@ -1054,6 +1059,11 @@ struct dentry *ext3_get_parent(struct de + if (!inode) + return ERR_PTR(-EACCES); + ++ if (is_bad_inode(inode)) { ++ iput(inode); ++ return ERR_PTR(-ENOENT); ++ } ++ + parent = d_alloc_anon(inode); + if (!parent) { + iput(inode); diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series index 4d64d37..c3152ea 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series @@ -26,3 +26,4 @@ ext3-external-journal-2.6.9.patch ext3-max-dir-size.patch ext3-print-inum-in-htree-warning.patch ext3-xattr-no-update-ctime-rhel4.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series index f0eb3a9..524491e 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel5.series @@ -23,3 +23,4 @@ ext3-max-dir-size.patch ext3-print-inum-in-htree-warning.patch ext3-block-bitmap-validation-2.6-rhel5.patch ext3-xattr-no-update-ctime-2.6.22-vanilla.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series index 779e134..c8d9b53 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-sles10.series @@ -27,3 +27,4 @@ ext3-max-dir-size.patch ext3-print-inum-in-htree-warning.patch ext3-block-bitmap-validation-2.6-sles10.patch ext3-xattr-no-update-ctime-2.6-sles10.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series index 1f728c0..b6d7bb0 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series @@ -25,3 +25,4 @@ ext3-external-journal-2.6.5.patch ext3-max-dir-size-2.6.5-suse.patch ext3-print-inum-in-htree-warning.patch ext3-xattr-no-update-ctime-suse.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series index a74d105..cc89091 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6.18-vanilla.series @@ -22,3 +22,4 @@ ext3-lookup-dotdot-2.6.9.patch ext3-max-dir-size.patch ext3-print-inum-in-htree-warning.patch ext3-xattr-no-update-ctime-2.6.22-vanilla.patch +ext3-check-bad-inode.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series index 46226a5..65a6d4f 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6.22-vanilla.series @@ -23,3 +23,4 @@ ext3-export-journal-api.patch ext3-max-dir-size.patch ext3-print-inum-in-htree-warning.patch ext3-xattr-no-update-ctime-2.6.22-vanilla.patch +ext3-check-bad-inode.patch