Bluetooth: hidp: Only free input device if failed register
When an hidp connection is added for a boot protocol input
device, only free the allocated device if device registration fails.
Subsequent failures should only unregister the device (the input
device api documents that unregister will also free the allocated
device).
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 26f0d10..a859f90 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -842,6 +842,8 @@
err = input_register_device(input);
if (err < 0) {
+ input_free_device(input);
+ session->input = NULL;
hci_conn_put_device(session->conn);
return err;
}
@@ -1089,7 +1091,6 @@
failed:
up_write(&hidp_session_sem);
- input_free_device(session->input);
kfree(session);
return err;
}