[PATCH] md - 1 of 3 - md/linear oops fix
DORMANTno replies
From: NeilBrown <hidden>
Date: 2003-03-26 00:11:01
Three patches for md/raid in 2.5.latest.... ### Comments for ChangeSet From: Daniel McNeil <redacted> 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. ----------- Diffstat output ------------ ./drivers/md/linear.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) diff ./drivers/md/linear.c~current~ ./drivers/md/linear.c
--- ./drivers/md/linear.c~current~ 2003-03-26 09:44:40.000000000 +1100
+++ ./drivers/md/linear.c 2003-03-26 09:44:40.000000000 +1100@@ -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 + */ + (void)sector_div(block, conf->smallest->size); + hash = conf->hash_table + block; if ((sector>>1) >= (hash->dev0->size + hash->dev0->offset)) return hash->dev1;