Messages in this thread Patch in this message | | | From | Sasha Levin <> | Subject | [PATCH] bitops.h: correctly handle rol32 with 0 byte shift | Date | Thu, 3 Dec 2015 17:02:45 -0500 |
| |
rol on a 32 bit integer with a shift of 32 or more is undefined and the result is arch-dependent. Avoid this by handling the trivial case of roling by 0 correctly.
Signed-off-by: Sasha Levin <sasha.levin@oracle.com> --- include/linux/bitops.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 2b8ed12..7047a06 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -107,7 +107,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift) */ static inline __u32 rol32(__u32 word, unsigned int shift) { - return (word << shift) | (word >> (32 - shift)); + return shift ? (word << shift) | (word >> (32 - shift)) : word; } /** -- 1.7.10.4
| |