From 70191a83d879eee839652469a2eaa9307e345954 Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Tue, 9 Sep 2008 01:23:03 +0200 Subject: [PATCH] --- yaml --- r: 114457 b: refs/heads/master c: d92870ddd248e8c2562a8c4047885d3ad221ece7 h: refs/heads/master i: 114455: b08bdcdc8ed9c36667dff4676664cc8255850a9a v: v3 --- [refs] | 2 +- trunk/drivers/hid/hid-core.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index faa202045595..bc708fd11d39 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d1d3a5f6eaee337d793ab9ac28e696f0262c3c8a +refs/heads/master: d92870ddd248e8c2562a8c4047885d3ad221ece7 diff --git a/trunk/drivers/hid/hid-core.c b/trunk/drivers/hid/hid-core.c index 18b277a833f0..63c8ce5540fe 100644 --- a/trunk/drivers/hid/hid-core.c +++ b/trunk/drivers/hid/hid-core.c @@ -1657,6 +1657,7 @@ static void hid_compat_load(struct work_struct *ws) request_module("hid-dummy"); } static DECLARE_WORK(hid_compat_work, hid_compat_load); +static struct workqueue_struct *hid_compat_wq; #endif static int __init hid_init(void) @@ -1674,7 +1675,12 @@ static int __init hid_init(void) goto err_bus; #ifdef CONFIG_HID_COMPAT - schedule_work(&hid_compat_work); + hid_compat_wq = create_workqueue("hid_compat"); + if (!hid_compat_wq) { + hidraw_exit(); + goto err; + } + queue_work(hid_compat_wq, &hid_compat_work); #endif return 0; @@ -1686,6 +1692,9 @@ static int __init hid_init(void) static void __exit hid_exit(void) { +#ifdef CONFIG_HID_COMPAT + destroy_workqueue(hid_compat_wq); +#endif hidraw_exit(); bus_unregister(&hid_bus_type); }