rtc: v3020: fix v3020_mmio_read_bit()
authorScott Valentine <svalentine@concentris-systems.com>
Wed, 11 Nov 2009 22:26:49 +0000 (14:26 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Nov 2009 15:25:59 +0000 (07:25 -0800)
commitbcb3a1676b87effbdeffe8da5c44f63433d158d9
tree179eaa6692cad02a1e2b4c15a6919061aa06dd8d
parent61df33370c52633b47d794f5e024eb15ca9a2efe
rtc: v3020: fix v3020_mmio_read_bit()

v3020_mmio_read_bit() always returns 0 when left_shift > 7.

v3020_mmio_read_bit()'s return type is (unsigned char).  The code returns
a value masked by (1 << left_shift) that is casted to the return type.  If
left_shift is larger than 7, the cast will always result in a 0 return
value.  The problem was discovered with left_shift = 16, and the included
patch corrects the problem.

The bug was introduced in the last (Apr 3 2009) commit of the file, kernel
versions 2.6.30 and later.

Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Paul Gortmaker <p_gortmaker@yahoo.com>
Cc: Raphael Assenat <raph@8d.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/rtc/rtc-v3020.c