aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/md/md.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 5e3714fecee9..665851308818 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2479,6 +2479,10 @@ slot_store(mdk_rdev_t *rdev, const char *buf, size_t len)
2479 if (rdev2->raid_disk == slot) 2479 if (rdev2->raid_disk == slot)
2480 return -EEXIST; 2480 return -EEXIST;
2481 2481
2482 if (slot >= rdev->mddev->raid_disks &&
2483 slot >= rdev->mddev->raid_disks + rdev->mddev->delta_disks)
2484 return -ENOSPC;
2485
2482 rdev->raid_disk = slot; 2486 rdev->raid_disk = slot;
2483 if (test_bit(In_sync, &rdev->flags)) 2487 if (test_bit(In_sync, &rdev->flags))
2484 rdev->saved_raid_disk = slot; 2488 rdev->saved_raid_disk = slot;
@@ -2496,7 +2500,8 @@ slot_store(mdk_rdev_t *rdev, const char *buf, size_t len)
2496 /* failure here is OK */; 2500 /* failure here is OK */;
2497 /* don't wakeup anyone, leave that to userspace. */ 2501 /* don't wakeup anyone, leave that to userspace. */
2498 } else { 2502 } else {
2499 if (slot >= rdev->mddev->raid_disks) 2503 if (slot >= rdev->mddev->raid_disks &&
2504 slot >= rdev->mddev->raid_disks + rdev->mddev->delta_disks)
2500 return -ENOSPC; 2505 return -ENOSPC;
2501 rdev->raid_disk = slot; 2506 rdev->raid_disk = slot;
2502 /* assume it is working */ 2507 /* assume it is working */