Skip to content

Commit 6b84e55

Browse files
q2venkuba-moo
authored andcommitted
vxcan: Set VXCAN_INFO_PEER to vxcan_link_ops.peer_type.
For per-netns RTNL, we need to prefetch the peer device's netns. Let's set rtnl_link_ops.peer_type and accordingly remove duplicated validation in ->newlink(). Signed-off-by: Kuniyuki Iwashima <[email protected]> Reviewed-by: Eric Dumazet <[email protected]> Reviewed-by: Nikolay Aleksandrov <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 0eb87b0 commit 6b84e55

File tree

1 file changed

+3
-9
lines changed

1 file changed

+3
-9
lines changed

drivers/net/can/vxcan.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -188,14 +188,10 @@ static int vxcan_newlink(struct net *net, struct net_device *dev,
188188

189189
/* register peer device */
190190
if (data && data[VXCAN_INFO_PEER]) {
191-
struct nlattr *nla_peer;
191+
struct nlattr *nla_peer = data[VXCAN_INFO_PEER];
192192

193-
nla_peer = data[VXCAN_INFO_PEER];
194193
ifmp = nla_data(nla_peer);
195-
err = rtnl_nla_parse_ifinfomsg(peer_tb, nla_peer, extack);
196-
if (err < 0)
197-
return err;
198-
194+
rtnl_nla_parse_ifinfomsg(peer_tb, nla_peer, extack);
199195
tbp = peer_tb;
200196
}
201197

@@ -208,9 +204,6 @@ static int vxcan_newlink(struct net *net, struct net_device *dev,
208204
}
209205

210206
peer_net = rtnl_link_get_net(net, tbp);
211-
if (IS_ERR(peer_net))
212-
return PTR_ERR(peer_net);
213-
214207
peer = rtnl_create_link(peer_net, ifname, name_assign_type,
215208
&vxcan_link_ops, tbp, extack);
216209
if (IS_ERR(peer)) {
@@ -302,6 +295,7 @@ static struct rtnl_link_ops vxcan_link_ops = {
302295
.newlink = vxcan_newlink,
303296
.dellink = vxcan_dellink,
304297
.policy = vxcan_policy,
298+
.peer_type = VXCAN_INFO_PEER,
305299
.maxtype = VXCAN_INFO_MAX,
306300
.get_link_net = vxcan_get_link_net,
307301
};

0 commit comments

Comments
 (0)