patch-2.4.23 linux-2.4.23/arch/x86_64/mm/extable.c

Next file: linux-2.4.23/arch/x86_64/mm/fault.c
Previous file: linux-2.4.23/arch/x86_64/lib/usercopy.c
Back to the patch index
Back to the overall index

diff -urN linux-2.4.22/arch/x86_64/mm/extable.c linux-2.4.23/arch/x86_64/mm/extable.c
@@ -1,10 +1,11 @@
 /*
- * linux/arch/i386/mm/extable.c
+ * linux/arch/x86_64/mm/extable.c
  */
 
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/spinlock.h>
+#include <linux/init.h>
 #include <asm/uaccess.h>
 
 extern const struct exception_table_entry __start___ex_table[];
@@ -39,6 +40,10 @@
 	unsigned long ret = 0;
 	unsigned long flags;
 
+	/* Workaround for an Opteron issue */
+	if ((addr >> 32) == 0) 
+		addr |= 0xffffffffUL << 32; 
+
 #ifndef CONFIG_MODULES
 	/* There is only the kernel to search.  */
 	ret = search_one_table(__start___ex_table, __stop___ex_table-1, addr);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)