Commit 993e6f2f authored by Oliver Hartkopp's avatar Oliver Hartkopp Committed by David S. Miller

can: fix oops caused by wrong rtnl newlink usage

For 'real' hardware CAN devices the netlink interface is used to set CAN
specific communication parameters. Real CAN hardware can not be created with
the ip tool ...

The invocation of 'ip link add type can' lead to an oops as the standard rtnl
newlink function was called:

http://bugzilla.kernel.org/show_bug.cgi?id=13954

This patch adds a private newlink function for the CAN device driver interface
that unconditionally returns -EOPNOTSUPP.
Signed-off-by: default avatarOliver Hartkopp <oliver@hartkopp.net>
Reported-by: default avatarDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
CC: Patrick McHardy <kaber@trash.net>
CC: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 839d1624
...@@ -611,11 +611,18 @@ static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev) ...@@ -611,11 +611,18 @@ static int can_fill_xstats(struct sk_buff *skb, const struct net_device *dev)
return -EMSGSIZE; return -EMSGSIZE;
} }
static int can_newlink(struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[])
{
return -EOPNOTSUPP;
}
static struct rtnl_link_ops can_link_ops __read_mostly = { static struct rtnl_link_ops can_link_ops __read_mostly = {
.kind = "can", .kind = "can",
.maxtype = IFLA_CAN_MAX, .maxtype = IFLA_CAN_MAX,
.policy = can_policy, .policy = can_policy,
.setup = can_setup, .setup = can_setup,
.newlink = can_newlink,
.changelink = can_changelink, .changelink = can_changelink,
.fill_info = can_fill_info, .fill_info = can_fill_info,
.fill_xstats = can_fill_xstats, .fill_xstats = can_fill_xstats,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment