~ubuntu-kernel/ubuntu/+source/linux/+git/cosmic:master

Last commit made on 2019-06-24
Get this branch:
git clone -b master https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/cosmic
Members of Ubuntu Kernel Repositories can upload to this branch. Log in for directions.

Branch merges

Branch information

Recent commits

66e4c0b... by Stefan Bader

UBUNTU: Ubuntu-4.18.0-25.26

Signed-off-by: Stefan Bader <email address hidden>

a6121cf... by Stefan Bader

UBUNTU: link-to-tracker: update tracking bug

BugLink: https://bugs.launchpad.net/bugs/1833952
Signed-off-by: Stefan Bader <email address hidden>

5daa1a3... by Eric Dumazet <email address hidden>

UBUNTU: SAUCE: tcp: enforce tcp_min_snd_mss in tcp_mtu_probing()

If mtu probing is enabled tcp_mtu_probing() could very well end up
with a too small MSS.

Use the new sysctl tcp_min_snd_mss to make sure MSS search
is performed in an acceptable range.

Signed-off-by: Eric Dumazet <email address hidden>
Reported-by: Jonathan Lemon <email address hidden>
Cc: Jonathan Looney <email address hidden>
Cc: Neal Cardwell <email address hidden>
Cc: Yuchung Cheng <email address hidden>
Cc: Tyler Hicks <email address hidden>
Cc: Bruce Curtis <email address hidden>

CVE-2019-11479

Signed-off-by: Tyler Hicks <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

fd659fc... by Eric Dumazet <email address hidden>

UBUNTU: SAUCE: tcp: add tcp_min_snd_mss sysctl

Some TCP peers announce a very small MSS option in their SYN and/or
SYN/ACK messages.

This forces the stack to send packets with a very high network/cpu
overhead.

Linux has enforced a minimal value of 48. Since this value includes
the size of TCP options, and that the options can consume up to 40
bytes, this means that each segment can include only 8 bytes of payload.

In some cases, it can be useful to increase the minimal value
to a saner value.

We still let the default to 48 (TCP_MIN_SND_MSS), for compatibility
reasons.

Note that TCP_MAXSEG socket option enforces a minimal value
of (TCP_MIN_MSS). David Miller increased this minimal value
in commit c39508d6f118 ("tcp: Make TCP_MAXSEG minimum more correct.")
from 64 to 88.

We might in the future merge TCP_MIN_SND_MSS and TCP_MIN_MSS.

Signed-off-by: Eric Dumazet <email address hidden>
Suggested-by: Jonathan Looney <email address hidden>
Cc: Neal Cardwell <email address hidden>
Cc: Yuchung Cheng <email address hidden>
Cc: Tyler Hicks <email address hidden>
Cc: Bruce Curtis <email address hidden>
Cc: Jonathan Lemon <email address hidden>

CVE-2019-11479

Signed-off-by: Tyler Hicks <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

d5f603b... by Eric Dumazet <email address hidden>

tcp: refine memory limit test in tcp_fragment()

tcp_fragment() might be called for skbs in the write queue.

Memory limits might have been exceeded because tcp_sendmsg() only
checks limits at full skb (64KB) boundaries.

Therefore, we need to make sure tcp_fragment() wont punish applications
that might have setup very low SO_SNDBUF values.

Fixes: f070ef2ac667 ("tcp: tcp_fragment() should apply sane memory limits")
Signed-off-by: Eric Dumazet <email address hidden>
Reported-by: Christoph Paasch <email address hidden>
Tested-by: Christoph Paasch <email address hidden>
Signed-off-by: David S. Miller <email address hidden>

BugLink: https://bugs.launchpad.net/bugs/1831638
CVE-2019-11478

(cherry picked from commit b6653b3629e5b88202be3c9abc44713973f5c4b4)
Signed-off-by: Stefan Bader <email address hidden>

f3ae61b... by Stefan Bader

