* [rgushchin:kmem_reparent.4 170/380] mm/mprotect.c:138:19: error: 'struct vm_area_struct' has no member named 'mm'
@ 2019-05-14 5:44 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2019-05-14 5:44 UTC (permalink / raw)
To: Mike Rapoport
Cc: kbuild-all, Roman Gushchin, Johannes Weiner, Andrew Morton,
Linux Memory Management List
[-- Attachment #1: Type: text/plain, Size: 7297 bytes --]
tree: https://github.com/rgushchin/linux.git kmem_reparent.4
head: 595d92aaebb6a603b2820ce7188b6db971693d85
commit: c7b45943bdf12b5ccfcd016538c62aa7edd604d5 [170/380] mm/mprotect.c: fix compilation warning because of unused 'mm' varaible
config: i386-randconfig-x070-201919 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
git checkout c7b45943bdf12b5ccfcd016538c62aa7edd604d5
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Note: the rgushchin/kmem_reparent.4 HEAD 595d92aaebb6a603b2820ce7188b6db971693d85 builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
In file included from include/linux/mm.h:99:0,
from mm/mprotect.c:12:
mm/mprotect.c: In function 'change_pte_range':
>> mm/mprotect.c:138:19: error: 'struct vm_area_struct' has no member named 'mm'
set_pte_at(vma->mm, addr, pte, newpte);
^
arch/x86/include/asm/pgtable.h:64:59: note: in definition of macro 'set_pte_at'
#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
^~
>> mm/mprotect.c:152:16: error: 'mm' undeclared (first use in this function); did you mean 'hmm'?
set_pte_at(mm, addr, pte, newpte);
^
arch/x86/include/asm/pgtable.h:64:59: note: in definition of macro 'set_pte_at'
#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
^~
mm/mprotect.c:152:16: note: each undeclared identifier is reported only once for each function it appears in
set_pte_at(mm, addr, pte, newpte);
^
arch/x86/include/asm/pgtable.h:64:59: note: in definition of macro 'set_pte_at'
#define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte)
^~
vim +138 mm/mprotect.c
> 12 #include <linux/mm.h>
13 #include <linux/hugetlb.h>
14 #include <linux/shm.h>
15 #include <linux/mman.h>
16 #include <linux/fs.h>
17 #include <linux/highmem.h>
18 #include <linux/security.h>
19 #include <linux/mempolicy.h>
20 #include <linux/personality.h>
21 #include <linux/syscalls.h>
22 #include <linux/swap.h>
23 #include <linux/swapops.h>
24 #include <linux/mmu_notifier.h>
25 #include <linux/migrate.h>
26 #include <linux/perf_event.h>
27 #include <linux/pkeys.h>
28 #include <linux/ksm.h>
29 #include <linux/uaccess.h>
30 #include <linux/mm_inline.h>
31 #include <asm/pgtable.h>
32 #include <asm/cacheflush.h>
33 #include <asm/mmu_context.h>
34 #include <asm/tlbflush.h>
35
36 #include "internal.h"
37
38 static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
39 unsigned long addr, unsigned long end, pgprot_t newprot,
40 int dirty_accountable, int prot_numa)
41 {
42 pte_t *pte, oldpte;
43 spinlock_t *ptl;
44 unsigned long pages = 0;
45 int target_node = NUMA_NO_NODE;
46
47 /*
48 * Can be called with only the mmap_sem for reading by
49 * prot_numa so we must check the pmd isn't constantly
50 * changing from under us from pmd_none to pmd_trans_huge
51 * and/or the other way around.
52 */
53 if (pmd_trans_unstable(pmd))
54 return 0;
55
56 /*
57 * The pmd points to a regular pte so the pmd can't change
58 * from under us even if the mmap_sem is only hold for
59 * reading.
60 */
61 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
62
63 /* Get target node for single threaded private VMAs */
64 if (prot_numa && !(vma->vm_flags & VM_SHARED) &&
65 atomic_read(&vma->vm_mm->mm_users) == 1)
66 target_node = numa_node_id();
67
68 flush_tlb_batched_pending(vma->vm_mm);
69 arch_enter_lazy_mmu_mode();
70 do {
71 oldpte = *pte;
72 if (pte_present(oldpte)) {
73 pte_t ptent;
74 bool preserve_write = prot_numa && pte_write(oldpte);
75
76 /*
77 * Avoid trapping faults against the zero or KSM
78 * pages. See similar comment in change_huge_pmd.
79 */
80 if (prot_numa) {
81 struct page *page;
82
83 page = vm_normal_page(vma, addr, oldpte);
84 if (!page || PageKsm(page))
85 continue;
86
87 /* Also skip shared copy-on-write pages */
88 if (is_cow_mapping(vma->vm_flags) &&
89 page_mapcount(page) != 1)
90 continue;
91
92 /*
93 * While migration can move some dirty pages,
94 * it cannot move them all from MIGRATE_ASYNC
95 * context.
96 */
97 if (page_is_file_cache(page) && PageDirty(page))
98 continue;
99
100 /* Avoid TLB flush if possible */
101 if (pte_protnone(oldpte))
102 continue;
103
104 /*
105 * Don't mess with PTEs if page is already on the node
106 * a single-threaded process is running on.
107 */
108 if (target_node == page_to_nid(page))
109 continue;
110 }
111
112 oldpte = ptep_modify_prot_start(vma, addr, pte);
113 ptent = pte_modify(oldpte, newprot);
114 if (preserve_write)
115 ptent = pte_mk_savedwrite(ptent);
116
117 /* Avoid taking write faults for known dirty pages */
118 if (dirty_accountable && pte_dirty(ptent) &&
119 (pte_soft_dirty(ptent) ||
120 !(vma->vm_flags & VM_SOFTDIRTY))) {
121 ptent = pte_mkwrite(ptent);
122 }
123 ptep_modify_prot_commit(vma, addr, pte, oldpte, ptent);
124 pages++;
125 } else if (IS_ENABLED(CONFIG_MIGRATION)) {
126 swp_entry_t entry = pte_to_swp_entry(oldpte);
127
128 if (is_write_migration_entry(entry)) {
129 pte_t newpte;
130 /*
131 * A protection check is difficult so
132 * just be safe and disable write
133 */
134 make_migration_entry_read(&entry);
135 newpte = swp_entry_to_pte(entry);
136 if (pte_swp_soft_dirty(oldpte))
137 newpte = pte_swp_mksoft_dirty(newpte);
> 138 set_pte_at(vma->mm, addr, pte, newpte);
139
140 pages++;
141 }
142
143 if (is_write_device_private_entry(entry)) {
144 pte_t newpte;
145
146 /*
147 * We do not preserve soft-dirtiness. See
148 * copy_one_pte() for explanation.
149 */
150 make_device_private_entry_read(&entry);
151 newpte = swp_entry_to_pte(entry);
> 152 set_pte_at(mm, addr, pte, newpte);
153
154 pages++;
155 }
156 }
157 } while (pte++, addr += PAGE_SIZE, addr != end);
158 arch_leave_lazy_mmu_mode();
159 pte_unmap_unlock(pte - 1, ptl);
160
161 return pages;
162 }
163
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29054 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-05-14 5:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-14 5:44 [rgushchin:kmem_reparent.4 170/380] mm/mprotect.c:138:19: error: 'struct vm_area_struct' has no member named 'mm' kbuild test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox