Commit 34abf91f authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Greg Kroah-Hartman

[PATCH] Input: convert net/bluetooth to dynamic input_dev allocation

Input: convert net/bluetooth to dynamic input_dev allocation

This is required for input_dev sysfs integration
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 17dd3f0f
...@@ -520,7 +520,7 @@ static int hidp_session(void *arg) ...@@ -520,7 +520,7 @@ static int hidp_session(void *arg)
if (session->input) { if (session->input) {
input_unregister_device(session->input); input_unregister_device(session->input);
kfree(session->input); session->input = NULL;
} }
up_write(&hidp_session_sem); up_write(&hidp_session_sem);
...@@ -536,6 +536,8 @@ static inline void hidp_setup_input(struct hidp_session *session, struct hidp_co ...@@ -536,6 +536,8 @@ static inline void hidp_setup_input(struct hidp_session *session, struct hidp_co
input->private = session; input->private = session;
input->name = "Bluetooth HID Boot Protocol Device";
input->id.bustype = BUS_BLUETOOTH; input->id.bustype = BUS_BLUETOOTH;
input->id.vendor = req->vendor; input->id.vendor = req->vendor;
input->id.product = req->product; input->id.product = req->product;
...@@ -582,16 +584,15 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, ...@@ -582,16 +584,15 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
return -ENOTUNIQ; return -ENOTUNIQ;
session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL); session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL);
if (!session) if (!session)
return -ENOMEM; return -ENOMEM;
memset(session, 0, sizeof(struct hidp_session)); memset(session, 0, sizeof(struct hidp_session));
session->input = kmalloc(sizeof(struct input_dev), GFP_KERNEL); session->input = input_allocate_device();
if (!session->input) { if (!session->input) {
kfree(session); kfree(session);
return -ENOMEM; return -ENOMEM;
} }
memset(session->input, 0, sizeof(struct input_dev));
down_write(&hidp_session_sem); down_write(&hidp_session_sem);
...@@ -651,8 +652,10 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, ...@@ -651,8 +652,10 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
__hidp_unlink_session(session); __hidp_unlink_session(session);
if (session->input) if (session->input) {
input_unregister_device(session->input); input_unregister_device(session->input);
session->input = NULL; /* don't try to free it here */
}
failed: failed:
up_write(&hidp_session_sem); up_write(&hidp_session_sem);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment