kernel-packages team mailing list archive
-
kernel-packages team
-
Mailing list archive
-
Message #43159
[Bug 1274349] Re: Fix-compat_sys_recvmsg-on-x32-archs
** Also affects: linux (Ubuntu Lucid)
Importance: Undecided
Status: New
** Also affects: linux-ec2 (Ubuntu Lucid)
Importance: Undecided
Status: New
** Also affects: linux-armadaxp (Ubuntu Lucid)
Importance: Undecided
Status: New
** Also affects: linux-lts-raring (Ubuntu Lucid)
Importance: Undecided
Status: New
** Also affects: linux-lts-saucy (Ubuntu Lucid)
Importance: Undecided
Status: New
** Also affects: linux (Ubuntu Quantal)
Importance: Undecided
Status: New
** Also affects: linux-ec2 (Ubuntu Quantal)
Importance: Undecided
Status: New
** Also affects: linux-armadaxp (Ubuntu Quantal)
Importance: Undecided
Status: New
** Also affects: linux-lts-raring (Ubuntu Quantal)
Importance: Undecided
Status: New
** Also affects: linux-lts-saucy (Ubuntu Quantal)
Importance: Undecided
Status: New
** Changed in: linux-armadaxp (Ubuntu Precise)
Status: New => Invalid
** Changed in: linux-armadaxp (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-armadaxp (Ubuntu Saucy)
Status: New => Invalid
** Changed in: linux-armadaxp (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-armadaxp (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-armadaxp (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-armadaxp (Ubuntu Trusty)
Status: New => Invalid
** Changed in: linux-armadaxp (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-armadaxp (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-armadaxp (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-ec2 (Ubuntu Precise)
Status: New => Invalid
** Changed in: linux-ec2 (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-ec2 (Ubuntu Saucy)
Status: New => Invalid
** Changed in: linux-ec2 (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-ec2 (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-ec2 (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-ec2 (Ubuntu Trusty)
Status: New => Invalid
** Changed in: linux-ec2 (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-ec2 (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-ec2 (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-lts-quantal (Ubuntu Precise)
Status: New => Invalid
** Changed in: linux-lts-quantal (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-lts-quantal (Ubuntu Saucy)
Status: New => Invalid
** Changed in: linux-lts-quantal (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-lts-quantal (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-lts-quantal (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-lts-quantal (Ubuntu Trusty)
Status: New => Invalid
** Changed in: linux-lts-quantal (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-lts-quantal (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-lts-quantal (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-mvl-dove (Ubuntu Precise)
Status: New => Invalid
** Changed in: linux-mvl-dove (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-mvl-dove (Ubuntu Saucy)
Status: New => Invalid
** Changed in: linux-mvl-dove (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-mvl-dove (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-mvl-dove (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-mvl-dove (Ubuntu Trusty)
Status: New => Invalid
** Changed in: linux-mvl-dove (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-mvl-dove (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-mvl-dove (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-lts-saucy (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-lts-saucy (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-lts-saucy (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-lts-saucy (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-lts-saucy (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-lts-saucy (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-lts-saucy (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-ti-omap4 (Ubuntu Precise)
Status: New => Invalid
** Changed in: linux-ti-omap4 (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-ti-omap4 (Ubuntu Saucy)
Status: New => Invalid
** Changed in: linux-ti-omap4 (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-ti-omap4 (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-ti-omap4 (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-ti-omap4 (Ubuntu Trusty)
Status: New => Invalid
** Changed in: linux-ti-omap4 (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-ti-omap4 (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-ti-omap4 (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-fsl-imx51 (Ubuntu Precise)
Status: New => Invalid
** Changed in: linux-fsl-imx51 (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-fsl-imx51 (Ubuntu Saucy)
Status: New => Invalid
** Changed in: linux-fsl-imx51 (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-fsl-imx51 (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-fsl-imx51 (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-fsl-imx51 (Ubuntu Trusty)
Status: New => Invalid
** Changed in: linux-fsl-imx51 (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-fsl-imx51 (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-fsl-imx51 (Ubuntu Quantal)
Importance: Undecided => Critical
** Changed in: linux-lts-raring (Ubuntu Precise)
Importance: Undecided => Critical
** Changed in: linux-lts-raring (Ubuntu Saucy)
Importance: Undecided => Critical
** Changed in: linux-lts-raring (Ubuntu Lucid)
Status: New => Invalid
** Changed in: linux-lts-raring (Ubuntu Lucid)
Importance: Undecided => Critical
** Changed in: linux-lts-raring (Ubuntu Trusty)
Importance: Undecided => Critical
** Changed in: linux-lts-raring (Ubuntu Quantal)
Status: New => Invalid
** Changed in: linux-lts-raring (Ubuntu Quantal)
Importance: Undecided => Critical
** Description changed:
- Reported by pageexec
-
- asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg,
- unsigned int vlen, unsigned int flags,
- struct compat_timespec __user *timeout)
- {
- int datagrams;
- struct timespec ktspec;
-
- if (flags & MSG_CMSG_COMPAT)
- return -EINVAL;
-
- if (COMPAT_USE_64BIT_TIME)
- return __sys_recvmmsg(fd, (struct mmsghdr __user *)mmsg, vlen,
- flags | MSG_CMSG_COMPAT,
- (struct timespec *) timeout);
- /*...*/
-
- The timeout pointer parameter is provided by userland (hence the
- __user annotation) but for x32 syscalls it's simply cast to a kernel
- pointer and is passed to __sys_recvmmsg which will eventually directly
+ The timeout pointer parameter is provided by userland (hence the __user
+ annotation) but for x32 syscalls it's simply cast to a kernel pointer
+ and is passed to __sys_recvmmsg which will eventually directly
dereference it for both reading and writing. Other callers to
- __sys_recvmmsg properly copy from userland to the kernel first.
-
- The impact is a sort of arbitrary kernel write-where-what primitive by
+ __sys_recvmmsg properly copy from userland to the kernel first. The
+ impact is a sort of arbitrary kernel write-where-what primitive by
unprivileged users where the to-be-written area must contain valid
timespec data initially (the first 64 bit long field must be positive
and the second one must be < 1G).
- The bug was introduced by commit
- http://git.kernel.org/linus/ee4fa23c4b (other uses of
- COMPAT_USE_64BIT_TIME seem fine) and should affect all kernels since
- 3.4 (and perhaps vendor kernels if they backported x32 support along
- with this code). Note that CONFIG_X86_X32_ABI gets enabled at build
- time and only if CONFIG_X86_X32 is enabled and ld can build x32
- executables.
+ Break-Fix: ee4fa23c4bfcc635d077a9633d405610de45bc70
+ 2def2ef2ae5f3990aabdbe8a755911902707d268
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-armadaxp in Ubuntu.
https://bugs.launchpad.net/bugs/1274349
Title:
Fix-compat_sys_recvmsg-on-x32-archs
Status in “linux” package in Ubuntu:
Confirmed
Status in “linux-armadaxp” package in Ubuntu:
Invalid
Status in “linux-ec2” package in Ubuntu:
Invalid
Status in “linux-fsl-imx51” package in Ubuntu:
Invalid
Status in “linux-lts-quantal” package in Ubuntu:
Invalid
Status in “linux-lts-raring” package in Ubuntu:
Invalid
Status in “linux-lts-saucy” package in Ubuntu:
Invalid
Status in “linux-mvl-dove” package in Ubuntu:
Invalid
Status in “linux-ti-omap4” package in Ubuntu:
Invalid
Status in “linux” source package in Lucid:
Invalid
Status in “linux-armadaxp” source package in Lucid:
Invalid
Status in “linux-ec2” source package in Lucid:
Invalid
Status in “linux-fsl-imx51” source package in Lucid:
Invalid
Status in “linux-lts-quantal” source package in Lucid:
Invalid
Status in “linux-lts-raring” source package in Lucid:
Invalid
Status in “linux-lts-saucy” source package in Lucid:
Invalid
Status in “linux-mvl-dove” source package in Lucid:
Invalid
Status in “linux-ti-omap4” source package in Lucid:
Invalid
Status in “linux” source package in Precise:
Invalid
Status in “linux-armadaxp” source package in Precise:
Invalid
Status in “linux-ec2” source package in Precise:
Invalid
Status in “linux-fsl-imx51” source package in Precise:
Invalid
Status in “linux-lts-quantal” source package in Precise:
Invalid
Status in “linux-lts-raring” source package in Precise:
Fix Released
Status in “linux-lts-saucy” source package in Precise:
Fix Released
Status in “linux-mvl-dove” source package in Precise:
Invalid
Status in “linux-ti-omap4” source package in Precise:
Invalid
Status in “linux” source package in Quantal:
Invalid
Status in “linux-armadaxp” source package in Quantal:
Invalid
Status in “linux-ec2” source package in Quantal:
Invalid
Status in “linux-fsl-imx51” source package in Quantal:
Invalid
Status in “linux-lts-quantal” source package in Quantal:
Invalid
Status in “linux-lts-raring” source package in Quantal:
Invalid
Status in “linux-lts-saucy” source package in Quantal:
Invalid
Status in “linux-mvl-dove” source package in Quantal:
Invalid
Status in “linux-ti-omap4” source package in Quantal:
Invalid
Status in “linux” source package in Saucy:
Fix Released
Status in “linux-armadaxp” source package in Saucy:
Invalid
Status in “linux-ec2” source package in Saucy:
Invalid
Status in “linux-fsl-imx51” source package in Saucy:
Invalid
Status in “linux-lts-quantal” source package in Saucy:
Invalid
Status in “linux-lts-raring” source package in Saucy:
Invalid
Status in “linux-lts-saucy” source package in Saucy:
Invalid
Status in “linux-mvl-dove” source package in Saucy:
Invalid
Status in “linux-ti-omap4” source package in Saucy:
Invalid
Status in “linux” source package in Trusty:
Confirmed
Status in “linux-armadaxp” source package in Trusty:
Invalid
Status in “linux-ec2” source package in Trusty:
Invalid
Status in “linux-fsl-imx51” source package in Trusty:
Invalid
Status in “linux-lts-quantal” source package in Trusty:
Invalid
Status in “linux-lts-raring” source package in Trusty:
Invalid
Status in “linux-lts-saucy” source package in Trusty:
Invalid
Status in “linux-mvl-dove” source package in Trusty:
Invalid
Status in “linux-ti-omap4” source package in Trusty:
Invalid
Bug description:
The timeout pointer parameter is provided by userland (hence the
__user annotation) but for x32 syscalls it's simply cast to a kernel
pointer and is passed to __sys_recvmmsg which will eventually directly
dereference it for both reading and writing. Other callers to
__sys_recvmmsg properly copy from userland to the kernel first. The
impact is a sort of arbitrary kernel write-where-what primitive by
unprivileged users where the to-be-written area must contain valid
timespec data initially (the first 64 bit long field must be positive
and the second one must be < 1G).
Break-Fix: ee4fa23c4bfcc635d077a9633d405610de45bc70
2def2ef2ae5f3990aabdbe8a755911902707d268
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1274349/+subscriptions