|
Hannes Reinecke |
6aebec |
From: Luis Chamberlain <mcgrof@kernel.org>
|
|
Hannes Reinecke |
6aebec |
Date: Wed, 1 Sep 2021 13:38:30 +0200
|
|
Hannes Reinecke |
6aebec |
Subject: [PATCH] md: add error handling support for add_disk()
|
|
Hannes Reinecke |
6aebec |
Git-commit: 9be68dd7ac0e13be2ac57770c1f921d6b3294c6e
|
|
Hannes Reinecke |
6aebec |
Patch-mainline: v5.16-rc1
|
|
Hannes Reinecke |
6aebec |
References: jsc#PED-1183
|
|
Hannes Reinecke |
6aebec |
|
|
Hannes Reinecke |
6aebec |
We never checked for errors on add_disk() as this function
|
|
Hannes Reinecke |
6aebec |
returned void. Now that this is fixed, use the shiny new
|
|
Hannes Reinecke |
6aebec |
error handling.
|
|
Hannes Reinecke |
6aebec |
|
|
Hannes Reinecke |
6aebec |
We just do the unwinding of what was not done before, and are
|
|
Hannes Reinecke |
6aebec |
sure to unlock prior to bailing.
|
|
Hannes Reinecke |
6aebec |
|
|
Hannes Reinecke |
6aebec |
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
|
|
Hannes Reinecke |
6aebec |
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
6aebec |
Signed-off-by: Song Liu <songliubraving@fb.com>
|
|
Hannes Reinecke |
6aebec |
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
Hannes Reinecke |
6aebec |
Acked-by: Hannes Reinecke <hare@suse.com>
|
|
Hannes Reinecke |
6aebec |
---
|
|
Hannes Reinecke |
6aebec |
drivers/md/md.c | 6 +++++-
|
|
Hannes Reinecke |
6aebec |
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
Hannes Reinecke |
6aebec |
|
|
Hannes Reinecke |
6aebec |
diff --git a/drivers/md/md.c b/drivers/md/md.c
|
|
Hannes Reinecke |
6aebec |
index 22310d5d8d41..eff3d23e1fcd 100644
|
|
Hannes Reinecke |
6aebec |
--- a/drivers/md/md.c
|
|
Hannes Reinecke |
6aebec |
+++ b/drivers/md/md.c
|
|
Hannes Reinecke |
6aebec |
@@ -5700,7 +5700,11 @@ static int md_alloc(dev_t dev, char *name)
|
|
Hannes Reinecke |
6aebec |
disk->flags |= GENHD_FL_EXT_DEVT;
|
|
Hannes Reinecke |
6aebec |
disk->events |= DISK_EVENT_MEDIA_CHANGE;
|
|
Hannes Reinecke |
6aebec |
mddev->gendisk = disk;
|
|
Hannes Reinecke |
6aebec |
- add_disk(disk);
|
|
Hannes Reinecke |
6aebec |
+ error = add_disk(disk);
|
|
Hannes Reinecke |
6aebec |
+ if (error) {
|
|
Hannes Reinecke |
6aebec |
+ blk_cleanup_disk(disk);
|
|
Hannes Reinecke |
6aebec |
+ goto abort;
|
|
Hannes Reinecke |
6aebec |
+ }
|
|
Hannes Reinecke |
6aebec |
|
|
Hannes Reinecke |
6aebec |
error = kobject_add(&mddev->kobj, &disk_to_dev(disk)->kobj, "%s", "md");
|
|
Hannes Reinecke |
6aebec |
if (error) {
|
|
Hannes Reinecke |
6aebec |
--
|
|
Hannes Reinecke |
6aebec |
2.35.3
|
|
Hannes Reinecke |
6aebec |
|