2009-01-13 07:51:04

by Jaswinder Singh Rajput

[permalink] [raw]
Subject: [PATCH -tip] nubus.h: extern's make no sense in userspace

Impact: cleanup, Impact: fix 3 make headers_check warnings:

usr/include/linux/nubus.h:298: extern's make no sense in userspace
usr/include/linux/nubus.h:300: extern's make no sense in userspace
usr/include/linux/nubus.h:304: extern's make no sense in userspace

Also moved nubus_scan_bus() in __KERNEL__

Also removed obsolete get_nubus_list()

Signed-off-by: Jaswinder Singh Rajput <[email protected]>
---
include/linux/nubus.h | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/include/linux/nubus.h b/include/linux/nubus.h
index bd31554..9f54a23 100644
--- a/include/linux/nubus.h
+++ b/include/linux/nubus.h
@@ -297,6 +297,7 @@ struct nubus_dev {
struct nubus_board* board;
};

+#ifdef __KERNEL__
/* This is all NuBus devices (used to find devices later on) */
extern struct nubus_dev* nubus_devices;
/* This is all NuBus cards */
@@ -305,7 +306,7 @@ extern struct nubus_board* nubus_boards;
/* Generic NuBus interface functions, modelled after the PCI interface */
void nubus_scan_bus(void);
extern void nubus_proc_init(void);
-int get_nubus_list(char *buf);
+#endif /* __KERNEL__ */
int nubus_proc_attach_device(struct nubus_dev *dev);
int nubus_proc_detach_device(struct nubus_dev *dev);
/* If we need more precision we can add some more of these */
--
1.5.6.6



2009-01-13 09:04:50

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH -tip] nubus.h: extern's make no sense in userspace

On Tue, 13 Jan 2009, Jaswinder Singh Rajput wrote:
> Impact: cleanup, Impact: fix 3 make headers_check warnings:
>
> usr/include/linux/nubus.h:298: extern's make no sense in userspace
> usr/include/linux/nubus.h:300: extern's make no sense in userspace
> usr/include/linux/nubus.h:304: extern's make no sense in userspace
>
> Also moved nubus_scan_bus() in __KERNEL__
>
> Also removed obsolete get_nubus_list()
>
> Signed-off-by: Jaswinder Singh Rajput <[email protected]>
> ---
> include/linux/nubus.h | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/nubus.h b/include/linux/nubus.h
> index bd31554..9f54a23 100644
> --- a/include/linux/nubus.h
> +++ b/include/linux/nubus.h
> @@ -297,6 +297,7 @@ struct nubus_dev {
> struct nubus_board* board;
> };
>
> +#ifdef __KERNEL__
> /* This is all NuBus devices (used to find devices later on) */
> extern struct nubus_dev* nubus_devices;
> /* This is all NuBus cards */
> @@ -305,7 +306,7 @@ extern struct nubus_board* nubus_boards;
> /* Generic NuBus interface functions, modelled after the PCI interface */
> void nubus_scan_bus(void);
> extern void nubus_proc_init(void);
> -int get_nubus_list(char *buf);
> +#endif /* __KERNEL__ */
> int nubus_proc_attach_device(struct nubus_dev *dev);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> int nubus_proc_detach_device(struct nubus_dev *dev);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> /* If we need more precision we can add some more of these */

What about these? They (unfortunately) lack the "extern" keyword, but they're
still external declarations, and "make headers_check' doesn't notice them?

BTW, is there a way to tell gcc to warn about externs not marked "extern", so
we can fix all of them?

With kind regards,

Geert Uytterhoeven
Software Architect

Sony Techsoft Centre Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium

Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: [email protected]
Internet: http://www.sony-europe.com/

A division of Sony Europe (Belgium) N.V.
VAT BE 0413.825.160 · RPR Brussels
Fortis · BIC GEBABEBB · IBAN BE41293037680010

2009-01-14 20:04:34

by Harvey Harrison

[permalink] [raw]
Subject: Re: [PATCH -tip] nubus.h: extern's make no sense in userspace

On Tue, 2009-01-13 at 10:03 +0100, Geert Uytterhoeven wrote:
> On Tue, 13 Jan 2009, Jaswinder Singh Rajput wrote:
> > Impact: cleanup, Impact: fix 3 make headers_check warnings:
> >
> > usr/include/linux/nubus.h:298: extern's make no sense in userspace
> > usr/include/linux/nubus.h:300: extern's make no sense in userspace
> > usr/include/linux/nubus.h:304: extern's make no sense in userspace
> >
> > Also moved nubus_scan_bus() in __KERNEL__
> >
> > Also removed obsolete get_nubus_list()
> >
> > Signed-off-by: Jaswinder Singh Rajput <[email protected]>
> > ---
> > include/linux/nubus.h | 3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> >
> > diff --git a/include/linux/nubus.h b/include/linux/nubus.h
> > index bd31554..9f54a23 100644
> > --- a/include/linux/nubus.h
> > +++ b/include/linux/nubus.h
> > @@ -297,6 +297,7 @@ struct nubus_dev {
> > struct nubus_board* board;
> > };
> >
> > +#ifdef __KERNEL__
> > /* This is all NuBus devices (used to find devices later on) */
> > extern struct nubus_dev* nubus_devices;
> > /* This is all NuBus cards */
> > @@ -305,7 +306,7 @@ extern struct nubus_board* nubus_boards;
> > /* Generic NuBus interface functions, modelled after the PCI interface */
> > void nubus_scan_bus(void);
> > extern void nubus_proc_init(void);
> > -int get_nubus_list(char *buf);
> > +#endif /* __KERNEL__ */
> > int nubus_proc_attach_device(struct nubus_dev *dev);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > int nubus_proc_detach_device(struct nubus_dev *dev);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > /* If we need more precision we can add some more of these */
>
> What about these? They (unfortunately) lack the "extern" keyword, but they're
> still external declarations, and "make headers_check' doesn't notice them?
>
> BTW, is there a way to tell gcc to warn about externs not marked "extern", so
> we can fix all of them?

I had a look at this file, there's the small patch that just wraps the whole
section of function declarations with ifdef __KERNEL, or the larger patch
that does the wrapping _and_ adds the missing externs to make it obvious.

But I'm not sure that there is agreement regarding adding the externs too.

What do people think?

Harvey

2009-01-14 20:08:49

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH -tip] nubus.h: extern's make no sense in userspace

On Wed, Jan 14, 2009 at 12:04:21PM -0800, Harvey Harrison wrote:
> On Tue, 2009-01-13 at 10:03 +0100, Geert Uytterhoeven wrote:
> > On Tue, 13 Jan 2009, Jaswinder Singh Rajput wrote:
> > > Impact: cleanup, Impact: fix 3 make headers_check warnings:
> > >
> > > usr/include/linux/nubus.h:298: extern's make no sense in userspace
> > > usr/include/linux/nubus.h:300: extern's make no sense in userspace
> > > usr/include/linux/nubus.h:304: extern's make no sense in userspace
> > >
> > > Also moved nubus_scan_bus() in __KERNEL__
> > >
> > > Also removed obsolete get_nubus_list()
> > >
> > > Signed-off-by: Jaswinder Singh Rajput <[email protected]>
> > > ---
> > > include/linux/nubus.h | 3 ++-
> > > 1 files changed, 2 insertions(+), 1 deletions(-)
> > >
> > > diff --git a/include/linux/nubus.h b/include/linux/nubus.h
> > > index bd31554..9f54a23 100644
> > > --- a/include/linux/nubus.h
> > > +++ b/include/linux/nubus.h
> > > @@ -297,6 +297,7 @@ struct nubus_dev {
> > > struct nubus_board* board;
> > > };
> > >
> > > +#ifdef __KERNEL__
> > > /* This is all NuBus devices (used to find devices later on) */
> > > extern struct nubus_dev* nubus_devices;
> > > /* This is all NuBus cards */
> > > @@ -305,7 +306,7 @@ extern struct nubus_board* nubus_boards;
> > > /* Generic NuBus interface functions, modelled after the PCI interface */
> > > void nubus_scan_bus(void);
> > > extern void nubus_proc_init(void);
> > > -int get_nubus_list(char *buf);
> > > +#endif /* __KERNEL__ */
> > > int nubus_proc_attach_device(struct nubus_dev *dev);
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > int nubus_proc_detach_device(struct nubus_dev *dev);
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > /* If we need more precision we can add some more of these */
> >
> > What about these? They (unfortunately) lack the "extern" keyword, but they're
> > still external declarations, and "make headers_check' doesn't notice them?
> >
> > BTW, is there a way to tell gcc to warn about externs not marked "extern", so
> > we can fix all of them?
>
> I had a look at this file, there's the small patch that just wraps the whole
> section of function declarations with ifdef __KERNEL, or the larger patch
> that does the wrapping _and_ adds the missing externs to make it obvious.
>
> But I'm not sure that there is agreement regarding adding the externs too.
>
> What do people think?

The general consensus is to add externs for new prototypes.
So if _and only if_ you are anyway touching this file in that area then
I would say - add the externs. But just adding externs are not (yet)
worth a patch alone.

Sam

2009-01-14 20:13:32

by Harvey Harrison

[permalink] [raw]
Subject: Re: [PATCH -tip] nubus.h: extern's make no sense in userspace

On Wed, 2009-01-14 at 21:10 +0100, Sam Ravnborg wrote:
> On Wed, Jan 14, 2009 at 12:04:21PM -0800, Harvey Harrison wrote:
> >
> > I had a look at this file, there's the small patch that just wraps the whole
> > section of function declarations with ifdef __KERNEL, or the larger patch
> > that does the wrapping _and_ adds the missing externs to make it obvious.
> >
> > But I'm not sure that there is agreement regarding adding the externs too.
> >
> > What do people think?
>
> The general consensus is to add externs for new prototypes.
> So if _and only if_ you are anyway touching this file in that area then
> I would say - add the externs. But just adding externs are not (yet)
> worth a patch alone.
>

Agreed about just adding externs not being worth it, but as part of auditing
this file for userspace inclusion I'll send the patch that adds the externs
as well as the ifdef __KERNEL__ bits.


Harvey