Commit 584f1ada authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'akpm' (fixes from Andrew Morton)

Merge misc fixes from Andrew Morton:
 "10 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  fs/notify: don't show f_handle if exportfs_encode_inode_fh failed
  fsnotify/fdinfo: use named constants instead of hardcoded values
  kcmp: fix standard comparison bug
  mm/mmap.c: use pr_emerg when printing BUG related information
  shm: add memfd.h to UAPI export list
  checkpatch: allow commit descriptions on separate line from commit id
  sh: get_user_pages_fast() must flush cache
  eventpoll: fix uninitialized variable in epoll_ctl
  kernel/printk/printk.c: fix faulty logic in the case of recursive printk
  mem-hotplug: let memblock skip the hotpluggable memory regions in __next_mem_range()
parents 7ec62d42 7e882481
...@@ -105,6 +105,8 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr, ...@@ -105,6 +105,8 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr,
VM_BUG_ON(!pfn_valid(pte_pfn(pte))); VM_BUG_ON(!pfn_valid(pte_pfn(pte)));
page = pte_page(pte); page = pte_page(pte);
get_page(page); get_page(page);
__flush_anon_page(page, addr);
flush_dcache_page(page);
pages[*nr] = page; pages[*nr] = page;
(*nr)++; (*nr)++;
......
...@@ -1852,6 +1852,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd, ...@@ -1852,6 +1852,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
goto error_tgt_fput; goto error_tgt_fput;
/* Check if EPOLLWAKEUP is allowed */ /* Check if EPOLLWAKEUP is allowed */
if (ep_op_has_event(op))
ep_take_care_of_epollwakeup(&epds); ep_take_care_of_epollwakeup(&epds);
/* /*
......
...@@ -42,7 +42,7 @@ static int show_mark_fhandle(struct seq_file *m, struct inode *inode) ...@@ -42,7 +42,7 @@ static int show_mark_fhandle(struct seq_file *m, struct inode *inode)
{ {
struct { struct {
struct file_handle handle; struct file_handle handle;
u8 pad[64]; u8 pad[MAX_HANDLE_SZ];
} f; } f;
int size, ret, i; int size, ret, i;
...@@ -50,7 +50,7 @@ static int show_mark_fhandle(struct seq_file *m, struct inode *inode) ...@@ -50,7 +50,7 @@ static int show_mark_fhandle(struct seq_file *m, struct inode *inode)
size = f.handle.handle_bytes >> 2; size = f.handle.handle_bytes >> 2;
ret = exportfs_encode_inode_fh(inode, (struct fid *)f.handle.f_handle, &size, 0); ret = exportfs_encode_inode_fh(inode, (struct fid *)f.handle.f_handle, &size, 0);
if ((ret == 255) || (ret == -ENOSPC)) { if ((ret == FILEID_INVALID) || (ret < 0)) {
WARN_ONCE(1, "Can't encode file handler for inotify: %d\n", ret); WARN_ONCE(1, "Can't encode file handler for inotify: %d\n", ret);
return 0; return 0;
} }
......
...@@ -240,6 +240,7 @@ header-y += matroxfb.h ...@@ -240,6 +240,7 @@ header-y += matroxfb.h
header-y += mdio.h header-y += mdio.h
header-y += media.h header-y += media.h
header-y += mei.h header-y += mei.h
header-y += memfd.h
header-y += mempolicy.h header-y += mempolicy.h
header-y += meye.h header-y += meye.h
header-y += mic_common.h header-y += mic_common.h
......
...@@ -44,11 +44,12 @@ static long kptr_obfuscate(long v, int type) ...@@ -44,11 +44,12 @@ static long kptr_obfuscate(long v, int type)
*/ */
static int kcmp_ptr(void *v1, void *v2, enum kcmp_type type) static int kcmp_ptr(void *v1, void *v2, enum kcmp_type type)
{ {
long ret; long t1, t2;
ret = kptr_obfuscate((long)v1, type) - kptr_obfuscate((long)v2, type); t1 = kptr_obfuscate((long)v1, type);
t2 = kptr_obfuscate((long)v2, type);
return (ret < 0) | ((ret > 0) << 1); return (t1 < t2) | ((t1 > t2) << 1);
} }
/* The caller must have pinned the task */ /* The caller must have pinned the task */
......
...@@ -1665,15 +1665,15 @@ asmlinkage int vprintk_emit(int facility, int level, ...@@ -1665,15 +1665,15 @@ asmlinkage int vprintk_emit(int facility, int level,
raw_spin_lock(&logbuf_lock); raw_spin_lock(&logbuf_lock);
logbuf_cpu = this_cpu; logbuf_cpu = this_cpu;
if (recursion_bug) { if (unlikely(recursion_bug)) {
static const char recursion_msg[] = static const char recursion_msg[] =
"BUG: recent printk recursion!"; "BUG: recent printk recursion!";
recursion_bug = 0; recursion_bug = 0;
text_len = strlen(recursion_msg);
/* emit KERN_CRIT message */ /* emit KERN_CRIT message */
printed_len += log_store(0, 2, LOG_PREFIX|LOG_NEWLINE, 0, printed_len += log_store(0, 2, LOG_PREFIX|LOG_NEWLINE, 0,
NULL, 0, recursion_msg, text_len); NULL, 0, recursion_msg,
strlen(recursion_msg));
} }
/* /*
......
...@@ -816,6 +816,10 @@ void __init_memblock __next_mem_range(u64 *idx, int nid, ...@@ -816,6 +816,10 @@ void __init_memblock __next_mem_range(u64 *idx, int nid,
if (nid != NUMA_NO_NODE && nid != m_nid) if (nid != NUMA_NO_NODE && nid != m_nid)
continue; continue;
/* skip hotpluggable memory regions if needed */
if (movable_node_is_enabled() && memblock_is_hotpluggable(m))
continue;
if (!type_b) { if (!type_b) {
if (out_start) if (out_start)
*out_start = m_start; *out_start = m_start;
......
...@@ -369,20 +369,20 @@ static int browse_rb(struct rb_root *root) ...@@ -369,20 +369,20 @@ static int browse_rb(struct rb_root *root)
struct vm_area_struct *vma; struct vm_area_struct *vma;
vma = rb_entry(nd, struct vm_area_struct, vm_rb); vma = rb_entry(nd, struct vm_area_struct, vm_rb);
if (vma->vm_start < prev) { if (vma->vm_start < prev) {
pr_info("vm_start %lx prev %lx\n", vma->vm_start, prev); pr_emerg("vm_start %lx prev %lx\n", vma->vm_start, prev);
bug = 1; bug = 1;
} }
if (vma->vm_start < pend) { if (vma->vm_start < pend) {
pr_info("vm_start %lx pend %lx\n", vma->vm_start, pend); pr_emerg("vm_start %lx pend %lx\n", vma->vm_start, pend);
bug = 1; bug = 1;
} }
if (vma->vm_start > vma->vm_end) { if (vma->vm_start > vma->vm_end) {
pr_info("vm_end %lx < vm_start %lx\n", pr_emerg("vm_end %lx < vm_start %lx\n",
vma->vm_end, vma->vm_start); vma->vm_end, vma->vm_start);
bug = 1; bug = 1;
} }
if (vma->rb_subtree_gap != vma_compute_subtree_gap(vma)) { if (vma->rb_subtree_gap != vma_compute_subtree_gap(vma)) {
pr_info("free gap %lx, correct %lx\n", pr_emerg("free gap %lx, correct %lx\n",
vma->rb_subtree_gap, vma->rb_subtree_gap,
vma_compute_subtree_gap(vma)); vma_compute_subtree_gap(vma));
bug = 1; bug = 1;
...@@ -396,7 +396,7 @@ static int browse_rb(struct rb_root *root) ...@@ -396,7 +396,7 @@ static int browse_rb(struct rb_root *root)
for (nd = pn; nd; nd = rb_prev(nd)) for (nd = pn; nd; nd = rb_prev(nd))
j++; j++;
if (i != j) { if (i != j) {
pr_info("backwards %d, forwards %d\n", j, i); pr_emerg("backwards %d, forwards %d\n", j, i);
bug = 1; bug = 1;
} }
return bug ? -1 : i; return bug ? -1 : i;
...@@ -431,17 +431,17 @@ static void validate_mm(struct mm_struct *mm) ...@@ -431,17 +431,17 @@ static void validate_mm(struct mm_struct *mm)
i++; i++;
} }
if (i != mm->map_count) { if (i != mm->map_count) {
pr_info("map_count %d vm_next %d\n", mm->map_count, i); pr_emerg("map_count %d vm_next %d\n", mm->map_count, i);
bug = 1; bug = 1;
} }
if (highest_address != mm->highest_vm_end) { if (highest_address != mm->highest_vm_end) {
pr_info("mm->highest_vm_end %lx, found %lx\n", pr_emerg("mm->highest_vm_end %lx, found %lx\n",
mm->highest_vm_end, highest_address); mm->highest_vm_end, highest_address);
bug = 1; bug = 1;
} }
i = browse_rb(&mm->mm_rb); i = browse_rb(&mm->mm_rb);
if (i != mm->map_count) { if (i != mm->map_count) {
pr_info("map_count %d rb %d\n", mm->map_count, i); pr_emerg("map_count %d rb %d\n", mm->map_count, i);
bug = 1; bug = 1;
} }
BUG_ON(bug); BUG_ON(bug);
......
...@@ -119,6 +119,8 @@ static unsigned long __init free_low_memory_core_early(void) ...@@ -119,6 +119,8 @@ static unsigned long __init free_low_memory_core_early(void)
phys_addr_t start, end; phys_addr_t start, end;
u64 i; u64 i;
memblock_clear_hotplug(0, -1);
for_each_free_mem_range(i, NUMA_NO_NODE, &start, &end, NULL) for_each_free_mem_range(i, NUMA_NO_NODE, &start, &end, NULL)
count += __free_memory_core(start, end); count += __free_memory_core(start, end);
......
...@@ -2133,7 +2133,10 @@ sub process { ...@@ -2133,7 +2133,10 @@ sub process {
# Check for improperly formed commit descriptions # Check for improperly formed commit descriptions
if ($in_commit_log && if ($in_commit_log &&
$line =~ /\bcommit\s+[0-9a-f]{5,}/i && $line =~ /\bcommit\s+[0-9a-f]{5,}/i &&
$line !~ /\b[Cc]ommit [0-9a-f]{12,40} \("/) { !($line =~ /\b[Cc]ommit [0-9a-f]{12,40} \("/ ||
($line =~ /\b[Cc]ommit [0-9a-f]{12,40}\s*$/ &&
defined $rawlines[$linenr] &&
$rawlines[$linenr] =~ /^\s*\("/))) {
$line =~ /\b(c)ommit\s+([0-9a-f]{5,})/i; $line =~ /\b(c)ommit\s+([0-9a-f]{5,})/i;
my $init_char = $1; my $init_char = $1;
my $orig_commit = lc($2); my $orig_commit = lc($2);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment