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

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