On Mon, Nov 16, 2015 at 04:06:47PM +0100, Andreas Schultz wrote:
Signed-off-by: Andreas Schultz
<aschultz(a)tpip.net>
---
gtp.c | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-)
diff --git a/gtp.c b/gtp.c
index 11f8fad..4f5729e 100644
--- a/gtp.c
+++ b/gtp.c
@@ -756,8 +756,12 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev,
if (!tb[IFLA_MTU])
dev->mtu = real_dev->mtu;
- else if (dev->mtu > real_dev->mtu)
- return -EINVAL;
+ else if (dev->mtu > real_dev->mtu) {
+ netdev_dbg(dev, "GTP mtu greater that transport MTU (%d > %d)\n",
+ dev->mtu, real_dev->mtu);
+ err = -EINVAL;
+ goto out_err;
This is function is using __dev_get_by_index(), so we're not holding a
reference on the netdevice here.
+ }
gti = netdev_priv(dev);
gti->real_dev = real_dev;
[...]
+out_err:
+ dev_put(real_dev);
return err;
}