Do not change/get mode on a nonexisting device.

This commit is contained in:
Søren Schmidt 2001-03-21 11:44:58 +00:00
parent 742f5bdd4c
commit 7154fc7c7b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=74561

View File

@ -343,8 +343,10 @@ ataioctl(dev_t dev, u_long cmd, caddr_t addr, int32_t flag, struct proc *p)
scp = device_get_softc(device);
if (!scp)
return ENXIO;
mode->mode[MASTER] = scp->mode[MASTER];
mode->mode[SLAVE] = scp->mode[SLAVE];
if (scp->dev_param[MASTER])
mode->mode[MASTER] = scp->mode[MASTER];
if (scp->dev_param[SLAVE])
mode->mode[SLAVE] = scp->mode[SLAVE];
break;
}
@ -358,12 +360,14 @@ ataioctl(dev_t dev, u_long cmd, caddr_t addr, int32_t flag, struct proc *p)
scp = device_get_softc(device);
if (!scp)
return ENXIO;
if (mode->mode[MASTER] >= 0)
if (scp->dev_param[MASTER] && mode->mode[MASTER] >= 0) {
ata_change_mode(scp, ATA_MASTER, mode->mode[MASTER]);
if (mode->mode[SLAVE] >= 0)
mode->mode[MASTER] = scp->mode[MASTER];
}
if (scp->dev_param[SLAVE] && mode->mode[SLAVE] >= 0) {
ata_change_mode(scp, ATA_SLAVE, mode->mode[SLAVE]);
mode->mode[MASTER] = scp->mode[MASTER];
mode->mode[SLAVE] = scp->mode[SLAVE];
mode->mode[SLAVE] = scp->mode[SLAVE];
}
break;
}