Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'uml-for-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/uml/linux

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

+33 -16
+3 -1
arch/um/Kconfig
··· 11 11 select ARCH_HAS_CACHE_LINE_SIZE 12 12 select ARCH_HAS_CPU_FINALIZE_INIT 13 13 select ARCH_HAS_FORTIFY_SOURCE 14 - select ARCH_HAS_GCOV_PROFILE_ALL 14 + # Clang 20 & 21 miscompute __builtin_object_size() under -fprofile-arcs 15 + # on 32-bit, causing spurious compile-time errors in check_copy_size(). 16 + select ARCH_HAS_GCOV_PROFILE_ALL if !(!64BIT && CLANG_VERSION >= 200000 && CLANG_VERSION < 220100) 15 17 select ARCH_HAS_KCOV 16 18 select ARCH_HAS_STRNCPY_FROM_USER 17 19 select ARCH_HAS_STRNLEN_USER
-1
arch/um/configs/x86_64_defconfig
··· 60 60 CONFIG_TMPFS=y 61 61 CONFIG_NLS=y 62 62 CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y 63 - CONFIG_FRAME_WARN=1024 64 63 CONFIG_DEBUG_KERNEL=y
+7 -1
arch/um/drivers/cow_user.c
··· 15 15 #include "cow.h" 16 16 #include "cow_sys.h" 17 17 18 + /* 19 + * arch/um/Makefile remaps strrchr to kernel_strrchr; call the kernel 20 + * name directly to avoid glibc >= 2.43's C23 strrchr macro. 21 + */ 22 + char *kernel_strrchr(const char *, int); 23 + 18 24 #define PATH_LEN_V1 256 19 25 20 26 /* unsigned time_t works until year 2106 */ ··· 159 153 errno); 160 154 return -1; 161 155 } 162 - slash = strrchr(from, '/'); 156 + slash = kernel_strrchr(from, '/'); 163 157 if (slash != NULL) { 164 158 *slash = '\0'; 165 159 if (chdir(from)) {
+4 -5
arch/um/include/asm/pgtable.h
··· 112 112 */ 113 113 static inline int pte_read(pte_t pte) 114 114 { 115 - return((pte_get_bits(pte, _PAGE_USER)) && 116 - !(pte_get_bits(pte, _PAGE_PROTNONE))); 115 + return !pte_get_bits(pte, _PAGE_PROTNONE); 117 116 } 118 117 119 - static inline int pte_exec(pte_t pte){ 120 - return((pte_get_bits(pte, _PAGE_USER)) && 121 - !(pte_get_bits(pte, _PAGE_PROTNONE))); 118 + static inline int pte_exec(pte_t pte) 119 + { 120 + return !pte_get_bits(pte, _PAGE_PROTNONE); 122 121 } 123 122 124 123 static inline int pte_write(pte_t pte)
+1 -1
arch/um/kernel/skas/stub.c
··· 146 146 /* Receive the FDs */ 147 147 num_fds = 0; 148 148 fd_msg = msghdr.msg_control; 149 - fd_map = (void *)&CMSG_DATA(fd_msg); 149 + fd_map = (void *)CMSG_DATA(fd_msg); 150 150 if (res == iov.iov_len && msghdr.msg_controllen > sizeof(struct cmsghdr)) 151 151 num_fds = (fd_msg->cmsg_len - CMSG_LEN(0)) / sizeof(int); 152 152
+2 -2
arch/um/kernel/skas/uaccess.c
··· 170 170 char **to_ptr = arg, *to = *to_ptr; 171 171 int n; 172 172 173 - strncpy(to, (void *) from, len); 174 - n = strnlen(to, len); 173 + n = strnlen((void *) from, len); 174 + memcpy_and_pad(to, len, (void *) from, n, 0); 175 175 *to_ptr += n; 176 176 177 177 if (n < len)
+2 -2
arch/um/kernel/tlb.c
··· 29 29 unsigned long virt, unsigned long len, int prot, 30 30 int phys_fd, unsigned long long offset) 31 31 { 32 - /* TODO: Why is executable needed to be always set in the kernel? */ 33 32 return os_map_memory((void *)virt, phys_fd, offset, len, 34 33 prot & UM_PROT_READ, prot & UM_PROT_WRITE, 35 - 1); 34 + prot & UM_PROT_EXEC); 36 35 } 37 36 38 37 static int kern_unmap(struct mm_id *mm_idp, ··· 164 165 unsigned long addr, next; 165 166 int ret = 0; 166 167 168 + guard(spinlock_irqsave)(&mm->page_table_lock); 167 169 guard(spinlock_irqsave)(&mm->context.sync_tlb_lock); 168 170 169 171 if (mm->context.sync_tlb_range_to == 0)
+2
arch/x86/Makefile.um
··· 60 60 LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib64 61 61 LINK-y += -m64 62 62 63 + vdso-install-y += arch/x86/um/vdso/vdso.so.dbg 64 + 63 65 endif
+6
arch/x86/um/os-Linux/mcontext.c
··· 4 4 #include <linux/string.h> 5 5 #include <sys/ucontext.h> 6 6 #include <asm/ptrace.h> 7 + /* 8 + * musl defines struct sigcontext in <bits/signal.h>. Rename the kernel's 9 + * copy to avoid redefinition while keeping the FP-state types available. 10 + */ 11 + #define sigcontext __kernel_sigcontext 7 12 #include <asm/sigcontext.h> 13 + #undef sigcontext 8 14 #include <sysdep/ptrace.h> 9 15 #include <sysdep/mcontext.h> 10 16 #include <arch.h>
-2
arch/x86/um/vdso/Makefile
··· 3 3 # Building vDSO images for x86. 4 4 # 5 5 6 - vdso-install-y += vdso.so 7 - 8 6 # files to link into the vdso 9 7 vobjs-y := vdso-note.o um_vdso.o 10 8
+5 -1
include/uapi/linux/um_timetravel.h
··· 56 56 * in the control message 57 57 */ 58 58 UM_TIMETRAVEL_SHARED_LOGFD, 59 + /** 60 + * @UM_TIMETRAVEL_SHARED_MAX_FDS: number of fds listed here 61 + */ 59 62 UM_TIMETRAVEL_SHARED_MAX_FDS, 60 63 }; 61 64 ··· 245 242 __u64 req_time; 246 243 __u64 name; 247 244 }; 245 + /* private: */ 248 246 char reserve[128]; /* reserved for future usage */ 249 247 }; 250 248 ··· 268 264 * is made by any client. Clients also must update this value when they 269 265 * insert/update an own request into the shared memory while not running 270 266 * themselves, and the new request is before than the current value. 271 - * current_time: Current time, can only be set by the client in running state 267 + * @current_time: Current time, can only be set by the client in running state 272 268 * (indicated by @running_id), though that client may only run until @free_until, 273 269 * so it must remain smaller than @free_until. 274 270 * @running_id: The current client in state running, set before a client is
+1
mm/Kconfig
··· 570 570 depends on !ARM || CPU_CACHE_VIPT 571 571 depends on !PARISC || PA20 572 572 depends on !SPARC32 573 + depends on !UML 573 574 574 575 config ARCH_ENABLE_SPLIT_PMD_PTLOCK 575 576 bool