From 3d37fbe44112b06279efa04ad91a0e4b7a0c600c Mon Sep 17 00:00:00 2001 From: William Light Date: Mon, 10 Oct 2011 15:54:22 +0000 Subject: 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 Signed-off-by: Takashi Iwai --- sound/usb/caiaq/input.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sound/usb/caiaq') diff --git a/sound/usb/caiaq/input.c b/sound/usb/caiaq/input.c index a213813487b..9efb92e4090 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; } -- cgit v1.2.3-70-g09d2