From 27b8f3feb682d59d1531ff35acea964695e0d73b Mon Sep 17 00:00:00 2001 From: girish <girish> Date: Wed, 23 Jul 2008 19:23:29 +0000 Subject: [PATCH] ext3/ext4: orphan list corruption due bad inode (Patch from Q-leap) b=16360 i=adilger i=johann --- .../patches/ext3-check-bad-inode.patch | 28 +++++++++++++++++++ .../series/ldiskfs-2.6-rhel4.series | 1 + .../series/ldiskfs-2.6-rhel5.series | 1 + .../series/ldiskfs-2.6-sles10.series | 1 + .../series/ldiskfs-2.6-suse.series | 1 + .../series/ldiskfs-2.6.18-vanilla.series | 1 + .../series/ldiskfs-2.6.22-vanilla.series | 1 + 7 files changed, 34 insertions(+) create mode 100644 ldiskfs/kernel_patches/patches/ext3-check-bad-inode.patch 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 0000000000..7b0b046885 --- /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 4d64d37f95..c3152eada9 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 f0eb3a97fc..524491e4b2 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 779e134694..c8d9b53f36 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 1f728c01b6..b6d7bb03be 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 a74d105ec1..cc890912ef 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 46226a5129..65a6d4f0b1 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 -- GitLab