linux-stable/drivers/misc
Tomas Winkler 2753ff53d4 mei: nfc: fix nfc device freeing
The nfc_dev is a static variable and is not cleaned properly upon reset
mainly ndev->cl and ndev->cl_info are not set to NULL after freeing which

mei_stop:198: mei_me 0000:00:16.0: stopping the device.
[  404.253427] general protection fault: 0000 [#2] SMP
[  404.253437] Modules linked in: mei_me(-) binfmt_misc snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device edd af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave fuse loop dm_mod hid_generic usbhid hid coretemp acpi_cpufreq mperf kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel ablk_helper cryptd lrw gf128mul snd_hda_codec_hdmi glue_helper aes_x86_64 e1000e snd_hda_intel snd_hda_codec ehci_pci iTCO_wdt iTCO_vendor_support ehci_hcd snd_hwdep xhci_hcd snd_pcm usbcore ptp mei sg microcode snd_timer pps_core i2c_i801 snd pcspkr battery rtc_cmos lpc_ich mfd_core soundcore usb_common snd_page_alloc ac ext3 jbd mbcache drm_kms_helper drm intel_agp i2c_algo_bit intel_gtt i2c_core sd_mod crc_t10dif thermal fan video button processor thermal_sys hwmon ahci libahci libata scsi_mod [last unloaded: mei_me]
[  404.253591] CPU: 0 PID: 5551 Comm: modprobe Tainted: G      D W    3.10.0-rc3 #1
[  404.253611] task: ffff880143cd8300 ti: ffff880144a2a000 task.ti: ffff880144a2a000
[  404.253619] RIP: 0010:[<ffffffff81334e5d>]  [<ffffffff81334e5d>] device_del+0x1d/0x1d0
[  404.253638] RSP: 0018:ffff880144a2bcf8  EFLAGS: 00010206
[  404.253645] RAX: 2020302e30202030 RBX: ffff880144fdb000 RCX: 0000000000000086
[  404.253652] RDX: 0000000000000001 RSI: 0000000000000086 RDI: ffff880144fdb000
[  404.253659] RBP: ffff880144a2bd18 R08: 0000000000000651 R09: 0000000000000006
[  404.253666] R10: 0000000000000651 R11: 0000000000000006 R12: ffff880144fdb000
[  404.253673] R13: ffff880149371098 R14: ffff880144482c00 R15: ffffffffa04710e0
[  404.253681] FS:  00007f251c59a700(0000) GS:ffff88014e200000(0000) knlGS:0000000000000000
[  404.253689] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  404.253696] CR2: ffffffffff600400 CR3: 0000000145319000 CR4: 00000000001407f0
[  404.253703] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  404.253710] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  404.253716] Stack:
[  404.253720]  ffff880144fdb000 ffff880143ffe000 ffff880149371098 ffffffffa0471000
[  404.253732]  ffff880144a2bd38 ffffffff8133502d ffff88014e20cf48 ffff880143ffe1d8
[  404.253744]  ffff880144a2bd48 ffffffffa02a4749 ffff880144a2bd58 ffffffffa02a4ba1
[  404.253755] Call Trace:
[  404.253766]  [<ffffffff8133502d>] device_unregister+0x1d/0x60
[  404.253787]  [<ffffffffa02a4749>] mei_cl_remove_device+0x9/0x10 [mei]
[  404.253804]  [<ffffffffa02a4ba1>] mei_nfc_host_exit+0x21/0x30 [mei]
[  404.253819]  [<ffffffffa029c2dd>] mei_stop+0x3d/0x90 [mei]
[  404.253830]  [<ffffffffa046e220>] mei_me_remove+0x60/0xe0 [mei_me]
[  404.253843]  [<ffffffff81278f37>] pci_device_remove+0x37/0xb0
[  404.253855]  [<ffffffff81337c68>] __device_release_driver+0x98/0x100
[  404.253865]  [<ffffffff81337d80>] driver_detach+0xb0/0xc0
[  404.253876]  [<ffffffff81336b4f>] bus_remove_driver+0x8f/0x120
[  404.253891]  [<ffffffff81075990>] ? try_to_wake_up+0x2b0/0x2b0
[  404.253903]  [<ffffffff81338a48>] driver_unregister+0x58/0x90
[  404.253913]  [<ffffffff8127906b>] pci_unregister_driver+0x2b/0xb0
[  404.253924]  [<ffffffffa046f244>] mei_me_driver_exit+0x10/0xdcc [mei_me]
[  404.253936]  [<ffffffff810a50d8>] SyS_delete_module+0x198/0x2b0
[  404.253949]  [<ffffffff814850d9>] ? do_page_fault+0x9/0x10
[  404.253961]  [<ffffffff81489692>] system_call_fastpath+0x16/0x1b
[  404.253967] Code: 41 5c 41 5d 41 5e 41 5f c9 c3 0f 1f 40 00 55 48 89 e5 41 56 41 55 41 54 49 89 fc 53 48 8b 87 88 00 00 00 4c 8b 37 48 85 c0 74 18 <48> 8b 78 78 4c 89 e2 be 02 00 00 00 48 81 c7 f8 00 00 00 e8 3b
[  404.254048] RIP  [<ffffffff81334e5d>] device_del+0x1d/0x1d0

