diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2014-11-27 11:09:02 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2014-11-27 11:09:02 +1100 |
commit | f4add98b81e6cfa37f05acf8b28dbe10087bac49 (patch) | |
tree | 1f499cfaad3407f01e2d262957beb7561b173454 /include/video | |
parent | 87edffc2f73d3681c3fdd2ef4a581a45a778bda5 (diff) |
Defer input led work to workqueue
When the kbd changes its led state (e.g. caps lock), this triggers
(led_trigger_event) the kbd-capsl trigger, which is by default used by the
vt::capsl LED, which triggers (led_trigger_event) the vt-capsl trigger.
These two nested led_trigger_event calls take a trig->leddev_list_lock
lock and thus lockdep complains.
Actually the user can make the vt::capsl LED use its own vt-capsl trigger
and thus build a loop. This produces an immediate oops.
This changeset defers the second led_trigger_event call into a workqueue,
which avoids the nested locking altogether. This does not prevent the
user from shooting himself in the foot by creating a vt::capsl <->
vt-capsl loop, but the only consequence is the workqueue threads eating
some CPU until the user breaks the loop, which is not too bad.
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'include/video')
0 files changed, 0 insertions, 0 deletions