[PATCH 11/18] misc: storage-by-uuid: consider only first diskuuid match
Ahmad Fatoum
a.fatoum at pengutronix.de
Sun Apr 13 23:31:45 PDT 2025
Multiple devices with the same disk UUID shouldn't happen and if it
does, the existing code is not equipped to handle that.
Change it, so only the first _disk_ is considered. diskuuid is in a
union with partuuid and that could lead to cdev partition being taken as
backend storage instead.
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
drivers/misc/storage-by-uuid.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/misc/storage-by-uuid.c b/drivers/misc/storage-by-uuid.c
index 8b8fd901685e..7bb987dffbec 100644
--- a/drivers/misc/storage-by-uuid.c
+++ b/drivers/misc/storage-by-uuid.c
@@ -143,10 +143,14 @@ static void check_exist(struct sbu *sbu)
struct cdev *cdev;
for_each_cdev(cdev) {
- if (!strcmp(cdev->diskuuid, sbu->uuid)) {
- dev_dbg(sbu->dev, "Found %s %s\n", cdev->name, cdev->diskuuid);
- storage_by_uuid_add_partitions(sbu, cdev);
- }
+ if (cdev_is_partition(cdev))
+ continue;
+ if (strcmp(cdev->diskuuid, sbu->uuid))
+ continue;
+
+ dev_dbg(sbu->dev, "Found %s %s\n", cdev->name, cdev->diskuuid);
+ storage_by_uuid_add_partitions(sbu, cdev);
+ return;
}
}
--
2.39.5
More information about the barebox
mailing list