Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: mctp: pass net into route creation

We may not have a mdev pointer, from which we currently extract the net.

Instead, pass the net directly.

Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au>
Link: https://patch.msgid.link/20250702-dev-forwarding-v5-10-1468191da8a4@codeconstruct.com.au
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Jeremy Kerr and committed by
Paolo Abeni
48e6aa60 9b4a8c38

+16 -15
+16 -15
net/mctp/route.c
··· 1086 1086 } 1087 1087 1088 1088 /* route management */ 1089 - static int mctp_route_add(struct mctp_dev *mdev, mctp_eid_t daddr_start, 1090 - unsigned int daddr_extent, unsigned int mtu, 1091 - unsigned char type) 1089 + static int mctp_route_add(struct net *net, struct mctp_dev *mdev, 1090 + mctp_eid_t daddr_start, unsigned int daddr_extent, 1091 + unsigned int mtu, unsigned char type) 1092 1092 { 1093 1093 int (*rtfn)(struct mctp_dst *dst, struct sk_buff *skb); 1094 - struct net *net = dev_net(mdev->dev); 1095 1094 struct mctp_route *rt, *ert; 1096 1095 1097 1096 if (!mctp_address_unicast(daddr_start)) ··· 1137 1138 return 0; 1138 1139 } 1139 1140 1140 - static int mctp_route_remove(struct mctp_dev *mdev, mctp_eid_t daddr_start, 1141 - unsigned int daddr_extent, unsigned char type) 1141 + static int mctp_route_remove(struct net *net, struct mctp_dev *mdev, 1142 + mctp_eid_t daddr_start, unsigned int daddr_extent, 1143 + unsigned char type) 1142 1144 { 1143 - struct net *net = dev_net(mdev->dev); 1144 1145 struct mctp_route *rt, *tmp; 1145 1146 mctp_eid_t daddr_end; 1146 1147 bool dropped; ··· 1169 1170 1170 1171 int mctp_route_add_local(struct mctp_dev *mdev, mctp_eid_t addr) 1171 1172 { 1172 - return mctp_route_add(mdev, addr, 0, 0, RTN_LOCAL); 1173 + return mctp_route_add(dev_net(mdev->dev), mdev, addr, 0, 0, RTN_LOCAL); 1173 1174 } 1174 1175 1175 1176 int mctp_route_remove_local(struct mctp_dev *mdev, mctp_eid_t addr) 1176 1177 { 1177 - return mctp_route_remove(mdev, addr, 0, RTN_LOCAL); 1178 + return mctp_route_remove(dev_net(mdev->dev), mdev, addr, 0, RTN_LOCAL); 1178 1179 } 1179 1180 1180 1181 /* removes all entries for a given device */ ··· 1283 1284 /* Common part for RTM_NEWROUTE and RTM_DELROUTE parsing. 1284 1285 * tb must hold RTA_MAX+1 elements. 1285 1286 */ 1286 - static int mctp_route_nlparse(struct sk_buff *skb, struct nlmsghdr *nlh, 1287 + static int mctp_route_nlparse(struct net *net, struct nlmsghdr *nlh, 1287 1288 struct netlink_ext_ack *extack, 1288 1289 struct nlattr **tb, struct rtmsg **rtm, 1289 1290 struct mctp_dev **mdev, mctp_eid_t *daddr_start) 1290 1291 { 1291 - struct net *net = sock_net(skb->sk); 1292 1292 struct net_device *dev; 1293 1293 unsigned int ifindex; 1294 1294 int rc; ··· 1341 1343 static int mctp_newroute(struct sk_buff *skb, struct nlmsghdr *nlh, 1342 1344 struct netlink_ext_ack *extack) 1343 1345 { 1346 + struct net *net = sock_net(skb->sk); 1344 1347 struct nlattr *tb[RTA_MAX + 1]; 1345 1348 struct nlattr *tbx[RTAX_MAX + 1]; 1346 1349 mctp_eid_t daddr_start; ··· 1350 1351 unsigned int mtu; 1351 1352 int rc; 1352 1353 1353 - rc = mctp_route_nlparse(skb, nlh, extack, tb, 1354 + rc = mctp_route_nlparse(net, nlh, extack, tb, 1354 1355 &rtm, &mdev, &daddr_start); 1355 1356 if (rc < 0) 1356 1357 return rc; ··· 1370 1371 mtu = nla_get_u32(tbx[RTAX_MTU]); 1371 1372 } 1372 1373 1373 - rc = mctp_route_add(mdev, daddr_start, rtm->rtm_dst_len, mtu, 1374 + rc = mctp_route_add(net, mdev, daddr_start, rtm->rtm_dst_len, mtu, 1374 1375 rtm->rtm_type); 1375 1376 return rc; 1376 1377 } ··· 1378 1379 static int mctp_delroute(struct sk_buff *skb, struct nlmsghdr *nlh, 1379 1380 struct netlink_ext_ack *extack) 1380 1381 { 1382 + struct net *net = sock_net(skb->sk); 1381 1383 struct nlattr *tb[RTA_MAX + 1]; 1382 1384 mctp_eid_t daddr_start; 1383 1385 struct mctp_dev *mdev; 1384 1386 struct rtmsg *rtm; 1385 1387 int rc; 1386 1388 1387 - rc = mctp_route_nlparse(skb, nlh, extack, tb, 1389 + rc = mctp_route_nlparse(net, nlh, extack, tb, 1388 1390 &rtm, &mdev, &daddr_start); 1389 1391 if (rc < 0) 1390 1392 return rc; ··· 1394 1394 if (rtm->rtm_type != RTN_UNICAST) 1395 1395 return -EINVAL; 1396 1396 1397 - rc = mctp_route_remove(mdev, daddr_start, rtm->rtm_dst_len, RTN_UNICAST); 1397 + rc = mctp_route_remove(net, mdev, daddr_start, rtm->rtm_dst_len, 1398 + RTN_UNICAST); 1398 1399 return rc; 1399 1400 } 1400 1401