linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Fengguang Wu <wfg@mail.ustc.edu.cn>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jiri Kosina <jkosina@suse.cz>, linux-kernel@vger.kernel.org
Subject: [PATCH BUGFIX] hid: the `bit' in hidinput_mapping_quirks() is an out parameter
Date: Fri, 7 Dec 2007 16:35:14 +0800	[thread overview]
Message-ID: <397037229.08913@ustc.edu.cn> (raw)
Message-ID: <E1J0Yfy-0001V7-Rr@localhost> (raw)
In-Reply-To: <20071204211701.994dfce6.akpm@linux-foundation.org>

Fix a panic, by changing 
	hidinput_mapping_quirks(,, unsigned long *bit,)
to 
	hidinput_mapping_quirks(,, unsigned long **bit,)

The `bit' in this function is an out parameter.

Cc: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
---
 drivers/hid/hid-input-quirks.c |   36 +++++++++++++++----------------
 drivers/hid/hid-input.c        |    2 -
 include/linux/hid.h            |    2 -
 3 files changed, 20 insertions(+), 20 deletions(-)

--- linux-2.6.24-rc4-mm1.orig/include/linux/hid.h
+++ linux-2.6.24-rc4-mm1/include/linux/hid.h
@@ -526,7 +526,7 @@ extern void hidinput_disconnect(struct h
 int hid_set_field(struct hid_field *, unsigned, __s32);
 int hid_input_report(struct hid_device *, int type, u8 *, int, int);
 int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field);
