diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2017-06-08 18:15:18 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-06-09 16:28:01 -0400 |
commit | 414cf7186dbec29bd946c138d6b5c09da5955a08 (patch) | |
tree | 0bff4b0b4240f4f2b59963e67dd56e47c68a88c9 /fs/ufs | |
parent | 8785d84d002c2ce0f68fbcd6c2c86be859802c7e (diff) |
fix ufs_isblockset()
Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ufs')
-rw-r--r-- | fs/ufs/util.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/ufs/util.h b/fs/ufs/util.h index b7fbf53dbc81..398019fb1448 100644 --- a/fs/ufs/util.h +++ b/fs/ufs/util.h | |||
@@ -473,15 +473,19 @@ static inline unsigned _ubh_find_last_zero_bit_( | |||
473 | static inline int _ubh_isblockset_(struct ufs_sb_private_info * uspi, | 473 | static inline int _ubh_isblockset_(struct ufs_sb_private_info * uspi, |
474 | struct ufs_buffer_head * ubh, unsigned begin, unsigned block) | 474 | struct ufs_buffer_head * ubh, unsigned begin, unsigned block) |
475 | { | 475 | { |
476 | u8 mask; | ||
476 | switch (uspi->s_fpb) { | 477 | switch (uspi->s_fpb) { |
477 | case 8: | 478 | case 8: |
478 | return (*ubh_get_addr (ubh, begin + block) == 0xff); | 479 | return (*ubh_get_addr (ubh, begin + block) == 0xff); |
479 | case 4: | 480 | case 4: |
480 | return (*ubh_get_addr (ubh, begin + (block >> 1)) == (0x0f << ((block & 0x01) << 2))); | 481 | mask = 0x0f << ((block & 0x01) << 2); |
482 | return (*ubh_get_addr (ubh, begin + (block >> 1)) & mask) == mask; | ||
481 | case 2: | 483 | case 2: |
482 | return (*ubh_get_addr (ubh, begin + (block >> 2)) == (0x03 << ((block & 0x03) << 1))); | 484 | mask = 0x03 << ((block & 0x03) << 1); |
485 | return (*ubh_get_addr (ubh, begin + (block >> 2)) & mask) == mask; | ||
483 | case 1: | 486 | case 1: |
484 | return (*ubh_get_addr (ubh, begin + (block >> 3)) == (0x01 << (block & 0x07))); | 487 | mask = 0x01 << (block & 0x07); |
488 | return (*ubh_get_addr (ubh, begin + (block >> 3)) & mask) == mask; | ||
485 | } | 489 | } |
486 | return 0; | 490 | return 0; |
487 | } | 491 | } |