> 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 <[email protected]>
