Bug 501785 - sysctl is using deprecated syscall net.ipv6.neigh.lo.base_reachable_time
sysctl is using deprecated syscall net.ipv6.neigh.lo.base_reachable_time
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: procps (Show other bugs)
5.5
All Linux
high Severity high
: rc
: ---
Assigned To: Daniel Novotny
BaseOS QE
: Reopened
: 518225 (view as bug list)
Depends On: 152435
Blocks: 499522
  Show dependency treegraph
 
Reported: 2009-05-20 13:31 EDT by Adam Stokes
Modified: 2015-10-23 10:17 EDT (History)
16 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 152435
Environment:
Last Closed: 2010-03-30 04:06:23 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
ignore list for sysctl (2.54 KB, patch)
2009-05-20 13:32 EDT, Adam Stokes
no flags Details | Diff

  None (edit)
Description Adam Stokes 2009-05-20 13:31:42 EDT
+++ This bug was initially created as a clone of Bug #152435 +++

Description of problem:
Mar 29 16:17:17 tux kernel: process `sysctl' is using deprecated sysctl 
(syscall) net.ipv6.neigh.lo.base_reachable_time; Use 
net.ipv6.neigh.lo.base_reachable_time_ms instead.

Version-Release number of selected component (if applicable):
procps-3.2.5-3

How reproducible:
Everytime: Reboot the system, look into /var/log/messages or into dmesg

Actual results / Expected results:
No message in logfile, no use of deprecated syscall.

--- Additional comment from kzak@redhat.com on 2005-04-25 07:53:18 EDT ---



*** This bug has been marked as a duplicate of 144459 ***

--- Additional comment from redhat-bugzilla@linuxnetz.de on 2006-06-22 16:22:47 EDT ---

Reopening, because this bug report is neither a real duplicate of bug #136451 
nor is it fixed in Rawhide as bug #136451 is marked. Using procps-3.2.6-4 and 
kernel-2.6.17-1.2293_FC6 while today's reboot:

kernel: process `sysctl' is using deprecated sysctl (syscall) net.ipv6.neigh.lo.
base_reachable_time; Use net.ipv6.neigh.lo.base_reachable_time_ms instead.

--- Additional comment from kzak@redhat.com on 2006-06-23 09:58:25 EDT ---

It's same like bug #158701. 

I don't have idea where is a problem. There is something what calls sysctl with
this old option. I tried add some debug messages to the sysctl command, but it
seems that nothing calls (during boot) sysctl with this option, althought the
error message is in the /var/log/messages file. Strange...

--- Additional comment from redhat-bugzilla@linuxnetz.de on 2006-06-23 11:07:23 EDT ---

I would like to track this down and resolve forever as I'm able to reproduce 
this during any reboot; more information from my syslog (all messages below
from Jun 22 18:18:30 -> same second):

kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
kernel: ip6_tables: (C) 2000-2006 Netfilter Core Team
kernel: Netfilter messages via NETLINK v0.30.
kernel: ip_conntrack version 2.4 (8191 buckets, 65528 max) - 232 bytes per 
conntrack
kernel: NET: Registered protocol family 10
kernel: lo: Disabled Privacy Extensions
kernel: IPv6 over IPv4 tunneling driver
kernel: process `sysctl' is using deprecated sysctl (syscall) net.ipv6.neigh.lo.
base_reachable_time; Use net.ipv6.neigh.lo.base_reachable_time_ms instead.
kernel: ADDRCONF(NETDEV_UP): eth0: link is not ready
kernel: tg3: eth0: Link is up at 100 Mbps, full duplex.
kernel: tg3: eth0: Flow control is off for TX and off for RX.
kernel: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

A `grep -r "net.ipv6.neigh.eth0.base_reachable_time" /etc/* 2> /dev/null` 
returned nothing. Any suggestions out of the syslog messages?

--- Additional comment from kzak@redhat.com on 2006-06-23 11:30:39 EDT ---

Albert, do you have any experience with this strange problem on the latest kernels?

--- Additional comment from jorton@redhat.com on 2006-06-29 11:14:46 EDT ---

I vaguely recall reading that this message is triggered by the kernel on any
attempt to *read* that sysctl; which sysctl does at some point, possibly it
traverses the whole tree or something?  (I also vaguely recall that it was
generally agreed to be stupid behaviour on the kernel's part)

--- Additional comment from jorton@redhat.com on 2006-06-29 11:20:46 EDT ---

Ah, yeah; there is a "sysctl -a" in the
/etc/sysconfig/network-scripts/init.ipv6-global.  So my bet is that this error
doesn't manifest if you explicitly disable IPv6 in the init scripts with
NETWORKING_IPV6=no.   I guess that the kernel should probably make that procfs
file unreadable if it doesn't want sysctl to read it, presumably that would
prevent the warning.

--- Additional comment from redhat-bugzilla@linuxnetz.de on 2006-06-30 05:13:16 EDT ---

So it's more a kernel issue rather a procps problem? And thanks for figgering 
out...

--- Additional comment from jorton@redhat.com on 2006-07-27 05:28:16 EDT ---

Yeah, I reckon.   The kernel should not make the proc entry readable if it
doesn't want it to be used.

--- Additional comment from albert@users.sf.net on 2006-07-27 12:39:41 EDT ---

Don't ever make them unreadable. The sysctl command needs to read back the data
to verify that the write was accepted and interpreted correctly. If the data
can not be read, sysctl needs to report the error to the user.

If you want to hide something, then hide it. Make it not show up in a
directory listing.

Every write-only sysctl is a kernel bug.


--- Additional comment from davej@redhat.com on 2006-07-28 12:24:05 EDT ---

davem, can we just rip this out ?  What's likely to break ?


--- Additional comment from redhat-bugzilla@linuxnetz.de on 2006-09-02 11:53:15 EDT ---

Ping?

--- Additional comment from scott.scriven@hp.com on 2006-11-29 13:58:14 EDT ---

I get a nearly identical error on RHEL5b2, as of yesterday:

  process `cp' is using deprecated sysctl (syscall) net.ipv6.neigh.eth4.
base_reachable_time; Use net.ipv6.neigh.eth4.base_reachable_time_ms instead.

This was printed to the console during a postinstall sanity check test.  I 
assume the test tried to "cp /proc/sys/net/ipv6/neigh/eth4/base_reachable_time" 
somewhere, though I haven't located it yet.

I also get the original error during boot, or any time I run "sysctl -a".

While the "sysctl -a" is only doing what it's supposed to, it may be worth 
locating any other places in the distro which might try to access the old 
syscall.  A big "grep -r base_reachable_time" and replace through the entire 
distro source could probably do the trick.

As a quick test, I tried looking through binaries in /bin, /sbin, and /usr.  I 
found only a few matches:

[root@host /usr/lib]# grep base_reachable_time *
Binary file libnetsnmpmibs.so.10 matches
Binary file libnetsnmpmibs.so.10.0.1 matches
Binary file libnl.so.1 matches
Binary file libnl.so.1.0-pre5 matches


--- Additional comment from redhat-bugzilla@linuxnetz.de on 2006-12-09 13:56:37 EDT ---

Ping?

--- Additional comment from vonbrand@inf.utfsm.cl on 2007-01-04 18:26:33 EDT ---

Is this a case of complaints when /reading/ the /proc entry? I'd understand that
one should complain on /writing/...

(Yes, still with us with today's rawhide, kernel-2.6.19-1.2904.fc7 and
procps-3.2.7-8)

--- Additional comment from davem@redhat.com on 2007-03-26 15:55:37 EDT ---

The only valid reason to read a sysctl value is to see what it is
set to, and based upon that potentially change it.  When and if a
value goes away, both reads and writes will break, that's why we warn
for both read and write accesses.

I'm not getting rid of the warning just to satisfy this "sysctl -a"
case.  We are concerned about readers of the sysctl just as
equally as writers, because if the sysctl is taken away it would
break a shell script reading this value just as equally as something
making modifications.

This "sysctl -a" thing makes it absolutely impossible to warn about
a deprecated variable properly.  We are concerned about "access" of
any kind, be it read or write, because once the sysctl goes away both
kinds of accesses will stop working.

The ipv6 init script can be fixed to only access the sysctl values it
is actually interested in rather than everything.  It just wants a list
of sysctl values that ipv6 provides which match a given regexp, you don't
need to open and read the values just to provide that.

Please push this back to the script folks, this construct is quite
inefficient as well since it has to read all the sysctl values in
the system.


--- Additional comment from kzak@redhat.com on 2007-04-04 05:35:49 EDT ---

I've added to the sysctl command table with deprecated variables. Now, the
"sysctl -a" command does ignore and skip these values. It means that deprecated
values are hidden when (and only when) you list all values:

   sysctl -a | egrep "^net.ipv6..*.base_reachable_time ="

returns nothing. But you can directly use deprecated values (without -a):

   sysctl net.ipv6.neigh.lo.base_reachable_time

returns expected data. I think it's good compromise.

This change doesn't have any impact to our ipv6 init script. The scripts don't
look for these deprecated values.



--- Additional comment from redhat-bugzilla@linuxnetz.de on 2007-05-28 07:08:38 EDT ---

Confirmed to work, closing now.
Comment 1 Adam Stokes 2009-05-20 13:32:32 EDT
Created attachment 344850 [details]
ignore list for sysctl
Comment 3 Jan Tluka 2009-07-13 11:17:24 EDT
Seen on RHEL5.4-Server-20090708.0 tree. 
RHTS job log: http://rhts.redhat.com/cgi-bin/rhts/test_log.cgi?id=9037246
(see boot.kernel-2.6.18-157.el5)
Comment 4 Daniel Novotny 2009-08-20 04:47:01 EDT
*** Bug 518225 has been marked as a duplicate of this bug. ***
Comment 9 Daniel Novotny 2009-11-19 09:38:35 EST
fixed in procps-3.2.7-12.el5
Comment 13 errata-xmlrpc 2010-03-30 04:06:23 EDT
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2010-0200.html

Note You need to log in before you can comment on or make changes to this bug.