UBUNTU: Start new release

Ignore: yes
Signed-off-by: Stefan Bader <email address hidden>

e08d1d7... by Stefan Bader

UBUNTU: Ubuntu-4.18.0-24.25

Signed-off-by: Stefan Bader <email address hidden>

b017681... by Stefan Bader

UBUNTU: [Config] Follow gcc-8 update to 8.3

The compiler got updated from 8.2 to 8.3 in -proposed and
security. Adjust the config accordingly.

Ignore: yes

Signed-off-by: Stefan Bader <email address hidden>

0dbbedd... by Michael Ellerman

UBUNTU: SAUCE: powerpc/mm/64s/hash: Reallocate context ids on fork

When using the Hash Page Table (HPT) MMU, userspace memory mappings
are managed at two levels. Firstly in the Linux page tables, much like
other architectures, and secondly in the SLB (Segment Lookaside
Buffer) and HPT. It's the SLB and HPT that are actually used by the
hardware to do translations.

As part of the series adding support for 4PB user virtual address
space using the hash MMU, we added support for allocating multiple
"context ids" per process, one for each 512TB chunk of address space.
These are tracked in an array called extended_id in the mm_context_t
of a process that has done a mapping above 512TB.

If such a process forks (ie. clone(2) without CLONE_VM set) it's mm is
copied, including the mm_context_t, and then init_new_context() is
called to reinitialise parts of the mm_context_t as appropriate to
separate the address spaces of the two processes.

The key step in ensuring the two processes have separate address
spaces is to allocate a new context id for the process, this is done
at the beginning of hash__init_new_context(). If we didn't allocate a
new context id then the two processes would share mappings as far as
the SLB and HPT are concerned, even though their Linux page tables
would be separate.

For mappings above 512TB, which use the extended_id array, we
neglected to allocate new context ids on fork, meaning the parent and
child use the same ids and therefore share those mappings even though
they're supposed to be separate. This can lead to the parent seeing
writes done by the child, which is essentially memory corruption.

There is an additional exposure which is that if the child process
exits, all its context ids are freed, including the context ids that
are still in use by the parent for mappings above 512TB. One or more
of those ids can then be reallocated to a third process, that process
can then read/write to the parent's mappings above 512TB. Additionally
if the freed id is used for the third process's primary context id,
then the parent is able to read/write to the third process's mappings
*below* 512TB.

All of these are fundamental failures to enforce separation between
processes. The only mitigating factor is that the bug only occurs if a
process creates mappings above 512TB, and most applications still do
not create such mappings.

Only machines using the hash page table MMU are affected, eg. PowerPC
970 (G5), PA6T, Power5/6/7/8/9. By default Power9 bare metal machines
(powernv) use the Radix MMU and are not affected, unless the machine
has been explicitly booted in HPT mode (using disable_radix on the
kernel command line). KVM guests on Power9 may be affected if the host
or guest is configured to use the HPT MMU. LPARs under PowerVM on
Power9 are affected as they always use the HPT MMU. Kernels built with
PAGE_SIZE=4K are not affected.

The fix is relatively simple, we need to reallocate context ids for
all extended mappings on fork.

Fixes: f384796c40dc ("powerpc/mm: Add support for handling > 512TB address in SLB miss")
Cc: <email address hidden> # v4.17+
Signed-off-by: Michael Ellerman <email address hidden>

CVE-2019-12817

[tyhicks: Backport provided by Michael Ellerman to account for 4.19 and
 older kernels missing commit b3fa64170e21 ("ppc: Convert mmu context
 allocation to new IDA API"). The backport uses ida_remove() rather than
 ida_free().]
Signed-off-by: Tyler Hicks <email address hidden>

Signed-off-by: Stefan Bader <email address hidden>

2681280... by Stefan Bader

UBUNTU: Start new release

Ignore: yes
Signed-off-by: Stefan Bader <email address hidden>