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