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()
This commit is contained in:
@ -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,
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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
|
|||||||
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)
|
|||||||
*/
|
*/
|
||||||
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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
16
mm/mmap.c
16
mm/mmap.c
@ -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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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 {
|
|||||||
# 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);
|
||||||
|
Reference in New Issue
Block a user