diff options
| author | Oleksandr Tymoshenko <gonzo@FreeBSD.org> | 2017-03-12 19:27:44 +0000 |
|---|---|---|
| committer | Oleksandr Tymoshenko <gonzo@FreeBSD.org> | 2017-03-12 19:27:44 +0000 |
| commit | 6bc7e1b21b06d948f88504879fb525d7a845e8d7 (patch) | |
| tree | ba609dd2331d7ef047526c4f60ed6c721cd2a6da /sys/dev/evdev | |
| parent | 670aa764b0f18d05fc22bc81b310e80966da42df (diff) | |
Notes
Diffstat (limited to 'sys/dev/evdev')
| -rw-r--r-- | sys/dev/evdev/cdev.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/evdev/cdev.c b/sys/dev/evdev/cdev.c index fb81acefe51d..62534a4c339e 100644 --- a/sys/dev/evdev/cdev.c +++ b/sys/dev/evdev/cdev.c @@ -162,7 +162,7 @@ static int evdev_read(struct cdev *dev, struct uio *uio, int ioflag) { struct evdev_client *client; - struct input_event *event; + struct input_event event; int ret = 0; int remaining; @@ -197,13 +197,14 @@ evdev_read(struct cdev *dev, struct uio *uio, int ioflag) } while (ret == 0 && !EVDEV_CLIENT_EMPTYQ(client) && remaining > 0) { - event = &client->ec_buffer[client->ec_buffer_head]; + memcpy(&event, &client->ec_buffer[client->ec_buffer_head], + sizeof(struct input_event)); client->ec_buffer_head = (client->ec_buffer_head + 1) % client->ec_buffer_size; remaining--; EVDEV_CLIENT_UNLOCKQ(client); - ret = uiomove(event, sizeof(struct input_event), uio); + ret = uiomove(&event, sizeof(struct input_event), uio); EVDEV_CLIENT_LOCKQ(client); } |
