All of lore.kernel.org
 help / color / mirror / Atom feed
From: Willy Tarreau <w@1wt.eu>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Willy Tarreau <w@1wt.eu>, Al Viro <viro@zeniv.linux.org.uk>,
	Luis Henriques <luis.henriques@canonical.com>,
	Chas Williams <3chas3@gmail.com>
Subject: [PATCH 3.10 038/180] pipe: limit the per-user amount of pages allocated in pipes
Date: Sun, 21 Aug 2016 17:29:28 +0200	[thread overview]
Message-ID: <1471793510-13022-39-git-send-email-w@1wt.eu> (raw)
In-Reply-To: <1471793510-13022-1-git-send-email-w@1wt.eu>

commit 759c01142a5d0f364a462346168a56de28a80f52 upstream.

On no-so-small systems, it is possible for a single process to cause an
OOM condition by filling large pipes with data that are never read. A
typical process filling 4000 pipes with 1 MB of data will use 4 GB of
memory. On small systems it may be tricky to set the pipe max size to
prevent this from happening.

This patch makes it possible to enforce a per-user soft limit above
which new pipes will be limited to a single page, effectively limiting
them to 4 kB each, as well as a hard limit above which no new pipes may
be created for this user. This has the effect of protecting the system
against memory abuse without hurting other users, and still allowing
pipes to work correctly though with less data at once.

The limit are controlled by two new sysctls : pipe-user-pages-soft, and
pipe-user-pages-hard. Both may be disabled by setting them to zero. The
default soft limit allows the default number of FDs per process (1024)
to create pipes of the default size (64kB), thus reaching a limit of 64MB
before starting to create only smaller pipes. With 256 processes limited
to 1024 FDs each, this results in 1024*64kB + (256*1024 - 1024) * 4kB =
1084 MB of memory allocated for a user. The hard limit is disabled by
default to avoid breaking existing applications that make intensive use
of pipes (eg: for splicing).

CVE-2016-2847

Reported-by: socketpair@gmail.com
Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Mitigates: CVE-2013-4312 (Linux 2.0+)
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
Signed-off-by: Chas Williams <3chas3@gmail.com>
---
 Documentation/sysctl/fs.txt | 23 ++++++++++++++++++++++
 fs/pipe.c                   | 47 +++++++++++++++++++++++++++++++++++++++++++--
 include/linux/pipe_fs_i.h   |  4 ++++
 include/linux/sched.h       |  1 +
 kernel/sysctl.c             | 14 ++++++++++++++
 5 files changed, 87 insertions(+), 2 deletions(-)

diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt
index 88152f2..302b5ed 100644
--- a/Documentation/sysctl/fs.txt
+++ b/Documentation/sysctl/fs.txt
@@ -32,6 +32,8 @@ Currently, these files are in /proc/sys/fs:
 - nr_open
 - overflowuid
 - overflowgid
+- pipe-user-pages-hard
+- pipe-user-pages-soft
 - protected_hardlinks
 - protected_symlinks
 - suid_dumpable
@@ -159,6 +161,27 @@ The default is 65534.
 
 ==============================================================
 
+pipe-user-pages-hard:
+
+Maximum total number of pages a non-privileged user may allocate for pipes.
+Once this limit is reached, no new pipes may be allocated until usage goes
+below the limit again. When set to 0, no limit is applied, which is the default
+setting.
+
+==============================================================
+
+pipe-user-pages-soft:
+
+Maximum total number of pages a non-privileged user may allocate for pipes
+before the pipe size gets limited to a single page. Once this limit is reached,
+new pipes will be limited to a single page in size for this user in order to
+limit total memory usage, and trying to increase them using fcntl() will be
+denied until usage goes below the limit again. The default value allows to
+allocate up to 1024 pipes at their default size. When set to 0, no limit is
+applied.
+
+==============================================================
+
 protected_hardlinks:
 
 A long-standing class of security issues is the hardlink-based
diff --git a/fs/pipe.c b/fs/pipe.c
index 50267e6..c281867 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -39,6 +39,12 @@ unsigned int pipe_max_size = 1048576;
  */
 unsigned int pipe_min_size = PAGE_SIZE;
 
