Loading arch/arm/configs/multi_v7_defconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -825,6 +825,7 @@ CONFIG_QCOM_SMSM=y CONFIG_QCOM_WCNSS_CTRL=m CONFIG_QCOM_WCNSS_CTRL=m CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_COMMON_CLK_QCOM=y CONFIG_COMMON_CLK_QCOM=y CONFIG_QCOM_CLK_RPM=y CONFIG_CHROME_PLATFORMS=y CONFIG_CHROME_PLATFORMS=y CONFIG_STAGING_BOARD=y CONFIG_STAGING_BOARD=y CONFIG_CROS_EC_CHARDEV=m CONFIG_CROS_EC_CHARDEV=m Loading arch/arm/include/asm/uaccess.h +32 −12 Original line number Original line Diff line number Diff line Loading @@ -478,11 +478,10 @@ extern unsigned long __must_check arm_copy_from_user(void *to, const void __user *from, unsigned long n); arm_copy_from_user(void *to, const void __user *from, unsigned long n); static inline unsigned long __must_check static inline unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n) __arch_copy_from_user(void *to, const void __user *from, unsigned long n) { { unsigned int __ua_flags; unsigned int __ua_flags; check_object_size(to, n, false); __ua_flags = uaccess_save_and_enable(); __ua_flags = uaccess_save_and_enable(); n = arm_copy_from_user(to, from, n); n = arm_copy_from_user(to, from, n); uaccess_restore(__ua_flags); uaccess_restore(__ua_flags); Loading @@ -495,18 +494,15 @@ extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n); __copy_to_user_std(void __user *to, const void *from, unsigned long n); static inline unsigned long __must_check static inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n) __arch_copy_to_user(void __user *to, const void *from, unsigned long n) { { #ifndef CONFIG_UACCESS_WITH_MEMCPY #ifndef CONFIG_UACCESS_WITH_MEMCPY unsigned int __ua_flags; unsigned int __ua_flags; check_object_size(from, n, true); __ua_flags = uaccess_save_and_enable(); __ua_flags = uaccess_save_and_enable(); n = arm_copy_to_user(to, from, n); n = arm_copy_to_user(to, from, n); uaccess_restore(__ua_flags); uaccess_restore(__ua_flags); return n; return n; #else #else check_object_size(from, n, true); return arm_copy_to_user(to, from, n); return arm_copy_to_user(to, from, n); #endif #endif } } Loading @@ -526,25 +522,49 @@ __clear_user(void __user *addr, unsigned long n) } } #else #else #define __copy_from_user(to, from, n) (memcpy(to, (void __force *)from, n), 0) #define __arch_copy_from_user(to, from, n) \ #define __copy_to_user(to, from, n) (memcpy((void __force *)to, from, n), 0) (memcpy(to, (void __force *)from, n), 0) #define __arch_copy_to_user(to, from, n) \ (memcpy((void __force *)to, from, n), 0) #define __clear_user(addr, n) (memset((void __force *)addr, 0, n), 0) #define __clear_user(addr, n) (memset((void __force *)addr, 0, n), 0) #endif #endif static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) static inline unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n) { check_object_size(to, n, false); return __arch_copy_from_user(to, from, n); } static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) { { unsigned long res = n; unsigned long res = n; check_object_size(to, n, false); if (likely(access_ok(VERIFY_READ, from, n))) if (likely(access_ok(VERIFY_READ, from, n))) res = __copy_from_user(to, from, n); res = __arch_copy_from_user(to, from, n); if (unlikely(res)) if (unlikely(res)) memset(to + (n - res), 0, res); memset(to + (n - res), 0, res); return res; return res; } } static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) static inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n) { { check_object_size(from, n, true); return __arch_copy_to_user(to, from, n); } static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) { check_object_size(from, n, true); if (access_ok(VERIFY_WRITE, to, n)) if (access_ok(VERIFY_WRITE, to, n)) n = __copy_to_user(to, from, n); n = __arch_copy_to_user(to, from, n); return n; return n; } } Loading arch/arm/lib/getuser.S +1 −1 Original line number Original line Diff line number Diff line Loading @@ -67,7 +67,7 @@ ENTRY(__get_user_4) ENDPROC(__get_user_4) ENDPROC(__get_user_4) ENTRY(__get_user_8) ENTRY(__get_user_8) check_uaccess r0, 8, r1, r2, __get_user_bad check_uaccess r0, 8, r1, r2, __get_user_bad8 #ifdef CONFIG_THUMB2_KERNEL #ifdef CONFIG_THUMB2_KERNEL 5: TUSER(ldr) r2, [r0] 5: TUSER(ldr) r2, [r0] 6: TUSER(ldr) r3, [r0, #4] 6: TUSER(ldr) r3, [r0, #4] Loading arch/powerpc/mm/init_64.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -347,7 +347,8 @@ early_param("disable_radix", parse_disable_radix); void __init mmu_early_init_devtree(void) void __init mmu_early_init_devtree(void) { { /* Disable radix mode based on kernel command line. */ /* Disable radix mode based on kernel command line. */ if (disable_radix) /* We don't yet have the machinery to do radix as a guest. */ if (disable_radix || !(mfmsr() & MSR_HV)) cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX; cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX; if (early_radix_enabled()) if (early_radix_enabled()) Loading arch/x86/kernel/vm86_32.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -160,11 +160,12 @@ void save_v86_state(struct kernel_vm86_regs *regs, int retval) static void mark_screen_rdonly(struct mm_struct *mm) static void mark_screen_rdonly(struct mm_struct *mm) { { struct vm_area_struct *vma; spinlock_t *ptl; pgd_t *pgd; pgd_t *pgd; pud_t *pud; pud_t *pud; pmd_t *pmd; pmd_t *pmd; pte_t *pte; pte_t *pte; spinlock_t *ptl; int i; int i; down_write(&mm->mmap_sem); down_write(&mm->mmap_sem); Loading @@ -177,7 +178,7 @@ static void mark_screen_rdonly(struct mm_struct *mm) pmd = pmd_offset(pud, 0xA0000); pmd = pmd_offset(pud, 0xA0000); if (pmd_trans_huge(*pmd)) { if (pmd_trans_huge(*pmd)) { struct vm_area_struct *vma = find_vma(mm, 0xA0000); vma = find_vma(mm, 0xA0000); split_huge_pmd(vma, pmd, 0xA0000); split_huge_pmd(vma, pmd, 0xA0000); } } if (pmd_none_or_clear_bad(pmd)) if (pmd_none_or_clear_bad(pmd)) Loading Loading
arch/arm/configs/multi_v7_defconfig +1 −0 Original line number Original line Diff line number Diff line Loading @@ -825,6 +825,7 @@ CONFIG_QCOM_SMSM=y CONFIG_QCOM_WCNSS_CTRL=m CONFIG_QCOM_WCNSS_CTRL=m CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_ROCKCHIP_PM_DOMAINS=y CONFIG_COMMON_CLK_QCOM=y CONFIG_COMMON_CLK_QCOM=y CONFIG_QCOM_CLK_RPM=y CONFIG_CHROME_PLATFORMS=y CONFIG_CHROME_PLATFORMS=y CONFIG_STAGING_BOARD=y CONFIG_STAGING_BOARD=y CONFIG_CROS_EC_CHARDEV=m CONFIG_CROS_EC_CHARDEV=m Loading
arch/arm/include/asm/uaccess.h +32 −12 Original line number Original line Diff line number Diff line Loading @@ -478,11 +478,10 @@ extern unsigned long __must_check arm_copy_from_user(void *to, const void __user *from, unsigned long n); arm_copy_from_user(void *to, const void __user *from, unsigned long n); static inline unsigned long __must_check static inline unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n) __arch_copy_from_user(void *to, const void __user *from, unsigned long n) { { unsigned int __ua_flags; unsigned int __ua_flags; check_object_size(to, n, false); __ua_flags = uaccess_save_and_enable(); __ua_flags = uaccess_save_and_enable(); n = arm_copy_from_user(to, from, n); n = arm_copy_from_user(to, from, n); uaccess_restore(__ua_flags); uaccess_restore(__ua_flags); Loading @@ -495,18 +494,15 @@ extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n); __copy_to_user_std(void __user *to, const void *from, unsigned long n); static inline unsigned long __must_check static inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n) __arch_copy_to_user(void __user *to, const void *from, unsigned long n) { { #ifndef CONFIG_UACCESS_WITH_MEMCPY #ifndef CONFIG_UACCESS_WITH_MEMCPY unsigned int __ua_flags; unsigned int __ua_flags; check_object_size(from, n, true); __ua_flags = uaccess_save_and_enable(); __ua_flags = uaccess_save_and_enable(); n = arm_copy_to_user(to, from, n); n = arm_copy_to_user(to, from, n); uaccess_restore(__ua_flags); uaccess_restore(__ua_flags); return n; return n; #else #else check_object_size(from, n, true); return arm_copy_to_user(to, from, n); return arm_copy_to_user(to, from, n); #endif #endif } } Loading @@ -526,25 +522,49 @@ __clear_user(void __user *addr, unsigned long n) } } #else #else #define __copy_from_user(to, from, n) (memcpy(to, (void __force *)from, n), 0) #define __arch_copy_from_user(to, from, n) \ #define __copy_to_user(to, from, n) (memcpy((void __force *)to, from, n), 0) (memcpy(to, (void __force *)from, n), 0) #define __arch_copy_to_user(to, from, n) \ (memcpy((void __force *)to, from, n), 0) #define __clear_user(addr, n) (memset((void __force *)addr, 0, n), 0) #define __clear_user(addr, n) (memset((void __force *)addr, 0, n), 0) #endif #endif static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) static inline unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n) { check_object_size(to, n, false); return __arch_copy_from_user(to, from, n); } static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) { { unsigned long res = n; unsigned long res = n; check_object_size(to, n, false); if (likely(access_ok(VERIFY_READ, from, n))) if (likely(access_ok(VERIFY_READ, from, n))) res = __copy_from_user(to, from, n); res = __arch_copy_from_user(to, from, n); if (unlikely(res)) if (unlikely(res)) memset(to + (n - res), 0, res); memset(to + (n - res), 0, res); return res; return res; } } static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) static inline unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n) { { check_object_size(from, n, true); return __arch_copy_to_user(to, from, n); } static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n) { check_object_size(from, n, true); if (access_ok(VERIFY_WRITE, to, n)) if (access_ok(VERIFY_WRITE, to, n)) n = __copy_to_user(to, from, n); n = __arch_copy_to_user(to, from, n); return n; return n; } } Loading
arch/arm/lib/getuser.S +1 −1 Original line number Original line Diff line number Diff line Loading @@ -67,7 +67,7 @@ ENTRY(__get_user_4) ENDPROC(__get_user_4) ENDPROC(__get_user_4) ENTRY(__get_user_8) ENTRY(__get_user_8) check_uaccess r0, 8, r1, r2, __get_user_bad check_uaccess r0, 8, r1, r2, __get_user_bad8 #ifdef CONFIG_THUMB2_KERNEL #ifdef CONFIG_THUMB2_KERNEL 5: TUSER(ldr) r2, [r0] 5: TUSER(ldr) r2, [r0] 6: TUSER(ldr) r3, [r0, #4] 6: TUSER(ldr) r3, [r0, #4] Loading
arch/powerpc/mm/init_64.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -347,7 +347,8 @@ early_param("disable_radix", parse_disable_radix); void __init mmu_early_init_devtree(void) void __init mmu_early_init_devtree(void) { { /* Disable radix mode based on kernel command line. */ /* Disable radix mode based on kernel command line. */ if (disable_radix) /* We don't yet have the machinery to do radix as a guest. */ if (disable_radix || !(mfmsr() & MSR_HV)) cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX; cur_cpu_spec->mmu_features &= ~MMU_FTR_TYPE_RADIX; if (early_radix_enabled()) if (early_radix_enabled()) Loading
arch/x86/kernel/vm86_32.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -160,11 +160,12 @@ void save_v86_state(struct kernel_vm86_regs *regs, int retval) static void mark_screen_rdonly(struct mm_struct *mm) static void mark_screen_rdonly(struct mm_struct *mm) { { struct vm_area_struct *vma; spinlock_t *ptl; pgd_t *pgd; pgd_t *pgd; pud_t *pud; pud_t *pud; pmd_t *pmd; pmd_t *pmd; pte_t *pte; pte_t *pte; spinlock_t *ptl; int i; int i; down_write(&mm->mmap_sem); down_write(&mm->mmap_sem); Loading @@ -177,7 +178,7 @@ static void mark_screen_rdonly(struct mm_struct *mm) pmd = pmd_offset(pud, 0xA0000); pmd = pmd_offset(pud, 0xA0000); if (pmd_trans_huge(*pmd)) { if (pmd_trans_huge(*pmd)) { struct vm_area_struct *vma = find_vma(mm, 0xA0000); vma = find_vma(mm, 0xA0000); split_huge_pmd(vma, pmd, 0xA0000); split_huge_pmd(vma, pmd, 0xA0000); } } if (pmd_none_or_clear_bad(pmd)) if (pmd_none_or_clear_bad(pmd)) Loading