[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20111024.182831.489446218871753789.davem@davemloft.net>
Date: Mon, 24 Oct 2011 18:28:31 -0400 (EDT)
From: David Miller <davem@...emloft.net>
To: sjurbren@...il.com
Cc: david.woodhouse@...el.com, netdev@...r.kernel.org
Subject: Re: [non-quoted-printable PATCH] Fix caif BUG() with network
namespaces
From: Sjur Brændeland <sjurbren@...il.com>
Date: Mon, 24 Oct 2011 17:51:54 +0200
> Hi David,
>
>> The caif code will register its own pernet_operations, and then register
>> a netdevice_notifier. Each time the netdevice_notifier is triggered,
>> it'll do some stuff... including a lookup of its own pernet stuff with
>> net_generic().
>>
>> If the net_generic() call ever returns NULL, the caif code will BUG().
>> That doesn't seem *so* unreasonable, I suppose — it does seem like it
>> should never happen.
>>
>> However, it *does* happen. When we clone a network namespace,
>> setup_net() runs through all the pernet_operations one at a time. It
>> gets to loopback before it gets to caif. And loopback_net_init()
>> registers a netdevice... while caif hasn't been initialised. So the caif
>> netdevice notifier triggers, and immediately goes BUG().
>>
>> I'm not entirely sure how best to fix this in the general case. Perhaps
>> the netdevice_notifier registration should be pernet too, rather than
>> global? Or perhaps we should suppress the notifier calls during
>> setup_net() and flush them at the end after everything has been
>> initialised?
>>
>> But really, I'm inclined to just take the simple approach. Make
>> caif_device_notify() *not* go looking for its pernet data structures if
>> the device it's being notified about isn't a caif device in the first
>> place. This simple patch is sufficient to avoid the problem, and is
>> probably good enough.
>> Signed-off-by: David Woodhouse <David.Woodhouse@...el.com>
>
> Thank you for analyzing and fixing this David, this looks good to me.
> Acked-by: Sjur Brændeland <sjur.brandeland@...ricsson.com>
David W., the copy that ended up in patchwork was using DOS newlines:
http://patchwork.ozlabs.org/patch/121250/
Click on Download "mbox" to see what I mean.
Can you get your email configuration straightened out before
resubmitting this patch a third time?
Thanks.
Powered by blists - more mailing lists