>       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 <h...@lst.de>

Reply via email to