Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

md/raid5: use conf->raid_disks in preference to mddev->raid_disk

mddev->raid_disks can be changed and any time by a request from
user-space. It is a suggestion as to what number of raid_disks is
desired.

conf->raid_disks can only be changed by the raid5 module with suitable
locks in place. It is a statement as to the current number of
raid_disks.

There are two places where the latter should be used, but the former
is used. This can lead to a crash when reshaping an array.

This patch changes to mddev-> to conf->

Signed-off-by: NeilBrown <neilb@suse.de>

NeilBrown f001a70c ccc0d38e

+2 -2
+2 -2
drivers/md/raid5.c
··· 3288 3288 int i; 3289 3289 3290 3290 rcu_read_lock(); 3291 - for (i=0; i<mddev->raid_disks; i++) { 3291 + for (i = 0; i < conf->raid_disks; i++) { 3292 3292 mdk_rdev_t *rdev = rcu_dereference(conf->disks[i].rdev); 3293 3293 if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) { 3294 3294 struct request_queue *r_queue = bdev_get_queue(rdev->bdev); ··· 4034 4034 * We don't need to check the 'failed' flag as when that gets set, 4035 4035 * recovery aborts. 4036 4036 */ 4037 - for (i=0; i<mddev->raid_disks; i++) 4037 + for (i = 0; i < conf->raid_disks; i++) 4038 4038 if (conf->disks[i].rdev == NULL) 4039 4039 still_degraded = 1; 4040 4040