diff options
Diffstat (limited to 'drivers/md/dm-init.c')
| -rw-r--r-- | drivers/md/dm-init.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/md/dm-init.c b/drivers/md/dm-init.c index dc4381d68313..b37bbe762500 100644 --- a/drivers/md/dm-init.c +++ b/drivers/md/dm-init.c @@ -1,7 +1,6 @@ -// SPDX-License-Identifier: GPL-2.0 +// SPDX-License-Identifier: GPL-2.0-only /* - * dm-init.c * Copyright (C) 2017 The Chromium OS Authors <chromium-os-dev@chromium.org> * * This file is released under the GPLv2. @@ -213,8 +212,10 @@ static char __init *dm_parse_device_entry(struct dm_device *dev, char *str) strscpy(dev->dmi.uuid, field[1], sizeof(dev->dmi.uuid)); /* minor */ if (strlen(field[2])) { - if (kstrtoull(field[2], 0, &dev->dmi.dev)) + if (kstrtoull(field[2], 0, &dev->dmi.dev) || + dev->dmi.dev >= (1 << MINORBITS)) return ERR_PTR(-EINVAL); + dev->dmi.dev = huge_encode_dev((dev_t)dev->dmi.dev); dev->dmi.flags |= DM_PERSISTENT_DEV_FLAG; } /* flags */ @@ -294,9 +295,11 @@ static int __init dm_init_init(void) for (i = 0; i < ARRAY_SIZE(waitfor); i++) { if (waitfor[i]) { + dev_t dev; + DMINFO("waiting for device %s ...", waitfor[i]); - while (!dm_get_dev_t(waitfor[i])) - msleep(5); + while (early_lookup_bdev(waitfor[i], &dev)) + fsleep(5000); } } |
