add patch to revert ARM misaligned access check to stop kernel OOPS, actually apply highbank sata patch

This commit is contained in:
Peter Robinson 2012-10-22 09:45:28 +01:00
parent bd39f7b459
commit 6419bc9683
2 changed files with 90 additions and 8 deletions

View File

@ -0,0 +1,83 @@
commit dd945918f747f61eff384f5cb8889e524f60615a
Author: Jon Masters <jcm@jonmasters.org>
Date: Fri Oct 5 22:32:29 2012 -0400
Revert "ARM: 7528/1: uaccess: annotate [__]{get,put}_user functions with might_fault()"
This reverts commit ad72907acd2943304c292ae36960bb66e6dc23c9.
Technically, the original commit is totally correct, however it exposes
a deep-rooted problem with missaligned accesses in e.g. the networking
stack and we need to revert this (sweep under rug) until we can get
a good solution in place upstream. The problem is that the compiler
believes the structs concerned are aligned (they are in the code),
however at runtime the IP structs are actually not aligned within
received network packets, and the fault handler is not guaranteed
to be entirely atomic and free of calls to the scheduler.
Signed-off-by: Jon Masters <jcm@jonmasters.org>
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index 77bd79f..6f83ad6 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -118,7 +118,7 @@ extern int __get_user_4(void *);
: "0" (__p), "r" (__l) \
: __GUP_CLOBBER_##__s)
-#define __get_user_check(x,p) \
+#define get_user(x,p) \
({ \
unsigned long __limit = current_thread_info()->addr_limit - 1; \
register const typeof(*(p)) __user *__p asm("r0") = (p);\
@@ -141,12 +141,6 @@ extern int __get_user_4(void *);
__e; \
})
-#define get_user(x,p) \
- ({ \
- might_fault(); \
- __get_user_check(x,p); \
- })
-
extern int __put_user_1(void *, unsigned int);
extern int __put_user_2(void *, unsigned int);
extern int __put_user_4(void *, unsigned int);
@@ -161,7 +155,7 @@ extern int __put_user_8(void *, unsigned long long);
: "0" (__p), "r" (__r2), "r" (__l) \
: "ip", "lr", "cc")
-#define __put_user_check(x,p) \
+#define put_user(x,p) \
({ \
unsigned long __limit = current_thread_info()->addr_limit - 1; \
register const typeof(*(p)) __r2 asm("r2") = (x); \
@@ -186,12 +180,6 @@ extern int __put_user_8(void *, unsigned long long);
__e; \
})
-#define put_user(x,p) \
- ({ \
- might_fault(); \
- __put_user_check(x,p); \
- })
-
#else /* CONFIG_MMU */
/*
@@ -245,7 +233,6 @@ do { \
unsigned long __gu_addr = (unsigned long)(ptr); \
unsigned long __gu_val; \
__chk_user_ptr(ptr); \
- might_fault(); \
switch (sizeof(*(ptr))) { \
case 1: __get_user_asm_byte(__gu_val,__gu_addr,err); break; \
case 2: __get_user_asm_half(__gu_val,__gu_addr,err); break; \
@@ -327,7 +314,6 @@ do { \
unsigned long __pu_addr = (unsigned long)(ptr); \
__typeof__(*(ptr)) __pu_val = (x); \
__chk_user_ptr(ptr); \
- might_fault(); \
switch (sizeof(*(ptr))) { \
case 1: __put_user_asm_byte(__pu_val,__pu_addr,err); break; \
case 2: __put_user_asm_half(__pu_val,__pu_addr,err); break; \

View File

@ -733,6 +733,7 @@ Patch19001: i82975x-edac-fix.patch
Patch21000: arm-read_current_timer.patch
Patch21001: arm-fix-omapdrm.patch
Patch21002: arm-fix_radio_shark.patch
Patch21003: arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch
# OMAP
# ARM tegra
@ -747,10 +748,6 @@ Patch21010: arm-highbank-sata-fix.patch
Patch21020: arm-smdk310-regulator-fix.patch
Patch21021: arm-origen-regulator-fix.patch
# ARM exynos4
Patch21020: arm-smdk310-regulator-fix.patch
Patch21021: arm-origen-regulator-fix.patch
Patch21094: power-x86-destdir.patch
#rhbz 754518
@ -1356,10 +1353,8 @@ ApplyPatch arm-fix_radio_shark.patch
ApplyPatch arm-tegra-nvec-kconfig.patch
ApplyPatch arm-tegra-usb-no-reset-linux33.patch
ApplyPatch arm-tegra-sdhci-module-fix.patch
ApplyPatch arm-smdk310-regulator-fix.patch
ApplyPatch arm-origen-regulator-fix.patch
ApplyPatch arm-highbank-sata-fix.patch
ApplyPatch arm-linux-3.6-revert-missaligned-access-check-on-put_user.patch
ApplyPatch arm-smdk310-regulator-fix.patch
ApplyPatch arm-origen-regulator-fix.patch
@ -2353,6 +2348,10 @@ fi
# ||----w |
# || ||
%changelog
* Mon Oct 22 2012 Peter Robinson <pbrobinson@fedoraproject.org>
- Revert ARM misaligned access check to stop kernel OOPS
- Actually apply highbank sata patch
* Thu Oct 18 2012 Josh Boyer <jwboyer@redhat.com>
- Patch to have mac80211 connect with HT20 if HT40 is not allowed (rhbz 866013)
- Enable VFIO (rhbz 867152)