Re: linux-kernel-digest V1 #1623

Ben McCann (bmccann@indusriver.com)
Tue, 24 Feb 1998 08:38:32 -0500


I'm also seeing the following 'unregister_proc_table' error when
removing a module containing a custom network device driver. I've
looked at the code (some) and it appears that 'unregister_proc_table'
is told to unregister the 'net' directory when it really wants to
unregister a specific device such 'ppp0', 'sl0', or whatever.

The function recursively finds its way to the correct device level
directory of sysctl's (such as /proc/sys/net/ipv4/neigh/ppp0) and
removes that directory but then it complains as it unwinds because
/proc/sys/net/ipv4/neigh still contains entries for other devices
such as 'lo' and 'eth0'.

For now, I've removed the 'printk' at line ~525 in kernel/sysctl.c.
It was added fairly recently.

A long-term fix requires (IMHO) one of two changes:

1. Drop the printk permanently and leave everything else as is.
This lets unregister_proc_table recursively delete an entire tree
once the last network device is dropped from 'net/ipv4/neigh'.

2. Change the code (in net/ipv4/devinet.c i think) to only delete
the leaf device (such as net/ipv4/neigh/ppp0) when that device
is unregistered. This would be more efficient because the current
implementation has to recursively walk everything under /proc/sys/net.
Since we only delete the sysctl directory for the unregistered device,
we can keep the warning 'printk' message in place.

-Ben McCann

> From: wnoise@ugcs.caltech.edu (Aaron Denney)
> Date: 24 Feb 1998 09:04:07 GMT
> Subject: Kernel messages on unregister of ppp module
>
> Whenever the ppp module is automatically unloaded by kerneld I get
> the following messages:
>
> Feb 23 11:19:03 imladris kernel: PPP: ppp line discipline successfully unregistered
> Feb 23 11:19:03 imladris kernel: unregister_proc_table: neigh not empty!
> Feb 23 11:19:03 imladris kernel: unregister_proc_table: ipv4 not empty!
> Feb 23 11:19:03 imladris kernel: unregister_proc_table: net not empty!
>
> The affected kernels are at least 2.1.85-2.1.88.
> kerneld is from modutils-2.1.85
>
> It looks like these are referring to the /proc/sys/net/ipv4/neigh/ directory.
> Is there anything that I should do? I would appreciate any help.
>
> On a similar note, I also get messages from kerneld saying:
> Feb 24 00:44:49 imladris modprobe: can't locate module ppp-compress-21
> Feb 24 00:44:49 imladris modprobe: can't locate module ppp-compress-24
>
> I assume these correspond ot the bsd_compress and ppp_deflate modules,
> but could someone point out which is which? I tried looking through
> the ppp driver source, but I found nothing enlightening.

-- 
Ben McCann                              Indus River Networks
                                        31 Nagog Park
                                        Acton, MA, 01720
email: bmccann@indusriver.com           web: www.indusriver.com 
phone: (978) 266-8140                   fax: (978) 266-8111

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu