summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Light <wrl@illest.net>2011-10-10 15:54:22 +0000
committerTakashi Iwai <tiwai@suse.de>2011-10-13 08:16:42 +0200
commit3d37fbe44112b06279efa04ad91a0e4b7a0c600c (patch)
tree630491400d6a8362fa57f8dfc293ee39ea1f6dbf
parentffd3d5c6c7a20fb718daf98a6c8a476d228f3995 (diff)
downloadop-kernel-dev-3d37fbe44112b06279efa04ad91a0e4b7a0c600c.zip
op-kernel-dev-3d37fbe44112b06279efa04ad91a0e4b7a0c600c.tar.gz
ALSA: snd-usb-caiaq: Fix NULL dereference in input.c
There was a case where a newly-registered input device could be opened before a necessary variable in the device structure was set. When code tried to use the variable in the URB reply callback, it would cause an Oops. This fix sets the aforementioned variable before calling input_register_device. Signed-off-by: William Light <wrl@illest.net> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/usb/caiaq/input.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/usb/caiaq/input.c b/sound/usb/caiaq/input.c
index a213813..9efb92e 100644
--- a/sound/usb/caiaq/input.c
+++ b/sound/usb/caiaq/input.c
@@ -664,15 +664,17 @@ int snd_usb_caiaq_input_init(struct snd_usb_caiaqdev *dev)
for (i = 0; i < input->keycodemax; i++)
__set_bit(dev->keycode[i], input->keybit);
+ dev->input_dev = input;
+
ret = input_register_device(input);
if (ret < 0)
goto exit_free_idev;
- dev->input_dev = input;
return 0;
exit_free_idev:
input_free_device(input);
+ dev->input_dev = NULL;
return ret;
}
OpenPOWER on IntegriCloud