Bug 169294
| Summary: | [RHEL3 U6] __copy_user/memcpy causes random kernel panic on IA-64 systems | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 3 | Reporter: | Issue Tracker <tao> |
| Component: | kernel | Assignee: | Geoff Gustafson <grgustaf> |
| Status: | CLOSED ERRATA | QA Contact: | Brian Brock <bbrock> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 3.0 | CC: | jburke, petrides, tao |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | ia64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | RHSA-2006-0144 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2006-03-15 16:42:54 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 168424 | ||
|
Description
Issue Tracker
2005-09-26 17:50:38 UTC
Reposting the patch publicly.
Excerpt from ChangeLog-2.6.14-rc1:
When copying data from user-space to kernel-space by __copy_user(),
a page_not_present fault sometimes occurs at vmalloced kernel address
because of VHPT pre-fetching.
Ignore the page_not_present fault in ia64_do_page_fault() before
jumping into exception handlers.
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
file:a949a83e0dccbb34531dea37145fee9ab3ea6895 ->
file:ee85e28e2ec5f05486b25265ce2a9568590ea7af
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -206,9 +206,6 @@ ia64_do_page_fault (unsigned long addres
return;
}
- if (done_with_exception(regs))
- return;
-
/*
* Since we have no vma's for region 5, we might get here even if the
address is
* valid, due to the VHPT walker inserting a non present translation that
becomes
@@ -219,6 +216,9 @@ ia64_do_page_fault (unsigned long addres
if (REGION_NUMBER(address) == 5 && mapped_kernel_page_is_present(address))
return;
+ if (done_with_exception(regs))
+ return;
+
/*
* Oops. The kernel tried to access some bad page. We'll have to
terminate things
* with extreme prejudice.
In answer to comment #10, the fix is queued for the next U7 build, which will probably occur tomorrow night. A fix for this problem has just been committed to the RHEL3 U7 patch pool this evening (in kernel version 2.4.21-37.12.EL). An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2006-0144.html |