2006-02-20 04:33:22

by Stephen Rothwell

[permalink] [raw]
Subject: [PATCH] Fix compile for CONFIG_SYSVIPC=n or CONFIG_SYSCTL=n

The compat syscalls are added to sys_ni.c since they are not defined
if the above CONFIG options are off. Also, nfs would not build with
CONFIG_SYSCTL off.

Noticed by Arthur Othieno.

Signed-off-by: Stephen Rothwell <[email protected]>
---

include/linux/nfs_fs.h | 2 +-
kernel/sys_ni.c | 2 ++
2 files changed, 3 insertions(+), 1 deletions(-)

On Sun, 19 Feb 2006 22:52:31 +1100 Paul Mackerras <[email protected]> wrote:
>
> Arthur Othieno writes:
>
> > --- a/arch/powerpc/kernel/sys_ppc32.c
> > +++ b/arch/powerpc/kernel/sys_ppc32.c
> > @@ -440,7 +440,13 @@ long compat_sys_ipc(u32 call, u32 first,
> >
> > return -ENOSYS;
> > }
> > -#endif
> > +#else
> > +long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr,
> > + u32 fifth)
> > +{
> > + return -ENOSYS;
> > +}
> > +#endif /* CONFIG_SYSVIPC */
>
> Can't we just add a couple of cond_syscall lines to kernel/sys_ni.c
> instead?

Linus, can we have this applied for 2.6.16. It presumably affects sparc64
(at least for CONFIG_SYSVIPC) as well as powerpc. The NFS fix would
affect all architectures, I think?

This has been compile tested with the CONFIG options on and off for powerpc.

--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/

c1a27bc400a1412c7c758775bb695e8b98d1c0c3
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 547d649..b4dc6e2 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -398,7 +398,7 @@ extern struct inode_operations nfs_symli
extern int nfs_register_sysctl(void);
extern void nfs_unregister_sysctl(void);
#else
-#define nfs_register_sysctl() do { } while(0)
+#define nfs_register_sysctl() 0
#define nfs_unregister_sysctl() do { } while(0)
#endif

diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 17313b9..1067090 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -104,6 +104,8 @@ cond_syscall(sys_setreuid16);
cond_syscall(sys_setuid16);
cond_syscall(sys_vm86old);
cond_syscall(sys_vm86);
+cond_syscall(compat_sys_ipc);
+cond_syscall(compat_sys_sysctl);

/* arch-specific weak syscall entries */
cond_syscall(sys_pciconfig_read);
--
1.2.1


Attachments:
(No filename) (2.14 kB)
(No filename) (189.00 B)
Download all attachments

2006-02-20 13:55:20

by Arthur Othieno

[permalink] [raw]
Subject: Re: [PATCH] Fix compile for CONFIG_SYSVIPC=n or CONFIG_SYSCTL=n

On Mon, Feb 20, 2006 at 03:32:26PM +1100, Stephen Rothwell wrote:
> The compat syscalls are added to sys_ni.c since they are not defined
> if the above CONFIG options are off. Also, nfs would not build with
> CONFIG_SYSCTL off.
>
> Noticed by Arthur Othieno.
>
> Signed-off-by: Stephen Rothwell <[email protected]>

Looks good, thanks ;-)

Acked-by: Arthur Othieno <[email protected]>

> ---
>
> include/linux/nfs_fs.h | 2 +-
> kernel/sys_ni.c | 2 ++
> 2 files changed, 3 insertions(+), 1 deletions(-)
>
> On Sun, 19 Feb 2006 22:52:31 +1100 Paul Mackerras <[email protected]> wrote:
> >
> > Arthur Othieno writes:
> >
> > > --- a/arch/powerpc/kernel/sys_ppc32.c
> > > +++ b/arch/powerpc/kernel/sys_ppc32.c
> > > @@ -440,7 +440,13 @@ long compat_sys_ipc(u32 call, u32 first,
> > >
> > > return -ENOSYS;
> > > }
> > > -#endif
> > > +#else
> > > +long compat_sys_ipc(u32 call, u32 first, u32 second, u32 third, compat_uptr_t ptr,
> > > + u32 fifth)
> > > +{
> > > + return -ENOSYS;
> > > +}
> > > +#endif /* CONFIG_SYSVIPC */
> >
> > Can't we just add a couple of cond_syscall lines to kernel/sys_ni.c
> > instead?
>
> Linus, can we have this applied for 2.6.16. It presumably affects sparc64
> (at least for CONFIG_SYSVIPC) as well as powerpc. The NFS fix would
> affect all architectures, I think?
>
> This has been compile tested with the CONFIG options on and off for powerpc.
>
> --
> Cheers,
> Stephen Rothwell [email protected]
> http://www.canb.auug.org.au/~sfr/
>
> c1a27bc400a1412c7c758775bb695e8b98d1c0c3
> diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
> index 547d649..b4dc6e2 100644
> --- a/include/linux/nfs_fs.h
> +++ b/include/linux/nfs_fs.h
> @@ -398,7 +398,7 @@ extern struct inode_operations nfs_symli
> extern int nfs_register_sysctl(void);
> extern void nfs_unregister_sysctl(void);
> #else
> -#define nfs_register_sysctl() do { } while(0)
> +#define nfs_register_sysctl() 0
> #define nfs_unregister_sysctl() do { } while(0)
> #endif
>
> diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
> index 17313b9..1067090 100644
> --- a/kernel/sys_ni.c
> +++ b/kernel/sys_ni.c
> @@ -104,6 +104,8 @@ cond_syscall(sys_setreuid16);
> cond_syscall(sys_setuid16);
> cond_syscall(sys_vm86old);
> cond_syscall(sys_vm86);
> +cond_syscall(compat_sys_ipc);
> +cond_syscall(compat_sys_sysctl);
>
> /* arch-specific weak syscall entries */
> cond_syscall(sys_pciconfig_read);
> --
> 1.2.1