Cc: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-06-13 22:31:06 -07:00
..
altera-stapl
c2port misc/c2port: convert to idr_alloc() 2013-02-27 19:10:17 -08:00
carma dmaengine: remove dma_async_memcpy_pending() macro 2013-01-07 22:05:09 -08:00
cb710 drivers/misc/cb710: add missing GENERIC_HARDIRQS dependency 2013-02-08 12:23:53 -08:00
eeprom misc: eeprom_93xx46: use spi_get_drvdata() and spi_set_drvdata() 2013-04-05 15:38:31 -07:00
ibmasm fs: Limit sys_mount to only request filesystem modules. 2013-03-03 19:36:31 -08:00
lis3lv02d lis3lv02d: don't wank with fasync() on ->release() 2013-04-29 15:41:46 -04:00
mei mei: nfc: fix nfc device freeing 2013-06-13 22:31:06 -07:00
sgi-gru proc: Supply a function to remove a proc entry by PDE 2013-05-01 17:29:46 -04:00
sgi-xp SGI-XP: handle non-fatal traps 2012-12-20 17:40:20 -08:00
ti-st Char/Misc driver patches for 3.9-rc1 2013-02-21 13:57:13 -08:00
vmw_vmci Hoist memcpy_fromiovec/memcpy_toiovec into lib/ 2013-05-20 10:24:22 +09:30
ad525x_dpot-i2c.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
ad525x_dpot-spi.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
ad525x_dpot.c misc: remove use of __devinit 2012-11-21 12:51:53 -08:00
ad525x_dpot.h
apds990x.c misc: apds990x: add CONFIG_PM_SLEEP to suspend/resume functions 2013-03-29 08:50:52 -07:00
apds9802als.c misc: apds9802als: Fix suspend/resume 2013-04-11 12:39:02 -07:00
arm-charlcd.c misc: arm-charlcd: use module_platform_driver_probe() 2013-03-15 11:10:49 -07:00
atmel-ssc.c drivers/misc: don't check resource with devm_ioremap_resource 2013-05-18 11:55:54 +02:00
atmel_pwm.c misc: atmel_pwm: use module_platform_driver_probe() 2013-03-15 11:10:49 -07:00
atmel_tclib.c
bh1770glc.c misc: bh1770glc: add CONFIG_PM_SLEEP to suspend/resume functions 2013-03-29 08:50:51 -07:00
bh1780gli.c misc: bh1780gli: add CONFIG_PM_SLEEP to suspend/resume functions 2013-03-29 08:50:51 -07:00
bmp085-i2c.c misc: remove use of __devinit 2012-11-21 12:51:53 -08:00
bmp085-spi.c misc: remove use of __devinit 2012-11-21 12:51:53 -08:00
bmp085.c misc: remove use of __devinit 2012-11-21 12:51:53 -08:00
bmp085.h
cs5535-mfgpt.c cs5535-mfgpt: Fix quotation marks 2013-04-03 11:23:13 -07:00
ds1682.c
dummy-irq.c dummy-irq: require the user to specify an IRQ number 2013-05-16 18:08:57 -07:00
enclosure.c
ep93xx_pwm.c misc: ep93xx_pwm: use module_platform_driver_probe() 2013-03-15 11:10:49 -07:00
fsa9480.c misc: fsa8480: Use dev_pm_ops 2013-04-11 12:39:02 -07:00
hmc6352.c
hpilo.c misc: remove use of __devinit 2012-11-21 12:51:53 -08:00
hpilo.h misc: hpilo: increase number of max supported channels 2012-06-14 17:22:12 -07:00
ics932s401.c
ioc4.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
isl29003.c misc: isl29003: Use dev_pm_ops 2013-04-11 12:39:02 -07:00
isl29020.c
Kconfig Merge branch 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-04-30 08:41:21 -07:00
kgdbts.c kgdb/kgdbts: support ppc64 2013-03-02 08:52:17 -06:00
lattice-ecp3-config.c misc: lattice-ecp3-config: use spi_get_drvdata() 2013-04-05 15:38:31 -07:00
lkdtm.c drivers/misc/lkdtm.c: fix missing allocation failure check 2012-07-30 17:25:22 -07:00
Makefile misc: generic on-chip SRAM allocation driver 2013-04-29 18:28:13 -07:00
pch_phub.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
phantom.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
pti.c TTY/Serial merge for 3.8-rc1 2012-12-11 14:08:47 -08:00
spear13xx_pcie_gadget.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
sram.c misc: generic on-chip SRAM allocation driver 2013-04-29 18:28:13 -07:00
ti_dac7512.c misc: remove use of __devexit 2012-11-21 12:53:32 -08:00
tifm_7xx1.c tifm: use module_pci_driver 2012-09-05 14:10:29 -07:00
tifm_core.c misc/tifm_core: convert to idr_alloc() 2013-02-27 19:10:17 -08:00
tsl2550.c misc: tsl2550: Use dev_pm_ops 2013-04-11 12:39:02 -07:00
vmw_balloon.c