From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Johannes Weiner <hannes@cmpxchg.org>,
"Kirill A. Shutemov" <kirill@shutemov.name>,
Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>,
Shaohua Li <shli@fb.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ben Hutchings <ben.hutchings@codethink.co.uk>
Subject: [PATCH 3.18 83/93] proc: revert /proc/<pid>/maps [stack:TID] annotation
Date: Fri, 6 Apr 2018 15:23:52 +0200 [thread overview]
Message-ID: <20180406084228.785826855@linuxfoundation.org> (raw)
In-Reply-To: <20180406084224.918716300@linuxfoundation.org>
3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Weiner <hannes@cmpxchg.org>
commit 65376df582174ffcec9e6471bf5b0dd79ba05e4a upstream.
Commit b76437579d13 ("procfs: mark thread stack correctly in
proc/<pid>/maps") added [stack:TID] annotation to /proc/<pid>/maps.
Finding the task of a stack VMA requires walking the entire thread list,
turning this into quadratic behavior: a thousand threads means a
thousand stacks, so the rendering of /proc/<pid>/maps needs to look at a
million combinations.
The cost is not in proportion to the usefulness as described in the
patch.
Drop the [stack:TID] annotation to make /proc/<pid>/maps (and
/proc/<pid>/numa_maps) usable again for higher thread counts.
The [stack] annotation inside /proc/<pid>/task/<tid>/maps is retained, as
identifying the stack VMA there is an O(1) operation.
Siddesh said:
"The end users needed a way to identify thread stacks programmatically and
there wasn't a way to do that. I'm afraid I no longer remember (or have
access to the resources that would aid my memory since I changed
employers) the details of their requirement. However, I did do this on my
own time because I thought it was an interesting project for me and nobody
really gave any feedback then as to its utility, so as far as I am
concerned you could roll back the main thread maps information since the
information is available in the thread-specific files"
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
Cc: Shaohua Li <shli@fb.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
Documentation/filesystems/proc.txt | 9 +----
fs/proc/task_mmu.c | 66 ++++++++++++-------------------------
fs/proc/task_nommu.c | 49 +++++++++++----------------
include/linux/mm.h | 3 -
mm/util.c | 27 ---------------
5 files changed, 48 insertions(+), 106 deletions(-)
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -334,7 +334,7 @@ address perms offset dev in
a7cb1000-a7cb2000 ---p 00000000 00:00 0
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
a7eb2000-a7eb3000 ---p 00000000 00:00 0
-a7eb3000-a7ed5000 rw-p 00000000 00:00 0 [stack:1001]
+a7eb3000-a7ed5000 rw-p 00000000 00:00 0
a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6
a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6
@@ -366,7 +366,6 @@ is not associated with a file:
[heap] = the heap of the program
[stack] = the stack of the main process
- [stack:1001] = the stack of the thread with tid 1001
[vdso] = the "virtual dynamic shared object",
the kernel system call handler
@@ -374,10 +373,8 @@ is not associated with a file:
The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
of the individual tasks of a process. In this file you will see a mapping marked
-as [stack] if that task sees it as a stack. This is a key difference from the
-content of /proc/PID/maps, where you will see all mappings that are being used
-as stack by all of those tasks. Hence, for the example above, the task-level
-map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
+as [stack] if that task sees it as a stack. Hence, for the example above, the
+task-level map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
08048000-08049000 r-xp 00000000 03:00 8312 /opt/test
08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -243,23 +243,29 @@ static int do_maps_open(struct inode *in
sizeof(struct proc_maps_private));
}
-static pid_t pid_of_stack(struct proc_maps_private *priv,
- struct vm_area_struct *vma, bool is_pid)
+/*
+ * Indicate if the VMA is a stack for the given task; for
+ * /proc/PID/maps that is the stack of the main task.
+ */
+static int is_stack(struct proc_maps_private *priv,
+ struct vm_area_struct *vma, int is_pid)
{
- struct inode *inode = priv->inode;
- struct task_struct *task;
- pid_t ret = 0;
+ int stack = 0;
+
+ if (is_pid) {
+ stack = vma->vm_start <= vma->vm_mm->start_stack &&
+ vma->vm_end >= vma->vm_mm->start_stack;
+ } else {
+ struct inode *inode = priv->inode;
+ struct task_struct *task;
- rcu_read_lock();
- task = pid_task(proc_pid(inode), PIDTYPE_PID);
- if (task) {
- task = task_of_stack(task, vma, is_pid);
+ rcu_read_lock();
+ task = pid_task(proc_pid(inode), PIDTYPE_PID);
if (task)
- ret = task_pid_nr_ns(task, inode->i_sb->s_fs_info);
+ stack = vma_is_stack_for_task(vma, task);
+ rcu_read_unlock();
}
- rcu_read_unlock();
-
- return ret;
+ return stack;
}
static void
@@ -315,8 +321,6 @@ show_map_vma(struct seq_file *m, struct
name = arch_vma_name(vma);
if (!name) {
- pid_t tid;
-
if (!mm) {
name = "[vdso]";
goto done;
@@ -328,21 +332,8 @@ show_map_vma(struct seq_file *m, struct
goto done;
}
- tid = pid_of_stack(priv, vma, is_pid);
- if (tid != 0) {
- /*
- * Thread stack in /proc/PID/task/TID/maps or
- * the main process stack.
- */
- if (!is_pid || (vma->vm_start <= mm->start_stack &&
- vma->vm_end >= mm->start_stack)) {
- name = "[stack]";
- } else {
- /* Thread stack in /proc/PID/maps */
- seq_pad(m, ' ');
- seq_printf(m, "[stack:%d]", tid);
- }
- }
+ if (is_stack(priv, vma, is_pid))
+ name = "[stack]";
}
done:
@@ -1510,19 +1501,8 @@ static int show_numa_map(struct seq_file
seq_path(m, &file->f_path, "\n\t= ");
} else if (vma->vm_start <= mm->brk && vma->vm_end >= mm->start_brk) {
seq_puts(m, " heap");
- } else {
- pid_t tid = pid_of_stack(proc_priv, vma, is_pid);
- if (tid != 0) {
- /*
- * Thread stack in /proc/PID/task/TID/maps or
- * the main process stack.
- */
- if (!is_pid || (vma->vm_start <= mm->start_stack &&
- vma->vm_end >= mm->start_stack))
- seq_puts(m, " stack");
- else
- seq_printf(m, " stack:%d", tid);
- }
+ } else if (is_stack(proc_priv, vma, is_pid)) {
+ seq_puts(m, " stack");
}
if (is_vm_hugetlb_page(vma))
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
@@ -123,23 +123,26 @@ unsigned long task_statm(struct mm_struc
return size;
}
-static pid_t pid_of_stack(struct proc_maps_private *priv,
- struct vm_area_struct *vma, bool is_pid)
+static int is_stack(struct proc_maps_private *priv,
+ struct vm_area_struct *vma, int is_pid)
{
- struct inode *inode = priv->inode;
- struct task_struct *task;
- pid_t ret = 0;
-
- rcu_read_lock();
- task = pid_task(proc_pid(inode), PIDTYPE_PID);
- if (task) {
- task = task_of_stack(task, vma, is_pid);
+ struct mm_struct *mm = vma->vm_mm;
+ int stack = 0;
+
+ if (is_pid) {
+ stack = vma->vm_start <= mm->start_stack &&
+ vma->vm_end >= mm->start_stack;
+ } else {
+ struct inode *inode = priv->inode;
+ struct task_struct *task;
+
+ rcu_read_lock();
+ task = pid_task(proc_pid(inode), PIDTYPE_PID);
if (task)
- ret = task_pid_nr_ns(task, inode->i_sb->s_fs_info);
+ stack = vma_is_stack_for_task(vma, task);
+ rcu_read_unlock();
}
- rcu_read_unlock();
-
- return ret;
+ return stack;
}
/*
@@ -181,21 +184,9 @@ static int nommu_vma_show(struct seq_fil
if (file) {
seq_pad(m, ' ');
seq_path(m, &file->f_path, "");
- } else if (mm) {
- pid_t tid = pid_of_stack(priv, vma, is_pid);
-
- if (tid != 0) {
- seq_pad(m, ' ');
- /*
- * Thread stack in /proc/PID/task/TID/maps or
- * the main process stack.
- */
- if (!is_pid || (vma->vm_start <= mm->start_stack &&
- vma->vm_end >= mm->start_stack))
- seq_printf(m, "[stack]");
- else
- seq_printf(m, "[stack:%d]", tid);
- }
+ } else if (mm && is_stack(priv, vma, is_pid)) {
+ seq_pad(m, ' ');
+ seq_printf(m, "[stack]");
}
seq_putc(m, '\n');
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1242,8 +1242,7 @@ int set_page_dirty_lock(struct page *pag
int clear_page_dirty_for_io(struct page *page);
int get_cmdline(struct task_struct *task, char *buffer, int buflen);
-extern struct task_struct *task_of_stack(struct task_struct *task,
- struct vm_area_struct *vma, bool in_group);
+int vma_is_stack_for_task(struct vm_area_struct *vma, struct task_struct *t);
extern unsigned long move_page_tables(struct vm_area_struct *vma,
unsigned long old_addr, struct vm_area_struct *new_vma,
--- a/mm/util.c
+++ b/mm/util.c
@@ -185,36 +185,11 @@ void __vma_link_list(struct mm_struct *m
}
/* Check if the vma is being used as a stack by this task */
-static int vm_is_stack_for_task(struct task_struct *t,
- struct vm_area_struct *vma)
+int vma_is_stack_for_task(struct vm_area_struct *vma, struct task_struct *t)
{
return (vma->vm_start <= KSTK_ESP(t) && vma->vm_end >= KSTK_ESP(t));
}
-/*
- * Check if the vma is being used as a stack.
- * If is_group is non-zero, check in the entire thread group or else
- * just check in the current task. Returns the task_struct of the task
- * that the vma is stack for. Must be called under rcu_read_lock().
- */
-struct task_struct *task_of_stack(struct task_struct *task,
- struct vm_area_struct *vma, bool in_group)
-{
- if (vm_is_stack_for_task(task, vma))
- return task;
-
- if (in_group) {
- struct task_struct *t;
-
- for_each_thread(task, t) {
- if (vm_is_stack_for_task(t, vma))
- return t;
- }
- }
-
- return NULL;
-}
-
#if defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT)
void arch_pick_mmap_layout(struct mm_struct *mm)
{
next prev parent reply other threads:[~2018-04-06 13:23 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-06 13:22 [PATCH 3.18 00/93] 3.18.103-stable review Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 01/93] ALSA: usb-audio: Fix parsing descriptor of UAC2 processing unit Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 02/93] ALSA: aloop: Sync stale timer before release Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 03/93] ALSA: aloop: Fix access to not-yet-ready substream via cable Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 04/93] libata: fix length validation of ATAPI-relayed SCSI commands Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 05/93] libata: remove WARN() for DMA or PIO command without data Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 06/93] libata: Apply NOLPM quirk to Crucial MX100 512GB SSDs Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 07/93] libata: disable LPM for Crucial BX100 SSD 500GB drive Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 08/93] libata: Enable queued TRIM for Samsung SSD 860 Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 09/93] libata: Apply NOLPM quirk to Crucial M500 480 and 960GB SSDs Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 10/93] libata: Make Crucial BX100 500GB LPM quirk apply to all firmware versions Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 11/93] libata: Modify quirks for MX100 to limit NCQ_TRIM quirk to MU01 version Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 12/93] drm: udl: Properly check framebuffer mmap offsets Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 13/93] brcmfmac: fix P2P_DEVICE ethernet address generation Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 14/93] tracing: probeevent: Fix to support minus offset from symbol Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 15/93] staging: ncpfs: memory corruption in ncp_read_kernel() Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 16/93] can: cc770: Fix stalls on rt-linux, remove redundant IRQ ack Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 17/93] can: cc770: Fix queue stall & dropped RTR reply Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 18/93] can: cc770: Fix use after free in cc770_tx_interrupt() Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 19/93] tty: vt: fix up tabstops properly Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 20/93] kvm/x86: fix icebp instruction handling Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 21/93] scsi: sg: dont return bogus Sg_requests Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 22/93] [PATCH] Revert "genirq: Use irqd_get_trigger_type to compare the trigger type for shared IRQs" Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 23/93] dccp: check sk for closed state in dccp_sendmsg() Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 24/93] ipv6: fix access to non-linear packet in ndisc_fill_redirect_hdr_option() Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 25/93] l2tp: do not accept arbitrary sockets Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 26/93] net: ethernet: arc: Fix a potential memory leak if an optional regulator is deferred Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 27/93] net/iucv: Free memory obtained by kzalloc Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 28/93] netlink: avoid a double skb free in genlmsg_mcast() Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 29/93] net: Only honor ifindex in IP_PKTINFO if non-0 Greg Kroah-Hartman
2018-04-06 13:22 ` [PATCH 3.18 30/93] skbuff: Fix not waking applications when errors are enqueued Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 31/93] team: Fix double free in error path Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 32/93] s390/qeth: free netdevice when removing a card Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 33/93] s390/qeth: when thread completes, wake up all waiters Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 34/93] s390/qeth: lock read device while queueing next buffer Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 35/93] s390/qeth: on channel error, reject further cmd requests Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 36/93] net: fec: Fix unbalanced PM runtime calls Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 37/93] mtd: jedec_probe: Fix crash in jedec_read_mfr() Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 38/93] ALSA: pcm: Use dma_bytes as size parameter in dma_mmap_coherent() Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 39/93] ALSA: pcm: potential uninitialized return values Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 40/93] perf/hwbp: Simplify the perf-hwbp code, fix documentation Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 41/93] partitions/msdos: Unable to mount UFS 44bsd partitions Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 42/93] usb: gadget: define free_ep_req as universal function Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 43/93] usb: gadget: change len to size_t on alloc_ep_req() Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 44/93] usb: gadget: fix usb_ep_align_maybe endianness and new usb_ep_align Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 45/93] usb: gadget: align buffer size when allocating for OUT endpoint Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 46/93] usb: gadget: f_hid: fix: Prevent accessing released memory Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 47/93] Revert "led: core: Fix brightness setting when setting delay_off=0" Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 48/93] xhci: Fix ring leak in failure path of xhci_alloc_virt_device() Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 49/93] kprobes/x86: Fix to set RWX bits correctly before releasing trampoline Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 50/93] xfrm_user: uncoditionally validate esn replay attribute struct Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 51/93] net: xfrm: use preempt-safe this_cpu_read() in ipcomp_alloc_tfms() Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 52/93] xfrm: Refuse to insert 32 bit userspace socket policies on 64 bit systems Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 53/93] netfilter: bridge: ebt_among: add more missing match size checks Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 54/93] netfilter: x_tables: add and use xt_check_proc_name Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 55/93] Bluetooth: Fix missing encryption refresh on Security Request Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 56/93] scsi: virtio_scsi: always read VPD pages for multiqueue too Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 57/93] media: v4l2-ioctl.c: dont copy back the result for -ENOTTY Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 58/93] [media] vb2: V4L2_BUF_FLAG_DONE is set after DQBUF Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 59/93] media: v4l2-compat-ioctl32.c: add missing VIDIOC_PREPARE_BUF Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 60/93] media: v4l2-compat-ioctl32.c: fix the indentation Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 61/93] media: v4l2-compat-ioctl32.c: move helper functions to __get/put_v4l2_format32 Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 62/93] media: v4l2-compat-ioctl32.c: avoid sizeof(type) Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 63/93] media: v4l2-compat-ioctl32.c: copy m.userptr in put_v4l2_plane32 Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 64/93] media: v4l2-compat-ioctl32.c: fix ctrl_is_pointer Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 65/93] media: v4l2-compat-ioctl32.c: make ctrl_is_pointer work for subdevs Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 66/93] media: v4l2-compat-ioctl32: Copy v4l2_window->global_alpha Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 67/93] media: v4l2-compat-ioctl32.c: copy clip list in put_v4l2_window32 Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 68/93] media: v4l2-compat-ioctl32.c: drop pr_info for unknown buffer type Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 69/93] media: v4l2-compat-ioctl32.c: dont copy back the result for certain errors Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 70/93] media: v4l2-compat-ioctl32.c: refactor compat ioctl32 logic Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 71/93] media: v4l2-ctrls: fix sparse warning Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 72/93] media: media/v4l2-ctrls: volatiles should not generate CH_VALUE Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 73/93] media: v4l2-compat-ioctl32: use compat_u64 for video standard Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 74/93] media: v4l2-compat-ioctl32: initialize a reserved field Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 75/93] USB: serial: ftdi_sio: add RT Systems VX-8 cable Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 76/93] USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 77/93] USB: serial: cp210x: add ELDAT Easywave RX09 id Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 78/93] mei: remove dev_err message on an unsupported ioctl Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 79/93] media: usbtv: prevent double free in error case Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 80/93] parport_pc: Add support for WCH CH382L PCI-E single parallel port card Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 81/93] crypto: ahash - Fix early termination in hash walk Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 82/93] crypto: x86/cast5-avx - fix ECB encryption when long sg follows short one Greg Kroah-Hartman
2018-04-06 13:23 ` Greg Kroah-Hartman [this message]
2018-04-06 13:23 ` [PATCH 3.18 84/93] fs/proc: Stop trying to report thread stacks Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 85/93] Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 86/93] Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 87/93] vt: change SGR 21 to follow the standards Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 88/93] Documentation: pinctrl: palmas: Add ti,palmas-powerhold-override property definition Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 89/93] ARM: dts: dra7: Add power hold and power controller properties to palmas Greg Kroah-Hartman
2018-04-06 13:23 ` [PATCH 3.18 90/93] md/raid10: reset the first at the end of loop Greg Kroah-Hartman
2018-04-06 13:24 ` [PATCH 3.18 91/93] Revert "PCI/MSI: Stop disabling MSI/MSI-X in pci_device_shutdown()" Greg Kroah-Hartman
2018-04-06 13:24 ` [PATCH 3.18 92/93] Revert "ARM: dts: omap3-n900: Fix the audio CODECs reset pin" Greg Kroah-Hartman
2018-04-06 13:24 ` [PATCH 3.18 93/93] Revert "ARM: dts: am335x-pepper: " Greg Kroah-Hartman
2018-04-06 19:11 ` [PATCH 3.18 00/93] 3.18.103-stable review Harsh Shandilya
2018-04-07 6:10 ` Greg Kroah-Hartman
2018-04-06 22:21 ` Shuah Khan
2018-04-08 14:07 ` Guenter Roeck
2018-04-08 15:13 ` Greg Kroah-Hartman
2018-04-08 20:26 ` Greg Kroah-Hartman
2018-04-09 8:13 ` 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=20180406084228.785826855@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=ben.hutchings@codethink.co.uk \
--cc=hannes@cmpxchg.org \
--cc=kirill@shutemov.name \
--cc=linux-kernel@vger.kernel.org \
--cc=shli@fb.com \
--cc=siddhesh.poyarekar@gmail.com \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).