Re: [PATCH 07/10] decnet: Use rcu_barrier() on module unload.

Chrissie Caulfield
2009-06-24T06:38:09Z

Jesper Dangaard Brouer wrote:
> The decnet module unloading as been disabled with a '#if 0' statement,
> because it have had issues. Perhaps using rcu_barrier() will fix
> these issues?
>
> Any maintainers with input?
>
> Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
> ---
>
> net/decnet/af_decnet.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
> index d351b8d..bff12da 100644
> --- a/net/decnet/af_decnet.c
> +++ b/net/decnet/af_decnet.c
> @@ -2393,6 +2393,10 @@ module_init(decnet_init);
> * Prevent DECnet module unloading until its fixed properly.
> * Requires an audit of the code to check for memory leaks and
> * initialisation problems etc.
> + *
> + * hawk@comx.dk 2009-06-19:
> + * I have added a rcu_barrier() which should plug some of your
> + * module unload issues. Maintainers please try it out...
> */
> #if 0
> static void __exit decnet_exit(void)
> @@ -2413,6 +2417,8 @@ static void __exit decnet_exit(void)
> proc_net_remove(&init_net, "decnet");
>
> proto_unregister(&dn_proto);
> +
> + rcu_barrier_bh(); /* Wait for completion of call_rcu_bh()'s */
> }
> module_exit(decnet_exit);
> #endif
>

The issues with DECnet module unloading are a little more than just an
RCU leak I think!

Though that area does need reviewing ... when I get some time.

--

Chrissie