kernel-fxtec-pro1x/drivers/misc
Steven Rostedt 7316a9f2a9 st_kim: Handle case of no device found for ID 0
Running ktest.pl, I hit this bug:

[   19.780654] BUG: unable to handle kernel NULL pointer dereference at 0000000c
[   19.780660] IP: [<c112efcd>] dev_get_drvdata+0xc/0x46
[   19.780669] *pdpt = 0000000031daf001 *pde = 0000000000000000
[   19.780673] Oops: 0000 [#1] SMP
[   19.780680] Dumping ftrace buffer:^M
[   19.780685]    (ftrace buffer empty)
[   19.780687] Modules linked in: ide_pci_generic firewire_ohci firewire_core evbug crc_itu_t e1000 ide_core i2c_i801 iTCO_wdt
[   19.780697]
[   19.780700] Pid: 346, comm: v4l_id Not tainted 2.6.39-test-02740-gcaebc16-dirty #4                  /DG965MQ
[   19.780706] EIP: 0060:[<c112efcd>] EFLAGS: 00010202 CPU: 0
[   19.780709] EIP is at dev_get_drvdata+0xc/0x46
[   19.780712] EAX: 00000008 EBX: f1e37da4 ECX: 00000000 EDX: 00000000
[   19.780715] ESI: f1c3f200 EDI: c33ec95c EBP: f1e37d80 ESP: f1e37d80
[   19.780718]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[   19.780721] Process v4l_id (pid: 346, ti=f1e36000 task=f2bc2a60 task.ti=f1e36000)
[   19.780723] Stack:
[   19.780725]  f1e37d8c c117d395 c33ec93c f1e37db4 c117a0f9 00000002 00000000 c1725e54
[   19.780732]  00000001 00000007 f2918c90 f1c3f200 c33ec95c f1e37dd4 c1789d3d 22222222
[   19.780740]  22222222 22222222 f2918c90 f1c3f200 f29194f4 f1e37de8 c178d5c4 c1725e54
[   19.780747] Call Trace:
[   19.780752]  [<c117d395>] st_kim_ref+0x28/0x41
[   19.780756]  [<c117a0f9>] st_register+0x29/0x562
[   19.780761]  [<c1725e54>] ? v4l2_open+0x111/0x1e3
[   19.780766]  [<c1789d3d>] fmc_prepare+0x97/0x424
[   19.780770]  [<c178d5c4>] fm_v4l2_fops_open+0x70/0x106
[   19.780773]  [<c1725e54>] ? v4l2_open+0x111/0x1e3
[   19.780777]  [<c1725e9b>] v4l2_open+0x158/0x1e3
[   19.780782]  [<c065173b>] chrdev_open+0x22c/0x276
[   19.780787]  [<c0647c4e>] __dentry_open+0x35c/0x581
[   19.780792]  [<c06498f9>] nameidata_to_filp+0x7c/0x96
[   19.780795]  [<c065150f>] ? cdev_put+0x57/0x57
[   19.780800]  [<c0660cad>] do_last+0x743/0x9d4
[   19.780804]  [<c065d5fc>] ? path_init+0x1ee/0x596
[   19.780808]  [<c0661481>] path_openat+0x10c/0x597
[   19.780813]  [<c05204a1>] ? trace_hardirqs_off+0x27/0x37
[   19.780817]  [<c0509651>] ? local_clock+0x78/0xc7
[   19.780821]  [<c0661945>] do_filp_open+0x39/0xc2
[   19.780827]  [<c1cabc76>] ? _raw_spin_unlock+0x4c/0x5d^M
[   19.780831]  [<c0674ccd>] ? alloc_fd+0x19e/0x1b7
[   19.780836]  [<c06499ca>] do_sys_open+0xb7/0x1bd
[   19.780840]  [<c0608eea>] ? sys_munmap+0x78/0x8d
[   19.780844]  [<c0649b06>] sys_open+0x36/0x58
[   19.780849]  [<c1cb809f>] sysenter_do_call+0x12/0x38
[   19.780852] Code: d8 2f 20 c3 01 83 15 dc 2f 20 c3 00 f0 ff 00 83 05 e0 2f 20 c3 01 83 15 e4 2f 20 c3 00 5d c3 55 89 e5 3e 8d 74 26 00 85 c0 74 28 <8b> 40 04 83 05 e8 2f 20 c3 01 83 15 ec 2f 20 c3 00 85 c0 74 13 ^M
[   19.780889] EIP: [<c112efcd>] dev_get_drvdata+0xc/0x46 SS:ESP 0068:f1e37d80
[   19.780894] CR2: 000000000000000c
[   19.780898] ---[ end trace e7d1d0f6a2d1d390 ]---

The id of 0 passed to st_kim_ref() found no device, keeping pdev null,
and causing pdev->dev cause a NULL pointer dereference. After having
st_kim_ref() check for NULL, the st_unregister() function needed to be
updated to handle the case that st_gdata was not set by the
st_kim_ref().

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-06-07 10:01:16 -07:00
..
c2port Fix common misspellings 2011-03-31 11:26:23 -03:00
carma misc: Add CARMA DATA-FPGA Programmer support 2011-05-19 16:55:10 +10:00
cb710 misc: change to new flag variable 2011-03-17 14:05:34 +01:00
eeprom misc/at24: add more sanity checks for parameters 2010-12-24 02:14:17 -07:00
ibmasm Merge branch 'master' into for-next 2011-04-26 10:22:59 +02:00
iwmc3200top Fix common misspellings 2011-03-31 11:26:23 -03:00
lis3lv02d Move lis3lv02d drivers to drivers/misc 2011-03-21 17:59:36 +01:00
sgi-gru sanitize <linux/prefetch.h> usage 2011-05-20 12:50:29 -07:00
sgi-xp sgi-xpc: XPC fails to discover partitions with all nasids above 128 2010-11-25 06:50:40 +09:00
ti-st st_kim: Handle case of no device found for ID 0 2011-06-07 10:01:16 -07:00
ab8500-pwm.c misc: Add ab8500 pwm driver 2010-10-29 00:29:21 +02:00
ad525x_dpot-i2c.c drivers/misc/ad525x_dpot.c: new features 2010-10-26 16:52:14 -07:00
ad525x_dpot-spi.c drivers/misc/ad525x_dpot.c: new features 2010-10-26 16:52:14 -07:00
ad525x_dpot.c drivers/misc/ad525x_dpot.c: new features 2010-10-26 16:52:14 -07:00
ad525x_dpot.h ad525x_dpot: use correct rdac channel for ad5251/ad5252 2010-10-26 16:52:14 -07:00
apds990x.c drivers/misc: driver for APDS990X ALS and proximity sensors 2010-10-26 16:52:14 -07:00
apds9802als.c drivers/misc/apds9802als.c: put the device into runtime suspend after resume()/probe() is handled 2011-03-22 17:44:10 -07:00
arm-charlcd.c tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
atmel-ssc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
atmel_pwm.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
atmel_tclib.c drivers/misc/atmel_tclib.c: fix a memory leak 2011-03-22 17:44:11 -07:00
bh1770glc.c drivers/misc/bh1770glc.c: error handling in bh1770_power_state_store() 2010-11-12 07:55:31 -08:00
bh1780gli.c treewide: cleanup continuations and remove logging message whitespace 2011-04-26 10:24:37 +02:00
bmp085.c Fix common misspellings 2011-03-31 11:26:23 -03:00
cs5535-mfgpt.c cs5535: Fix section mismatch 2011-04-10 17:01:03 +02:00
ds1682.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
enclosure.c [SCSI] enclosure: fix error path - actually return ERR_PTR() on error 2010-07-27 12:03:48 -05:00
ep93xx_pwm.c drivers/misc/ep93xx_pwm.c: world-writable sysfs files 2011-03-22 17:44:11 -07:00
hmc6352.c drivers/misc/hmc6352.c: fix wrong return value checking for i2c_master_recv() 2011-03-22 17:44:10 -07:00
hpilo.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 2010-10-22 19:36:42 -07:00
hpilo.h hpilo: fix pointer warning in ilo_ccb_setup 2010-08-09 20:45:05 -07:00
ics932s401.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ioc4.c ioc4: use static work_struct for ioc4_load_modules() 2010-12-24 16:14:20 +01:00
isl29003.c
isl29020.c drivers/misc/isl29020.c: remove incorrect kfree in isl29020_remove() 2010-11-25 06:50:47 +09:00
Kconfig Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 2011-05-23 12:23:20 -07:00
kgdbts.c kgdbts: only use new asm-generic/ptrace.h api when needed 2011-06-01 16:35:01 +09:00
lkdtm.c lkdtm: prefix enum constants 2010-10-26 16:52:14 -07:00
Makefile Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 2011-05-23 12:23:20 -07:00
pch_phub.c pch_phub: Support new device ML7223 2011-05-12 09:47:42 -07:00
phantom.c drivers/misc/phantom.c: add missing warning messages in phantom_probe() 2010-10-26 16:52:14 -07:00
pti.c Intel PTI implementaiton of MIPI 1149.7. 2011-05-13 16:31:00 -07:00
spear13xx_pcie_gadget.c treewide: cleanup continuations and remove logging message whitespace 2011-04-26 10:24:37 +02:00
ti_dac7512.c
tifm_7xx1.c
tifm_core.c workqueue, freezer: unify spelling of 'freeze' + 'able' to 'freezable' 2011-02-16 17:48:59 +01:00
tsl2550.c
vmw_balloon.c workqueue, freezer: unify spelling of 'freeze' + 'able' to 'freezable' 2011-02-16 17:48:59 +01:00