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:
Коммит
584f1adaf0
|
@ -105,6 +105,8 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr,
|
|||
VM_BUG_ON(!pfn_valid(pte_pfn(pte)));
|
||||
page = pte_page(pte);
|
||||
get_page(page);
|
||||
__flush_anon_page(page, addr);
|
||||
flush_dcache_page(page);
|
||||
pages[*nr] = page;
|
||||
(*nr)++;
|
||||
|
||||
|
|
|
@ -1852,7 +1852,8 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
|||
goto error_tgt_fput;
|
||||
|
||||
/* Check if EPOLLWAKEUP is allowed */
|
||||
ep_take_care_of_epollwakeup(&epds);
|
||||
if (ep_op_has_event(op))
|
||||
ep_take_care_of_epollwakeup(&epds);
|
||||
|
||||
/*
|
||||
* We have to check that the file structure underneath the file descriptor
|
||||
|
|
|
@ -42,7 +42,7 @@ static int show_mark_fhandle(struct seq_file *m, struct inode *inode)
|
|||
{
|
||||
struct {
|
||||
struct file_handle handle;
|
||||
u8 pad[64];
|
||||
u8 pad[MAX_HANDLE_SZ];
|
||||
} f;
|
||||
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;
|
||||
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -240,6 +240,7 @@ header-y += matroxfb.h
|
|||
header-y += mdio.h
|
||||
header-y += media.h
|
||||
header-y += mei.h
|
||||
header-y += memfd.h
|
||||
header-y += mempolicy.h
|
||||
header-y += meye.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)
|
||||
{
|
||||
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 */
|
||||
|
|
|
@ -1665,15 +1665,15 @@ asmlinkage int vprintk_emit(int facility, int level,
|
|||
raw_spin_lock(&logbuf_lock);
|
||||
logbuf_cpu = this_cpu;
|
||||
|
||||
if (recursion_bug) {
|
||||
if (unlikely(recursion_bug)) {
|
||||
static const char recursion_msg[] =
|
||||
"BUG: recent printk recursion!";
|
||||
|
||||
recursion_bug = 0;
|
||||
text_len = strlen(recursion_msg);
|
||||
/* emit KERN_CRIT message */
|
||||
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)
|
||||
continue;
|
||||
|
||||
/* skip hotpluggable memory regions if needed */
|
||||
if (movable_node_is_enabled() && memblock_is_hotpluggable(m))
|
||||
continue;
|
||||
|
||||
if (!type_b) {
|
||||
if (out_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;
|
||||
vma = rb_entry(nd, struct vm_area_struct, vm_rb);
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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);
|
||||
bug = 1;
|
||||
}
|
||||
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_compute_subtree_gap(vma));
|
||||
bug = 1;
|
||||
|
@ -396,7 +396,7 @@ static int browse_rb(struct rb_root *root)
|
|||
for (nd = pn; nd; nd = rb_prev(nd))
|
||||
j++;
|
||||
if (i != j) {
|
||||
pr_info("backwards %d, forwards %d\n", j, i);
|
||||
pr_emerg("backwards %d, forwards %d\n", j, i);
|
||||
bug = 1;
|
||||
}
|
||||
return bug ? -1 : i;
|
||||
|
@ -431,17 +431,17 @@ static void validate_mm(struct mm_struct *mm)
|
|||
i++;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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);
|
||||
bug = 1;
|
||||
}
|
||||
i = browse_rb(&mm->mm_rb);
|
||||
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_ON(bug);
|
||||
|
|
|
@ -119,6 +119,8 @@ static unsigned long __init free_low_memory_core_early(void)
|
|||
phys_addr_t start, end;
|
||||
u64 i;
|
||||
|
||||
memblock_clear_hotplug(0, -1);
|
||||
|
||||
for_each_free_mem_range(i, NUMA_NO_NODE, &start, &end, NULL)
|
||||
count += __free_memory_core(start, end);
|
||||
|
||||
|
|
|
@ -2133,7 +2133,10 @@ sub process {
|
|||
# Check for improperly formed commit descriptions
|
||||
if ($in_commit_log &&
|
||||
$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;
|
||||
my $init_char = $1;
|
||||
my $orig_commit = lc($2);
|
||||
|
|
Загрузка…
Ссылка в новой задаче