Commit 065c4e67 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull uml updates from Johannes Berg:
 "Mostly cleanups and small things, notably:

   - musl libc compatibility

   - vDSO installation fix

   - TLB sync race fix for recent SMP support

   - build fix for 32-bit with Clang 20/21"

* tag 'uml-for-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/uml/linux:
  um: Disable GCOV_PROFILE_ALL on 32-bit UML with Clang 20/21
  um: drivers: call kernel_strrchr() explicitly in cow_user.c
  um: Replace strncpy() with strnlen()+memcpy_and_pad() in strncpy_chunk_from_user()
  x86/um: fix vDSO installation
  um: Remove CONFIG_FRAME_WARN from x86_64_defconfig
  um: Fix pte_read() and pte_exec() for kernel mappings
  um: Fix potential race condition in TLB sync
  um: time-travel: clean up kernel-doc warnings
  um: avoid struct sigcontext redefinition with musl
  um: fix address-of CMSG_DATA() rvalue in stub
parents b66cb4f1 6522fe5c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -11,7 +11,9 @@ config UML
	select ARCH_HAS_CACHE_LINE_SIZE
	select ARCH_HAS_CPU_FINALIZE_INIT
	select ARCH_HAS_FORTIFY_SOURCE
	select ARCH_HAS_GCOV_PROFILE_ALL
	# Clang 20 & 21 miscompute __builtin_object_size() under -fprofile-arcs
	# on 32-bit, causing spurious compile-time errors in check_copy_size().
	select ARCH_HAS_GCOV_PROFILE_ALL if !(!64BIT && CLANG_VERSION >= 200000 && CLANG_VERSION < 220100)
	select ARCH_HAS_KCOV
	select ARCH_HAS_STRNCPY_FROM_USER
	select ARCH_HAS_STRNLEN_USER
+0 −1
Original line number Diff line number Diff line
@@ -60,5 +60,4 @@ CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_NLS=y
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
CONFIG_FRAME_WARN=1024
CONFIG_DEBUG_KERNEL=y
+7 −1
Original line number Diff line number Diff line
@@ -15,6 +15,12 @@
#include "cow.h"
#include "cow_sys.h"

/*
 * arch/um/Makefile remaps strrchr to kernel_strrchr; call the kernel
 * name directly to avoid glibc >= 2.43's C23 strrchr macro.
 */
char *kernel_strrchr(const char *, int);

#define PATH_LEN_V1 256

/* unsigned time_t works until year 2106 */
@@ -153,7 +159,7 @@ static int absolutize(char *to, int size, char *from)
			   errno);
		return -1;
	}
	slash = strrchr(from, '/');
	slash = kernel_strrchr(from, '/');
	if (slash != NULL) {
		*slash = '\0';
		if (chdir(from)) {
+4 −5
Original line number Diff line number Diff line
@@ -112,13 +112,12 @@ static inline int pte_none(pte_t pte)
 */
static inline int pte_read(pte_t pte)
{
	return((pte_get_bits(pte, _PAGE_USER)) &&
	       !(pte_get_bits(pte, _PAGE_PROTNONE)));
	return !pte_get_bits(pte, _PAGE_PROTNONE);
}

static inline int pte_exec(pte_t pte){
	return((pte_get_bits(pte, _PAGE_USER)) &&
	       !(pte_get_bits(pte, _PAGE_PROTNONE)));
static inline int pte_exec(pte_t pte)
{
	return !pte_get_bits(pte, _PAGE_PROTNONE);
}

static inline int pte_write(pte_t pte)
+1 −1
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ stub_signal_interrupt(int sig, siginfo_t *info, void *p)
		/* Receive the FDs */
		num_fds = 0;
		fd_msg = msghdr.msg_control;
		fd_map = (void *)&CMSG_DATA(fd_msg);
		fd_map = (void *)CMSG_DATA(fd_msg);
		if (res == iov.iov_len && msghdr.msg_controllen > sizeof(struct cmsghdr))
			num_fds = (fd_msg->cmsg_len - CMSG_LEN(0)) / sizeof(int);

Loading