All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Jann Horn <jann@thejh.net>,
	Kees Cook <keescook@chromium.org>,
	Casey Schaufler <casey@schaufler-ca.com>,
	Oleg Nesterov <oleg@redhat.com>, Ingo Molnar <mingo@redhat.com>,
	James Morris <james.l.morris@oracle.com>,
	"Serge E. Hallyn" <serge.hallyn@ubuntu.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Andy Lutomirski <luto@kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Willy Tarreau <w@1wt.eu>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 4.4 029/137] ptrace: use fsuid, fsgid, effective creds for fs access checks
Date: Tue, 23 Feb 2016 19:32:40 -0800	[thread overview]
Message-ID: <20160224033418.239025092@linuxfoundation.org> (raw)
In-Reply-To: <20160224033417.270530882@linuxfoundation.org>

4.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jann Horn <jann@thejh.net>

commit caaee6234d05a58c5b4d05e7bf766131b810a657 upstream.

By checking the effective credentials instead of the real UID / permitted
capabilities, ensure that the calling process actually intended to use its
credentials.

To ensure that all ptrace checks use the correct caller credentials (e.g.
in case out-of-tree code or newly added code omits the PTRACE_MODE_*CREDS
flag), use two new flags and require one of them to be set.

The problem was that when a privileged task had temporarily dropped its
privileges, e.g.  by calling setreuid(0, user_uid), with the intent to
perform following syscalls with the credentials of a user, it still passed
ptrace access checks that the user would not be able to pass.

While an attacker should not be able to convince the privileged task to
perform a ptrace() syscall, this is a problem because the ptrace access
check is reused for things in procfs.

In particular, the following somewhat interesting procfs entries only rely
on ptrace access checks:

 /proc/$pid/stat - uses the check for determining whether pointers
     should be visible, useful for bypassing ASLR
 /proc/$pid/maps - also useful for bypassing ASLR
 /proc/$pid/cwd - useful for gaining access to restricted
     directories that contain files with lax permissions, e.g. in
     this scenario:
     lrwxrwxrwx root root /proc/13020/cwd -> /root/foobar
     drwx------ root root /root
     drwxr-xr-x root root /root/foobar
     -rw-r--r-- root root /root/foobar/secret

Therefore, on a system where a root-owned mode 6755 binary changes its
effective credentials as described and then dumps a user-specified file,
this could be used by an attacker to reveal the memory layout of root's
processes or reveal the contents of files he is not allowed to access
(through /proc/$pid/cwd).

[akpm@linux-foundation.org: fix warning]
Signed-off-by: Jann Horn <jann@thejh.net>
Acked-by: Kees Cook <keescook@chromium.org>
Cc: Casey Schaufler <casey@schaufler-ca.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Morris <james.l.morris@oracle.com>
Cc: "Serge E. Hallyn" <serge.hallyn@ubuntu.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Willy Tarreau <w@1wt.eu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/proc/array.c        |    2 +-
 fs/proc/base.c         |   21 +++++++++++----------
 fs/proc/namespaces.c   |    4 ++--
 include/linux/ptrace.h |   24 +++++++++++++++++++++++-
 kernel/events/core.c   |    2 +-
 kernel/futex.c         |    2 +-
 kernel/futex_compat.c  |    2 +-
 kernel/kcmp.c          |    4 ++--
 kernel/ptrace.c        |   39 +++++++++++++++++++++++++++++++--------
 mm/process_vm_access.c |    2 +-
 security/commoncap.c   |    7 ++++++-
 11 files changed, 80 insertions(+), 29 deletions(-)

