On Thu, Dec 12, 2019 at 5:30 PM Christoph Hellwig hch@infradead.org 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