Skip to content

Commit 84a6fc3

Browse files
benzeajmberg-intel
authored andcommitted
um: remove copy_from_kernel_nofault_allowed
There is no need to override the default version of this function anymore as UML now has proper _nofault memory access functions. Doing this also fixes the fact that the implementation was incorrect as using mincore() will incorrectly flag pages as inaccessible if they were swapped out by the host. Fixes: f75b1b1 ("um: Implement probe_kernel_read()") Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20250210160926.420133-3-benjamin@sipsolutions.net Signed-off-by: Johannes Berg <johannes.berg@intel.com>
1 parent d1d7f01 commit 84a6fc3

File tree

4 files changed

+1
-72
lines changed

4 files changed

+1
-72
lines changed

arch/um/include/shared/os.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,6 @@ extern int os_protect_memory(void *addr, unsigned long len,
213213
extern int os_unmap_memory(void *addr, int len);
214214
extern int os_drop_memory(void *addr, int length);
215215
extern int can_drop_memory(void);
216-
extern int os_mincore(void *addr, unsigned long len);
217216

218217
void os_set_pdeathsig(void);
219218

arch/um/kernel/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ extra-y := vmlinux.lds
1717
obj-y = config.o exec.o exitcode.o irq.o ksyms.o mem.o \
1818
physmem.o process.o ptrace.o reboot.o sigio.o \
1919
signal.o sysrq.o time.o tlb.o trap.o \
20-
um_arch.o umid.o maccess.o kmsg_dump.o capflags.o skas/
20+
um_arch.o umid.o kmsg_dump.o capflags.o skas/
2121
obj-y += load_file.o
2222

2323
obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o

arch/um/kernel/maccess.c

Lines changed: 0 additions & 19 deletions
This file was deleted.

arch/um/os-Linux/process.c

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -142,57 +142,6 @@ int __init can_drop_memory(void)
142142
return ok;
143143
}
144144

145-
static int os_page_mincore(void *addr)
146-
{
147-
char vec[2];
148-
int ret;
149-
150-
ret = mincore(addr, UM_KERN_PAGE_SIZE, vec);
151-
if (ret < 0) {
152-
if (errno == ENOMEM || errno == EINVAL)
153-
return 0;
154-
else
155-
return -errno;
156-
}
157-
158-
return vec[0] & 1;
159-
}
160-
161-
int os_mincore(void *addr, unsigned long len)
162-
{
163-
char *vec;
164-
int ret, i;
165-
166-
if (len <= UM_KERN_PAGE_SIZE)
167-
return os_page_mincore(addr);
168-
169-
vec = calloc(1, (len + UM_KERN_PAGE_SIZE - 1) / UM_KERN_PAGE_SIZE);
170-
if (!vec)
171-
return -ENOMEM;
172-
173-
ret = mincore(addr, UM_KERN_PAGE_SIZE, vec);
174-
if (ret < 0) {
175-
if (errno == ENOMEM || errno == EINVAL)
176-
ret = 0;
177-
else
178-
ret = -errno;
179-
180-
goto out;
181-
}
182-
183-
for (i = 0; i < ((len + UM_KERN_PAGE_SIZE - 1) / UM_KERN_PAGE_SIZE); i++) {
184-
if (!(vec[i] & 1)) {
185-
ret = 0;
186-
goto out;
187-
}
188-
}
189-
190-
ret = 1;
191-
out:
192-
free(vec);
193-
return ret;
194-
}
195-
196145
void init_new_thread_signals(void)
197146
{
198147
set_handler(SIGSEGV);

0 commit comments

Comments
 (0)