Bug 799391
| Summary: | Tasks waiting on a state change of another task may get wrong result | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise MRG | Reporter: | Steven Rostedt <srostedt> | ||||
| Component: | realtime-kernel | Assignee: | John Kacur <jkacur> | ||||
| Status: | CLOSED ERRATA | QA Contact: | David Sommerseth <davids> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 2.2 | CC: | bhu, jkacur, jkastner, lgoncalv, ovasik | ||||
| Target Milestone: | 2.2 | ||||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: |
Cause: wait_task_interactive() ignores the rt_spin_locks state
Consequence: wait_task_interactive() can return with an incorrect result if the task it is waiting for is blocked on a rt_spin_lock() and is waking up.
Fix: wait_task_interactive() must also test the saved_state field saved by rt_spin_locks
Result: The correct result is returned from wait_task_interactive()
|
Story Points: | --- | ||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2012-09-19 18:03:36 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: | |||||||
| Attachments: |
|
||||||
|
Description
Steven Rostedt
2012-03-02 16:19:59 UTC
Created attachment 567100 [details]
Have wait_task_interactive() check saved state of task
In RT, spin locks store the task's state in a shadow copy because the wakeup of the spin lock will change it. On unlock the shadow copy is moved to the original tasks state. But this can confuse wait_task_interactive() because it doesn't see the copy of it. This patch makes wait_task_interactive() aware of the copy as well.
The fix here is equivalent to c7004d0 git describe --contains c7004d0 v3.2.14-rt24~8 Documenting this in the changelog section of kernel-rt.spec
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.
New Contents:
Cause: wait_task_interactive() ignores the rt_spin_locks state
Consequence: wait_task_interactive() can return with an incorrect result if the task it is waiting for is blocked on a rt_spin_lock() and is waking up.
Fix: wait_task_interactive() must also test the saved_state field saved by rt_spin_locks
Result: The correct result is returned from wait_task_interactive()
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2012-1282.html |