From e7e11d8ba807d451857b5c68abe249c7fc2b980f Mon Sep 17 00:00:00 2001 From: Alexander Stein Date: Tue, 29 May 2012 15:07:30 -0700 Subject: [PATCH] drivers/leds/leds-pca955x.c: fix race condition while setting brightness on several LEDs When issuing the following command: for I in 0 1 2 3 4 5 6 7; do echo 0 > /sys/class/leds/pca955x\:${I}/brightness; done It is possible that all the pca955x_read_ls calls are done sequentially before any pca955x_write_ls call is done. This updates the LS only to the last LED update in its set. Fix this by using a global lock for the pca995x device during pca955x_led_work. Also used a struct for shared data betreen all LEDs. [akpm@linux-foundation.org: revert unintentional rename of pca955x_ledsel()] Signed-off-by: Alexander Stein Cc: Richard Purdie Cc: Bryan Wu Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- Reading git-format-patch failed