summaryrefslogtreecommitdiff
path: root/drivers/misc/ioc4.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2011-06-27 16:18:15 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2011-06-27 18:00:13 -0700
commit1fc6e987d8f606371337211f52ff74c6753298a6 (patch)
tree29222b9ec135a747575a14438ee4889b0f1b96b5 /drivers/misc/ioc4.c
parent33721bd3d00e7a235f70ba4ec19eb64bcd060c0b (diff)
drivers/misc/ioc4.c: fix section mismatch / race condition
Fix this section mismatch: WARNING: drivers/misc/ioc4.o(.data+0x144): Section mismatch in reference from the variable ioc4_load_modules_work to the function .devinit.text:ioc4_load_modules() The variable ioc4_load_modules_work references the function __devinit ioc4_load_modules() If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console This one is potentially fatal; by the time ioc4_load_modules is invoked it may already have been freed. For that reason ioc4_load_modules_work can't be turned to __devinitdata but also because it's referenced in ioc4_exit. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Acked-by: Brent Casavant <bcasavan@sgi.com> Cc: Tejun Heo <tj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/misc/ioc4.c')
-rw-r--r--drivers/misc/ioc4.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/misc/ioc4.c b/drivers/misc/ioc4.c
index 668d41e594a9..df03dd3bd0e2 100644
--- a/drivers/misc/ioc4.c
+++ b/drivers/misc/ioc4.c
@@ -270,7 +270,7 @@ ioc4_variant(struct ioc4_driver_data *idd)
return IOC4_VARIANT_PCI_RT;
}
-static void __devinit
+static void
ioc4_load_modules(struct work_struct *work)
{
request_module("sgiioc4");