[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: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
17dd3f0f7a
Коммит
34abf91f40
|
@ -520,7 +520,7 @@ static int hidp_session(void *arg)
|
|||
|
||||
if (session->input) {
|
||||
input_unregister_device(session->input);
|
||||
kfree(session->input);
|
||||
session->input = NULL;
|
||||
}
|
||||
|
||||
up_write(&hidp_session_sem);
|
||||
|
@ -536,6 +536,8 @@ static inline void hidp_setup_input(struct hidp_session *session, struct hidp_co
|
|||
|
||||
input->private = session;
|
||||
|
||||
input->name = "Bluetooth HID Boot Protocol Device";
|
||||
|
||||
input->id.bustype = BUS_BLUETOOTH;
|
||||
input->id.vendor = req->vendor;
|
||||
input->id.product = req->product;
|
||||
|
@ -582,16 +584,15 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
|
|||
return -ENOTUNIQ;
|
||||
|
||||
session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL);
|
||||
if (!session)
|
||||
if (!session)
|
||||
return -ENOMEM;
|
||||
memset(session, 0, sizeof(struct hidp_session));
|
||||
|
||||
session->input = kmalloc(sizeof(struct input_dev), GFP_KERNEL);
|
||||
session->input = input_allocate_device();
|
||||
if (!session->input) {
|
||||
kfree(session);
|
||||
return -ENOMEM;
|
||||
}
|
||||
memset(session->input, 0, sizeof(struct input_dev));
|
||||
|
||||
down_write(&hidp_session_sem);
|
||||
|
||||
|
@ -651,8 +652,10 @@ unlink:
|
|||
|
||||
__hidp_unlink_session(session);
|
||||
|
||||
if (session->input)
|
||||
if (session->input) {
|
||||
input_unregister_device(session->input);
|
||||
session->input = NULL; /* don't try to free it here */
|
||||
}
|
||||
|
||||
failed:
|
||||
up_write(&hidp_session_sem);
|
||||
|
|
Загрузка…
Ссылка в новой задаче