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 'for-5.16/parisc-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull more parisc fixes from Helge Deller:
"Fix a build error in stracktrace.c, fix resolving of addresses to
function names in backtraces, fix single-stepping in assembly code and
flush userspace pte's when using set_pte_at()"

* tag 'for-5.16/parisc-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
parisc/entry: fix trace test in syscall exit path
parisc: Flush kernel data mapping in set_pte_at() when installing pte for user page
parisc: Fix implicit declaration of function '__kernel_text_address'
parisc: Fix backtrace to always include init funtion names

+14 -6
+8 -2
arch/parisc/include/asm/pgtable.h
··· 76 76 purge_tlb_end(flags); 77 77 } 78 78 79 + extern void __update_cache(pte_t pte); 80 + 79 81 /* Certain architectures need to do special things when PTEs 80 82 * within a page table are directly modified. Thus, the following 81 83 * hook is made available. ··· 85 83 #define set_pte(pteptr, pteval) \ 86 84 do { \ 87 85 *(pteptr) = (pteval); \ 88 - barrier(); \ 86 + mb(); \ 89 87 } while(0) 90 88 91 89 #define set_pte_at(mm, addr, pteptr, pteval) \ 92 90 do { \ 91 + if (pte_present(pteval) && \ 92 + pte_user(pteval)) \ 93 + __update_cache(pteval); \ 93 94 *(pteptr) = (pteval); \ 94 95 purge_tlb_entries(mm, addr); \ 95 96 } while (0) ··· 308 303 309 304 #define pte_none(x) (pte_val(x) == 0) 310 305 #define pte_present(x) (pte_val(x) & _PAGE_PRESENT) 306 + #define pte_user(x) (pte_val(x) & _PAGE_USER) 311 307 #define pte_clear(mm, addr, xp) set_pte_at(mm, addr, xp, __pte(0)) 312 308 313 309 #define pmd_flag(x) (pmd_val(x) & PxD_FLAG_MASK) ··· 416 410 417 411 #define PG_dcache_dirty PG_arch_1 418 412 419 - extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *); 413 + #define update_mmu_cache(vms,addr,ptep) __update_cache(*ptep) 420 414 421 415 /* Encode and de-code a swap entry */ 422 416
+2 -2
arch/parisc/kernel/cache.c
··· 83 83 #define pfn_va(pfn) __va(PFN_PHYS(pfn)) 84 84 85 85 void 86 - update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep) 86 + __update_cache(pte_t pte) 87 87 { 88 - unsigned long pfn = pte_pfn(*ptep); 88 + unsigned long pfn = pte_pfn(pte); 89 89 struct page *page; 90 90 91 91 /* We don't have pte special. As a result, we can be called with
+1 -1
arch/parisc/kernel/entry.S
··· 1805 1805 1806 1806 /* Are we being ptraced? */ 1807 1807 LDREG TASK_TI_FLAGS(%r1),%r19 1808 - ldi _TIF_SYSCALL_TRACE_MASK,%r2 1808 + ldi _TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2 1809 1809 and,COND(=) %r19,%r2,%r0 1810 1810 b,n syscall_restore_rfi 1811 1811
+1
arch/parisc/kernel/stacktrace.c
··· 8 8 * 9 9 * TODO: Userspace stacktrace (CONFIG_USER_STACKTRACE_SUPPORT) 10 10 */ 11 + #include <linux/kernel.h> 11 12 #include <linux/stacktrace.h> 12 13 13 14 #include <asm/unwind.h>
+2 -1
arch/parisc/kernel/vmlinux.lds.S
··· 57 57 { 58 58 . = KERNEL_BINARY_TEXT_START; 59 59 60 + _stext = .; /* start of kernel text, includes init code & data */ 61 + 60 62 __init_begin = .; 61 63 HEAD_TEXT_SECTION 62 64 MLONGCALL_DISCARD(INIT_TEXT_SECTION(8)) ··· 82 80 /* freed after init ends here */ 83 81 84 82 _text = .; /* Text and read-only data */ 85 - _stext = .; 86 83 MLONGCALL_KEEP(INIT_TEXT_SECTION(8)) 87 84 .text ALIGN(PAGE_SIZE) : { 88 85 TEXT_TEXT