-int hidinput_mapping_quirks(struct hid_usage *, struct input_dev *, unsigned long *, int *);
+int hidinput_mapping_quirks(struct hid_usage *, struct input_dev *, unsigned long **, int *);
 void hidinput_event_quirks(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
 int hidinput_apple_event(struct hid_device *, struct input_dev *, struct hid_usage *, __s32);
 void hid_input_field(struct hid_device *hid, struct hid_field *field, __u8 *data, int interrupt);
--- linux-2.6.24-rc4-mm1.orig/drivers/hid/hid-input.c
+++ linux-2.6.24-rc4-mm1/drivers/hid/hid-input.c
@@ -382,7 +382,7 @@ static void hidinput_configure_usage(str
 	}
 
 	/* handle input mappings for quirky devices */
-	ret = hidinput_mapping_quirks(usage, input, bit, &max);
+	ret = hidinput_mapping_quirks(usage, input, &bit, &max);
 	if (ret)
 		goto mapped;
 
--- linux-2.6.24-rc4-mm1.orig/drivers/hid/hid-input-quirks.c
+++ linux-2.6.24-rc4-mm1/drivers/hid/hid-input-quirks.c
@@ -16,16 +16,16 @@
 #include <linux/input.h>
 #include <linux/hid.h>
 
-#define map_abs(c)      do { usage->code = c; usage->type = EV_ABS; bit = input->absbit; *max = ABS_MAX; } while (0)
-#define map_rel(c)      do { usage->code = c; usage->type = EV_REL; bit = input->relbit; *max = REL_MAX; } while (0)
-#define map_key(c)      do { usage->code = c; usage->type = EV_KEY; bit = input->keybit; *max = KEY_MAX; } while (0)
-#define map_led(c)      do { usage->code = c; usage->type = EV_LED; bit = input->ledbit; *max = LED_MAX; } while (0)
+#define map_abs(c)      do { usage->code = c; usage->type = EV_ABS; *bit = input->absbit; *max = ABS_MAX; } while (0)
+#define map_rel(c)      do { usage->code = c; usage->type = EV_REL; *bit = input->relbit; *max = REL_MAX; } while (0)
+#define map_key(c)      do { usage->code = c; usage->type = EV_KEY; *bit = input->keybit; *max = KEY_MAX; } while (0)
+#define map_led(c)      do { usage->code = c; usage->type = EV_LED; *bit = input->ledbit; *max = LED_MAX; } while (0)
 
-#define map_abs_clear(c)        do { map_abs(c); clear_bit(c, bit); } while (0)
-#define map_key_clear(c)        do { map_key(c); clear_bit(c, bit); } while (0)
+#define map_abs_clear(c)        do { map_abs(c); clear_bit(c, *bit); } while (0)
+#define map_key_clear(c)        do { map_key(c); clear_bit(c, *bit); } while (0)
 
 static int quirk_belkin_wkbd(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -41,7 +41,7 @@ static int quirk_belkin_wkbd(struct hid_
 }
 
 static int quirk_cherry_cymotion(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -57,7 +57,7 @@ static int quirk_cherry_cymotion(struct 
 }
 
 static int quirk_logitech_ultrax_remote(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR)
 		return 0;
@@ -90,7 +90,7 @@ static int quirk_logitech_ultrax_remote(
 }
 
 static int quirk_chicony_tactical_pad(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_MSVENDOR)
 		return 0;
@@ -115,7 +115,7 @@ static int quirk_chicony_tactical_pad(st
 }
 
 static int quirk_microsoft_ergonomy_kb(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_MSVENDOR)
 		return 0;
@@ -138,7 +138,7 @@ static int quirk_microsoft_ergonomy_kb(s
 }
 
 static int quirk_microsoft_presenter_8k(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_MSVENDOR)
 		return 0;
@@ -156,7 +156,7 @@ static int quirk_microsoft_presenter_8k(
 }
 
 static int quirk_petalynx_remote(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if (((usage->hid & HID_USAGE_PAGE) != HID_UP_LOGIVENDOR) &&
 			((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER))
@@ -184,7 +184,7 @@ static int quirk_petalynx_remote(struct 
 }
 
 static int quirk_logitech_wireless(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -236,7 +236,7 @@ static int quirk_logitech_wireless(struc
 }
 
 static int quirk_cherry_genius_29e(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -254,7 +254,7 @@ static int quirk_cherry_genius_29e(struc
 }
 
 static int quirk_btc_8193(struct hid_usage *usage, struct input_dev *input,
-			      unsigned long *bit, int *max)
+			      unsigned long **bit, int *max)
 {
 	if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
 		return 0;
@@ -307,7 +307,7 @@ static int quirk_btc_8193(struct hid_usa
 static const struct hid_input_blacklist {
 	__u16 idVendor;
 	__u16 idProduct;
-	int (*quirk)(struct hid_usage *, struct input_dev *, unsigned long *, int *);
+	int (*quirk)(struct hid_usage *, struct input_dev *, unsigned long **, int *);
 } hid_input_blacklist[] = {
 	{ VENDOR_ID_BELKIN, DEVICE_ID_BELKIN_WIRELESS_KEYBOARD, quirk_belkin_wkbd },
 
@@ -335,7 +335,7 @@ static const struct hid_input_blacklist 
 
 int hidinput_mapping_quirks(struct hid_usage *usage, 
 				   struct input_dev *input, 
-				   unsigned long *bit, int *max)
+				   unsigned long **bit, int *max)
 {
 	struct hid_device *device = input_get_drvdata(input);
 	int i = 0;


  parent reply	other threads:[~2007-12-07 14:20 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-05  5:17 2.6.24-rc4-mm1 Andrew Morton
2007-12-05  9:15 ` 2.6.24-rc4-mm1: kobj changes fallout on powerpc Olof Johansson
2007-12-05 13:11   ` Kamalesh Babulal
2007-12-05 15:46     ` Greg KH
2007-12-05 14:12 ` 2.6.24-rc4-mm1 kobject changes broken with hvcs driver " Kamalesh Babulal
2007-12-05 15:47   ` Greg KH
2007-12-06 18:19   ` Balbir Singh
2007-12-06 18:50     ` Greg KH
2007-12-06 18:49       ` Kamalesh Babulal
2007-12-06 18:58       ` Balbir Singh
2007-12-06 19:21         ` Badari Pulavarty
2007-12-07  1:29           ` Balbir Singh
2007-12-06 20:31         ` Greg KH
2007-12-06 23:54           ` Badari Pulavarty
2007-12-07  0:32             ` Greg KH
2007-12-07  3:02               ` Kamalesh Babulal
2007-12-07  5:14                 ` Greg KH
2007-12-07 22:01                   ` Balbir Singh
2007-12-05 23:41 ` 2.6.24-rc4-mm1: hostbyte=0x01 driverbyte=0x00 (now bisected) Alexey Dobriyan
2007-12-06  7:52   ` Hannes Reinecke
2007-12-06 12:08     ` Jens Axboe
2007-12-06 19:19     ` Alexey Dobriyan
2007-12-06  3:15 ` 2.6.24-rc4-mm1 Kernel build fails on S390x Kamalesh Babulal
2007-12-06  7:19   ` Andrew Morton
2007-12-06  6:59 ` 2.6.24-rc4-mm1 Reuben Farrelly
2007-12-06  7:09   ` 2.6.24-rc4-mm1 David Miller
2007-12-07 13:16     ` 2.6.24-rc4-mm1 Ilpo Järvinen
2007-12-12 17:57       ` 2.6.24-rc4-mm1 Cedric Le Goater
2007-12-06  7:35   ` 2.6.24-rc4-mm1 Andrew Morton
2007-12-10 12:24     ` 2.6.24-rc4-mm1 Ilpo Järvinen
2007-12-10 20:05       ` 2.6.24-rc4-mm1 Ilpo Järvinen
2007-12-12 19:21       ` 2.6.24-rc4-mm1 Cedric Le Goater
2007-12-13 17:38         ` tcp_sacktag_one() WARNING (was Re: 2.6.24-rc4-mm1) Cedric Le Goater
2007-12-06 11:49 ` 2.6.24-rc4-mm1 Valdis.Kletnieks
2007-12-06 12:04   ` 2.6.24-rc4-mm1 Andrew Morton
2007-12-06 19:18     ` 2.6.24-rc4-mm1 Valdis.Kletnieks
2007-12-06 19:38       ` 2.6.24-rc4-mm1 Greg KH
2007-12-06 20:04         ` 2.6.24-rc4-mm1 Valdis.Kletnieks
2007-12-06 22:04         ` [dm-devel] 2.6.24-rc4-mm1 Kay Sievers
2007-12-06 22:12           ` Alasdair G Kergon
2007-12-06 23:12           ` Valdis.Kletnieks
2007-12-06 23:24             ` Kay Sievers
2007-12-07 18:20               ` Valdis.Kletnieks
2007-12-07 18:44                 ` Kay Sievers
2007-12-07 20:28                   ` Valdis.Kletnieks
2007-12-07 20:49                     ` Kay Sievers
2007-12-06 22:28 ` 2.6.24-rc4-mm1: VDSOSYM build error Laurent Riffard
2007-12-06 22:37   ` Andrew Morton
2007-12-06 23:28     ` Miles Lane
2007-12-06 23:34       ` Andrew Morton
2007-12-06 23:47         ` Miles Lane
2007-12-07 10:36         ` Ingo Molnar
2007-12-07  1:14     ` [PATCH x86/mm] x86 vDSO: canonicalize sysenter .eh_frame Roland McGrath
2007-12-07  1:27       ` Harvey Harrison
2007-12-07  3:27         ` Miles Lane
2007-12-07  9:44       ` Ingo Molnar
2007-12-07  2:12 ` 2.6.24-rc4-mm1 Dave Young
2007-12-07 22:22   ` 2.6.24-rc4-mm1 Luis R. Rodriguez
2007-12-10  1:07     ` 2.6.24-rc4-mm1 Dave Young
2007-12-09 17:55   ` 2.6.24-rc4-mm1 Nick Kossifidis
     [not found] ` <E1J0Yfy-0001V7-Rr@localhost>
2007-12-07  8:35   ` Fengguang Wu [this message]
2007-12-10 10:03     ` [PATCH BUGFIX] hid: the `bit' in hidinput_mapping_quirks() is an out parameter Jiri Kosina
2007-12-07 14:34 ` broken suspend (sched related) [Was: 2.6.24-rc4-mm1] Jiri Slaby
2007-12-07 15:11   ` Ingo Molnar
2007-12-07 17:51     ` Ingo Molnar
2007-12-08  8:10       ` Jiri Slaby
2007-12-08  8:39         ` Ingo Molnar
2007-12-08  9:23           ` Jiri Slaby
2007-12-08 15:24             ` Ingo Molnar
2007-12-08 17:34               ` Jiri Slaby
2007-12-08 17:43               ` Jiri Slaby
2007-12-09  8:06                 ` Ingo Molnar
2007-12-08 23:12               ` Jiri Slaby
2007-12-09  7:46                 ` Ingo Molnar
2007-12-09  9:09                   ` Jiri Slaby
2007-12-10  8:19                   ` Gautham R Shenoy
2007-12-10  8:55                     ` Jiri Slaby
2007-12-10  9:10                       ` Ingo Molnar
2007-12-10 10:15                         ` Gautham R Shenoy
2007-12-10 10:21                           ` Ingo Molnar
2007-12-10 11:08                             ` Gautham R Shenoy
2007-12-10 11:28                               ` Ingo Molnar
2007-12-10 11:49                                 ` Gautham R Shenoy
2007-12-10  9:29                     ` Ingo Molnar
2007-12-07 18:20 ` [PATCH] md: balance braces in raid5 debug code Mariusz Kozlowski
2007-12-08  0:04 ` 2.6.24-rc4-mm1: undefined reference to `compat_sys_timerfd' on sparc64 Mariusz Kozlowski
2007-12-08  0:08   ` Andrew Morton
2007-12-08  9:17     ` Mariusz Kozlowski
2007-12-11 10:15     ` David Miller
2007-12-08 18:20 ` 2.6.24-rc4-mm1: some issues " Mariusz Kozlowski
2007-12-08 18:22   ` Andrew Morton
2007-12-09  8:45     ` David Miller
2007-12-09  9:03       ` Andrew Morton
2007-12-10 14:48 ` 2.6.24-rc4-mm1 Reuben Farrelly
2007-12-10 21:11   ` 2.6.24-rc4-mm1 Andrew Morton
2007-12-11 14:12     ` 2.6.24-rc4-mm1 Reuben Farrelly
2007-12-11 16:20 ` 2.6.24-rc4-mm1 Martin Bligh
2007-12-11 16:59   ` 2.6.24-rc4-mm1 Randy Dunlap
2007-12-11 17:50     ` 2.6.24-rc4-mm1 Martin Bligh
     [not found] ` <33307c790712110813h23def95dvd068b7226e9fcd36@mail.gmail.com>
2007-12-11 20:37   ` 2.6.24-rc4-mm1 Andrew Morton
2007-12-11 21:20     ` 2.6.24-rc4-mm1 Ingo Molnar
2007-12-11 21:26     ` 2.6.24-rc4-mm1 Kok, Auke
2007-12-11 21:59       ` 2.6.24-rc4-mm1 Kok, Auke
2007-12-11 22:10       ` 2.6.24-rc4-mm1 Andrew Morton
2007-12-11 22:17         ` 2.6.24-rc4-mm1 Kok, Auke
2007-12-11 23:15           ` 2.6.24-rc4-mm1 Randy Dunlap
2007-12-12  4:16 ` 2.6.24-rc4-mm1 Rik van Riel
2007-12-13 17:45 ` 2.6.24-rc4-mm1 - BUG in tcp_fragment Cedric Le Goater
2007-12-13 23:00   ` Ilpo Järvinen
2007-12-14  6:52     ` Cedric Le Goater
2007-12-14 20:14     ` [PATCH net-2.6.25] Revert recent TCP work Ilpo Järvinen
2007-12-16 22:21       ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=397037229.08913@ustc.edu.cn \
    --to=wfg@mail.ustc.edu.cn \
    --cc=akpm@linux-foundation.org \
    --cc=jkosina@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).