Commit 5f53fa50 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull parisc fixes from Helge Deller:
 "Increase the FRAME_WARN value to avoid some new warnings which showed
  up in the Linux kernel test project, revert a patch which moved the
  _stext symbol and thus tiggered errors in the hardened usercopy
  checks, and introduce an extru_safe() assembler macro to overcome
  possible unsafe usage of the extru asm statement on 64-bit PA2.0
  machines"

* tag 'for-5.16/parisc-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  Revert "parisc: Fix backtrace to always include init funtion names"
  parisc: Convert PTE lookup to use extru_safe() macro
  parisc: Fix extraction of hash lock bits in syscall.S
  parisc: Provide an extru_safe() macro to extract unsigned bits
  parisc: Increase FRAME_WARN to 2048 bytes on parisc
parents 29889216 98400ad7
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -147,6 +147,17 @@
	extrd,u \r, 63-(\sa), 64-(\sa), \t
	.endm

	/* Extract unsigned for 32- and 64-bit
	 * The extru instruction leaves the most significant 32 bits of the
	 * target register in an undefined state on PA 2.0 systems. */
	.macro extru_safe r, p, len, t
#ifdef CONFIG_64BIT
	extrd,u	\r, 32+(\p), \len, \t
#else
	extru	\r, \p, \len, \t
#endif
	.endm

	/* load 32-bit 'value' into 'reg' compensating for the ldil
	 * sign-extension when running in wide mode.
	 * WARNING!! neither 'value' nor 'reg' can be expressions
+3 −11
Original line number Diff line number Diff line
@@ -366,17 +366,9 @@
	 */
	.macro		L2_ptep	pmd,pte,index,va,fault
#if CONFIG_PGTABLE_LEVELS == 3
	extru		\va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index
	extru_safe	\va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index
#else
# if defined(CONFIG_64BIT)
	extrd,u		\va,63-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
  #else
  # if PAGE_SIZE > 4096
	extru		\va,31-ASM_PGDIR_SHIFT,32-ASM_PGDIR_SHIFT,\index
  # else
	extru		\va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
  # endif
# endif
	extru_safe	\va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
#endif
	dep             %r0,31,PAGE_SHIFT,\pmd  /* clear offset */
#if CONFIG_PGTABLE_LEVELS < 3
@@ -386,7 +378,7 @@
	bb,>=,n		\pmd,_PxD_PRESENT_BIT,\fault
	dep		%r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */
	SHLREG		\pmd,PxD_VALUE_SHIFT,\pmd
	extru		\va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index
	extru_safe	\va,31-PAGE_SHIFT,ASM_BITS_PER_PTE,\index
	dep		%r0,31,PAGE_SHIFT,\pmd  /* clear offset */
	shladd		\index,BITS_PER_PTE_ENTRY,\pmd,\pmd /* pmd is now pte */
	.endm
+2 −2
Original line number Diff line number Diff line
@@ -566,7 +566,7 @@ lws_compare_and_swap:
	ldo	R%lws_lock_start(%r20), %r28

	/* Extract eight bits from r26 and hash lock (Bits 3-11) */
	extru  %r26, 28, 8, %r20
	extru_safe  %r26, 28, 8, %r20

	/* Find lock to use, the hash is either one of 0 to
	   15, multiplied by 16 (keep it 16-byte aligned)
@@ -751,7 +751,7 @@ cas2_lock_start:
	ldo	R%lws_lock_start(%r20), %r28

	/* Extract eight bits from r26 and hash lock (Bits 3-11) */
	extru  %r26, 28, 8, %r20
	extru_safe  %r26, 28, 8, %r20

	/* Find lock to use, the hash is either one of 0 to
	   15, multiplied by 16 (keep it 16-byte aligned)
+1 −2
Original line number Diff line number Diff line
@@ -57,8 +57,6 @@ SECTIONS
{
	. = KERNEL_BINARY_TEXT_START;

	_stext = .;	/* start of kernel text, includes init code & data */

	__init_begin = .;
	HEAD_TEXT_SECTION
	MLONGCALL_DISCARD(INIT_TEXT_SECTION(8))
@@ -82,6 +80,7 @@ SECTIONS
	/* freed after init ends here */

	_text = .;		/* Text and read-only data */
	_stext = .;
	MLONGCALL_KEEP(INIT_TEXT_SECTION(8))
	.text ALIGN(PAGE_SIZE) : {
		TEXT_TEXT
+3 −2
Original line number Diff line number Diff line
@@ -346,8 +346,9 @@ config FRAME_WARN
	int "Warn for stack frames larger than"
	range 0 8192
	default 2048 if GCC_PLUGIN_LATENT_ENTROPY
	default 1536 if (!64BIT && (PARISC || XTENSA))
	default 1024 if (!64BIT && !PARISC)
	default 2048 if PARISC
	default 1536 if (!64BIT && XTENSA)
	default 1024 if !64BIT
	default 2048 if 64BIT
	help
	  Tell gcc to warn at build time for stack frames larger than this.