Re: [PATCH 03/10] ip_rt_ioctl(): take copyin to caller

From: Christoph Hellwig
Date: Mon Jan 22 2018 - 11:43:19 EST


> case SIOCGSTAMP:
> @@ -884,8 +885,12 @@ int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
> break;
> case SIOCADDRT:
> case SIOCDELRT:
> + if (copy_from_user(&rt, p, sizeof(struct rtentry)))
> + return -EFAULT;
> + err = ip_rt_ioctl(net, cmd, &rt);
> + break;
> case SIOCRTMSG:
> - err = ip_rt_ioctl(net, cmd, (void __user *)arg);
> + err = -EINVAL;

This looks odd, but ip_rt_ioctl never handled SIOCRTMSG to start with,
so it looks fine. Might be worth splitting into another prep patch
with a good changelog.

ip_rt_ioctl could also use some additional simplification if it's only
called for SIOCADDRT/SIOCDELRT and lose a level of indentation while
we're at it.

But otherwise this looks good:

Reviewed-by: Christoph Hellwig <hch@xxxxxx>