Skip to contentSkip to conversation

eisa/pci_eisa.c: fix section mismatch

PATCH In review Arnaud Lacombe 2 participants 6 messages Jul 21, 2011 – Aug 1, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/4 eisa/pci_eisa.c: fix section mismatch

WARNING: vmlinux.o(.data+0x15d3ac): Section mismatch in reference from the variable pci_eisa_driver to the function .init.text:pci_eisa_init() The variable pci_eisa_driver references the function __init pci_eisa_init()
If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console

---
 drivers/eisa/pci_eisa.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/eisa/pci_eisa.c +2 -2
index 0dd0f63..30da70d 100644
@@ -45,13 +45,13 @@ static int __init pci_eisa_init(struct pci_dev *pdev,
 	return 0;
 }
 
-static struct pci_device_id pci_eisa_pci_tbl[] = {
+static struct pci_device_id __initdata pci_eisa_pci_tbl[] = {
 	{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
 	  PCI_CLASS_BRIDGE_EISA << 8, 0xffff00, 0 },
 	{ 0, }
 };
 
-static struct pci_driver pci_eisa_driver = {
+static struct pci_driver __initdata pci_eisa_driver = {
 	.name		= "pci_eisa",
 	.id_table	= pci_eisa_pci_tbl,
 	.probe		= pci_eisa_init,
Signature · 1 line
1.7.6.153.g78432
#1 lore raw

PATCH 2/4 drivers/base/devtmpfs.c: correct annotation of `setup_done'

This fixes the following section mismatch issue:

WARNING: vmlinux.o(.text+0x1192bf): Section mismatch in reference from the function devtmpfsd() to the variable .init.data:setup_done The function devtmpfsd() references the variable __initdata setup_done.
This is often because devtmpfsd lacks a __initdata annotation or the annotation of setup_done is wrong.

WARNING: vmlinux.o(.text+0x119342): Section mismatch in reference from the function devtmpfsd() to the variable .init.data:setup_done The function devtmpfsd() references the variable __initdata setup_done.
This is often because devtmpfsd lacks a __initdata annotation or the annotation of setup_done is wrong.

Cc Greg Kroah-Hartman <[email protected]>
---
 drivers/base/devtmpfs.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/base/devtmpfs.c +1 -1
index 6d678c9..38e6464 100644
@@ -376,7 +376,7 @@ int devtmpfs_mount(const char *mntdir)
 	return err;
 }
 
-static __initdata DECLARE_COMPLETION(setup_done);
+static DECLARE_COMPLETION(setup_done);
 
 static int handle(const char *name, mode_t mode, struct device *dev)
 {
Signature · 1 line
1.7.6.153.g78432
#2 lore raw

Re: [PATCH 2/4] drivers/base/devtmpfs.c: correct annotation of `setup_done'

Hi,

I saw that devtmpfs stuff went on through Al Viro's tree, maybe I should have Cc: him on this ?

Thanks,
- Arnaud

Quoted 33 lines · Arnaud Lacombe

This fixes the following section mismatch issue:

WARNING: vmlinux.o(.text+0x1192bf): Section mismatch in reference from the function devtmpfsd() to the variable .init.data:setup_done The function devtmpfsd() references the variable __initdata setup_done.
This is often because devtmpfsd lacks a __initdata annotation or the annotation of setup_done is wrong.

WARNING: vmlinux.o(.text+0x119342): Section mismatch in reference from the function devtmpfsd() to the variable .init.data:setup_done The function devtmpfsd() references the variable __initdata setup_done.
This is often because devtmpfsd lacks a __initdata annotation or the annotation of setup_done is wrong.

Cc Greg Kroah-Hartman <[email protected]>

---
 drivers/base/devtmpfs.c |    2 +-

 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/base/devtmpfs.c +1 -2
index 6d678c9..38e6464 100644
@@ -376,7 +376,7 @@ int devtmpfs_mount(const char *mntdir)
        return err;
  }
 
-static __initdata DECLARE_COMPLETION(setup_done);
+static DECLARE_COMPLETION(setup_done);
 
  static int handle(const char *name, mode_t mode, struct device *dev)
  {
--

1.7.6.153.g78432

#3 lore raw

Re: [PATCH 2/4] drivers/base/devtmpfs.c: correct annotation of `setup_done'

Quoted 4 lines · Arnaud Lacombe

Hi,

I saw that devtmpfs stuff went on through Al Viro's tree, maybe I should have Cc: him on this ?

No need, I'll get it.

thanks,

greg k-h

#4 lore raw

PATCH 3/4 usb/host/pci-quirks.c: correct annotation of `ehci_dmi_nohandoff_table'

In reply to Arnaud Lacombe

ehci_bios_handoff() is marked __devinit, `ehci_dmi_nohandoff_table' should be marked __devinitconst, not __initconst. This fixes the following section mismatch:

WARNING: vmlinux.o(.devinit.text+0x4f08): Section mismatch in reference from the function ehci_bios_handoff() to the variable .init.rodata:ehci_dmi_nohandoff_table The function __devinit ehci_bios_handoff() references a variable __initconst ehci_dmi_nohandoff_table.
If ehci_dmi_nohandoff_table is only used by ehci_bios_handoff then annotate ehci_dmi_nohandoff_table with a matching annotation.

---
 drivers/usb/host/pci-quirks.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/usb/host/pci-quirks.c +1 -1
index a9d3159..31ad147 100644
@@ -535,7 +535,7 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)
 	iounmap(base);
 }
 
-static const struct dmi_system_id __initconst ehci_dmi_nohandoff_table[] = {
+static const struct dmi_system_id __devinitconst ehci_dmi_nohandoff_table[] = {
 	{
 		/*  Pegatron Lucid (ExoPC) */
 		.matches = {
Signature · 1 line
1.7.6.153.g78432
#5 lore raw

PATCH 4/4 drivers/base/devtmpfs.c: fix uninitialized variable

In reply to Arnaud Lacombe

drivers/base/devtmpfs.c: In function 'create_path':
drivers/base/devtmpfs.c:169:6: warning: 'err' may be used uninitialized in this function

Cc Greg Kroah-Hartman <[email protected]>
---
 drivers/base/devtmpfs.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/base/devtmpfs.c +1 -1
index 38e6464..256c78a 100644
@@ -166,7 +166,7 @@ static int create_path(const char *nodepath)
 {
 	char *path;
 	char *s;
-	int err;
+	int err = 0;
 
 	/* parent directories do not exist, create them */
 	path = kstrdup(nodepath, GFP_KERNEL);
Signature · 1 line
1.7.6.153.g78432