From: Alexander Stein Date: Tue, 29 May 2012 22:07:30 +0000 (-0700) Subject: drivers/leds/leds-pca955x.c: fix race condition while setting brightness on several... X-Git-Tag: v3.5-rc1~49^2~22 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7e11d8ba807d451857b5c68abe249c7fc2b980f;p=pandora-kernel.git 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-diff-tree failed