summaryrefslogtreecommitdiff
path: root/libusb/os/linux_usbfs.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2013-09-06 16:49:26 +0200
committerHans de Goede <hdegoede@redhat.com>2013-09-06 16:49:26 +0200
commit733ffffe44ad93bd81feddb0a8072510fd7a8321 (patch)
tree534d08469a88cc1745c1a3087cfc63609d5c4a40 /libusb/os/linux_usbfs.c
parent4ffa16f8ef395dbbc48ae0fdd933d296446a9d91 (diff)
downloadlibusb-733ffffe44ad93bd81feddb0a8072510fd7a8321.tar.gz
Make usbi_get_device_by_session_id return a ref to the found device
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'libusb/os/linux_usbfs.c')
-rw-r--r--libusb/os/linux_usbfs.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
index 142fa2b..f8defb8 100644
--- a/libusb/os/linux_usbfs.c
+++ b/libusb/os/linux_usbfs.c
@@ -1048,9 +1048,11 @@ int linux_enumerate_device(struct libusb_context *ctx,
usbi_dbg("busnum %d devaddr %d session_id %ld", busnum, devaddr,
session_id);
- if (usbi_get_device_by_session_id(ctx, session_id)) {
+ dev = usbi_get_device_by_session_id(ctx, session_id);
+ if (dev) {
/* device already exists in the context */
usbi_dbg("session_id %ld already exists", session_id);
+ libusb_unref_device(dev);
return LIBUSB_SUCCESS;
}
@@ -1101,6 +1103,7 @@ void linux_device_disconnected(uint8_t busnum, uint8_t devaddr, const char *sys_
dev = usbi_get_device_by_session_id (ctx, session_id);
if (NULL != dev) {
usbi_disconnect_device (dev);
+ libusb_unref_device(dev);
} else {
usbi_dbg("device not found for session %x", session_id);
}