Re: [PATCH] sysctl: Allow /proc/sys without sys_sysctl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andrew Morton <[email protected]> writes:

> On Tue, 11 Jul 2006 00:57:35 -0600
> [email protected] (Eric W. Biederman) wrote:
>
>> Andrew Morton <[email protected]> writes:
>> 
>> > On Mon, 10 Jul 2006 16:38:59 -0600
>> > [email protected] (Eric W. Biederman) wrote:
>> >
>> >> Since sys_sysctl is deprecated start allow it to be compiled out.
>> >
>> > This could be a tough one to get rid of (looks at sys_bdflush() again).
>> >
>> > I'd suggest we put a sys_bdflush()-style warning in there, see what that
>> > flushes out.
>> 
>> Sounds sane.  I know I have booted several kernels with it compiled out
>> but just because you can do without it doesn't mean that something
>> isn't using it.
>> 
>> Hmm.  The question is where do I want the put the warning message?
>> 
>> When the code is compiled out?
>> When the code is compiled in?
>
> Both.  We want to find out who is using it.
>
>> Probably both places at this point, and using the rate limited printk
>> I think instead of just the 5 printks that sys_bdflush uses...
>
> No, I think five is enough.  If something's using sys_sysctl() then it
> might be using it a lot - there's no point in irritating people over it.

You are right, especially if that user is glibc.  Here is my updated patch:

From: Eric W. Biederman <[email protected]>
Subject: [PATCH] sysctl:  Scream if someone uses sys_sysctl

As far as I can tell we never use sys_sysctl so I never expect to see
these messages.  But if we do see these it means that there are user
space applications that need to be fixed before we can safely
remove sys_sysctl.

Limited to only 5 messages in case something like glibc is using sys_sysctl.

Signed-off-by: Eric W. Biederman <[email protected]>
---
 kernel/sysctl.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 42610e6..b7f7dcb 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1303,9 +1303,15 @@ int do_sysctl(int __user *name, int nlen
 
 asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
 {
+	static int msg_count;
 	struct __sysctl_args tmp;
 	int error;
 
+	if (msg_count++ < 5)
+		printk(KERN_INFO
+			"warning: process `%s' used the obsolete sysctl "
+			"system call\n", current->comm);
+
 	if (copy_from_user(&tmp, args, sizeof(tmp)))
 		return -EFAULT;
 
@@ -2688,6 +2694,12 @@ #else /* CONFIG_SYSCTL_SYSCALL */
 
 asmlinkage long sys_sysctl(struct __sysctl_args __user *args)
 {
+	static int msg_count;
+
+	if (msg_coutn++ < 5)
+		printk(KERN_INFO
+			"warning: process `%s' used the removed sysctl "
+			"system call\n", current->comm);
 	return -ENOSYS;
 }
 
-- 
1.4.1.gac83a

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux