Patch from Daniel McNeil <daniel@osdl.org>

This fixes an oops caused by incorrect usage of sector_div() in which_dev()
in md/linear.c.  It was dereferencing an non-existent hash table entry.



 25-akpm/drivers/md/linear.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletion(-)

diff -puN drivers/md/linear.c~linear-oops-fix-1 drivers/md/linear.c
--- 25/drivers/md/linear.c~linear-oops-fix-1	Tue Mar 18 14:47:22 2003
+++ 25-akpm/drivers/md/linear.c	Tue Mar 18 14:47:22 2003
@@ -37,7 +37,11 @@ static inline dev_info_t *which_dev(mdde
 	linear_conf_t *conf = mddev_to_conf(mddev);
 	sector_t block = sector >> 1;
 
-	hash = conf->hash_table + sector_div(block, conf->smallest->size);
+	/*
+	 * sector_div(a,b) returns the remainer and sets a to a/b
+	 */
+	sector_div(block, conf->smallest->size);
+	hash = conf->hash_table + block;
 
 	if ((sector>>1) >= (hash->dev0->size + hash->dev0->offset))
 		return hash->dev1;

_