Skip to content

Commit 095d8ce

Browse files
Thomas Kühnelaalexandrovich
authored andcommitted
fs/ntfs3: Use _le variants of bitops functions
The functions from bitops.h already have _le variants so use them to prevent invalid reads/writes of the bitmap on big endian systems. Signed-off-by: Thomas Kühnel <[email protected]> Signed-off-by: Konstantin Komarov <[email protected]>
1 parent 88a8d0d commit 095d8ce

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

fs/ntfs3/bitmap.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ static size_t wnd_scan(const ulong *buf, size_t wbit, u32 wpos, u32 wend,
6666
while (wpos < wend) {
6767
size_t free_len;
6868
u32 free_bits, end;
69-
u32 used = find_next_zero_bit(buf, wend, wpos);
69+
u32 used = find_next_zero_bit_le(buf, wend, wpos);
7070

7171
if (used >= wend) {
7272
if (*b_len < *prev_tail) {
@@ -92,7 +92,7 @@ static size_t wnd_scan(const ulong *buf, size_t wbit, u32 wpos, u32 wend,
9292
* Now we have a fragment [wpos, wend) staring with 0.
9393
*/
9494
end = wpos + to_alloc - *prev_tail;
95-
free_bits = find_next_bit(buf, min(end, wend), wpos);
95+
free_bits = find_next_bit_le(buf, min(end, wend), wpos);
9696

9797
free_len = *prev_tail + free_bits - wpos;
9898

@@ -574,7 +574,7 @@ static int wnd_rescan(struct wnd_bitmap *wnd)
574574
wbits = wnd->nbits - wbit;
575575

576576
do {
577-
used = find_next_zero_bit(buf, wbits, wpos);
577+
used = find_next_zero_bit_le(buf, wbits, wpos);
578578

579579
if (used > wpos && prev_tail) {
580580
wnd_add_free_ext(wnd, wbit + wpos - prev_tail,
@@ -590,7 +590,7 @@ static int wnd_rescan(struct wnd_bitmap *wnd)
590590
break;
591591
}
592592

593-
frb = find_next_bit(buf, wbits, wpos);
593+
frb = find_next_bit_le(buf, wbits, wpos);
594594
if (frb >= wbits) {
595595
/* Keep last free block. */
596596
prev_tail += frb - wpos;
@@ -1449,7 +1449,7 @@ int ntfs_trim_fs(struct ntfs_sb_info *sbi, struct fstrim_range *range)
14491449
buf = (ulong *)bh->b_data;
14501450

14511451
for (; wbit < wbits; wbit++) {
1452-
if (!test_bit(wbit, buf)) {
1452+
if (!test_bit_le(wbit, buf)) {
14531453
if (!len)
14541454
lcn = lcn_wnd + wbit;
14551455
len += 1;

fs/ntfs3/fsntfs.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -642,13 +642,13 @@ int ntfs_look_free_mft(struct ntfs_sb_info *sbi, CLST *rno, bool mft,
642642
NULL, 0, NULL, NULL))
643643
goto next;
644644

645-
__clear_bit(ir - MFT_REC_RESERVED,
645+
__clear_bit_le(ir - MFT_REC_RESERVED,
646646
&sbi->mft.reserved_bitmap);
647647
}
648648
}
649649

650650
/* Scan 5 bits for zero. Bit 0 == MFT_REC_RESERVED */
651-
zbit = find_next_zero_bit(&sbi->mft.reserved_bitmap,
651+
zbit = find_next_zero_bit_le(&sbi->mft.reserved_bitmap,
652652
MFT_REC_FREE, MFT_REC_RESERVED);
653653
if (zbit >= MFT_REC_FREE) {
654654
sbi->mft.next_reserved = MFT_REC_FREE;
@@ -716,7 +716,7 @@ int ntfs_look_free_mft(struct ntfs_sb_info *sbi, CLST *rno, bool mft,
716716
if (*rno >= MFT_REC_FREE)
717717
wnd_set_used(wnd, *rno, 1);
718718
else if (*rno >= MFT_REC_RESERVED && sbi->mft.reserved_bitmap_inited)
719-
__set_bit(*rno - MFT_REC_RESERVED, &sbi->mft.reserved_bitmap);
719+
__set_bit_le(*rno - MFT_REC_RESERVED, &sbi->mft.reserved_bitmap);
720720

721721
out:
722722
if (!mft)
@@ -744,7 +744,7 @@ void ntfs_mark_rec_free(struct ntfs_sb_info *sbi, CLST rno, bool is_mft)
744744
else
745745
wnd_set_free(wnd, rno, 1);
746746
} else if (rno >= MFT_REC_RESERVED && sbi->mft.reserved_bitmap_inited) {
747-
__clear_bit(rno - MFT_REC_RESERVED, &sbi->mft.reserved_bitmap);
747+
__clear_bit_le(rno - MFT_REC_RESERVED, &sbi->mft.reserved_bitmap);
748748
}
749749

750750
if (rno < wnd_zone_bit(wnd))

fs/ntfs3/index.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ static int indx_mark_used(struct ntfs_index *indx, struct ntfs_inode *ni,
323323
if (err)
324324
return err;
325325

326-
__set_bit(bit - bbuf.bit, bbuf.buf);
326+
__set_bit_le(bit - bbuf.bit, bbuf.buf);
327327

328328
bmp_buf_put(&bbuf, true);
329329

@@ -343,7 +343,7 @@ static int indx_mark_free(struct ntfs_index *indx, struct ntfs_inode *ni,
343343
if (err)
344344
return err;
345345

346-
__clear_bit(bit - bbuf.bit, bbuf.buf);
346+
__clear_bit_le(bit - bbuf.bit, bbuf.buf);
347347

348348
bmp_buf_put(&bbuf, true);
349349

@@ -457,7 +457,7 @@ static int scan_nres_bitmap(struct ntfs_inode *ni, struct ATTRIB *bitmap,
457457

458458
static bool scan_for_free(const ulong *buf, u32 bit, u32 bits, size_t *ret)
459459
{
460-
size_t pos = find_next_zero_bit(buf, bits, bit);
460+
size_t pos = find_next_zero_bit_le(buf, bits, bit);
461461

462462
if (pos >= bits)
463463
return false;
@@ -489,7 +489,7 @@ static int indx_find_free(struct ntfs_index *indx, struct ntfs_inode *ni,
489489

490490
if (!b->non_res) {
491491
u32 nbits = 8 * le32_to_cpu(b->res.data_size);
492-
size_t pos = find_next_zero_bit(resident_data(b), nbits, 0);
492+
size_t pos = find_next_zero_bit_le(resident_data(b), nbits, 0);
493493

494494
if (pos < nbits)
495495
*bit = pos;
@@ -505,7 +505,7 @@ static int indx_find_free(struct ntfs_index *indx, struct ntfs_inode *ni,
505505

506506
static bool scan_for_used(const ulong *buf, u32 bit, u32 bits, size_t *ret)
507507
{
508-
size_t pos = find_next_bit(buf, bits, bit);
508+
size_t pos = find_next_bit_le(buf, bits, bit);
509509

510510
if (pos >= bits)
511511
return false;
@@ -536,7 +536,7 @@ int indx_used_bit(struct ntfs_index *indx, struct ntfs_inode *ni, size_t *bit)
536536

537537
if (!b->non_res) {
538538
u32 nbits = le32_to_cpu(b->res.data_size) * 8;
539-
size_t pos = find_next_bit(resident_data(b), nbits, from);
539+
size_t pos = find_next_bit_le(resident_data(b), nbits, from);
540540

541541
if (pos < nbits)
542542
*bit = pos;
@@ -1953,7 +1953,7 @@ static int indx_shrink(struct ntfs_index *indx, struct ntfs_inode *ni,
19531953
if (bit >= nbits)
19541954
return 0;
19551955

1956-
pos = find_next_bit(bm, nbits, bit);
1956+
pos = find_next_bit_le(bm, nbits, bit);
19571957
if (pos < nbits)
19581958
return 0;
19591959
} else {

0 commit comments

Comments
 (0)