diff options
Diffstat (limited to 'i386/i386at/kd_event.c')
-rw-r--r-- | i386/i386at/kd_event.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/i386/i386at/kd_event.c b/i386/i386at/kd_event.c index 9ee43749..304bd7f5 100644 --- a/i386/i386at/kd_event.c +++ b/i386/i386at/kd_event.c @@ -185,6 +185,11 @@ io_return_t kbdgetstat(dev, flavor, data, count) *data = KB_VANILLAKB; *count = 1; break; + case DEV_GET_SIZE: + data[DEV_GET_SIZE_DEVICE_SIZE] = 0; + data[DEV_GET_SIZE_RECORD_SIZE] = sizeof(kd_event); + *count = DEV_GET_SIZE_COUNT; + break; default: return (D_INVALID_OPERATION); } @@ -307,6 +312,10 @@ kbdread(dev, ior) register int err, count; register spl_t s; + /* Check if IO_COUNT is a multiple of the record size. */ + if (ior->io_count % sizeof(kd_event) != 0) + return D_INVALID_SIZE; + err = device_read_alloc(ior, (vm_size_t)ior->io_count); if (err != KERN_SUCCESS) return (err); |