summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorEvgeniy Dushistov <dushistov@mail.ru>2006-02-03 03:04:04 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-03 08:32:04 -0800
commite295cfcb2907ae4c5df57f5d4ada1ce6f3ae4657 (patch)
treea28ca6bf5ba0c3e1e03e12eb5067727028bb6452 /include
parent19dfe31c29e0ebb88cf1cd2211da3e2ff2a26d52 (diff)
downloadlinux-e295cfcb2907ae4c5df57f5d4ada1ce6f3ae4657.tar.gz
linux-e295cfcb2907ae4c5df57f5d4ada1ce6f3ae4657.tar.bz2
linux-e295cfcb2907ae4c5df57f5d4ada1ce6f3ae4657.zip
[PATCH] ufs: fix oops with `ufs1' type
"rm" command, on file system with "ufs1" type cause system hang up. This is, in fact, not so bad as it seems to be, because of after that in "kernel control path" there are 3-4 places which may cause "oops". So the first patch fix oopses, and the second patch fix "kernel hang up". "oops" appears because of reading of group's summary info partly wrong, and access to not first group's summary info cause "oops". Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/ufs_fs.h3
-rw-r--r--include/linux/ufs_fs_sb.h2
2 files changed, 2 insertions, 3 deletions
diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h
index 7a6babeca256..f26118ea1c58 100644
--- a/include/linux/ufs_fs.h
+++ b/include/linux/ufs_fs.h
@@ -502,8 +502,7 @@ struct ufs_super_block {
/*
* Convert cylinder group to base address of its global summary info.
*/
-#define fs_cs(indx) \
- s_csp[(indx) >> uspi->s_csshift][(indx) & ~uspi->s_csmask]
+#define fs_cs(indx) s_csp[(indx)]
/*
* Cylinder group block for a file system.
diff --git a/include/linux/ufs_fs_sb.h b/include/linux/ufs_fs_sb.h
index c1be4c226486..8ff13c160f3d 100644
--- a/include/linux/ufs_fs_sb.h
+++ b/include/linux/ufs_fs_sb.h
@@ -25,7 +25,7 @@ struct ufs_csum;
struct ufs_sb_info {
struct ufs_sb_private_info * s_uspi;
- struct ufs_csum * s_csp[UFS_MAXCSBUFS];
+ struct ufs_csum * s_csp;
unsigned s_bytesex;
unsigned s_flags;
struct buffer_head ** s_ucg;