Patch "gpio: pca953x: Fix pca953x_gpio_set_multiple() on 64-bit" has been added to the 4.5-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
gpio: pca953x: Fix pca953x_gpio_set_multiple() on 64-bit
to the 4.5-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
gpio-pca953x-fix-pca953x_gpio_set_multiple-on-64-bit.patch
and it can be found in the queue-4.5 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
e0a8604f1300cefab4aeafe214fc57954a7b4487Mon Sep 17 00:00:00 2001
From: Geert Uytterhoeven <[email protected]>
Date: Fri, 11 Mar 2016 17:31:27 +0100
Subject: gpio: pca953x: Fix pca953x_gpio_set_multiple() on 64-bit
From: Geert Uytterhoeven <[email protected]>
commit e0a8604f1300cefab4aeafe214fc57954a7b4487 upstream.
pca953x_gpio_set_multiple() divides by 4 to convert from longs to bytes, which assumes a 32-bit platform, and is not correct on 64-bit platforms. Use "sizeof(...)" instead to fix this.
--- drivers/gpio/gpio-pca953x.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/gpio/gpio-pca953x.c +4 -2
@@ -367,9 +367,11 @@ static void pca953x_gpio_set_multiple(stmemcpy (reg_val, chip->reg_output,NBANK (chip));mutex_lock (&chip->i2c_lock);for (bank=0 ; bank<NBANK (chip); bank++) { -unsigned bankmask = mask[bank/4 ] >> ((bank %4 ) *8 ); +unsigned bankmask = mask[bank /sizeof (*mask)] >> + ((bank %sizeof (*mask)) *8 );if (bankmask) { -unsigned bankval = bits[bank/4 ] >> ((bank %4 ) *8 ); +unsigned bankval = bits[bank /sizeof (*bits)] >> + ((bank %sizeof (*bits)) *8 ); reg_val[bank] = (reg_val[bank] & ~bankmask) | bankval; } }
Patches currently in stable-queue which might be from [email protected] are
queue-4.5/gpio-pca953x-fix-pca953x_gpio_set_multiple-on-64-bit.patch