diff options
-rw-r--r-- | fs/xfs/xfs_dir2_block.c | 7 | ||||
-rw-r--r-- | fs/xfs/xfs_dir2_leaf.c | 6 | ||||
-rw-r--r-- | fs/xfs/xfs_dir2_sf.c | 15 |
3 files changed, 15 insertions, 13 deletions
diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index e2fa0a1d8e9..e1f0a06aaf0 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c | |||
@@ -517,9 +517,9 @@ xfs_dir2_block_getdents( | |||
517 | /* | 517 | /* |
518 | * If it didn't fit, set the final offset to here & return. | 518 | * If it didn't fit, set the final offset to here & return. |
519 | */ | 519 | */ |
520 | if (filldir(dirent, dep->name, dep->namelen, cook, | 520 | if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff, |
521 | ino, DT_UNKNOWN)) { | 521 | ino, DT_UNKNOWN)) { |
522 | *offset = cook; | 522 | *offset = cook & 0x7fffffff; |
523 | xfs_da_brelse(NULL, bp); | 523 | xfs_da_brelse(NULL, bp); |
524 | return 0; | 524 | return 0; |
525 | } | 525 | } |
@@ -529,7 +529,8 @@ xfs_dir2_block_getdents( | |||
529 | * Reached the end of the block. | 529 | * Reached the end of the block. |
530 | * Set the offset to a non-existent block 1 and return. | 530 | * Set the offset to a non-existent block 1 and return. |
531 | */ | 531 | */ |
532 | *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); | 532 | *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) & |
533 | 0x7fffffff; | ||
533 | xfs_da_brelse(NULL, bp); | 534 | xfs_da_brelse(NULL, bp); |
534 | return 0; | 535 | return 0; |
535 | } | 536 | } |
diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index 93535992cb6..ef805a374ee 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c | |||
@@ -1092,7 +1092,7 @@ xfs_dir2_leaf_getdents( | |||
1092 | * Won't fit. Return to caller. | 1092 | * Won't fit. Return to caller. |
1093 | */ | 1093 | */ |
1094 | if (filldir(dirent, dep->name, dep->namelen, | 1094 | if (filldir(dirent, dep->name, dep->namelen, |
1095 | xfs_dir2_byte_to_dataptr(mp, curoff), | 1095 | xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff, |
1096 | ino, DT_UNKNOWN)) | 1096 | ino, DT_UNKNOWN)) |
1097 | break; | 1097 | break; |
1098 | 1098 | ||
@@ -1108,9 +1108,9 @@ xfs_dir2_leaf_getdents( | |||
1108 | * All done. Set output offset value to current offset. | 1108 | * All done. Set output offset value to current offset. |
1109 | */ | 1109 | */ |
1110 | if (curoff > xfs_dir2_dataptr_to_byte(mp, XFS_DIR2_MAX_DATAPTR)) | 1110 | if (curoff > xfs_dir2_dataptr_to_byte(mp, XFS_DIR2_MAX_DATAPTR)) |
1111 | *offset = XFS_DIR2_MAX_DATAPTR; | 1111 | *offset = XFS_DIR2_MAX_DATAPTR & 0x7fffffff; |
1112 | else | 1112 | else |
1113 | *offset = xfs_dir2_byte_to_dataptr(mp, curoff); | 1113 | *offset = xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff; |
1114 | kmem_free(map); | 1114 | kmem_free(map); |
1115 | if (bp) | 1115 | if (bp) |
1116 | xfs_da_brelse(NULL, bp); | 1116 | xfs_da_brelse(NULL, bp); |
diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c index b46af0013ec..a8a8a6efad5 100644 --- a/fs/xfs/xfs_dir2_sf.c +++ b/fs/xfs/xfs_dir2_sf.c | |||
@@ -752,8 +752,8 @@ xfs_dir2_sf_getdents( | |||
752 | #if XFS_BIG_INUMS | 752 | #if XFS_BIG_INUMS |
753 | ino += mp->m_inoadd; | 753 | ino += mp->m_inoadd; |
754 | #endif | 754 | #endif |
755 | if (filldir(dirent, ".", 1, dot_offset, ino, DT_DIR)) { | 755 | if (filldir(dirent, ".", 1, dot_offset & 0x7fffffff, ino, DT_DIR)) { |
756 | *offset = dot_offset; | 756 | *offset = dot_offset & 0x7fffffff; |
757 | return 0; | 757 | return 0; |
758 | } | 758 | } |
759 | } | 759 | } |
@@ -766,8 +766,8 @@ xfs_dir2_sf_getdents( | |||
766 | #if XFS_BIG_INUMS | 766 | #if XFS_BIG_INUMS |
767 | ino += mp->m_inoadd; | 767 | ino += mp->m_inoadd; |
768 | #endif | 768 | #endif |
769 | if (filldir(dirent, "..", 2, dotdot_offset, ino, DT_DIR)) { | 769 | if (filldir(dirent, "..", 2, dotdot_offset & 0x7fffffff, ino, DT_DIR)) { |
770 | *offset = dotdot_offset; | 770 | *offset = dotdot_offset & 0x7fffffff; |
771 | return 0; | 771 | return 0; |
772 | } | 772 | } |
773 | } | 773 | } |
@@ -791,14 +791,15 @@ xfs_dir2_sf_getdents( | |||
791 | #endif | 791 | #endif |
792 | 792 | ||
793 | if (filldir(dirent, sfep->name, sfep->namelen, | 793 | if (filldir(dirent, sfep->name, sfep->namelen, |
794 | off, ino, DT_UNKNOWN)) { | 794 | off & 0x7fffffff, ino, DT_UNKNOWN)) { |
795 | *offset = off; | 795 | *offset = off & 0x7fffffff; |
796 | return 0; | 796 | return 0; |
797 | } | 797 | } |
798 | sfep = xfs_dir2_sf_nextentry(sfp, sfep); | 798 | sfep = xfs_dir2_sf_nextentry(sfp, sfep); |
799 | } | 799 | } |
800 | 800 | ||
801 | *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); | 801 | *offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) & |
802 | 0x7fffffff; | ||
802 | return 0; | 803 | return 0; |
803 | } | 804 | } |
804 | 805 | ||