Commit d342740e authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'akpm' (patches from Andrew)

Merge misc fixes from Andrew Morton:
 "6 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  sparse doesn't support struct randomization
  proc: fix coredump vs read /proc/*/stat race
  scripts/gdb/linux/tasks.py: fix get_thread_info
  scripts/decodecode: fix decoding for AArch64 (arm64) instructions
  mm/page_owner.c: remove drain_all_pages from init_early_allocated_pages
  mm/memory.c: release locked page in do_swap_page()
parents 4b664e73 a3d6c976
...@@ -430,8 +430,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns, ...@@ -430,8 +430,11 @@ static int do_task_stat(struct seq_file *m, struct pid_namespace *ns,
* safe because the task has stopped executing permanently. * safe because the task has stopped executing permanently.
*/ */
if (permitted && (task->flags & PF_DUMPCORE)) { if (permitted && (task->flags & PF_DUMPCORE)) {
eip = KSTK_EIP(task); if (try_get_task_stack(task)) {
esp = KSTK_ESP(task); eip = KSTK_EIP(task);
esp = KSTK_ESP(task);
put_task_stack(task);
}
} }
} }
......
...@@ -219,7 +219,7 @@ ...@@ -219,7 +219,7 @@
/* Mark a function definition as prohibited from being cloned. */ /* Mark a function definition as prohibited from being cloned. */
#define __noclone __attribute__((__noclone__, __optimize__("no-tracer"))) #define __noclone __attribute__((__noclone__, __optimize__("no-tracer")))
#ifdef RANDSTRUCT_PLUGIN #if defined(RANDSTRUCT_PLUGIN) && !defined(__CHECKER__)
#define __randomize_layout __attribute__((randomize_layout)) #define __randomize_layout __attribute__((randomize_layout))
#define __no_randomize_layout __attribute__((no_randomize_layout)) #define __no_randomize_layout __attribute__((no_randomize_layout))
#endif #endif
......
...@@ -2857,8 +2857,11 @@ int do_swap_page(struct vm_fault *vmf) ...@@ -2857,8 +2857,11 @@ int do_swap_page(struct vm_fault *vmf)
int ret = 0; int ret = 0;
bool vma_readahead = swap_use_vma_readahead(); bool vma_readahead = swap_use_vma_readahead();
if (vma_readahead) if (vma_readahead) {
page = swap_readahead_detect(vmf, &swap_ra); page = swap_readahead_detect(vmf, &swap_ra);
swapcache = page;
}
if (!pte_unmap_same(vma->vm_mm, vmf->pmd, vmf->pte, vmf->orig_pte)) { if (!pte_unmap_same(vma->vm_mm, vmf->pmd, vmf->pte, vmf->orig_pte)) {
if (page) if (page)
put_page(page); put_page(page);
...@@ -2889,9 +2892,12 @@ int do_swap_page(struct vm_fault *vmf) ...@@ -2889,9 +2892,12 @@ int do_swap_page(struct vm_fault *vmf)
delayacct_set_flag(DELAYACCT_PF_SWAPIN); delayacct_set_flag(DELAYACCT_PF_SWAPIN);
if (!page) if (!page) {
page = lookup_swap_cache(entry, vma_readahead ? vma : NULL, page = lookup_swap_cache(entry, vma_readahead ? vma : NULL,
vmf->address); vmf->address);
swapcache = page;
}
if (!page) { if (!page) {
struct swap_info_struct *si = swp_swap_info(entry); struct swap_info_struct *si = swp_swap_info(entry);
......
...@@ -616,7 +616,6 @@ static void init_early_allocated_pages(void) ...@@ -616,7 +616,6 @@ static void init_early_allocated_pages(void)
{ {
pg_data_t *pgdat; pg_data_t *pgdat;
drain_all_pages(NULL);
for_each_online_pgdat(pgdat) for_each_online_pgdat(pgdat)
init_zones_in_node(pgdat); init_zones_in_node(pgdat);
} }
......
...@@ -59,6 +59,14 @@ disas() { ...@@ -59,6 +59,14 @@ disas() {
${CROSS_COMPILE}strip $1.o ${CROSS_COMPILE}strip $1.o
fi fi
if [ "$ARCH" = "arm64" ]; then
if [ $width -eq 4 ]; then
type=inst
fi
${CROSS_COMPILE}strip $1.o
fi
${CROSS_COMPILE}objdump $OBJDUMPFLAGS -S $1.o | \ ${CROSS_COMPILE}objdump $OBJDUMPFLAGS -S $1.o | \
grep -v "/tmp\|Disassembly\|\.text\|^$" > $1.dis 2>&1 grep -v "/tmp\|Disassembly\|\.text\|^$" > $1.dis 2>&1
} }
......
...@@ -96,6 +96,8 @@ def get_thread_info(task): ...@@ -96,6 +96,8 @@ def get_thread_info(task):
thread_info_addr = task.address + ia64_task_size thread_info_addr = task.address + ia64_task_size
thread_info = thread_info_addr.cast(thread_info_ptr_type) thread_info = thread_info_addr.cast(thread_info_ptr_type)
else: else:
if task.type.fields()[0].type == thread_info_type.get_type():
return task['thread_info']
thread_info = task['stack'].cast(thread_info_ptr_type) thread_info = task['stack'].cast(thread_info_ptr_type)
return thread_info.dereference() return thread_info.dereference()
......
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