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 |