diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2008-04-20 17:45:32 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2008-04-20 17:45:32 +0000 |
| commit | 95b02815da7be3a9adaac7a6f089140cac5c782d (patch) | |
| tree | 9e52d23618deed966ecaed66a383a8e8cd6ed566 /sys | |
| parent | abf7be003d07779b5fbbf3a610946dc6e8648794 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/dev/ata/ata-all.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 597bb3818b57..83da7ff8bfd9 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -366,12 +366,13 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t data, switch (cmd) { case IOCATAGMAXCHANNEL: + /* In case we have channel 0..n this will return n+1. */ *value = devclass_get_maxunit(ata_devclass); error = 0; break; case IOCATAREINIT: - if (*value > devclass_get_maxunit(ata_devclass) || + if (*value >= devclass_get_maxunit(ata_devclass) || !(device = devclass_get_device(ata_devclass, *value))) return ENXIO; error = ata_reinit(device); @@ -379,7 +380,7 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t data, break; case IOCATAATTACH: - if (*value > devclass_get_maxunit(ata_devclass) || + if (*value >= devclass_get_maxunit(ata_devclass) || !(device = devclass_get_device(ata_devclass, *value))) return ENXIO; /* XXX SOS should enable channel HW on controller */ @@ -387,7 +388,7 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t data, break; case IOCATADETACH: - if (*value > devclass_get_maxunit(ata_devclass) || + if (*value >= devclass_get_maxunit(ata_devclass) || !(device = devclass_get_device(ata_devclass, *value))) return ENXIO; error = ata_detach(device); @@ -395,7 +396,7 @@ ata_ioctl(struct cdev *dev, u_long cmd, caddr_t data, break; case IOCATADEVICES: - if (devices->channel > devclass_get_maxunit(ata_devclass) || + if (devices->channel >= devclass_get_maxunit(ata_devclass) || !(device = devclass_get_device(ata_devclass, devices->channel))) return ENXIO; bzero(devices->name[0], 32); |
