ACPI: ec: fix race in status register access
authorAlexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Wed, 7 Mar 2007 23:29:35 +0000 (18:29 -0500)
committerLen Brown <len.brown@intel.com>
Sat, 10 Mar 2007 04:16:23 +0000 (23:16 -0500)
commit9e197219605513c14d3eae41039ecf1b82d1920d
tree143f16569165e172efd12d938003a48f61c7de62
parent08e15e81a40e3241ce93b4a43886f3abda184aa6
ACPI: ec: fix race in status register access

Delay the read of the EC status register until
after the event that caused it occurs -- otherwise
it is possible to read and act on stale status that was
associated with the previous event.

Do this with a perpetually incrementing "event_count" to detect
when a new event occurs and it is safe to read status.

There is no workaround for polling mode -- it is inherently
exposed to reading and acting on stale status, since it
doesn't have an interrupt to tell it the event completed.

http://bugzilla.kernel.org/show_bug.cgi?id=8110

Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/ec.c