git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
drivers
/
mmc
/
mmc.c
diff --git
a/drivers/mmc/mmc.c
b/drivers/mmc/mmc.c
index
5c3d848
..
e400263
100644
(file)
--- a/
drivers/mmc/mmc.c
+++ b/
drivers/mmc/mmc.c
@@
-301,14
+301,15
@@
static u32 mmc_select_voltage(struct mmc_host *host, u32 ocr)
#define UNSTUFF_BITS(resp,start,size) \
({ \
#define UNSTUFF_BITS(resp,start,size) \
({ \
- const u32 __mask = (1 << (size)) - 1; \
+ const int __size = size; \
+ const u32 __mask = (__size < 32 ? 1 << __size : 0) - 1; \
const int __off = 3 - ((start) / 32); \
const int __shft = (start) & 31; \
u32 __res; \
\
__res = resp[__off] >> __shft; \
const int __off = 3 - ((start) / 32); \
const int __shft = (start) & 31; \
u32 __res; \
\
__res = resp[__off] >> __shft; \
- if (
(size) + __shft >= 32)
\
- __res |= resp[__off-1] << (
32 - __shft);
\
+ if (
__size + __shft > 32)
\
+ __res |= resp[__off-1] << (
(32 - __shft) % 32);
\
__res & __mask; \
})
__res & __mask; \
})