From: Andrew Morton <akpm@linux-foundation.org>
To: adobriyan@gmail.com, dan.carpenter@oracle.com, joe@perches.com,
lkp@intel.com, mm-commits@vger.kernel.org,
viro@zeniv.linux.org.uk
Subject: + proc-faster-open-read-close-with-permanent-files.patch added to -mm tree
Date: Sun, 23 Feb 2020 19:20:12 -0800 [thread overview]
Message-ID: <20200224032012.vPDzd5E7J%akpm@linux-foundation.org> (raw)
In-Reply-To: <20200203173311.6269a8be06a05e5a4aa08a93@linux-foundation.org>
The patch titled
Subject: proc: faster open/read/close with "permanent" files
has been added to the -mm tree. Its filename is
proc-faster-open-read-close-with-permanent-files.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/proc-faster-open-read-close-with-permanent-files.patch
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/proc-faster-open-read-close-with-permanent-files.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Alexey Dobriyan <adobriyan@gmail.com>
Subject: proc: faster open/read/close with "permanent" files
Now that "struct proc_ops" exist we can start putting there stuff which
could not fly with VFS "struct file_operations"...
Most of fs/proc/inode.c file is dedicated to make open/read/.../close
reliable in the event of disappearing /proc entries which usually happens
if module is getting removed. Files like /proc/cpuinfo which never
disappear simply do not need such protection.
Save 2 atomic ops, 1 allocation, 1 free per open/read/close sequence for such
"permanent" files.
Enable "permanent" flag for
/proc/cpuinfo
/proc/kmsg
/proc/modules
/proc/slabinfo
/proc/stat
/proc/sysvipc/*
/proc/swaps
More will come once I figure out foolproof way to prevent out module
authors from marking their stuff "permanent" for performance reasons
when it is not.
This should help with scalability: benchmark is "read /proc/cpuinfo R times
by N threads scattered over the system".
N R t, s (before) t, s (after)
-----------------------------------------------------
64 4096 1.582458 1.530502 -3.2%
256 4096 6.371926 6.125168 -3.9%
1024 4096 25.64888 24.47528 -4.6%
Benchmark source:
#include <chrono>
#include <iostream>
#include <thread>
#include <vector>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
const int NR_CPUS = sysconf(_SC_NPROCESSORS_ONLN);
int N;
const char *filename;
int R;
int xxx = 0;
int glue(int n)
{
cpu_set_t m;
CPU_ZERO(&m);
CPU_SET(n, &m);
return sched_setaffinity(0, sizeof(cpu_set_t), &m);
}
void f(int n)
{
glue(n % NR_CPUS);
while (*(volatile int *)&xxx == 0) {
}
for (int i = 0; i < R; i++) {
int fd = open(filename, O_RDONLY);
char buf[4096];
ssize_t rv = read(fd, buf, sizeof(buf));
asm volatile ("" :: "g" (rv));
close(fd);
}
}
int main(int argc, char *argv[])
{
if (argc < 4) {
std::cerr << "usage: " << argv[0] << ' ' << "N /proc/filename R
";
return 1;
}
N = atoi(argv[1]);
filename = argv[2];
R = atoi(argv[3]);
for (int i = 0; i < NR_CPUS; i++) {
if (glue(i) == 0)
break;
}
std::vector<std::thread> T;
T.reserve(N);
for (int i = 0; i < N; i++) {
T.emplace_back(f, i);
}
auto t0 = std::chrono::system_clock::now();
{
*(volatile int *)&xxx = 1;
for (auto& t: T) {
t.join();
}
}
auto t1 = std::chrono::system_clock::now();
std::chrono::duration<double> dt = t1 - t0;
std::cout << dt.count() << '
';
return 0;
}
P.S.:
Explicit randomization marker is added because adding non-function pointer
will silently disable structure layout randomization.
Link: http://lkml.kernel.org/r/20200222201539.GA22576@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Joe Perches <joe@perches.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/proc/cpuinfo.c | 1
fs/proc/generic.c | 33 ++++++
fs/proc/inode.c | 187 +++++++++++++++++++++++++++-----------
fs/proc/internal.h | 6 +
fs/proc/kmsg.c | 1
fs/proc/stat.c | 1
include/linux/proc_fs.h | 17 +++
ipc/util.c | 1
kernel/module.c | 1
mm/slab_common.c | 1
mm/swapfile.c | 1
11 files changed, 196 insertions(+), 54 deletions(-)
--- a/fs/proc/cpuinfo.c~proc-faster-open-read-close-with-permanent-files
+++ a/fs/proc/cpuinfo.c
@@ -17,6 +17,7 @@ static int cpuinfo_open(struct inode *in
}
static const struct proc_ops cpuinfo_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_open = cpuinfo_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
--- a/fs/proc/generic.c~proc-faster-open-read-close-with-permanent-files
+++ a/fs/proc/generic.c
@@ -531,6 +531,13 @@ struct proc_dir_entry *proc_create_reg(c
return p;
}
+static inline void pde_set_flags(struct proc_dir_entry *pde)
+{
+ if (pde->proc_ops->proc_flags & PROC_ENTRY_PERMANENT) {
+ pde->flags |= PROC_ENTRY_PERMANENT;
+ }
+}
+
struct proc_dir_entry *proc_create_data(const char *name, umode_t mode,
struct proc_dir_entry *parent,
const struct proc_ops *proc_ops, void *data)
@@ -541,6 +548,7 @@ struct proc_dir_entry *proc_create_data(
if (!p)
return NULL;
p->proc_ops = proc_ops;
+ pde_set_flags(p);
return proc_register(parent, p);
}
EXPORT_SYMBOL(proc_create_data);
@@ -572,6 +580,7 @@ static int proc_seq_release(struct inode
}
static const struct proc_ops proc_seq_ops = {
+ /* not permanent -- can call into arbitrary seq_operations */
.proc_open = proc_seq_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
@@ -602,6 +611,7 @@ static int proc_single_open(struct inode
}
static const struct proc_ops proc_single_ops = {
+ /* not permanent -- can call into arbitrary ->single_show */
.proc_open = proc_single_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
@@ -662,9 +672,14 @@ void remove_proc_entry(const char *name,
de = pde_subdir_find(parent, fn, len);
if (de) {
- rb_erase(&de->subdir_node, &parent->subdir);
- if (S_ISDIR(de->mode)) {
- parent->nlink--;
+ if (unlikely(pde_is_permanent(de))) {
+ WARN(1, "removing permanent /proc entry '%s'", de->name);
+ de = NULL;
+ } else {
+ rb_erase(&de->subdir_node, &parent->subdir);
+ if (S_ISDIR(de->mode)) {
+ parent->nlink--;
+ }
}
}
write_unlock(&proc_subdir_lock);
@@ -700,12 +715,24 @@ int remove_proc_subtree(const char *name
write_unlock(&proc_subdir_lock);
return -ENOENT;
}
+ if (unlikely(pde_is_permanent(root))) {
+ write_unlock(&proc_subdir_lock);
+ WARN(1, "removing permanent /proc entry '%s/%s'",
+ root->parent->name, root->name);
+ return -EINVAL;
+ }
rb_erase(&root->subdir_node, &parent->subdir);
de = root;
while (1) {
next = pde_subdir_first(de);
if (next) {
+ if (unlikely(pde_is_permanent(root))) {
+ write_unlock(&proc_subdir_lock);
+ WARN(1, "removing permanent /proc entry '%s/%s'",
+ next->parent->name, next->name);
+ return -EINVAL;
+ }
rb_erase(&next->subdir_node, &de->subdir);
de = next;
continue;
--- a/fs/proc/inode.c~proc-faster-open-read-close-with-permanent-files
+++ a/fs/proc/inode.c
@@ -195,135 +195,204 @@ void proc_entry_rundown(struct proc_dir_
spin_unlock(&de->pde_unload_lock);
}
+static loff_t pde_lseek(struct proc_dir_entry *pde, struct file *file, loff_t offset, int whence)
+{
+ typeof_member(struct proc_ops, proc_lseek) lseek;
+
+ lseek = pde->proc_ops->proc_lseek;
+ if (!lseek)
+ lseek = default_llseek;
+ return lseek(file, offset, whence);
+}
+
static loff_t proc_reg_llseek(struct file *file, loff_t offset, int whence)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
loff_t rv = -EINVAL;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_lseek) lseek;
- lseek = pde->proc_ops->proc_lseek;
- if (!lseek)
- lseek = default_llseek;
- rv = lseek(file, offset, whence);
+ if (pde_is_permanent(pde)) {
+ return pde_lseek(pde, file, offset, whence);
+ } else if (use_pde(pde)) {
+ rv = pde_lseek(pde, file, offset, whence);
unuse_pde(pde);
}
return rv;
}
+static ssize_t pde_read(struct proc_dir_entry *pde, struct file *file, char __user *buf, size_t count, loff_t *ppos)
+{
+ typeof_member(struct proc_ops, proc_read) read;
+
+ read = pde->proc_ops->proc_read;
+ if (read)
+ return read(file, buf, count, ppos);
+ return -EIO;
+}
+
static ssize_t proc_reg_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
ssize_t rv = -EIO;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_read) read;
- read = pde->proc_ops->proc_read;
- if (read)
- rv = read(file, buf, count, ppos);
+ if (pde_is_permanent(pde)) {
+ return pde_read(pde, file, buf, count, ppos);
+ } else if (use_pde(pde)) {
+ rv = pde_read(pde, file, buf, count, ppos);
unuse_pde(pde);
}
return rv;
}
+static ssize_t pde_write(struct proc_dir_entry *pde, struct file *file, const char __user *buf, size_t count, loff_t *ppos)
+{
+ typeof_member(struct proc_ops, proc_write) write;
+
+ write = pde->proc_ops->proc_write;
+ if (write)
+ return write(file, buf, count, ppos);
+ return -EIO;
+}
+
static ssize_t proc_reg_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
ssize_t rv = -EIO;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_write) write;
- write = pde->proc_ops->proc_write;
- if (write)
- rv = write(file, buf, count, ppos);
+ if (pde_is_permanent(pde)) {
+ return pde_write(pde, file, buf, count, ppos);
+ } else if (use_pde(pde)) {
+ rv = pde_write(pde, file, buf, count, ppos);
unuse_pde(pde);
}
return rv;
}
+static __poll_t pde_poll(struct proc_dir_entry *pde, struct file *file, struct poll_table_struct *pts)
+{
+ typeof_member(struct proc_ops, proc_poll) poll;
+
+ poll = pde->proc_ops->proc_poll;
+ if (poll)
+ return poll(file, pts);
+ return DEFAULT_POLLMASK;
+}
+
static __poll_t proc_reg_poll(struct file *file, struct poll_table_struct *pts)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
__poll_t rv = DEFAULT_POLLMASK;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_poll) poll;
- poll = pde->proc_ops->proc_poll;
- if (poll)
- rv = poll(file, pts);
+ if (pde_is_permanent(pde)) {
+ return pde_poll(pde, file, pts);
+ } else if (use_pde(pde)) {
+ rv = pde_poll(pde, file, pts);
unuse_pde(pde);
}
return rv;
}
+static long pde_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
+{
+ typeof_member(struct proc_ops, proc_ioctl) ioctl;
+
+ ioctl = pde->proc_ops->proc_ioctl;
+ if (ioctl)
+ return ioctl(file, cmd, arg);
+ return -ENOTTY;
+}
+
static long proc_reg_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
long rv = -ENOTTY;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_ioctl) ioctl;
- ioctl = pde->proc_ops->proc_ioctl;
- if (ioctl)
- rv = ioctl(file, cmd, arg);
+ if (pde_is_permanent(pde)) {
+ return pde_ioctl(pde, file, cmd, arg);
+ } else if (use_pde(pde)) {
+ rv = pde_ioctl(pde, file, cmd, arg);
unuse_pde(pde);
}
return rv;
}
#ifdef CONFIG_COMPAT
+static long pde_compat_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
+{
+ typeof_member(struct proc_ops, proc_compat_ioctl) compat_ioctl;
+
+ compat_ioctl = pde->proc_ops->proc_compat_ioctl;
+ if (compat_ioctl)
+ return compat_ioctl(file, cmd, arg);
+ return -ENOTTY;
+}
+
static long proc_reg_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
long rv = -ENOTTY;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_compat_ioctl) compat_ioctl;
-
- compat_ioctl = pde->proc_ops->proc_compat_ioctl;
- if (compat_ioctl)
- rv = compat_ioctl(file, cmd, arg);
+ if (pde_is_permanent(pde)) {
+ return pde_compat_ioctl(pde, file, cmd, arg);
+ } else if (use_pde(pde)) {
+ rv = pde_compat_ioctl(pde, file, cmd, arg);
unuse_pde(pde);
}
return rv;
}
#endif
+static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_area_struct *vma)
+{
+ typeof_member(struct proc_ops, proc_mmap) mmap;
+
+ mmap = pde->proc_ops->proc_mmap;
+ if (mmap)
+ return mmap(file, vma);
+ return -EIO;
+}
+
static int proc_reg_mmap(struct file *file, struct vm_area_struct *vma)
{
struct proc_dir_entry *pde = PDE(file_inode(file));
int rv = -EIO;
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_mmap) mmap;
- mmap = pde->proc_ops->proc_mmap;
- if (mmap)
- rv = mmap(file, vma);
+ if (pde_is_permanent(pde)) {
+ return pde_mmap(pde, file, vma);
+ } else if (use_pde(pde)) {
+ rv = pde_mmap(pde, file, vma);
unuse_pde(pde);
}
return rv;
}
static unsigned long
-proc_reg_get_unmapped_area(struct file *file, unsigned long orig_addr,
+pde_get_unmapped_area(struct proc_dir_entry *pde, struct file *file, unsigned long orig_addr,
unsigned long len, unsigned long pgoff,
unsigned long flags)
{
- struct proc_dir_entry *pde = PDE(file_inode(file));
- unsigned long rv = -EIO;
-
- if (use_pde(pde)) {
- typeof_member(struct proc_ops, proc_get_unmapped_area) get_area;
+ typeof_member(struct proc_ops, proc_get_unmapped_area) get_area;
- get_area = pde->proc_ops->proc_get_unmapped_area;
+ get_area = pde->proc_ops->proc_get_unmapped_area;
#ifdef CONFIG_MMU
- if (!get_area)
- get_area = current->mm->get_unmapped_area;
+ if (!get_area)
+ get_area = current->mm->get_unmapped_area;
#endif
+ if (get_area)
+ return get_area(file, orig_addr, len, pgoff, flags);
+ return orig_addr;
+}
+
+static unsigned long
+proc_reg_get_unmapped_area(struct file *file, unsigned long orig_addr,
+ unsigned long len, unsigned long pgoff,
+ unsigned long flags)
+{
+ struct proc_dir_entry *pde = PDE(file_inode(file));
+ unsigned long rv = -EIO;
- if (get_area)
- rv = get_area(file, orig_addr, len, pgoff, flags);
- else
- rv = orig_addr;
+ if (pde_is_permanent(pde)) {
+ return pde_get_unmapped_area(pde, file, orig_addr, len, pgoff, flags);
+ } else if (use_pde(pde)) {
+ rv = pde_get_unmapped_area(pde, file, orig_addr, len, pgoff, flags);
unuse_pde(pde);
}
return rv;
@@ -337,6 +406,13 @@ static int proc_reg_open(struct inode *i
typeof_member(struct proc_ops, proc_release) release;
struct pde_opener *pdeo;
+ if (pde_is_permanent(pde)) {
+ open = pde->proc_ops->proc_open;
+ if (open)
+ rv = open(inode, file);
+ return rv;
+ }
+
/*
* Ensure that
* 1) PDE's ->release hook will be called no matter what
@@ -386,6 +462,17 @@ static int proc_reg_release(struct inode
{
struct proc_dir_entry *pde = PDE(inode);
struct pde_opener *pdeo;
+
+ if (pde_is_permanent(pde)) {
+ typeof_member(struct proc_ops, proc_release) release;
+
+ release = pde->proc_ops->proc_release;
+ if (release) {
+ return release(inode, file);
+ }
+ return 0;
+ }
+
spin_lock(&pde->pde_unload_lock);
list_for_each_entry(pdeo, &pde->pde_openers, lh) {
if (pdeo->file == file) {
--- a/fs/proc/internal.h~proc-faster-open-read-close-with-permanent-files
+++ a/fs/proc/internal.h
@@ -61,6 +61,7 @@ struct proc_dir_entry {
struct rb_node subdir_node;
char *name;
umode_t mode;
+ u8 flags;
u8 namelen;
char inline_name[];
} __randomize_layout;
@@ -73,6 +74,11 @@ struct proc_dir_entry {
0)
#define SIZEOF_PDE_INLINE_NAME (SIZEOF_PDE - sizeof(struct proc_dir_entry))
+static inline bool pde_is_permanent(const struct proc_dir_entry *pde)
+{
+ return pde->flags & PROC_ENTRY_PERMANENT;
+}
+
extern struct kmem_cache *proc_dir_entry_cache;
void pde_free(struct proc_dir_entry *pde);
--- a/fs/proc/kmsg.c~proc-faster-open-read-close-with-permanent-files
+++ a/fs/proc/kmsg.c
@@ -50,6 +50,7 @@ static __poll_t kmsg_poll(struct file *f
static const struct proc_ops kmsg_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_read = kmsg_read,
.proc_poll = kmsg_poll,
.proc_open = kmsg_open,
--- a/fs/proc/stat.c~proc-faster-open-read-close-with-permanent-files
+++ a/fs/proc/stat.c
@@ -224,6 +224,7 @@ static int stat_open(struct inode *inode
}
static const struct proc_ops stat_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_open = stat_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
--- a/include/linux/proc_fs.h~proc-faster-open-read-close-with-permanent-files
+++ a/include/linux/proc_fs.h
@@ -5,6 +5,7 @@
#ifndef _LINUX_PROC_FS_H
#define _LINUX_PROC_FS_H
+#include <linux/compiler.h>
#include <linux/types.h>
#include <linux/fs.h>
@@ -12,7 +13,21 @@ struct proc_dir_entry;
struct seq_file;
struct seq_operations;
+enum {
+ /*
+ * All /proc entries using this ->proc_ops instance are never removed.
+ *
+ * If in doubt, ignore this flag.
+ */
+#ifdef MODULE
+ PROC_ENTRY_PERMANENT = 0U,
+#else
+ PROC_ENTRY_PERMANENT = 1U << 0,
+#endif
+};
+
struct proc_ops {
+ unsigned int proc_flags;
int (*proc_open)(struct inode *, struct file *);
ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *);
ssize_t (*proc_write)(struct file *, const char __user *, size_t, loff_t *);
@@ -25,7 +40,7 @@ struct proc_ops {
#endif
int (*proc_mmap)(struct file *, struct vm_area_struct *);
unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
-};
+} __randomize_layout;
#ifdef CONFIG_PROC_FS
--- a/ipc/util.c~proc-faster-open-read-close-with-permanent-files
+++ a/ipc/util.c
@@ -885,6 +885,7 @@ static int sysvipc_proc_release(struct i
}
static const struct proc_ops sysvipc_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_open = sysvipc_proc_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
--- a/kernel/module.c~proc-faster-open-read-close-with-permanent-files
+++ a/kernel/module.c
@@ -4355,6 +4355,7 @@ static int modules_open(struct inode *in
}
static const struct proc_ops modules_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_open = modules_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
--- a/mm/slab_common.c~proc-faster-open-read-close-with-permanent-files
+++ a/mm/slab_common.c
@@ -1581,6 +1581,7 @@ static int slabinfo_open(struct inode *i
}
static const struct proc_ops slabinfo_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_open = slabinfo_open,
.proc_read = seq_read,
.proc_write = slabinfo_write,
--- a/mm/swapfile.c~proc-faster-open-read-close-with-permanent-files
+++ a/mm/swapfile.c
@@ -2797,6 +2797,7 @@ static int swaps_open(struct inode *inod
}
static const struct proc_ops swaps_proc_ops = {
+ .proc_flags = PROC_ENTRY_PERMANENT,
.proc_open = swaps_open,
.proc_read = seq_read,
.proc_lseek = seq_lseek,
_
Patches currently in -mm which might be from adobriyan@gmail.com are
ramfs-support-o_tmpfile.patch
proc-faster-open-read-close-with-permanent-files.patch
elf-delete-loc-variable.patch
elf-allocate-less-for-static-executable.patch
elf-dont-free-interpreters-elf-pheaders-on-common-path.patch
next prev parent reply other threads:[~2020-02-24 3:20 UTC|newest]
Thread overview: 244+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-04 1:33 incoming Andrew Morton
2020-02-04 1:33 ` [patch 01/67] ocfs2: fix oops when writing cloned file Andrew Morton
2020-02-04 1:33 ` [patch 02/67] mm/page_alloc.c: fix uninitialized memmaps on a partially populated last section Andrew Morton
2020-02-04 1:33 ` [patch 03/67] fs/proc/page.c: allow inspection of last section and fix end detection Andrew Morton
2020-02-04 1:33 ` [patch 04/67] mm/page_alloc.c: initialize memmap of unavailable memory directly Andrew Morton
2020-02-04 1:33 ` [patch 05/67] mm/page_alloc: fix and rework pfn handling in memmap_init_zone() Andrew Morton
2020-02-04 1:34 ` [patch 06/67] mm: factor out next_present_section_nr() Andrew Morton
[not found] ` <CAHk-=widODg0oV6uNrpTvA3tFVN706o-nrWC5XBL9RZ4y3RFcg@mail.gmail.com>
2020-02-04 4:29 ` Andrew Morton
2020-02-04 1:34 ` [patch 07/67] mm/memmap_init: update variable name in memmap_init_zone Andrew Morton
2020-02-04 1:34 ` [patch 08/67] mm/memory_hotplug: poison memmap in remove_pfn_range_from_zone() Andrew Morton
2020-02-04 1:34 ` [patch 09/67] mm/memory_hotplug: we always have a zone in find_(smallest|biggest)_section_pfn Andrew Morton
2020-02-04 1:34 ` [patch 10/67] mm/memory_hotplug: don't check for "all holes" in shrink_zone_span() Andrew Morton
2020-02-04 1:34 ` [patch 11/67] mm/memory_hotplug: drop local variables " Andrew Morton
2020-02-04 1:34 ` [patch 12/67] mm/memory_hotplug: cleanup __remove_pages() Andrew Morton
2020-02-04 1:34 ` [patch 13/67] mm/memory_hotplug: drop valid_start/valid_end from test_pages_in_a_zone() Andrew Morton
2020-02-04 1:34 ` [patch 14/67] smp_mb__{before,after}_atomic(): update Documentation Andrew Morton
2020-02-04 1:34 ` [patch 15/67] ipc/mqueue.c: remove duplicated code Andrew Morton
2020-02-04 1:34 ` [patch 16/67] ipc/mqueue.c: update/document memory barriers Andrew Morton
2020-02-04 1:34 ` [patch 17/67] ipc/msg.c: update and document " Andrew Morton
2020-02-04 1:34 ` [patch 18/67] ipc/sem.c: document and update " Andrew Morton
2020-02-04 1:34 ` [patch 19/67] ipc/msg.c: consolidate all xxxctl_down() functions Andrew Morton
2020-02-04 1:34 ` [patch 20/67] drivers/block/null_blk_main.c: fix layout Andrew Morton
2020-02-04 1:34 ` [patch 21/67] drivers/block/null_blk_main.c: fix uninitialized var warnings Andrew Morton
2020-02-04 1:34 ` [patch 22/67] pinctrl: fix pxa2xx.c build warnings Andrew Morton
2020-02-04 1:34 ` [patch 23/67] mm: remove __krealloc Andrew Morton
2020-02-04 1:35 ` [patch 24/67] mm: add generic p?d_leaf() macros Andrew Morton
2020-02-04 1:35 ` [patch 25/67] arc: mm: add p?d_leaf() definitions Andrew Morton
2020-02-04 1:35 ` [patch 26/67] arm: " Andrew Morton
2020-02-04 1:35 ` [patch 27/67] arm64: " Andrew Morton
2020-02-04 1:35 ` [patch 28/67] mips: " Andrew Morton
2020-02-04 1:35 ` [patch 29/67] powerpc: " Andrew Morton
2020-02-04 1:35 ` [patch 30/67] riscv: " Andrew Morton
2020-02-04 1:35 ` [patch 31/67] s390: " Andrew Morton
2020-02-04 1:35 ` [patch 32/67] sparc: " Andrew Morton
2020-02-04 1:35 ` [patch 33/67] x86: " Andrew Morton
2020-02-04 1:35 ` [patch 34/67] mm: pagewalk: add p4d_entry() and pgd_entry() Andrew Morton
2020-02-04 1:35 ` [patch 35/67] mm: pagewalk: allow walking without vma Andrew Morton
2020-02-04 1:35 ` [patch 36/67] mm: pagewalk: don't lock PTEs for walk_page_range_novma() Andrew Morton
2020-02-04 1:35 ` [patch 37/67] mm: pagewalk: fix termination condition in walk_pte_range() Andrew Morton
2020-02-04 1:36 ` [patch 38/67] mm: pagewalk: add 'depth' parameter to pte_hole Andrew Morton
2020-02-04 1:36 ` [patch 39/67] x86: mm: point to struct seq_file from struct pg_state Andrew Morton
2020-02-04 1:36 ` [patch 40/67] x86: mm+efi: convert ptdump_walk_pgd_level() to take a mm_struct Andrew Morton
2020-02-04 1:36 ` [patch 41/67] x86: mm: convert ptdump_walk_pgd_level_debugfs() to take an mm_struct Andrew Morton
2020-02-04 1:36 ` [patch 42/67] mm: add generic ptdump Andrew Morton
2020-02-04 1:36 ` [patch 43/67] x86: mm: convert dump_pagetables to use walk_page_range Andrew Morton
2020-02-04 1:36 ` [patch 44/67] arm64: mm: convert mm/dump.c to use walk_page_range() Andrew Morton
2020-02-04 1:36 ` [patch 45/67] arm64: mm: display non-present entries in ptdump Andrew Morton
2020-02-04 1:36 ` [patch 46/67] mm: ptdump: reduce level numbers by 1 in note_page() Andrew Morton
2020-02-04 1:36 ` [patch 47/67] x86: mm: avoid allocating struct mm_struct on the stack Andrew Morton
2020-02-04 1:36 ` [patch 48/67] powerpc/mmu_gather: enable RCU_TABLE_FREE even for !SMP case Andrew Morton
2020-02-04 1:36 ` [patch 49/67] mm/mmu_gather: invalidate TLB correctly on batch allocation failure and flush Andrew Morton
2020-02-04 1:36 ` [patch 50/67] asm-generic/tlb: avoid potential double flush Andrew Morton
2020-02-04 1:36 ` [patch 51/67] asm-gemeric/tlb: remove stray function declarations Andrew Morton
2020-02-04 1:36 ` [patch 52/67] asm-generic/tlb: add missing CONFIG symbol Andrew Morton
2020-02-04 1:37 ` [patch 53/67] asm-generic/tlb: rename HAVE_RCU_TABLE_FREE Andrew Morton
2020-02-04 1:37 ` [patch 54/67] asm-generic/tlb: rename HAVE_MMU_GATHER_PAGE_SIZE Andrew Morton
2020-02-04 1:37 ` [patch 55/67] asm-generic/tlb: rename HAVE_MMU_GATHER_NO_GATHER Andrew Morton
2020-02-04 1:37 ` [patch 56/67] asm-generic/tlb: provide MMU_GATHER_TABLE_FREE Andrew Morton
2020-02-04 1:37 ` [patch 57/67] proc: decouple proc from VFS with "struct proc_ops" Andrew Morton
2020-02-04 1:37 ` [patch 58/67] proc: convert everything to " Andrew Morton
2020-02-04 1:37 ` [patch 59/67] lib/string: add strnchrnul() Andrew Morton
2020-02-04 1:37 ` [patch 60/67] bitops: more BITS_TO_* macros Andrew Morton
2020-02-04 1:37 ` [patch 61/67] lib: add test for bitmap_parse() Andrew Morton
2020-02-04 1:37 ` [patch 62/67] lib: make bitmap_parse_user a wrapper on bitmap_parse Andrew Morton
2020-02-04 1:37 ` [patch 63/67] lib: rework bitmap_parse() Andrew Morton
2020-02-04 1:37 ` [patch 64/67] lib: new testcases for bitmap_parse{_user} Andrew Morton
2020-02-04 1:37 ` [patch 65/67] include/linux/cpumask.h: don't calculate length of the input string Andrew Morton
2020-02-04 1:37 ` [patch 66/67] treewide: remove redundant IS_ERR() before error code check Andrew Morton
2020-02-04 1:37 ` [patch 67/67] ARM: dma-api: fix max_pfn off-by-one error in __dma_supported() Andrew Morton
2020-02-04 1:48 ` [merged] mips-kdb-remove-old-workaround-for-backtracing-on-other-cpus.patch removed from -mm tree Andrew Morton
2020-02-04 1:48 ` [merged] kdb-kdb_current_regs-should-be-private.patch " Andrew Morton
2020-02-04 1:48 ` [merged] kdb-kdb_current_task-shouldnt-be-exported.patch " Andrew Morton
2020-02-04 1:48 ` [merged] kdb-gid-rid-of-implicit-setting-of-the-current-task-regs.patch " Andrew Morton
2020-02-04 1:48 ` [merged] kdb-get-rid-of-confusing-diag-msg-from-rd-if-current-task-has-no-regs.patch " Andrew Morton
2020-02-04 1:49 ` [obsolete] linux-next-git-rejects.patch " Andrew Morton
[not found] ` <CAHk-=whog86e4fRY_sxHqAos6spwAi_4aFF49S7h5C4XAZM2qw@mail.gmail.com>
2020-02-04 2:46 ` incoming Andrew Morton
2020-02-10 0:55 ` + mm-dont-prepare-anon_vma-if-vma-has-vm_wipeonfork.patch added to -mm tree Andrew Morton
2020-02-10 0:55 ` + revert-mm-rmapc-reuse-mergeable-anon_vma-as-parent-when-fork.patch " Andrew Morton
2020-02-10 0:55 ` + mm-set-vm_next-and-vm_prev-to-null-in-vm_area_dup.patch " Andrew Morton
2020-02-10 1:03 ` + mm-list_lru-fix-a-data-race-in-list_lru_count_one.patch " Andrew Morton
2020-02-10 1:05 ` + mm-frontswap-mark-various-intentional-data-races.patch " Andrew Morton
2020-02-10 1:22 ` + mm-add-mremap_dontunmap-to-mremap.patch " Andrew Morton
2020-02-10 1:35 ` + mm-sparsemem-get-address-to-page-struct-instead-of-address-to-pfn.patch " Andrew Morton
2020-02-10 1:48 ` + mm-swapfile-fix-and-annotate-various-data-races.patch " Andrew Morton
2020-02-10 2:01 ` + mm-page_io-mark-various-intentional-data-races.patch " Andrew Morton
2020-02-10 2:01 ` + mm-swap_state-mark-various-intentional-data-races.patch " Andrew Morton
2020-02-10 4:00 ` + linux-pipe_fs_ih-fix-kernel-doc-warnings-after-wait-was-split.patch " Andrew Morton
2020-02-10 4:16 ` + mm-swap-move-inode_lock-out-of-claim_swapfile.patch " Andrew Morton
2020-02-10 4:20 ` + selftests-vm-add-missed-tests-in-run_vmtests.patch " Andrew Morton
2020-02-10 4:21 ` + mm-memcg-fix-build-error-around-the-usage-of-kmem_caches.patch " Andrew Morton
2020-02-10 4:23 ` + mm-memcontrol-fix-a-data-race-in-scan-count.patch " Andrew Morton
2020-02-10 4:29 ` + get_maintainer-remove-uses-of-p-for-maintainer-name.patch " Andrew Morton
2020-02-10 4:37 ` + scripts-get_maintainerpl-deprioritize-old-fixes-addresses.patch " Andrew Morton
2020-02-11 5:33 ` + mm-vmpressure-dont-need-call-kfree-if-kstrndup-fails.patch " Andrew Morton
2020-02-11 5:34 ` + mm-vmpressure-use-mem_cgroup_is_root-api.patch " Andrew Morton
2020-02-11 5:39 ` + mm-filemap-fix-a-data-race-in-filemap_fault.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-split-get_user_pages_remote-into-two-routines.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-pass-a-flags-arg-to-__gup_device_-functions.patch " Andrew Morton
2020-02-11 5:50 ` + mm-introduce-page_ref_sub_return.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-pass-gup-flags-to-two-more-routines.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-require-foll_get-for-get_user_pages_fast.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-track-foll_pin-pages.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-page-hpage_pinned_refcount-exact-pin-counts-for-huge-pages.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup-proc-vmstat-pin_user_pages-foll_pin-reporting.patch " Andrew Morton
2020-02-11 5:50 ` + mm-gup_benchmark-support-pin_user_pages-and-related-calls.patch " Andrew Morton
2020-02-11 5:50 ` + selftests-vm-run_vmtests-invoke-gup_benchmark-with-basic-foll_pin-coverage.patch " Andrew Morton
2020-02-11 5:50 ` + mm-improve-dump_page-for-compound-pages.patch " Andrew Morton
2020-02-11 5:51 ` + mm-dump_page-additional-diagnostics-for-huge-pinned-pages.patch " Andrew Morton
2020-02-11 6:05 ` + mm-mapping_dirty_helpers-update-huge-page-table-entry-callbacks.patch " Andrew Morton
2020-02-11 6:06 ` + zswap-allow-setting-default-status-compressor-and-allocator-in-kconfig.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-add-hugetlb_cgroup-reservation-counter.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-add-interface-for-charge-uncharge-hugetlb-reservations.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-add-reservation-accounting-for-private-mappings.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb-disable-region_add-file_region-coalescing.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-add-accounting-for-shared-mappings.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-support-noreserve-mappings.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb-support-file_region-coalescing-again.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-add-hugetlb_cgroup-reservation-tests.patch " Andrew Morton
2020-02-11 23:19 ` + hugetlb_cgroup-add-hugetlb_cgroup-reservation-docs.patch " Andrew Morton
2020-02-11 23:21 ` + lib-bch-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-02-11 23:21 ` + lib-objagg-replace-zero-length-arrays-with-flexible-array-member.patch " Andrew Morton
2020-02-11 23:21 ` + lib-ts_bm-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-02-11 23:21 ` + lib-ts_fsm-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-02-11 23:21 ` + lib-ts_kmp-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-02-11 23:23 ` + mm-rmap-annotate-a-data-race-at-tlb_flush_batched.patch " Andrew Morton
2020-02-11 23:26 ` + mm-mempool-fix-a-data-race-in-mempool_free.patch " Andrew Morton
2020-02-11 23:53 ` + mm-kmemleak-annotate-a-data-race-in-checksum.patch " Andrew Morton
2020-02-12 0:19 ` + mm-adjust-shuffle-code-to-allow-for-future-coalescing.patch " Andrew Morton
2020-02-12 0:19 ` + mm-use-zone-and-order-instead-of-free-area-in-free_list-manipulators.patch " Andrew Morton
2020-02-12 0:19 ` + mm-add-function-__putback_isolated_page.patch " Andrew Morton
2020-02-12 0:19 ` + mm-introduce-reported-pages.patch " Andrew Morton
2020-02-12 0:19 ` + virtio-balloon-pull-page-poisoning-config-out-of-free-page-hinting.patch " Andrew Morton
2020-02-12 0:19 ` + virtio-balloon-add-support-for-providing-free-page-reports-to-host.patch " Andrew Morton
2020-02-12 0:20 ` + mm-page_reporting-rotate-reported-pages-to-the-tail-of-the-list.patch " Andrew Morton
2020-02-12 0:20 ` + mm-page_reporting-add-budget-limit-on-how-many-pages-can-be-reported-per-pass.patch " Andrew Morton
2020-02-12 0:20 ` + mm-page_reporting-add-free-page-reporting-documentation.patch " Andrew Morton
2020-02-12 0:30 ` + mm-page_counter-fix-various-data-races.patch " Andrew Morton
2020-02-12 0:33 ` + memcg-lost-css_put-in-memcg_expand_shrinker_maps.patch " Andrew Morton
2020-02-12 21:16 ` + mm-page_counter-fix-various-data-races-at-memsw.patch " Andrew Morton
2020-02-12 21:16 ` [to-be-updated] mm-page_counter-fix-various-data-races.patch removed from " Andrew Morton
2020-02-12 21:18 ` + mm-swapfilec-fix-comments-for-swapcache_prepare.patch added to " Andrew Morton
2020-02-12 21:22 ` + mm-util-annotate-an-data-race-at-vm_committed_as.patch " Andrew Morton
2020-02-12 22:08 ` + asm-generic-fix-unistd_32h-generation-format.patch " Andrew Morton
2020-02-12 22:26 ` + mm-dont-bother-dropping-mmap_sem-for-zero-size-readahead.patch " Andrew Morton
2020-02-12 22:34 ` + lib-scatterlist-fix-sg_copy_buffer-kerneldoc.patch " Andrew Morton
2020-02-12 22:59 ` + mm-allocate-shrinker_map-on-appropriate-numa-node.patch " Andrew Morton
2020-02-12 23:05 ` + init-cleanup-anon_inodes-and-old-io-schedulers-options.patch " Andrew Morton
2020-02-12 23:10 ` + checkpatch-check-spdx-tags-in-yaml-files.patch " Andrew Morton
2020-02-13 2:16 ` + drivers-base-memoryc-indicate-all-memory-blocks-as-removable.patch " Andrew Morton
2020-02-13 2:56 ` + mm-refactor-insert_page-to-prepare-for-batched-lock-insert.patch " Andrew Morton
2020-02-13 2:56 ` + mm-add-vm_insert_pages.patch " Andrew Morton
2020-02-13 2:57 ` + mm-add-vm_insert_pages-fix.patch " Andrew Morton
2020-02-13 2:57 ` + net-zerocopy-use-vm_insert_pages-for-tcp-rcv-zerocopy.patch " Andrew Morton
2020-02-13 2:57 ` + net-zerocopy-use-vm_insert_pages-for-tcp-rcv-zerocopy-fix.patch " Andrew Morton
2020-02-14 2:50 ` + mm-add-vm_insert_pages-2.patch " Andrew Morton
2020-02-14 2:52 ` + mm-migratec-no-need-to-check-for-i-start-in-do_pages_move.patch " Andrew Morton
2020-02-14 2:52 ` + mm-migratec-wrap-do_move_pages_to_node-and-store_status.patch " Andrew Morton
2020-02-14 2:52 ` + mm-migratec-check-pagelist-in-move_pages_and_store_status.patch " Andrew Morton
2020-02-14 2:52 ` + mm-migratec-unify-not-queued-for-migration-handling-in-do_pages_move.patch " Andrew Morton
2020-02-14 2:57 ` + mm-migratec-migrate-pg_readahead-flag.patch " Andrew Morton
2020-02-14 2:57 ` + mm-migratec-migrate-pg_readahead-flag-fix.patch " Andrew Morton
2020-02-14 2:58 ` + include-remove-highmemh-from-pagemaph.patch " Andrew Morton
2020-02-14 3:06 ` + mm-kmemleak-annotate-various-data-races-obj-ptr.patch " Andrew Morton
2020-02-14 3:06 ` [to-be-updated] mm-kmemleak-annotate-a-data-race-in-checksum.patch removed from " Andrew Morton
2020-02-14 3:26 ` + mm-swapfile-fix-and-annotate-various-data-races-v2.patch added to " Andrew Morton
2020-02-14 3:27 ` + mm-page_io-mark-various-intentional-data-races-v2.patch " Andrew Morton
2020-02-14 5:10 ` + checkpatch-support-base-commit-format.patch " Andrew Morton
2020-02-14 5:11 ` + checkpatch-prefer-fallthrough-over-fallthrough-comments.patch " Andrew Morton
2020-02-14 5:12 ` + uapi-fix-userspace-breakage-use-__bits_per_long-for-swap.patch " Andrew Morton
2020-02-14 5:15 ` + lib-string-update-match_string-doc-strings-with-correct-behavior.patch " Andrew Morton
2020-02-14 5:16 ` + mm-vmscan-replace-open-codings-to-numa_no_node.patch " Andrew Morton
2020-02-14 5:19 ` + mm-mempolicy-support-mpol_mf_strict-for-huge-page-mapping.patch " Andrew Morton
2020-02-14 5:22 ` + mm-vmscan-dont-round-up-scan-size-for-online-memory-cgroup.patch " Andrew Morton
2020-02-14 5:26 ` + mm-mempolicy-use-vm_bug_on_vma-in-queue_pages_test_walk.patch " Andrew Morton
2020-02-14 5:30 ` + drivers-base-memoryc-drop-section_count.patch " Andrew Morton
2020-02-14 5:31 ` + drivers-base-memoryc-drop-pages_correctly_probed.patch " Andrew Morton
2020-02-14 5:31 ` + mm-page_extc-drop-pfn_present-check-when-onlining.patch " Andrew Morton
2020-02-14 5:41 ` [failures] include-remove-highmemh-from-pagemaph.patch removed from " Andrew Morton
2020-02-14 6:26 ` mmotm 2020-02-13-22-26 uploaded Andrew Morton
2020-02-24 2:45 ` + mm-debug-add-tests-validating-architecture-page-table-helpers.patch added to -mm tree Andrew Morton
2020-02-24 3:20 ` Andrew Morton [this message]
2020-02-24 3:24 ` + proc-faster-open-read-close-with-permanent-files-checkpatch-fixes.patch " Andrew Morton
2020-02-24 3:25 ` + psi-move-pf_memstall-into-psi-specific-psi_flags.patch " Andrew Morton
2020-02-24 3:29 ` + mm-hugetlb-fix-a-addressing-exception-caused-by-huge_pte_offset.patch " Andrew Morton
2020-02-24 3:31 ` + ocfs2-there-is-no-need-to-log-twice-in-several-functions.patch " Andrew Morton
2020-02-24 3:31 ` + ocfs2-correct-annotation-from-l_next_rec-to-l_next_free_rec.patch " Andrew Morton
2020-02-24 3:46 ` + hugetlb-support-file_region-coalescing-again-fix-2.patch " Andrew Morton
2020-02-24 3:53 ` + fat-fix-uninit-memory-access-for-partial-initialized-inode.patch " Andrew Morton
2020-02-24 4:08 ` + mm-add-mremap_dontunmap-to-mremap-v7.patch " Andrew Morton
2020-02-24 4:08 ` + selftest-add-mremap_dontunmap-selftest-v7.patch " Andrew Morton
2020-02-24 4:08 ` + selftest-add-mremap_dontunmap-selftest-v7-checkpatch-fixes.patch " Andrew Morton
2020-02-24 4:10 ` + percpu_counter-fix-a-data-race-at-vm_committed_as.patch " Andrew Morton
2020-02-24 4:10 ` + lib-test_lockup-fix-spelling-mistake-iteraions-iterations.patch " Andrew Morton
2020-02-24 21:40 ` + mm-swapfile-fix-data-races-in-try_to_unuse.patch " Andrew Morton
2020-02-24 21:45 ` [nacked] psi-move-pf_memstall-into-psi-specific-psi_flags.patch removed from " Andrew Morton
2020-02-24 21:57 ` + mm-z3fold-do-not-include-rwlockh-directly.patch added to " Andrew Morton
2020-02-24 22:04 ` + mm-hotplug-fix-page-online-with-debug_pagealloc-compiled-but-not-enabled.patch " Andrew Morton
2020-02-24 22:13 ` + mm-vma-add-missing-vma-flag-readable-name-for-vm_sync.patch " Andrew Morton
2020-02-24 22:13 ` + mm-vma-make-vma_is_accessible-available-for-general-use.patch " Andrew Morton
2020-02-24 22:13 ` + mm-vma-replace-all-remaining-open-encodings-with-is_vm_hugetlb_page.patch " Andrew Morton
2020-02-24 22:13 ` + mm-vma-replace-all-remaining-open-encodings-with-vma_is_anonymous.patch " Andrew Morton
2020-02-24 22:14 ` + mm-vma-append-unlikely-while-testing-vma-access-permissions.patch " Andrew Morton
2020-02-24 22:30 ` + samples-hw_breakpoint-drop-hw_breakpoint_r-when-reporting-writes.patch " Andrew Morton
2020-02-24 22:31 ` + samples-hw_breakpoint-drop-use-of-kallsyms_lookup_name.patch " Andrew Morton
2020-02-24 22:31 ` + kallsyms-unexport-kallsyms_lookup_name-and-kallsyms_on_each_symbol.patch " Andrew Morton
2020-02-24 22:55 ` + loop-use-worker-per-cgroup-instead-of-kworker.patch " Andrew Morton
2020-02-24 22:55 ` + mm-charge-active-memcg-when-no-mm-is-set.patch " Andrew Morton
2020-02-24 22:55 ` + loop-charge-i-o-to-mem-and-blk-cg.patch " Andrew Morton
2020-02-24 23:33 ` + mm-mempolicy-checking-hugepage-migration-is-supported-by-arch-in-vma_migratable.patch " Andrew Morton
2020-02-24 23:39 ` + checkpatch-fix-minor-typo-and-mixed-spacetab-in-indentation.patch " Andrew Morton
2020-02-24 23:40 ` + checkpatch-fix-multiple-const-types.patch " Andrew Morton
2020-02-24 23:40 ` + checkpatch-add-command-line-option-for-tab-size.patch " Andrew Morton
2020-02-24 23:43 ` + lib-test_bitmap-make-use-of-exp2_in_bits.patch " Andrew Morton
2020-02-24 23:44 ` + ocfs2-remove-useless-err.patch " Andrew Morton
2020-02-25 0:26 ` + arch-kconfig-update-have_reliable_stacktrace-description.patch " Andrew Morton
2020-02-25 0:32 ` + mm-memcg-slab-introduce-mem_cgroup_from_obj.patch " Andrew Morton
2020-02-25 0:47 ` + mm-kmem-cleanup-__memcg_kmem_charge_memcg-arguments.patch " Andrew Morton
2020-02-25 0:48 ` + mm-kmem-cleanup-memcg_kmem_uncharge_memcg-arguments.patch " Andrew Morton
2020-02-25 0:48 ` + mm-kmem-rename-memcg_kmem_uncharge-into-memcg_kmem_uncharge_page.patch " Andrew Morton
2020-02-25 0:48 ` + mm-kmem-switch-to-nr_pages-in-__memcg_kmem_charge_memcg.patch " Andrew Morton
2020-02-25 0:48 ` + mm-memcg-slab-cache-page-number-in-memcg_uncharge_slab.patch " Andrew Morton
2020-02-25 0:48 ` + mm-kmem-rename-__memcg_kmem_uncharge_memcg-to-__memcg_kmem_uncharge.patch " Andrew Morton
2020-02-25 2:29 ` + mm-memcg-slab-introduce-mem_cgroup_from_obj-v2.patch " Andrew Morton
2020-02-25 2:36 ` + ocfs2-add-missing-annotations-for-ocfs2_refcount_cache_lock-and-ocfs2_refcount_cache_unlock.patch " Andrew Morton
2020-02-25 3:53 ` mmotm 2020-02-24-19-53 uploaded Andrew Morton
2020-02-26 1:06 ` + checkpatch-improve-gerrit-change-id-test.patch added to -mm tree Andrew Morton
2020-02-26 1:55 ` + dma-buf-free-dmabuf-name-in-dma_buf_release.patch " Andrew Morton
[not found] ` <CAO_48GFr9-aY4=kRqWB=UkEzPj5fQDip+G1tNZMsT0XoQpBC7Q@mail.gmail.com>
[not found] ` <CAKMK7uGvixQ2xoQMt3pvt0OpNXDjDGTvSWsaAppsKrmO_EP3Kg@mail.gmail.com>
2020-02-27 4:20 ` Andrew Morton
2020-02-26 3:42 ` + lib-rbtree-fix-coding-style-of-assignments.patch " Andrew Morton
2020-02-26 3:56 ` + seq_read-info-message-about-buggy-next-functions.patch " Andrew Morton
[not found] ` <1583173259.7365.142.camel@lca.pw>
[not found] ` <1583177508.7365.144.camel@lca.pw>
2020-03-02 20:42 ` Andrew Morton
2020-02-26 3:56 ` + pstore_ftrace_seq_next-should-increase-position-index.patch " Andrew Morton
[not found] ` <07f968e6-02cd-de2a-e868-787e4bedd346@virtuozzo.com>
2020-02-27 4:26 ` Andrew Morton
2020-02-26 3:56 ` + gcov_seq_next-should-increase-position-index.patch " Andrew Morton
2020-02-26 3:56 ` + sysvipc_find_ipc-should-increase-position-index.patch " Andrew Morton
2020-02-27 1:19 ` + mm-bring-sparc-pte_index-semantics-inline-with-other-platforms.patch " Andrew Morton
2020-02-27 1:37 ` + mm-vmscan-fix-data-races-at-kswapd_classzone_idx.patch " Andrew Morton
2020-02-27 1:49 ` + fs-epoll-make-nesting-accounting-safe-for-rt-kernel.patch " Andrew Morton
2020-02-27 3:50 ` + lib-optimize-cpumask_local_spread.patch " Andrew Morton
2020-02-27 4:04 ` + mm-debug-add-tests-validating-architecture-page-table-helpers-fix.patch " Andrew Morton
2020-02-27 4:11 ` + gcov-gcc_4_7-replace-zero-length-array-with-flexible-array-member.patch " Andrew Morton
2020-02-27 4:42 ` + mm-debug-add-tests-validating-architecture-page-table-helpers-fix-2.patch " Andrew Morton
2020-02-27 4:42 ` [to-be-updated] mm-debug-add-tests-validating-architecture-page-table-helpers-fix.patch removed from " Andrew Morton
2020-02-27 4:44 ` + huge-tmpfs-try-to-split_huge_page-when-punching-hole.patch added to " Andrew Morton
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=20200224032012.vPDzd5E7J%akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=adobriyan@gmail.com \
--cc=dan.carpenter@oracle.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=mm-commits@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 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).