Re: Linux kernel : sysctl registering table under same proc name (path) gives warning and call trace while unregistering

From: Eric W. Biederman
Date: Thu Mar 08 2012 - 16:08:50 EST


chaitanya g <chaitanyag3.14@xxxxxxxxx> writes:

> Hello there,
>
> I am creating a sysctl kernel module to register 2 hierarchy under
> same proc name. For e.g.
>
> my_net
> | |
> net1 net2
> | |
> t1 t2
>
> So, I used register_sysctl_paths() API. Everything works fine when
> registering the sysctl tables net1 net2 under path name my_net.
>
> Problem is when unregistering the tables dmesg shows kernel tainted
> warning and a call trace.
>
> Here, is pastebin link to the warning message http://pastebin.com/NfLQhikJ
>
> Here is pastebin link to module source http://pastebin.com/jSfPW5Y5

Adding those as attachments or simple inline inclusions would have been
much easier to work with.

> Kindly, please help me to resolve this panic.

Well it wasn't a panic, it was a WARN_ON, and you are running against a
very old kernel. The .ctl_name field no longer exists. I guess it says
2.6.32.something.

The only possibility is you have run afoul of the current sysctl rule
that you must create a sysctl path before you add child entries and you
must destroy a sysctl path before you remove child entries. It is
extremely non-intuitive, and should be fixed in my current sysctl tree.

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