--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -395,7 +395,7 @@ static int do_task_stat(struct seq_file
 
 	state = *get_task_state(task);
 	vsize = eip = esp = 0;
-	permitted = ptrace_may_access(task, PTRACE_MODE_READ | PTRACE_MODE_NOAUDIT);
+	permitted = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT);
 	mm = get_task_mm(task);
 	if (mm) {
 		vsize = task_vsize(mm);
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -403,7 +403,7 @@ static const struct file_operations proc
 static int proc_pid_auxv(struct seq_file *m, struct pid_namespace *ns,
 			 struct pid *pid, struct task_struct *task)
 {
-	struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ);
+	struct mm_struct *mm = mm_access(task, PTRACE_MODE_READ_FSCREDS);
 	if (mm && !IS_ERR(mm)) {
 		unsigned int nwords = 0;
 		do {
@@ -430,7 +430,8 @@ static int proc_pid_wchan(struct seq_fil
 
 	wchan = get_wchan(task);
 
-	if (wchan && ptrace_may_access(task, PTRACE_MODE_READ) && !lookup_symbol_name(wchan, symname))
+	if (wchan && ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)
+			&& !lookup_symbol_name(wchan, symname))
 		seq_printf(m, "%s", symname);
 	else
 		seq_putc(m, '0');
@@ -444,7 +445,7 @@ static int lock_trace(struct task_struct
 	int err = mutex_lock_killable(&task->signal->cred_guard_mutex);
 	if (err)
 		return err;
-	if (!ptrace_may_access(task, PTRACE_MODE_ATTACH)) {
+	if (!ptrace_may_access(task, PTRACE_MODE_ATTACH_FSCREDS)) {
 		mutex_unlock(&task->signal->cred_guard_mutex);
 		return -EPERM;
 	}
@@ -697,7 +698,7 @@ static int proc_fd_access_allowed(struct
 	 */
 	task = get_proc_task(inode);
 	if (task) {
-		allowed = ptrace_may_access(task, PTRACE_MODE_READ);
+		allowed = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS);
 		put_task_struct(task);
 	}
 	return allowed;
@@ -732,7 +733,7 @@ static bool has_pid_permissions(struct p
 		return true;
 	if (in_group_p(pid->pid_gid))
 		return true;
-	return ptrace_may_access(task, PTRACE_MODE_READ);
+	return ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS);
 }
 
 
@@ -809,7 +810,7 @@ struct mm_struct *proc_mem_open(struct i
 	struct mm_struct *mm = ERR_PTR(-ESRCH);
 
 	if (task) {
-		mm = mm_access(task, mode);
+		mm = mm_access(task, mode | PTRACE_MODE_FSCREDS);
 		put_task_struct(task);
 
 		if (!IS_ERR_OR_NULL(mm)) {
@@ -1856,7 +1857,7 @@ static int map_files_d_revalidate(struct
 	if (!task)
 		goto out_notask;
 
-	mm = mm_access(task, PTRACE_MODE_READ);
+	mm = mm_access(task, PTRACE_MODE_READ_FSCREDS);
 	if (IS_ERR_OR_NULL(mm))
 		goto out;
 
@@ -2007,7 +2008,7 @@ static struct dentry *proc_map_files_loo
 		goto out;
 
 	result = -EACCES;
-	if (!ptrace_may_access(task, PTRACE_MODE_READ))
+	if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS))
 		goto out_put_task;
 
 	result = -ENOENT;
@@ -2060,7 +2061,7 @@ proc_map_files_readdir(struct file *file
 		goto out;
 
 	ret = -EACCES;
-	if (!ptrace_may_access(task, PTRACE_MODE_READ))
+	if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS))
 		goto out_put_task;
 
 	ret = 0;
@@ -2530,7 +2531,7 @@ static int do_io_accounting(struct task_
 	if (result)
 		return result;
 
-	if (!ptrace_may_access(task, PTRACE_MODE_READ)) {
+	if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) {
 		result = -EACCES;
 		goto out_unlock;
 	}
--- a/fs/proc/namespaces.c
+++ b/fs/proc/namespaces.c
@@ -42,7 +42,7 @@ static const char *proc_ns_follow_link(s
 	if (!task)
 		return error;
 
-	if (ptrace_may_access(task, PTRACE_MODE_READ)) {
+	if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) {
 		error = ns_get_path(&ns_path, task, ns_ops);
 		if (!error)
 			nd_jump_link(&ns_path);
@@ -63,7 +63,7 @@ static int proc_ns_readlink(struct dentr
 	if (!task)
 		return res;
 
-	if (ptrace_may_access(task, PTRACE_MODE_READ)) {
+	if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) {
 		res = ns_get_name(name, sizeof(name), task, ns_ops);
 		if (res >= 0)
 			res = readlink_copy(buffer, buflen, name);
--- a/include/linux/ptrace.h
+++ b/include/linux/ptrace.h
@@ -57,7 +57,29 @@ extern void exit_ptrace(struct task_stru
 #define PTRACE_MODE_READ	0x01
 #define PTRACE_MODE_ATTACH	0x02
 #define PTRACE_MODE_NOAUDIT	0x04
-/* Returns true on success, false on denial. */
+#define PTRACE_MODE_FSCREDS 0x08
+#define PTRACE_MODE_REALCREDS 0x10
+
+/* shorthands for READ/ATTACH and FSCREDS/REALCREDS combinations */
+#define PTRACE_MODE_READ_FSCREDS (PTRACE_MODE_READ | PTRACE_MODE_FSCREDS)
+#define PTRACE_MODE_READ_REALCREDS (PTRACE_MODE_READ | PTRACE_MODE_REALCREDS)
+#define PTRACE_MODE_ATTACH_FSCREDS (PTRACE_MODE_ATTACH | PTRACE_MODE_FSCREDS)
+#define PTRACE_MODE_ATTACH_REALCREDS (PTRACE_MODE_ATTACH | PTRACE_MODE_REALCREDS)
+
+/**
+ * ptrace_may_access - check whether the caller is permitted to access
+ * a target task.
+ * @task: target task
+ * @mode: selects type of access and caller credentials
+ *
+ * Returns true on success, false on denial.
+ *
+ * One of the flags PTRACE_MODE_FSCREDS and PTRACE_MODE_REALCREDS must
+ * be set in @mode to specify whether the access was requested through
+ * a filesystem syscall (should use effective capabilities and fsuid
+ * of the caller) or through an explicit syscall such as
+ * process_vm_writev or ptrace (and should use the real credentials).
+ */
 extern bool ptrace_may_access(struct task_struct *task, unsigned int mode);
 
 static inline int ptrace_reparented(struct task_struct *child)
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -3434,7 +3434,7 @@ find_lively_task_by_vpid(pid_t vpid)
 
 	/* Reuse ptrace permission checks for now. */
 	err = -EACCES;
-	if (!ptrace_may_access(task, PTRACE_MODE_READ))
+	if (!ptrace_may_access(task, PTRACE_MODE_READ_REALCREDS))
 		goto errout;
 
 	return task;
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -2881,7 +2881,7 @@ SYSCALL_DEFINE3(get_robust_list, int, pi
 	}
 
 	ret = -EPERM;
-	if (!ptrace_may_access(p, PTRACE_MODE_READ))
+	if (!ptrace_may_access(p, PTRACE_MODE_READ_REALCREDS))
 		goto err_unlock;
 
 	head = p->robust_list;
--- a/kernel/futex_compat.c
+++ b/kernel/futex_compat.c
@@ -155,7 +155,7 @@ COMPAT_SYSCALL_DEFINE3(get_robust_list,
 	}
 
 	ret = -EPERM;
-	if (!ptrace_may_access(p, PTRACE_MODE_READ))
+	if (!ptrace_may_access(p, PTRACE_MODE_READ_REALCREDS))
 		goto err_unlock;
 
 	head = p->compat_robust_list;
--- a/kernel/kcmp.c
+++ b/kernel/kcmp.c
@@ -122,8 +122,8 @@ SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t
 			&task2->signal->cred_guard_mutex);
 	if (ret)
 		goto err;
-	if (!ptrace_may_access(task1, PTRACE_MODE_READ) ||
-	    !ptrace_may_access(task2, PTRACE_MODE_READ)) {
+	if (!ptrace_may_access(task1, PTRACE_MODE_READ_REALCREDS) ||
+	    !ptrace_may_access(task2, PTRACE_MODE_READ_REALCREDS)) {
 		ret = -EPERM;
 		goto err_unlock;
 	}
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -219,6 +219,14 @@ static int ptrace_has_cap(struct user_na
 static int __ptrace_may_access(struct task_struct *task, unsigned int mode)
 {
 	const struct cred *cred = current_cred(), *tcred;
+	int dumpable = 0;
+	kuid_t caller_uid;
+	kgid_t caller_gid;
+
+	if (!(mode & PTRACE_MODE_FSCREDS) == !(mode & PTRACE_MODE_REALCREDS)) {
+		WARN(1, "denying ptrace access check without PTRACE_MODE_*CREDS\n");
+		return -EPERM;
+	}
 
 	/* May we inspect the given task?
 	 * This check is used both for attaching with ptrace
@@ -228,18 +236,33 @@ static int __ptrace_may_access(struct ta
 	 * because setting up the necessary parent/child relationship
 	 * or halting the specified task is impossible.
 	 */
-	int dumpable = 0;
+
 	/* Don't let security modules deny introspection */
 	if (same_thread_group(task, current))
 		return 0;
 	rcu_read_lock();
+	if (mode & PTRACE_MODE_FSCREDS) {
+		caller_uid = cred->fsuid;
+		caller_gid = cred->fsgid;
+	} else {
+		/*
+		 * Using the euid would make more sense here, but something
+		 * in userland might rely on the old behavior, and this
+		 * shouldn't be a security problem since
+		 * PTRACE_MODE_REALCREDS implies that the caller explicitly
+		 * used a syscall that requests access to another process
+		 * (and not a filesystem syscall to procfs).
+		 */
+		caller_uid = cred->uid;
+		caller_gid = cred->gid;
+	}
 	tcred = __task_cred(task);
-	if (uid_eq(cred->uid, tcred->euid) &&
-	    uid_eq(cred->uid, tcred->suid) &&
-	    uid_eq(cred->uid, tcred->uid)  &&
-	    gid_eq(cred->gid, tcred->egid) &&
-	    gid_eq(cred->gid, tcred->sgid) &&
-	    gid_eq(cred->gid, tcred->gid))
+	if (uid_eq(caller_uid, tcred->euid) &&
+	    uid_eq(caller_uid, tcred->suid) &&
+	    uid_eq(caller_uid, tcred->uid)  &&
+	    gid_eq(caller_gid, tcred->egid) &&
+	    gid_eq(caller_gid, tcred->sgid) &&
+	    gid_eq(caller_gid, tcred->gid))
 		goto ok;
 	if (ptrace_has_cap(tcred->user_ns, mode))
 		goto ok;
@@ -306,7 +329,7 @@ static int ptrace_attach(struct task_str
 		goto out;
 
 	task_lock(task);
-	retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH);
+	retval = __ptrace_may_access(task, PTRACE_MODE_ATTACH_REALCREDS);
 	task_unlock(task);
 	if (retval)
 		goto unlock_creds;
--- a/mm/process_vm_access.c
+++ b/mm/process_vm_access.c
@@ -194,7 +194,7 @@ static ssize_t process_vm_rw_core(pid_t
 		goto free_proc_pages;
 	}
 
-	mm = mm_access(task, PTRACE_MODE_ATTACH);
+	mm = mm_access(task, PTRACE_MODE_ATTACH_REALCREDS);
 	if (!mm || IS_ERR(mm)) {
 		rc = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH;
 		/*
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -137,12 +137,17 @@ int cap_ptrace_access_check(struct task_
 {
 	int ret = 0;
 	const struct cred *cred, *child_cred;
+	const kernel_cap_t *caller_caps;
 
 	rcu_read_lock();
 	cred = current_cred();
 	child_cred = __task_cred(child);
+	if (mode & PTRACE_MODE_FSCREDS)
+		caller_caps = &cred->cap_effective;
+	else
+		caller_caps = &cred->cap_permitted;
 	if (cred->user_ns == child_cred->user_ns &&
-	    cap_issubset(child_cred->cap_permitted, cred->cap_permitted))
+	    cap_issubset(child_cred->cap_permitted, *caller_caps))
 		goto out;
 	if (ns_capable(child_cred->user_ns, CAP_SYS_PTRACE))
 		goto out;

  parent reply	other threads:[~2016-02-24  4:05 UTC|newest]

Thread overview: 149+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24  3:32 [PATCH 4.4 000/137] 4.4.3-stable review Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 001/137] x86/mm: Fix types used in pgprot cacheability flags translations Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 003/137] x86/uaccess/64: Make the __copy_user_nocache() assembly code more readable Greg Kroah-Hartman
2016-02-24  3:32   ` Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 004/137] x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in __copy_user_nocache() Greg Kroah-Hartman
2016-02-24  3:32   ` Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 005/137] x86/mm: Fix vmalloc_fault() to handle large pages properly Greg Kroah-Hartman
2016-02-24  3:32   ` Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 006/137] ALSA: hda - Cancel probe work instead of flush at remove Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 007/137] ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 008/137] ALSA: seq: Fix leak of pool buffer at concurrent writes Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 009/137] ALSA: seq: Fix double port list deletion Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 010/137] phy: twl4030-usb: Relase usb phy on unload Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 011/137] phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 012/137] staging/speakup: Use tty_ldisc_ref() for paste kworker Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 013/137] pty: fix possible use after free of tty->driver_data Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 014/137] pty: make sure super_block is still valid in final /dev/tty close Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 015/137] tty: Add support for PCIe WCH382 2S multi-IO card Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 016/137] serial: 8250_pci: Add Intel Broadwell ports Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 017/137] serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 018/137] ext4: fix scheduling in atomic on group checksum failure Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 019/137] ext4: fix potential integer overflow Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 020/137] ext4: dont read blocks from disk after extents being swapped Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 021/137] btrfs: handle invalid num_stripes in sys_array Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 022/137] Btrfs: fix fitrim discarding device area reserved for boot loaders use Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 023/137] Revert "btrfs: clear PF_NOFREEZE in cleaner_kthread()" Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 025/137] Btrfs: fix invalid page accesses in extent_same (dedup) ioctl Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 026/137] Btrfs: fix page reading in extent_same ioctl leading to csum errors Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 027/137] Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 028/137] Btrfs: fix direct IO requests not reporting IO error to user space Greg Kroah-Hartman
2016-02-24  3:32 ` Greg Kroah-Hartman [this message]
2016-02-24  3:32 ` [PATCH 4.4 030/137] tools lib traceevent: Fix output of %llu for 64 bit values read on 32 bit machines Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 031/137] perf tools: tracepoint_error() can receive e=NULL, robustify it Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 032/137] tracing: Fix freak link error caused by branch tracer Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 033/137] tracepoints: Do not trace when cpu is offline Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 034/137] klist: fix starting point removed bug in klist iterators Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 035/137] scsi: add Synology to 1024 sector blacklist Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 036/137] iscsi-target: Fix potential dead-lock during node acl delete Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 037/137] SCSI: fix crashes in sd and sr runtime PM Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 038/137] drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 039/137] scsi_dh_rdac: always retry MODE SELECT on command lock violation Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 040/137] SCSI: Add Marvell Console to VPD blacklist Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 041/137] scsi: fix soft lockup in scsi_remove_target() on module removal Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 042/137] iio: adis_buffer: Fix out-of-bounds memory access Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 043/137] iio:adc:ti_am335x_adc Fix buffered mode by identifying as software buffer Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 044/137] iio-light: Use a signed return type for ltr501_match_samp_freq() Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 045/137] iio: add HAS_IOMEM dependency to VF610_ADC Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 047/137] iio: dac: mcp4725: set iio name property in sysfs Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 048/137] iio: light: acpi-als: Report data as processed Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 049/137] iio: pressure: mpl115: fix temperature offset sign Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 050/137] iio: inkern: fix a NULL dereference on error Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 051/137] cifs: Ratelimit kernel log messages Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 052/137] cifs: fix race between call_async() and reconnect() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 053/137] cifs_dbg() outputs an uninitialized buffer in cifs_readdir() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 054/137] cifs: fix erroneous return value Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 055/137] NFS: Fix attribute cache revalidation Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 056/137] pNFS/flexfiles: Fix an Oopsable typo in ff_mirror_match_fh() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 057/137] nfs: Fix race in __update_open_stateid() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 058/137] pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 059/137] udf: limit the maximum number of indirect extents in a row Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 060/137] udf: Prevent buffer overrun with multi-byte characters Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 061/137] udf: Check output buffer length when converting name to CS0 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 062/137] SUNRPC: Fixup socket wait for memory Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 063/137] powerpc/eeh: Fix PE location code Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 064/137] powerpc: Simplify module TOC handling Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 065/137] powerpc: Fix dedotify for binutils >= 2.26 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 066/137] powerpc/eeh: Fix stale cached primary bus Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 067/137] powerpc/powernv: Fix stale PE " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 068/137] powerpc/ioda: Set "read" permission when "write" is set Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 069/137] ARM: mvebu: remove duplicated regulator definition in Armada 388 GP Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 071/137] ARM: 8519/1: ICST: try other dividends than 1 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 072/137] ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 073/137] ARM: nomadik: fix up SD/MMC DT settings Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 074/137] ARM: dts: Fix wl12xx missing clocks that cause hangs Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 075/137] ARM: dts: Fix omap5 PMIC control lines for RTC writes Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 076/137] ARM: dts: omap5-board-common: enable rtc and charging of backup battery Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 077/137] ARM: dts: at91: sama5d4 xplained: properly mux phy interrupt Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 078/137] ARM: dts: at91: sama5d4: fix instance id of DBGU Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 079/137] ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 080/137] ARM: dts: at91: sama5d4ek: add phy address and IRQ for macb0 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 081/137] ARM: OMAP2+: Fix wait_dll_lock_timed for rodata Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 082/137] ARM: OMAP2+: Fix l2_inv_api_params " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 083/137] ARM: OMAP2+: Fix l2dis_3630 " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 084/137] ARM: OMAP2+: Fix save_secure_ram_context " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 085/137] ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 086/137] arm64: dma-mapping: fix handling of devices registered before arch_initcall Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 087/137] KVM: arm/arm64: Fix reference to uninitialised VGIC Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 088/137] KVM: PPC: Fix emulation of H_SET_DABR/X on POWER8 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 089/137] KVM: PPC: Fix ONE_REG AltiVec support Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 090/137] perf kvm record/report: unprocessable sample error while recording/reporting guest data Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 091/137] mm: soft-offline: check return value in second __get_any_page() call Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 092/137] libnvdimm: fix namespace object confusion in is_uuid_busy() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 093/137] mm: fix mlock accouting Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 094/137] mm: replace vma_lock_anon_vma with anon_vma_lock_read/write Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 095/137] mm: fix regression in remap_file_pages() emulation Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 096/137] Input: elantech - mark protocols v2 and v3 as semi-mt Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 098/137] string_helpers: fix precision loss for some inputs Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 099/137] Input: vmmouse - fix absolute device registration Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 100/137] iommu/vt-d: Dont skip PCI devices when disabling IOTLB Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 101/137] iommu/amd: Correct the wrong setting of alias DTE in do_attach Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 103/137] iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 104/137] iommu/vt-d: Clear PPR bit to ensure we get more page request interrupts Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 105/137] Revert "xhci: dont finish a TD if we get a short-transfer event mid TD" Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 106/137] xhci: Fix list corruption in urb dequeue at host removal Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 107/137] m32r: fix m32104ut_defconfig build fail Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 108/137] dma-debug: switch check from _text to _stext Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 109/137] scripts/bloat-o-meter: fix python3 syntax error Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 110/137] fs/hugetlbfs/inode.c: fix bugs in hugetlb_vmtruncate_list() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 111/137] numa: fix /proc/<pid>/numa_maps for hugetlbfs on s390 Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 112/137] memcg: only free spare array when readers are done Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 113/137] MAINTAINERS: return arch/sh to maintained state, with new maintainers Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 114/137] radix-tree: fix race in gang lookup Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 115/137] drivers/hwspinlock: fix race between radix tree insertion and lookup Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 116/137] radix-tree: fix oops after radix_tree_iter_retry Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 117/137] dump_stack: avoid potential deadlocks Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 118/137] mm,thp: khugepaged: call pte flush at the time of collapse Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 119/137] intel_scu_ipcutil: underflow in scu_reg_access() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 120/137] ipc/shm: handle removed segments gracefully in shm_mmap() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 121/137] devm_memremap_release(): fix memremapd addr handling Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 122/137] futex: Drop refcount if requeue_pi() acquired the rtmutex Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 123/137] ovl: allow zero size xattr Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 124/137] ovl: use a minimal buffer in ovl_copy_xattr Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 125/137] ovl: check dentry positiveness in ovl_cleanup_whiteouts() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 126/137] ovl: root: copy attr Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 127/137] ovl: setattr: check permissions before copy-up Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 128/137] libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 129/137] xfs: inode recovery readahead can race with inode buffer creation Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 130/137] Revert "xfs: clear PF_NOFREEZE for xfsaild kthread" Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 131/137] xfs: log mount failures dont wait for buffers to be released Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 132/137] prctl: take mmap sem for writing to protect against others Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 133/137] timerfd: Handle relative timers with CONFIG_TIME_LOW_RES proper Greg Kroah-Hartman
2016-02-24  3:34   ` Greg Kroah-Hartman
2016-02-24  3:34 ` Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 134/137] posix-timers: " Greg Kroah-Hartman
2016-02-24  3:34   ` Greg Kroah-Hartman
2016-02-24  3:34 ` Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 135/137] itimers: " Greg Kroah-Hartman
2016-02-24  3:34 ` Greg Kroah-Hartman
2016-02-24  3:34   ` Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 136/137] module: wrapper for symbol name Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 137/137] modules: fix modparam async_probe request Greg Kroah-Hartman
2016-02-24  4:49 ` [PATCH 4.4 000/137] 4.4.3-stable review Mike Galbraith
2016-02-24  5:00   ` Greg Kroah-Hartman
2016-02-24  6:29     ` Mike Galbraith
2016-02-24 18:28 ` Shuah Khan
2016-02-25 18:36   ` Greg Kroah-Hartman
2016-02-25 18:36     ` Greg Kroah-Hartman
2016-02-25  5:53 ` Guenter Roeck
2016-02-25 18:36   ` Greg Kroah-Hartman

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=20160224033418.239025092@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=casey@schaufler-ca.com \
    --cc=ebiederm@xmission.com \
    --cc=james.l.morris@oracle.com \
    --cc=jann@thejh.net \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=oleg@redhat.com \
    --cc=serge.hallyn@ubuntu.com \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=w@1wt.eu \
    /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.