]> git.baikalelectronics.ru Git - kernel.git/commit
thinkpad-acpi: fix LED handling on older ThinkPads
authorHenrique de Moraes Holschuh <hmh@hmh.eng.br>
Wed, 4 Jun 2008 02:36:11 +0000 (23:36 -0300)
committerLen Brown <len.brown@intel.com>
Wed, 11 Jun 2008 23:13:45 +0000 (19:13 -0400)
commit5a25c942d19cd85d531d4d3127627836fed21441
treedb4b154bbeffe64d275bdfc05a0cc32259e1e54f
parent61d7816417dbae099ec0f779334e3ecf9282e917
thinkpad-acpi: fix LED handling on older ThinkPads

The less tested codepaths for LED handling, used on ThinkPads 570, 600e/x,
770e, 770x, A21e, A2xm/p, T20-22, X20 and maybe a few others, would write
data to kernel memory it had no business touching, for leds number 3 and
above.  If one is lucky, that illegal write would cause an OOPS, but
chances are it would silently corrupt a byte.

The problem was introduced in commit 83b4ebca, "ACPI: thinkpad-acpi: add
sysfs led class support to thinkpad leds (v3.2)".

Fix the bug by refactoring the entire code to be far more obvious on what
it wants to do.  Also do some defensive "constification".

Issue reported by Karol Lewandowski <lmctlx@gmail.com> (he's an lucky guy
and got an OOPS instead of silent corruption :-) ).

Root cause of the OOPS identified by Adrian Bunk <bunk@kernel.org>.
Thanks, Adrian!

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Tested-by: Karol Lewandowski <lmctlx@gmail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/misc/thinkpad_acpi.c