+/* Maximum allocatable pages per user. Hard limit is unset by default, soft
+ * matches default values.
+ */
+unsigned long pipe_user_pages_hard;
+unsigned long pipe_user_pages_soft = PIPE_DEF_BUFFERS * INR_OPEN_CUR;
+
 /*
  * We use a start+len construction, which provides full use of the 
  * allocated memory.
@@ -794,20 +800,49 @@ pipe_fasync(int fd, struct file *filp, int on)
 	return retval;
 }
 
+static void account_pipe_buffers(struct pipe_inode_info *pipe,
+                                 unsigned long old, unsigned long new)
+{
+	atomic_long_add(new - old, &pipe->user->pipe_bufs);
+}
+
+static bool too_many_pipe_buffers_soft(struct user_struct *user)
+{
+	return pipe_user_pages_soft &&
+	       atomic_long_read(&user->pipe_bufs) >= pipe_user_pages_soft;
+}
+
+static bool too_many_pipe_buffers_hard(struct user_struct *user)
+{
+	return pipe_user_pages_hard &&
+	       atomic_long_read(&user->pipe_bufs) >= pipe_user_pages_hard;
+}
+
 struct pipe_inode_info *alloc_pipe_info(void)
 {
 	struct pipe_inode_info *pipe;
 
 	pipe = kzalloc(sizeof(struct pipe_inode_info), GFP_KERNEL);
 	if (pipe) {
-		pipe->bufs = kzalloc(sizeof(struct pipe_buffer) * PIPE_DEF_BUFFERS, GFP_KERNEL);
+		unsigned long pipe_bufs = PIPE_DEF_BUFFERS;
+		struct user_struct *user = get_current_user();
+
+		if (!too_many_pipe_buffers_hard(user)) {
+			if (too_many_pipe_buffers_soft(user))
+				pipe_bufs = 1;
+			pipe->bufs = kzalloc(sizeof(struct pipe_buffer) * pipe_bufs, GFP_KERNEL);
+		}
+
 		if (pipe->bufs) {
 			init_waitqueue_head(&pipe->wait);
 			pipe->r_counter = pipe->w_counter = 1;
-			pipe->buffers = PIPE_DEF_BUFFERS;
+			pipe->buffers = pipe_bufs;
+			pipe->user = user;
+			account_pipe_buffers(pipe, 0, pipe_bufs);
 			mutex_init(&pipe->mutex);
 			return pipe;
 		}
+		free_uid(user);
 		kfree(pipe);
 	}
 
@@ -818,6 +853,8 @@ void free_pipe_info(struct pipe_inode_info *pipe)
 {
 	int i;
 
+	account_pipe_buffers(pipe, pipe->buffers, 0);
+	free_uid(pipe->user);
 	for (i = 0; i < pipe->buffers; i++) {
 		struct pipe_buffer *buf = pipe->bufs + i;
 		if (buf->ops)
@@ -1208,6 +1245,7 @@ static long pipe_set_size(struct pipe_inode_info *pipe, unsigned long nr_pages)
 			memcpy(bufs + head, pipe->bufs, tail * sizeof(struct pipe_buffer));
 	}
 
+	account_pipe_buffers(pipe, pipe->buffers, nr_pages);
 	pipe->curbuf = 0;
 	kfree(pipe->bufs);
 	pipe->bufs = bufs;
@@ -1279,6 +1317,11 @@ long pipe_fcntl(struct file *file, unsigned int cmd, unsigned long arg)
 		if (!capable(CAP_SYS_RESOURCE) && size > pipe_max_size) {
 			ret = -EPERM;
 			goto out;
+		} else if ((too_many_pipe_buffers_hard(pipe->user) ||
+			    too_many_pipe_buffers_soft(pipe->user)) &&
+		           !capable(CAP_SYS_RESOURCE) && !capable(CAP_SYS_ADMIN)) {
+			ret = -EPERM;
+			goto out;
 		}
 		ret = pipe_set_size(pipe, nr_pages);
 		break;
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
index ab57526..b3374f6 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -42,6 +42,7 @@ struct pipe_buffer {
  *	@fasync_readers: reader side fasync
  *	@fasync_writers: writer side fasync
  *	@bufs: the circular array of pipe buffers
+ *	@user: the user who created this pipe
  **/
 struct pipe_inode_info {
 	struct mutex mutex;
@@ -57,6 +58,7 @@ struct pipe_inode_info {
 	struct fasync_struct *fasync_readers;
 	struct fasync_struct *fasync_writers;
 	struct pipe_buffer *bufs;
+	struct user_struct *user;
 };
 
 /*
@@ -140,6 +142,8 @@ void pipe_unlock(struct pipe_inode_info *);
 void pipe_double_lock(struct pipe_inode_info *, struct pipe_inode_info *);
 
 extern unsigned int pipe_max_size, pipe_min_size;
+extern unsigned long pipe_user_pages_hard;
+extern unsigned long pipe_user_pages_soft;
 int pipe_proc_fn(struct ctl_table *, int, void __user *, size_t *, loff_t *);
 
 
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 4781332..7728941 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -671,6 +671,7 @@ struct user_struct {
 #endif
 	unsigned long locked_shm; /* How many pages of mlocked shm ? */
 	unsigned long unix_inflight;	/* How many files in flight in unix sockets */
+	atomic_long_t pipe_bufs;  /* how many pages are allocated in pipe buffers */
 
 #ifdef CONFIG_KEYS
 	struct key *uid_keyring;	/* UID specific keyring */
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 9469f4c..4fd49fe 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1632,6 +1632,20 @@ static struct ctl_table fs_table[] = {
 		.proc_handler	= &pipe_proc_fn,
 		.extra1		= &pipe_min_size,
 	},
+	{
+		.procname	= "pipe-user-pages-hard",
+		.data		= &pipe_user_pages_hard,
+		.maxlen		= sizeof(pipe_user_pages_hard),
+		.mode		= 0644,
+		.proc_handler	= proc_doulongvec_minmax,
+	},
+	{
+		.procname	= "pipe-user-pages-soft",
+		.data		= &pipe_user_pages_soft,
+		.maxlen		= sizeof(pipe_user_pages_soft),
+		.mode		= 0644,
+		.proc_handler	= proc_doulongvec_minmax,
+	},
 	{ }
 };
 
