linux/drivers
Robert Richter 0bbf5c7025 oprofile: Fix crash when unloading module (hr timer mode)
commit 87121ca504 upstream.

Oprofile may crash in a KVM guest while unlaoding modules. This
happens if oprofile_arch_init() fails and oprofile switches to the hr
timer mode as a fallback. In this case oprofile_arch_exit() is called,
but it never was initialized properly which causes the crash. This
patch fixes this.

oprofile: using timer interrupt.
BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
IP: [<ffffffff8123c226>] unregister_syscore_ops+0x41/0x58
PGD 41da3f067 PUD 41d80e067 PMD 0
Oops: 0002 [#1] PREEMPT SMP
CPU 5
Modules linked in: oprofile(-)

Pid: 2382, comm: modprobe Not tainted 3.1.0-rc7-00018-g709a39d #18 Advanced Micro Device Anaheim/Anaheim
RIP: 0010:[<ffffffff8123c226>]  [<ffffffff8123c226>] unregister_syscore_ops+0x41/0x58
RSP: 0018:ffff88041de1de98  EFLAGS: 00010296
RAX: 0000000000000000 RBX: ffffffffa00060e0 RCX: dead000000200200
RDX: 0000000000000000 RSI: dead000000100100 RDI: ffffffff8178c620
RBP: ffff88041de1dea8 R08: 0000000000000001 R09: 0000000000000082
R10: 0000000000000000 R11: ffff88041de1dde8 R12: 0000000000000080
R13: fffffffffffffff5 R14: 0000000000000001 R15: 0000000000610210
FS:  00007f9ae5bef700(0000) GS:ffff88042fd40000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000008 CR3: 000000041ca44000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process modprobe (pid: 2382, threadinfo ffff88041de1c000, task ffff88042db6d040)
Stack:
 ffff88041de1deb8 ffffffffa0006770 ffff88041de1deb8 ffffffffa000251e
 ffff88041de1dec8 ffffffffa00022c2 ffff88041de1ded8 ffffffffa0004993
 ffff88041de1df78 ffffffff81073115 656c69666f72706f 0000000000610200
Call Trace:
 [<ffffffffa000251e>] op_nmi_exit+0x15/0x17 [oprofile]
 [<ffffffffa00022c2>] oprofile_arch_exit+0xe/0x10 [oprofile]
 [<ffffffffa0004993>] oprofile_exit+0x13/0x15 [oprofile]
 [<ffffffff81073115>] sys_delete_module+0x1c3/0x22f
 [<ffffffff811bf09e>] ? trace_hardirqs_on_thunk+0x3a/0x3f
 [<ffffffff8148070b>] system_call_fastpath+0x16/0x1b
Code: 20 c6 78 81 e8 c5 cc 23 00 48 8b 13 48 8b 43 08 48 be 00 01 10 00 00 00 ad de 48 b9 00 02 20 00 00 00 ad de 48 c7 c7 20 c6 78 81
 89 42 08 48 89 10 48 89 33 48 89 4b 08 e8 a6 c0 23 00 5a 5b
RIP  [<ffffffff8123c226>] unregister_syscore_ops+0x41/0x58
 RSP <ffff88041de1de98>
CR2: 0000000000000008
---[ end trace 06d4e95b6aa3b437 ]---

Signed-off-by: Robert Richter <robert.richter@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-12-09 08:52:50 -08:00
..
accessibility
acpi ACPI atomicio: Convert width in bits to bytes in __acpi_ioremap_fast() 2011-11-11 09:37:11 -08:00
amba
ata ata_piix: make DVD Drive recognisable on systems with Intel Sandybridge chipsets(v2) 2011-11-11 09:35:50 -08:00
atm
auxdisplay
base drivers/base/node.c: fix compilation error with older versions of gcc 2011-11-26 09:09:59 -08:00
bcma
block xen/blkback: Report VBD_WSECT (wr_sect) properly. 2011-11-11 09:37:07 -08:00
bluetooth btusb: add device entry for Broadcom SoftSailing 2011-11-11 09:36:43 -08:00
cdrom
char TPM: Zero buffer after copying to userspace 2011-10-03 11:40:58 -07:00
clk
clocksource
connector
cpufreq drivers/cpufreq/pcc-cpufreq.c: avoid NULL pointer dereference 2011-10-03 11:40:31 -07:00
cpuidle
crypto crypto: mv_cesa - fix hashing of chunks > 1920 bytes 2011-12-09 08:52:20 -08:00
dca
dio
dma
edac i7core_edac: fixed typo in error count calculation 2011-08-29 13:29:06 -07:00
eisa
firewire firewire: sbp2: fix panic after rmmod with slow targets 2011-10-25 07:10:16 +02:00
firmware firmware: Sigma: Fix endianess issues 2011-12-09 08:52:39 -08:00
gpio gpio: wm831x: add a missing break in wm831x_gpio_dbg_show 2011-07-15 14:03:30 -06:00
gpu drm/radeon/kms: add some loop timeouts in pageflip code 2011-12-09 08:52:38 -08:00
hid HID: Correct General touch PID 2011-12-09 08:52:41 -08:00
hwmon hwmon: (coretemp) Fix oops on driver load 2011-12-09 08:52:34 -08:00
hwspinlock hwspinlock/core: use a mutex to protect the radix tree 2011-11-11 09:36:31 -08:00
i2c i2c-algo-bit: Generate correct i2c address sequence for 10-bit target 2011-12-09 08:52:19 -08:00
ide ide-disk: Fix request requeuing 2011-10-16 14:14:51 -07:00
idle
ieee802154
infiniband cxgb3i: convert cdev->l2opt to use rcu to prevent NULL dereference 2011-10-03 11:41:08 -07:00
input input: pmic8xxx-pwrkey: Do not use mfd_get_data() 2011-07-05 10:38:43 +02:00
isdn net: Audit drivers to identify those needing IFF_TX_SKB_SHARING cleared 2011-08-15 18:31:38 -07:00
leds Revert "leds: save the delay values after a successful call to blink_set()" 2011-11-21 14:31:19 -08:00
lguest
macintosh
mca
md md/raid5: abort any pending parity operations when array fails. 2011-11-21 14:31:22 -08:00
media saa7164: Add support for another HVR2200 hardware revision 2011-11-26 09:09:53 -08:00
memstick
message
mfd revert "mfd: Fix twl4030 dependencies for audio codec" 2011-12-09 08:52:35 -08:00
misc pcie-gadget-spear: Add "platform:" prefix for platform modalias 2011-11-26 09:09:59 -08:00
mmc mmc: core: ext_csd.raw_* used in comparison but never set 2011-11-11 09:35:23 -08:00
mtd mtd: nand_base: always initialise oob_poi before writing OOB data 2011-11-11 09:37:19 -08:00
net rt2x00: Fix efuse EEPROM reading on PPC32. 2011-12-09 08:52:30 -08:00
nfc
nubus
of
oprofile oprofile: Fix crash when unloading module (hr timer mode) 2011-12-09 08:52:50 -08:00
parisc
parport
pci PCI hotplug: shpchp: don't blindly claim non-AMD 0x7450 device IDs 2011-12-09 08:52:22 -08:00
pcmcia pcmcia: pxa2xx/vpac270: free gpios on exist rather than requesting 2011-07-11 14:26:34 +08:00
platform WMI: properly cleanup devices to avoid crashes 2011-11-11 09:36:09 -08:00
pnp
power drivers/power/ds2780_battery.c: fix deadlock upon insertion and removal 2011-11-11 09:36:32 -08:00
pps
ps3
ptp
rapidio rapidio: fix use of non-compatible registers 2011-10-03 11:39:46 -07:00
regulator regulator: tps65910: Add missing breaks in switch/case 2011-10-03 11:40:01 -07:00
rtc rtc: Disable the alarm in the hardware 2011-12-09 08:52:48 -08:00
s390 ccwgroup: move attributes to attribute group 2011-11-11 09:36:09 -08:00
sbus
scsi SCSI: Silencing 'killing requests for dead queue' 2011-12-09 08:52:36 -08:00
sfi
sh drivers: sh: resume enabled clocks fix 2011-06-14 15:15:25 +09:00
sn
spi spi/s3c64xx: Bug fix for SPI with different FIFO level 2011-07-06 15:03:08 +09:00
ssb ssb: fix init regression of hostmode PCI core 2011-07-07 13:06:08 -04:00
staging Staging: comedi: fix signal handling in read and write 2011-12-09 08:52:40 -08:00
target tcm_loop: Add explict read buffer memset for SCF_SCSI_CONTROL_SG_IO_CDB 2011-11-11 09:37:01 -08:00
tc
telephony
thermal
tty TTY: ldisc, wait for ldisc infinitely in hangup 2011-11-26 09:09:58 -08:00
uio
usb xHCI: fix bug in xhci_clear_command_ring() 2011-12-09 08:52:43 -08:00
uwb
vhost
video viafb: correct sync polarity for OLPC DCON 2011-12-09 08:52:23 -08:00
virtio virtio-pci: fix use after free 2011-11-21 14:31:14 -08:00
vlynq
w1 drivers/power/ds2780_battery.c: add a nolock function to w1 interface 2011-11-11 09:36:32 -08:00
watchdog watchdog: shwdt: fix usage of mod_timer 2011-08-04 21:58:42 -07:00
xen xen-gntalloc: signedness bug in add_grefs() 2011-11-21 14:31:24 -08:00
zorro zorro: Defer device_register() until all devices have been identified 2011-10-03 11:40:57 -07:00
Kconfig
Makefile