From 7b6eb67f234b5afd9c5472aececf3b30c9da3586 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Wed, 29 Mar 2006 21:21:15 +0000 Subject: [PATCH] cleanup of user memory handling git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16924 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/bus_managers/ps2/ps2_keyboard.c | 5 +++-- .../kernel/bus_managers/ps2/ps2_mouse.c | 18 +++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c b/src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c index b82ca3cd0a..07ebde3410 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c @@ -316,9 +316,10 @@ keyboard_ioctl(void *cookie, uint32 op, void *buffer, size_t length) case KB_READ: { at_kbd_io packet; + status_t status; TRACE(("KB_READ\n")); - if (read_keyboard_packet(&packet) < B_OK) - return B_ERROR; + if ((status = read_keyboard_packet(&packet)) < B_OK) + return status; return user_memcpy(buffer, &packet, sizeof(packet)); } diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_mouse.c b/src/add-ons/kernel/bus_managers/ps2/ps2_mouse.c index 2df0005e11..4db7b5e1e0 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_mouse.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_mouse.c @@ -174,10 +174,9 @@ ps2_packet_to_movement(mouse_cookie *cookie, uint8 packet[], mouse_movement *pos /** Read a mouse event from the mouse events chain buffer. */ static status_t -mouse_read_event(mouse_cookie *cookie, mouse_movement *userMovement) +mouse_read_event(mouse_cookie *cookie, mouse_movement *movement) { uint8 packet[PS2_MAX_PACKET_SIZE]; - mouse_movement movement; status_t status; TRACE(("mouse_read_event()\n")); @@ -198,9 +197,8 @@ mouse_read_event(mouse_cookie *cookie, mouse_movement *userMovement) if (!(packet[0] & 8)) panic("ps2_hid: got broken data from packet_buffer_read\n"); - ps2_packet_to_movement(cookie, packet, &movement); - - return user_memcpy(userMovement, &movement, sizeof(mouse_movement)); + ps2_packet_to_movement(cookie, packet, movement); + return B_OK; } @@ -447,8 +445,14 @@ mouse_ioctl(void *_cookie, uint32 op, void *buffer, size_t length) } case MS_READ: - TRACE(("MS_READ\n")); - return mouse_read_event(cookie, (mouse_movement *)buffer); + { + mouse_movement movement; + status_t status; + TRACE(("MS_READ\n")); + if ((status = mouse_read_event(cookie, &movement)) < B_OK) + return status; + return user_memcpy(buffer, &movement, sizeof(movement)); + } case MS_SET_TYPE: TRACE(("MS_SET_TYPE not implemented\n"));