Bluetooth: Fix input device registration
authorGustavo F. Padovan <padovan@profusion.mobi>
Fri, 7 Oct 2011 00:17:32 +0000 (21:17 -0300)
committerGustavo F. Padovan <padovan@profusion.mobi>
Fri, 7 Oct 2011 02:15:05 +0000 (23:15 -0300)
This is a regression fix. It made impossible use input device when hid
fails.

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
net/bluetooth/hidp/core.c

index 6cb1d9e..8d99a17 100644 (file)
@@ -812,7 +812,7 @@ static int hidp_setup_input(struct hidp_session *session,
                                struct hidp_connadd_req *req)
 {
        struct input_dev *input;
-       int err, i;
+       int i;
 
        input = input_allocate_device();
        if (!input)
@@ -859,13 +859,6 @@ static int hidp_setup_input(struct hidp_session *session,
 
        input->event = hidp_input_event;
 
-       err = input_register_device(input);
-       if (err < 0) {
-               input_free_device(input);
-               session->input = NULL;
-               return err;
-       }
-
        return 0;
 }
 
@@ -1067,7 +1060,11 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
                        !session->waiting_for_startup);
        }
 
-       err = hid_add_device(session->hid);
+       if (session->hid)
+               err = hid_add_device(session->hid);
+       else
+               err = input_register_device(session->input);
+
        if (err < 0) {
                atomic_inc(&session->terminate);
                wake_up_process(session->task);