On Wed, Apr 17, 2019 at 11:16 PM Al Viro viro@zeniv.linux.org.uk wrote:
On Tue, Apr 16, 2019 at 10:19:42PM +0200, Arnd Bergmann wrote:
+#ifdef CONFIG_COMPAT +struct ppp_option_data32 {
compat_caddr_t ptr;
Huh? compat_uptr_t, surely? I realize that compat_ioctl.c is bogus that way right now, but let's not spread that crap into the places where it's harder to find...
Ok, done.
err = -EFAULT;
if (copy_from_user(&data, (void __user *) arg, sizeof(data)))
goto out;
+#ifdef CONFIG_COMPAT
if (compat) {
struct ppp_option_data32 data32;
if (copy_from_user(&data32, (void __user *) arg,
sizeof(data32)))
goto out;
data.ptr = compat_ptr(data32.ptr);
data.length = data32.length;
data.transmit = data32.transmit;
} else
+#endif
{
if (copy_from_user(&data, (void __user *) arg, sizeof(data)))
goto out;
}
*UGH*
Do that in caller, please. And sod the flag argument...
Ack, changed it now.
Arnd