Re: [PATCH 21/24] compat_ioctl: block: move blkdev_compat_ioctl() into ioctl.c

From: Arnd Bergmann
Date: Thu Dec 12 2019 - 12:24:23 EST


On Thu, Dec 12, 2019 at 5:30 PM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
>
> > +#ifdef CONFIG_COMPAT
> > +static int compat_put_ushort(unsigned long arg, unsigned short val)
> > +{
> > + return put_user(val, (unsigned short __user *)compat_ptr(arg));
> > +}
> > +
> > +static int compat_put_int(unsigned long arg, int val)
> > +{
> > + return put_user(val, (compat_int_t __user *)compat_ptr(arg));
> > +}
> > +
> > +static int compat_put_uint(unsigned long arg, unsigned int val)
> > +{
> > + return put_user(val, (compat_uint_t __user *)compat_ptr(arg));
> > +}
> > +
> > +static int compat_put_long(unsigned long arg, long val)
> > +{
> > + return put_user(val, (compat_long_t __user *)compat_ptr(arg));
> > +}
> > +
> > +static int compat_put_ulong(unsigned long arg, compat_ulong_t val)
> > +{
> > + return put_user(val, (compat_ulong_t __user *)compat_ptr(arg));
> > +}
> > +
> > +static int compat_put_u64(unsigned long arg, u64 val)
> > +{
> > + return put_user(val, (compat_u64 __user *)compat_ptr(arg));
> > +}
> > +#endif
>
> Can we lift these helpers to compat.h instead?

Nothing else uses them, and it's usually more readable to just
use put_user directly.

Note that the next patch removes most of them anyway, but
we could have another cleanup that removes the
put_int()/put_long()/etc from block/ioctl.c altogether.

Arnd