Subject: Re: [Bugme-new] [Bug 13954] New: Oops in rtnetlink code when creating can device

From: Patrick McHardy <[email-masked]>
Date: Tue, 11 Aug 2009 10:22:20 +0200

Oliver Hartkopp wrote:
>>> I've got a nice oops when looking around new CAN code in kernel.
>>>
>>> root@qemux86:~# ip link add type can
>>> [  713.113325] BUG: unable to handle kernel NULL pointer dereference
>>> at (null)
>>> [  713.114216] IP: [<c13eecab>] register_netdevice+0xab/0x420
>>> ...
> The problem is, that
> 
> ip link add type can
> 
> is not possible as you can not create 'real' CAN devices like can0,
> can1, ...
> 
> To create 'software CAN devices' like vcan0, vcan1, vcan2, ... we use
> 
> ip link add type vcan
> 
> see drivers/net/can/vcan.c
> 
> ---
> 
> For real hardware CAN devices the netlink interface is only used for the
> configuration of already existing interfaces.
> From a quick view on the rtnl_newlink() function in net/core/rtnetlink.c
> i was not able to find any method to disallow the creation of 
> interfaces, will say: How can a netlink user provide the information,
> that he's not able to create new devices via netlink???
> 
> @Patrick: Do you have an idea for this? Is it a new use-case for netlink
> that needs to be implemented?

You could add a ->newlink() function that unconditionally returns
an error.