Subject: Fw: [Bug 196671] New: TUN(GET/ATTACH/DETACH)FILTER ioctls fail in a x86-32 process on an x86-64 kernel

From: Stephen Hemminger <[email-masked]>
Date: Tue, 15 Aug 2017 09:15:18 -0700

Begin forwarded message:

Date: Tue, 15 Aug 2017 14:21:36 +0000
From: [email-masked]
To: [email-masked]
Subject: [Bug 196671] New: TUN(GET/ATTACH/DETACH)FILTER ioctls fail in a x86-32 process on an x86-64 kernel

https://bugzilla.kernel.org/show_bug.cgi?id=196671

            Bug ID: 196671
           Summary: TUN(GET/ATTACH/DETACH)FILTER ioctls fail in a x86-32
                    process on an x86-64 kernel
           Product: Networking
           Version: 2.5
    Kernel Version: 4.12.0 (Linus)
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Other
          Assignee: [email-masked]
          Reporter: [email-masked]
        Regression: No

These ioctls take a 'struct sock_fprog' but there's no 32-bit compat code,
which has two consequences:

1) The ioctl numbers are incorrect for 32-bit processes running on a 64-bit
kernel. The userspace ioctl numbers use an 8-byte 'size' field but the kernel
expects a 16-byte size field, so the ioctls fail with EINVAL. You can hack
around this by handcoding the 64-bit ioctl number.

2) Userspace must supply a sock_fprog with the 64-bit layout.

Of course these workarounds assume you're running on a 64-bit kernel, so
they're no good if you might be running on a 32-bit kernel.

-- 
You are receiving this mail because:
You are the assignee for the bug.