From 92fdfb110693e7e735c7d36278f3d0282927dfb8 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Mon, 28 Aug 2006 20:17:33 +0000 Subject: [PATCH] Only call disconnect hook when device is enabled and the hook is not NULL. This fixes bug 542. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18675 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/bus_managers/ps2/ps2_dev.c | 4 +++- src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c b/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c index 981454aaf0..c20ebb8efb 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_dev.c @@ -87,7 +87,9 @@ ps2_dev_unpublish(ps2_dev *dev) dev->active = false; status = devfs_unpublish_device(dev->name, true); - dev->disconnect(dev); + + if ((dev->flags & PS2_FLAG_ENABLED) && dev->disconnect) + dev->disconnect(dev); dprintf("ps2: devfs_unpublish_device %s, status = 0x%08lx\n", dev->name, status); } 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 2c1c45560d..99acb28877 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_keyboard.c @@ -239,12 +239,12 @@ keyboard_open(const char *name, uint32 flags, void **_cookie) goto err2; } - atomic_or(&ps2_device[PS2_DEVICE_KEYB].flags, PS2_FLAG_ENABLED); - *_cookie = NULL; ps2_device[PS2_DEVICE_KEYB].disconnect = &ps2_keyboard_disconnect; ps2_device[PS2_DEVICE_KEYB].handle_int = &keyboard_handle_int; + atomic_or(&ps2_device[PS2_DEVICE_KEYB].flags, PS2_FLAG_ENABLED); + dprintf("ps2: keyboard_open %s success\n", name); return B_OK;