pcd: fix error codes in pcd_init_unit()
Return -ENODEV on these error paths instead of returning success.
Fixes: af761f277b
("pcd: cleanup initialization")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20211001122623.GA2283@kili
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Родитель
db8eda9c43
Коммит
d0ac7a30e4
|
@ -613,8 +613,7 @@ static int pcd_identify(struct pcd_unit *cd)
|
|||
}
|
||||
|
||||
/*
|
||||
* returns 0, with id set if drive is detected
|
||||
* -1, if drive detection failed
|
||||
* returns 0, with id set if drive is detected, otherwise an error code.
|
||||
*/
|
||||
static int pcd_probe(struct pcd_unit *cd, int ms)
|
||||
{
|
||||
|
@ -627,7 +626,7 @@ static int pcd_probe(struct pcd_unit *cd, int ms)
|
|||
if (!pcd_reset(cd) && !pcd_identify(cd))
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static int pcd_probe_capabilities(struct pcd_unit *cd)
|
||||
|
@ -933,9 +932,12 @@ static int pcd_init_unit(struct pcd_unit *cd, bool autoprobe, int port,
|
|||
disk->events = DISK_EVENT_MEDIA_CHANGE;
|
||||
|
||||
if (!pi_init(cd->pi, autoprobe, port, mode, unit, protocol, delay,
|
||||
pcd_buffer, PI_PCD, verbose, cd->name))
|
||||
pcd_buffer, PI_PCD, verbose, cd->name)) {
|
||||
ret = -ENODEV;
|
||||
goto out_free_disk;
|
||||
if (pcd_probe(cd, ms))
|
||||
}
|
||||
ret = pcd_probe(cd, ms);
|
||||
if (ret)
|
||||
goto out_pi_release;
|
||||
|
||||
cd->present = 1;
|
||||
|
|
Загрузка…
Ссылка в новой задаче