diff options
| -rw-r--r-- | arch/arm64/include/asm/cpucaps.h | 2 | ||||
| -rw-r--r-- | arch/arm64/include/asm/module.h | 3 | ||||
| -rw-r--r-- | arch/arm64/kernel/module-plts.c | 7 | 
3 files changed, 6 insertions, 6 deletions
| diff --git a/arch/arm64/include/asm/cpucaps.h b/arch/arm64/include/asm/cpucaps.h index 5e3ec59fb48b..68b0a658e082 100644 --- a/arch/arm64/include/asm/cpucaps.h +++ b/arch/arm64/include/asm/cpucaps.h @@ -44,6 +44,8 @@ cpucap_is_possible(const unsigned int cap)  		return IS_ENABLED(CONFIG_ARM64_TLB_RANGE);  	case ARM64_UNMAP_KERNEL_AT_EL0:  		return IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0); +	case ARM64_WORKAROUND_843419: +		return IS_ENABLED(CONFIG_ARM64_ERRATUM_843419);  	case ARM64_WORKAROUND_2658417:  		return IS_ENABLED(CONFIG_ARM64_ERRATUM_2658417);  	} diff --git a/arch/arm64/include/asm/module.h b/arch/arm64/include/asm/module.h index bfa6638b4c93..79550b22ba19 100644 --- a/arch/arm64/include/asm/module.h +++ b/arch/arm64/include/asm/module.h @@ -44,8 +44,7 @@ struct plt_entry {  static inline bool is_forbidden_offset_for_adrp(void *place)  { -	return IS_ENABLED(CONFIG_ARM64_ERRATUM_843419) && -	       cpus_have_const_cap(ARM64_WORKAROUND_843419) && +	return cpus_have_final_cap(ARM64_WORKAROUND_843419) &&  	       ((u64)place & 0xfff) >= 0xff8;  } diff --git a/arch/arm64/kernel/module-plts.c b/arch/arm64/kernel/module-plts.c index bd69a4e7cd60..399692c414f0 100644 --- a/arch/arm64/kernel/module-plts.c +++ b/arch/arm64/kernel/module-plts.c @@ -203,8 +203,7 @@ static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num,  			break;  		case R_AARCH64_ADR_PREL_PG_HI21_NC:  		case R_AARCH64_ADR_PREL_PG_HI21: -			if (!IS_ENABLED(CONFIG_ARM64_ERRATUM_843419) || -			    !cpus_have_const_cap(ARM64_WORKAROUND_843419)) +			if (!cpus_have_final_cap(ARM64_WORKAROUND_843419))  				break;  			/* @@ -239,13 +238,13 @@ static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int num,  		}  	} -	if (IS_ENABLED(CONFIG_ARM64_ERRATUM_843419) && -	    cpus_have_const_cap(ARM64_WORKAROUND_843419)) +	if (cpus_have_final_cap(ARM64_WORKAROUND_843419)) {  		/*  		 * Add some slack so we can skip PLT slots that may trigger  		 * the erratum due to the placement of the ADRP instruction.  		 */  		ret += DIV_ROUND_UP(ret, (SZ_4K / sizeof(struct plt_entry))); +	}  	return ret;  } | 
