From 02bc3fd8d8a18f07ca3acd411e067e077393fa16 Mon Sep 17 00:00:00 2001 From: xumingzeng Date: Mon, 20 Jun 2022 11:39:05 +0800 Subject: [PATCH] toa: Support net namespace bypass get toa information Signed-off-by: xumingzeng --- net/toa/toa.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/net/toa/toa.c b/net/toa/toa.c index c80e2fb76..b89df38a4 100644 --- a/net/toa/toa.c +++ b/net/toa/toa.c @@ -855,24 +855,23 @@ static int vpc_vtoa_get(struct sk_buff *skb, struct genl_info *info) } req = nla_data(attrs[VTOA_ATTR_REQ]); - - net = get_net_ns_by_pid(nlh->nlmsg_pid); - if (IS_ERR(net)){ - TOA_INFO("get netns %u fail, if_idx:%u sip:%pI4 dip:%pI4 sport:%u dport:%u, err %ld\n", + if (skb->sk){ + net = sock_net(skb->sk); + } + if (!net){ + TOA_INFO("get netns %u fail, if_idx:%u sip:%pI4 dip:%pI4 sport:%u dport:%u.\n", nlh->nlmsg_pid, req->if_idx, &req->sip, &req->dip, - ntohs(req->sport), ntohs(req->dport), PTR_ERR(net)); - return PTR_ERR(net); + ntohs(req->sport), ntohs(req->dport)); + return -EINVAL; } memset(&vinfo, 0, sizeof(vinfo)); err = vpc_inet_dump_one_sk(net, req, &vinfo); if (err != 0){ - put_net(net); return err; } err = vpc_vtoa_netlink_send(net, nlh, &vinfo); - put_net(net); TOA_DBG("pid %u req[if_idx:%u sip:%pI4 dip:%pI4 sport:%u dport:%u] info[" "vpcid:%u vmip:%pI4 sport:%u vip:%pI4 vport:%u] err:%d\n",