ipv6/route: Add a missing check on proc_dointvec
authorAditya Pakki <pakki001@umn.edu>
Mon, 24 Dec 2018 16:30:17 +0000 (10:30 -0600)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Dec 2018 00:18:03 +0000 (16:18 -0800)
While flushing the cache via  ipv6_sysctl_rtcache_flush(), the call
to proc_dointvec() may fail. The fix adds a check that returns the
error, on failure.

Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c

index 194bc162866d6986651b6133eeaf9a6706e495c2..a94e0b02a8ac9d5b6549a1d982b358fb8145b6e0 100644 (file)
@@ -5054,12 +5054,16 @@ int ipv6_sysctl_rtcache_flush(struct ctl_table *ctl, int write,
 {
        struct net *net;
        int delay;
+       int ret;
        if (!write)
                return -EINVAL;
 
        net = (struct net *)ctl->extra1;
        delay = net->ipv6.sysctl.flush_delay;
-       proc_dointvec(ctl, write, buffer, lenp, ppos);
+       ret = proc_dointvec(ctl, write, buffer, lenp, ppos);
+       if (ret)
+               return ret;
+
        fib6_run_gc(delay <= 0 ? 0 : (unsigned long)delay, net, delay > 0);
        return 0;
 }