Message ID | 20170915192327.414928-1-arnd@arndb.de |
---|---|
State | Accepted |
Commit | 056e4fc2018364ba01a23a1ced0ccbbdfa4520b3 |
Headers | show |
Series | staging: unisys/visorbus: add __init/__exit annotations | expand |
> -----Original Message----- > From: Arnd Bergmann [mailto:arnd@arndb.de] > Sent: Friday, September 15, 2017 3:23 PM > To: Kershner, David A <David.Kershner@unisys.com>; Greg Kroah-Hartman > <gregkh@linuxfoundation.org> > Cc: Arnd Bergmann <arnd@arndb.de>; Sell, Timothy C > <Timothy.Sell@unisys.com>; Wadgaonkar, Sameer Laxmikant > <Sameer.Wadgaonkar@unisys.com>; Binder, David Anthony > <David.Binder@unisys.com>; Thompson, Bryan E. > <bryan.thompson@unisys.com>; *S-Par-Maintainer > <SParMaintainer@unisys.com>; devel@driverdev.osuosl.org; linux- > kernel@vger.kernel.org > Subject: [PATCH] staging: unisys/visorbus: add __init/__exit annotations > > gcc-4.6 causes a harmless warning about the init function: > > WARNING: vmlinux.o(.text+0xed62c2): Section mismatch in reference from > the function init_unisys() to the function .init.text:visorutil_spar_detect() > The function init_unisys() references > the function __init visorutil_spar_detect(). > This is often because init_unisys lacks a __init > annotation or the annotation of visorutil_spar_detect is wrong. > > It appears that newer versions inline visorutil_spar_detect(), > end up with an empty __init section. This marks the module > entry points as __init and __exit respectively, which avoids > the warning and slightly reduces the runtime code size. > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: David Kershner <david.kershner@unisys.com> Thanks, David Kershner > --- > drivers/staging/unisys/visorbus/visorchipset.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/unisys/visorbus/visorchipset.c > b/drivers/staging/unisys/visorbus/visorchipset.c > index 74cce4f1a7bd..27ecf6fb49fd 100644 > --- a/drivers/staging/unisys/visorbus/visorchipset.c > +++ b/drivers/staging/unisys/visorbus/visorchipset.c > @@ -1826,7 +1826,7 @@ static __init int visorutil_spar_detect(void) > return 0; > } > > -static int init_unisys(void) > +static int __init init_unisys(void) > { > int result; > > @@ -1841,7 +1841,7 @@ static int init_unisys(void) > return 0; > }; > > -static void exit_unisys(void) > +static void __exit exit_unisys(void) > { > acpi_bus_unregister_driver(&unisys_acpi_driver); > } > -- > 2.9.0
diff --git a/drivers/staging/unisys/visorbus/visorchipset.c b/drivers/staging/unisys/visorbus/visorchipset.c index 74cce4f1a7bd..27ecf6fb49fd 100644 --- a/drivers/staging/unisys/visorbus/visorchipset.c +++ b/drivers/staging/unisys/visorbus/visorchipset.c @@ -1826,7 +1826,7 @@ static __init int visorutil_spar_detect(void) return 0; } -static int init_unisys(void) +static int __init init_unisys(void) { int result; @@ -1841,7 +1841,7 @@ static int init_unisys(void) return 0; }; -static void exit_unisys(void) +static void __exit exit_unisys(void) { acpi_bus_unregister_driver(&unisys_acpi_driver); }
gcc-4.6 causes a harmless warning about the init function: WARNING: vmlinux.o(.text+0xed62c2): Section mismatch in reference from the function init_unisys() to the function .init.text:visorutil_spar_detect() The function init_unisys() references the function __init visorutil_spar_detect(). This is often because init_unisys lacks a __init annotation or the annotation of visorutil_spar_detect is wrong. It appears that newer versions inline visorutil_spar_detect(), end up with an empty __init section. This marks the module entry points as __init and __exit respectively, which avoids the warning and slightly reduces the runtime code size. Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/staging/unisys/visorbus/visorchipset.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.9.0