-- 
2.8.0.rc2.1.gbe9624a

  parent reply	other threads:[~2016-08-21 16:07 UTC|newest]

Thread overview: 200+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-21 15:28 [PATCH 3.10 000/180] 3.10.103-stable review Willy Tarreau
2016-08-21 15:28 ` Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 001/180] X.509: remove possible code fragility: enumeration values not handled Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 002/180] x86, asmlinkage, apm: Make APM data structure used from assembler visible Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 003/180] netfilter: x_tables: validate e->target_offset early Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 004/180] netfilter: x_tables: make sure e->next_offset covers remaining blob size Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 005/180] netfilter: x_tables: fix unconditional helper Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 006/180] netfilter: x_tables: don't move to non-existent next rule Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 007/180] netfilter: x_tables: validate targets of jumps Willy Tarreau
2016-08-21 19:57   ` Willy Tarreau
2016-08-21 20:16     ` Florian Westphal
2016-08-21 21:21       ` Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 008/180] netfilter: x_tables: add and use xt_check_entry_offsets Willy Tarreau
2016-08-21 15:28 ` [PATCH 3.10 009/180] netfilter: x_tables: kill check_entry helper Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 010/180] netfilter: x_tables: assert minimum target size Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 011/180] netfilter: x_tables: add compat version of xt_check_entry_offsets Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 012/180] netfilter: x_tables: check standard target size too Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 013/180] netfilter: x_tables: check for bogus target offset Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 014/180] netfilter: x_tables: validate all offsets and sizes in a rule Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 015/180] netfilter: x_tables: don't reject valid target size on some architectures Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 016/180] netfilter: arp_tables: simplify translate_compat_table args Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 017/180] netfilter: ip_tables: " Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 018/180] netfilter: ip6_tables: " Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 019/180] netfilter: x_tables: xt_compat_match_from_user doesn't need a retval Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 020/180] netfilter: ensure number of counters is >0 in do_replace() Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 021/180] netfilter: x_tables: do compat validation via translate_table Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 022/180] Revert "netfilter: ensure number of counters is >0 in do_replace()" Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 023/180] netfilter: x_tables: introduce and use xt_copy_counters_from_user Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 024/180] perf/x86: Honor the architectural performance monitoring version Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 025/180] perf/x86: Fix undefined shift on 32-bit kernels Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 026/180] signal: remove warning about using SI_TKILL in rt_[tg]sigqueueinfo Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 027/180] PCI/ACPI: Fix _OSC ordering to allow PCIe hotplug use when available Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 028/180] udp: properly support MSG_PEEK with truncated buffers Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 029/180] USB: fix invalid memory access in hub_activate() Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 030/180] USB: usbfs: fix potential infoleak in devio Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 031/180] USB: fix up faulty backports Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 032/180] USB: EHCI: declare hostpc register as zero-length array Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 033/180] USB: serial: option: add support for Telit LE910 PID 0x1206 Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 034/180] usb: musb: Stop bulk endpoint while queue is rotated Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 035/180] usb: musb: Ensure rx reinit occurs for shared_fifo endpoints Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 036/180] usb: renesas_usbhs: protect the CFIFOSEL setting in usbhsg_ep_enable() Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 037/180] x86/mm: Add barriers and document switch_mm()-vs-flush synchronization Willy Tarreau
2016-08-21 15:29   ` Willy Tarreau
2016-08-21 15:29 ` Willy Tarreau [this message]
2016-08-21 15:29 ` [PATCH 3.10 039/180] cdc_ncm: do not call usbnet_link_change from cdc_ncm_bind Willy Tarreau
2016-08-21 15:29   ` Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 040/180] KEYS: potential uninitialized variable Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 041/180] mm: migrate dirty page without clear_page_dirty_for_io etc Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 042/180] printk: do cond_resched() between lines while outputting to consoles Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 043/180] HID: hiddev: validate num_values for HIDIOCGUSAGES, HIDIOCSUSAGES commands Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 044/180] libceph: apply new_state before new_up_client on incrementals Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 045/180] tmpfs: don't undo fallocate past its last page Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 046/180] tmpfs: fix regression hang in fallocate undo Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 047/180] tcp: make challenge acks less predictable Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 048/180] tcp: record TLP and ER timer stats in v6 stats Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 049/180] tcp: consider recv buf for the initial window scale Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 050/180] MIPS: KVM: Fix mapped fault broken commpage handling Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 051/180] MIPS: KVM: Add missing gfn range check Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 052/180] MIPS: KVM: Fix gfn range check in kseg0 tlb faults Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 053/180] MIPS: KVM: Propagate kseg0/mapped tlb fault errors Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 054/180] MIPS: math-emu: Fix jalr emulation when rd == $0 Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 055/180] MIPS: Fix siginfo.h to use strict posix types Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 056/180] MIPS: ath79: make bootconsole wait for both THRE and TEMT Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 057/180] MIPS: Fix 64k page support for 32 bit kernels Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 058/180] MIPS: KVM: Fix modular KVM under QEMU Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 059/180] Input: uinput - handle compat ioctl for UI_SET_PHYS Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 060/180] Input: wacom_w8001 - w8001_MAX_LENGTH should be 13 Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 061/180] Input: xpad - validate USB endpoint count during probe Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 062/180] ath5k: Change led pin configuration for compaq c700 laptop Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 063/180] aacraid: Relinquish CPU during timeout wait Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 064/180] aacraid: Fix for aac_command_thread hang Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 065/180] PCI: Disable all BAR sizing for devices with non-compliant BARs Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 066/180] rtlwifi: Fix logic error in enter/exit power-save mode Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 067/180] powerpc/book3s64: Fix branching to OOL handlers in relocatable kernel Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 068/180] powerpc: Fix definition of SIAR and SDAR registers Willy Tarreau
2016-08-21 15:29 ` [PATCH 3.10 069/180] powerpc: Use privileged SPR number for MMCR2 Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 070/180] powerpc/pseries/eeh: Handle RTAS delay requests in configure_bridge Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 071/180] powerpc/iommu: Remove the dependency on EEH struct in DDW mechanism Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 072/180] powerpc/pseries: Fix PCI config address for DDW Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 073/180] powerpc/tm: Always reclaim in start_thread() for exec() class syscalls Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 074/180] sunrpc: fix stripping of padded MIC tokens Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 075/180] drm/gma500: Fix possible out of bounds read Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 076/180] drm/fb_helper: Fix references to dev->mode_config.num_connector Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 077/180] drm/radeon: fix asic initialization for virtualized environments Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 078/180] drm/radeon: add a delay after ATPX dGPU power off Willy Tarreau
2016-08-21 15:30   ` Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 079/180] drm/radeon: Poll for both connect/disconnect on analog connectors Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 080/180] drm/radeon: fix firmware info version checks Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 081/180] ext4: fix hang when processing corrupted orphaned inode list Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 082/180] ext4: address UBSAN warning in mb_find_order_for_block() Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 083/180] ext4: silence UBSAN in ext4_mb_init() Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 084/180] ext4: verify extent header depth Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 085/180] ext4: check for extents that wrap around Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 086/180] ext4: don't call ext4_should_journal_data() on the journal inode Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 087/180] ext4: short-cut orphan cleanup on error Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 088/180] ext4: fix reference counting bug on block allocation error Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 089/180] dma-debug: avoid spinlock recursion when disabling dma-debug Willy Tarreau
2016-08-21 15:30   ` Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 090/180] xfs: xfs_iflush_cluster fails to abort on error Willy Tarreau
2016-08-22  4:21   ` Dave Chinner
2016-08-22  5:18     ` Willy Tarreau
2016-08-22  5:26       ` Willy Tarreau
2016-08-22 10:55       ` Dave Chinner
2016-08-22 11:08         ` Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 091/180] xfs: fix inode validity check in xfs_iflush_cluster Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 092/180] xfs: skip stale inodes " Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 093/180] KVM: x86: fix OOPS after invalid KVM_SET_DEBUGREGS Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 094/180] ARM: fix PTRACE_SETVFPREGS on SMP systems Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 095/180] arm: oabi compat: add missing access checks Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 096/180] parisc: Fix pagefault crash in unaligned __get_user() call Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 097/180] ecryptfs: forbid opening files without mmap handler Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 098/180] wext: Fix 32 bit iwpriv compatibility issue with 64 bit Kernel Willy Tarreau
2016-08-22  5:35   ` Johannes Berg
2016-08-22  5:47     ` Willy Tarreau
2016-09-22  8:33     ` Jiri Slaby
2016-08-21 15:30 ` [PATCH 3.10 099/180] fix d_walk()/non-delayed __d_free() race Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 100/180] xfs: fix up backport error in fs/xfs/xfs_inode.c Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 101/180] crypto: ux500 - memmove the right size Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 102/180] crypto: gcm - Filter out async ghash if necessary Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 103/180] crypto: scatterwalk - Fix test in scatterwalk_done Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 104/180] sit: correct IP protocol used in ipip6_err Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 105/180] ipmr/ip6mr: Initialize the last assert time of mfc entries Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 106/180] net: alx: Work around the DMA RX overflow issue Willy Tarreau
2016-08-21 15:30   ` Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 107/180] mac80211: mesh: flush mesh paths unconditionally Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 108/180] mac80211_hwsim: Add missing check for HWSIM_ATTR_SIGNAL Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 109/180] IB/mlx4: Properly initialize GRH TClass and FlowLabel in AHs Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 110/180] IB/security: Restrict use of the write() interface Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 111/180] IB/IPoIB: Don't update neigh validity for unresolved entries Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 112/180] IB/mlx4: Fix the SQ size of an RC QP Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 113/180] x86, build: copy ldlinux.c32 to image.iso Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 114/180] kprobes/x86: Clear TF bit in fault on single-stepping Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 115/180] x86/amd_nb: Fix boot crash on non-AMD systems Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 116/180] NFS: Fix another OPEN_DOWNGRADE bug Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 117/180] mm: Export migrate_page_move_mapping and migrate_page_copy Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 118/180] UBIFS: Implement ->migratepage() Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 119/180] cdc_ncm: workaround for EM7455 "silent" data interface Willy Tarreau
2016-08-21 15:30   ` Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 120/180] kvm: Fix irq route entries exceeding KVM_MAX_IRQ_ROUTES Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 121/180] tracing: Handle NULL formats in hold_module_trace_bprintk_format() Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 122/180] base: make module_create_drivers_dir race-free Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 123/180] iio: Fix error handling in iio_trigger_attach_poll_func Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 124/180] staging: iio: accel: fix error check Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 125/180] iio: accel: kxsd9: fix the usage of spi_w8r8() Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 126/180] iio:ad7266: Fix broken regulator error handling Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 127/180] iio:ad7266: Fix probe deferral for vref Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 128/180] tty/vt/keyboard: fix OOB access in do_compute_shiftstate() Willy Tarreau
2016-08-21 15:30 ` [PATCH 3.10 129/180] ALSA: dummy: Fix a use-after-free at closing Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 130/180] ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift() Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 131/180] ALSA: ctl: Stop notification after disconnection Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 132/180] ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 133/180] ALSA: timer: Fix leak in events via snd_timer_user_ccallback Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 134/180] ALSA: timer: Fix leak in events via snd_timer_user_tinterrupt Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 135/180] scsi: fix race between simultaneous decrements of ->host_failed Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 136/180] scsi: remove scsi_end_request Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 137/180] Fix reconnect to not defer smb3 session reconnect long after socket reconnect Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 138/180] xen/acpi: allow xen-acpi-processor driver to load on Xen 4.7 Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 139/180] s390/seccomp: fix error return for filtered system calls Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 140/180] fs/nilfs2: fix potential underflow in call to crc32_le Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 141/180] arc: unwind: warn only once if DW2_UNWIND is disabled Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 142/180] xen/pciback: Fix conf_space read/write overlap check Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 143/180] Revert "ecryptfs: forbid opening files without mmap handler" Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 144/180] ecryptfs: don't allow mmap when the lower fs doesn't support it Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 145/180] ARC: use ASL assembler mnemonic Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 146/180] qeth: delete napi struct when removing a qeth device Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 147/180] mmc: block: fix packed command header endianness Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 148/180] can: at91_can: RX queue could get stuck at high bus load Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 149/180] can: fix oops caused by wrong rtnl dellink usage Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 150/180] ipr: Clear interrupt on croc/crocodile when running with LSI Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 151/180] net: mvneta: set real interrupt per packet for tx_done Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 152/180] sctp: Prevent soft lockup when sctp_accept() is called during a timeout event Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 153/180] x86/mm: Improve switch_mm() barrier comments Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 154/180] KEYS: 64-bit MIPS needs to use compat_sys_keyctl for 32-bit userspace Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 155/180] scsi_lib: correctly retry failed zero length REQ_TYPE_FS commands Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 156/180] block: fix use-after-free in seq file Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 157/180] fuse: fix wrong assignment of ->flags in fuse_send_init() Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 158/180] net/irda: fix NULL pointer dereference on memory allocation failure Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 159/180] gpio: pca953x: Fix NBANK calculation for PCA9536 Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 160/180] hp-wmi: Fix wifi cannot be hard-unblocked Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 161/180] s5p-mfc: Set device name for reserved memory region devs Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 162/180] s5p-mfc: Add release callback for " Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 163/180] Bluetooth: Fix l2cap_sock_setsockopt() with optname BT_RCVMTU Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 164/180] cifs: Check for existing directory when opening file with O_CREAT Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 165/180] netlabel: add address family checks to netlbl_{sock,req}_delattr() Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 166/180] balloon: check the number of available pages in leak balloon Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 167/180] ftrace/recordmcount: Work around for addition of metag magic but not relocations Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 168/180] metag: Fix __cmpxchg_u32 asm constraint for CMP Willy Tarreau
2016-08-21 15:31   ` Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 169/180] ubi: Make volume resize power cut aware Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 170/180] ubi: Fix race condition between ubi device creation and udev Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 171/180] dm flakey: error READ bios during the down_interval Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 172/180] module: Invalidate signatures on force-loaded modules Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 173/180] be2iscsi: Fix bogus WARN_ON length check Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 174/180] squash mm: Export migrate_page_... : also make it non-static Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 175/180] HID: hid-input: Add parentheses to quell gcc warning Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 176/180] ALSA: oxygen: Fix logical-not-parentheses warning Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 177/180] net: rfkill: Do not ignore errors from regulator_enable() Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 178/180] isdn: hfcpci_softirq: get func return to suppress compiler warning Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 179/180] stb6100: fix buffer length check in stb6100_write_reg_range() Willy Tarreau
2016-08-21 15:31 ` [PATCH 3.10 180/180] spi: spi-xilinx: cleanup a check in xilinx_spi_txrx_bufs() Willy Tarreau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1471793510-13022-39-git-send-email-w@1wt.eu \
    --to=w@1wt.eu \
    --cc=3chas3@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luis.henriques@canonical.com \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.