Files
mckernel/test/issues/1351/show_attr.patch
Ken Sato 5d6715078f fix: madvise changes only the first one of vm_ranges
Change-Id: I83248c1162e28c3c24ca5f6b0933e1a8ca434d6b
Fujitsu: POSTK_DEBUG_TEMP_FIX_37
Refs: #1351
2019-09-08 14:22:00 +09:00

55 lines
1.4 KiB
Diff

diff --git kernel/include/mman.h kernel/include/mman.h
index e7d3526..3b8b0f3 100644
--- kernel/include/mman.h
+++ kernel/include/mman.h
@@ -56,6 +56,7 @@
#define MADV_DODUMP 17
#define MADV_HWPOISON 100
#define MADV_SOFT_OFFLINE 101
+#define MADV_SHOW_ATTR 201 /* for TEST */
/*
* for mremap()
diff --git kernel/syscall.c kernel/syscall.c
index 564c103..9e2c56f 100644
--- kernel/syscall.c
+++ kernel/syscall.c
@@ -4651,6 +4651,14 @@ clear_memory_range_flag(struct vm_range *range, unsigned long arg)
}
static int
+show_memory_range_flag(struct vm_range *range, unsigned long arg)
+{
+ kprintf("range 0x%lx - 0x%lx attr: 0x%lx\n",
+ range->start, range->end, range->flag);
+ return 0;
+}
+
+static int
change_attr_process_memory_range(struct process_vm *vm,
uintptr_t start, uintptr_t end,
int (*change_proc)(struct vm_range *,
@@ -4779,6 +4787,7 @@ SYSCALL_DECLARE(madvise)
case MADV_REMOVE:
case MADV_DONTDUMP:
case MADV_DODUMP:
+ case MADV_SHOW_ATTR:
break;
case MADV_HWPOISON:
@@ -4919,6 +4928,14 @@ SYSCALL_DECLARE(madvise)
error = syscall_generic_forwarding(__NR_madvise, ctx);
}
+ if (advice == MADV_SHOW_ATTR) {
+ error = change_attr_process_memory_range(thread->vm,
+ start, end, show_memory_range_flag, 0);
+ if (error) {
+ goto out;
+ }
+ }
+
error = 0;
out:
memory_range_write_unlock(thread->vm, &irqflags);