linux/drivers/edac
Borislav Petkov 88d84ac973 EDAC: Fix lockdep splat
Fix the following:

BUG: key ffff88043bdd0330 not in .data!
------------[ cut here ]------------
WARNING: at kernel/lockdep.c:2987 lockdep_init_map+0x565/0x5a0()
DEBUG_LOCKS_WARN_ON(1)
Modules linked in: glue_helper sb_edac(+) edac_core snd acpi_cpufreq lrw gf128mul ablk_helper iTCO_wdt evdev i2c_i801 dcdbas button cryptd pcspkr iTCO_vendor_support usb_common lpc_ich mfd_core soundcore mperf processor microcode
CPU: 2 PID: 599 Comm: modprobe Not tainted 3.10.0 #1
Hardware name: Dell Inc. Precision T3600/0PTTT9, BIOS A08 01/24/2013
 0000000000000009 ffff880439a1d920 ffffffff8160a9a9 ffff880439a1d958
 ffffffff8103d9e0 ffff88043af4a510 ffffffff81a16e11 0000000000000000
 ffff88043bdd0330 0000000000000000 ffff880439a1d9b8 ffffffff8103dacc
Call Trace:
  dump_stack
  warn_slowpath_common
  warn_slowpath_fmt
  lockdep_init_map
  ? trace_hardirqs_on_caller
  ? trace_hardirqs_on
  debug_mutex_init
  __mutex_init
  bus_register
  edac_create_sysfs_mci_device
  edac_mc_add_mc
  sbridge_probe
  pci_device_probe
  driver_probe_device
  __driver_attach
  ? driver_probe_device
  bus_for_each_dev
  driver_attach
  bus_add_driver
  driver_register
  __pci_register_driver
  ? 0xffffffffa0010fff
  sbridge_init
  ? 0xffffffffa0010fff
  do_one_initcall
  load_module
  ? unset_module_init_ro_nx
  SyS_init_module
  tracesys
---[ end trace d24a70b0d3ddf733 ]---
EDAC MC0: Giving out device to 'sbridge_edac.c' 'Sandy Bridge Socket#0': DEV 0000:3f:0e.0
EDAC sbridge: Driver loaded.

What happens is that bus_register needs a statically allocated lock_key
because the last is handed in to lockdep. However, struct mem_ctl_info
embeds struct bus_type (the whole struct, not a pointer to it) and the
whole thing gets dynamically allocated.

Fix this by using a statically allocated struct bus_type for the MC bus.

Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Cc: Markus Trippelsdorf <markus@trippelsdorf.de>
Cc: stable@kernel.org # v3.10
Signed-off-by: Tony Luck <tony.luck@intel.com>
2013-07-23 16:01:28 -07:00
..
amd64_edac_dbg.c amd64_edac: convert sysfs logic to use struct device 2012-06-11 13:23:40 -03:00
amd64_edac_inj.c EDAC: Replace strict_strtoul() with kstrtoul() 2013-06-08 10:16:33 +02:00
amd64_edac.c amd64_edac: Add Family 16h support 2013-04-19 12:46:50 +02:00
amd64_edac.h amd64_edac: Add Family 16h support 2013-04-19 12:46:50 +02:00
amd76x_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
amd8111_edac.c
amd8111_edac.h
amd8131_edac.c
amd8131_edac.h
cell_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
cpc925_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
e7xxx_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
e752x_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
edac_core.h edac: add support for raw error reports 2013-02-21 14:16:03 -03:00
edac_device_sysfs.c edac: Convert debugfX to edac_dbg(X, 2012-06-11 13:23:49 -03:00
edac_device.c Merge branch 'devel' 2012-07-29 21:11:05 -03:00
edac_mc_sysfs.c EDAC: Fix lockdep splat 2013-07-23 16:01:28 -07:00
edac_mc.c EDAC: Fix lockdep splat 2013-07-23 16:01:28 -07:00
edac_module.c edac: initialize the core earlier 2013-02-21 11:06:36 -03:00
edac_module.h edac: create top-level debugfs directory 2012-06-12 12:15:49 -03:00
edac_pci_sysfs.c Linux 3.8-rc7 2013-02-20 15:45:52 -03:00
edac_pci.c EDAC: Respect operational state in edac_pci.c 2012-11-28 11:22:47 +01:00
edac_stub.c EDAC: Change Boris' email address 2012-10-30 10:05:51 +01:00
ghes_edac.c ghes_edac: fix to use list_for_each_entry_safe() when delete list items 2013-02-26 10:05:35 -03:00
highbank_l2_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
highbank_mc_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i7core_edac.c EDAC: Replace strict_strtoul() with kstrtoul() 2013-06-08 10:16:33 +02:00
i3000_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i3200_edac.c i3200_edac: Fix the logic that detects filled memories 2013-02-21 11:06:31 -03:00
i5000_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i5100_edac.c EDAC: Fix lockdep splat 2013-07-23 16:01:28 -07:00
i5400_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i7300_edac.c i7300_edac: Fix memory detection in single mode 2013-04-29 10:32:39 -03:00
i82443bxgx_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i82860_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i82875p_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
i82975x_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
Kconfig Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2013-07-13 14:52:21 -07:00
Makefile ghes_edac: Register at EDAC core the BIOS report 2013-02-25 19:42:12 -03:00
mce_amd_inj.c EDAC: Replace strict_strtoul() with kstrtoul() 2013-06-08 10:16:33 +02:00
mce_amd.c EDAC, MCE, AMD: Add an MCE signature for new Fam15h models 2013-06-08 10:17:03 +02:00
mce_amd.h EDAC, MCE, AMD: Remove unneeded exports 2013-01-22 22:40:03 +01:00
mpc85xx_edac.c mpc85xx_edac: Fix typo 2013-02-10 13:28:41 +01:00
mpc85xx_edac.h
mv64x60_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
mv64x60_edac.h
octeon_edac-l2c.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
octeon_edac-lmc.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
octeon_edac-pc.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
octeon_edac-pci.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
pasemi_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
ppc4xx_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
ppc4xx_edac.h
r82600_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
sb_edac.c edac: sb_edac.c should not require prescence of IMC_DDRIO device 2013-04-29 10:32:40 -03:00
tile_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00
x38_edac.c Drivers: edac: remove __dev* attributes. 2013-01-03 15:57:03 -08:00