mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-01 10:13:58 +08:00
mctp: Allow MCTP on tun devices
Allowing TUN is useful for testing, to route packets to userspace or to tunnel between machines. Signed-off-by: Matt Johnston <matt@codeconstruct.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7c2dcfa295
commit
f364dd71d9
@ -356,9 +356,12 @@ static int mctp_register(struct net_device *dev)
|
||||
if (rtnl_dereference(dev->mctp_ptr))
|
||||
return 0;
|
||||
|
||||
/* only register specific types; MCTP-specific and loopback for now */
|
||||
if (dev->type != ARPHRD_MCTP && dev->type != ARPHRD_LOOPBACK)
|
||||
/* only register specific types (inc. NONE for TUN devices) */
|
||||
if (!(dev->type == ARPHRD_MCTP ||
|
||||
dev->type == ARPHRD_LOOPBACK ||
|
||||
dev->type == ARPHRD_NONE)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mdev = mctp_add_dev(dev);
|
||||
if (IS_ERR(mdev))
|
||||
|
@ -821,13 +821,18 @@ static int mctp_pkttype_receive(struct sk_buff *skb, struct net_device *dev,
|
||||
struct net_device *orig_dev)
|
||||
{
|
||||
struct net *net = dev_net(dev);
|
||||
struct mctp_dev *mdev;
|
||||
struct mctp_skb_cb *cb;
|
||||
struct mctp_route *rt;
|
||||
struct mctp_hdr *mh;
|
||||
|
||||
/* basic non-data sanity checks */
|
||||
if (dev->type != ARPHRD_MCTP)
|
||||
rcu_read_lock();
|
||||
mdev = __mctp_dev_get(dev);
|
||||
rcu_read_unlock();
|
||||
if (!mdev) {
|
||||
/* basic non-data sanity checks */
|
||||
goto err_drop;
|
||||
}
|
||||
|
||||
if (!pskb_may_pull(skb, sizeof(struct mctp_hdr)))
|
||||
goto err_drop;
|
||||
@ -841,9 +846,7 @@ static int mctp_pkttype_receive(struct sk_buff *skb, struct net_device *dev,
|
||||
goto err_drop;
|
||||
|
||||
cb = __mctp_cb(skb);
|
||||
rcu_read_lock();
|
||||
cb->net = READ_ONCE(__mctp_dev_get(dev)->net);
|
||||
rcu_read_unlock();
|
||||
cb->net = READ_ONCE(mdev->net);
|
||||
|
||||
rt = mctp_route_lookup(net, cb->net, mh->dest);
|
||||
if (!rt)
|
||||
|
Loading…
Reference in New Issue
Block a user