mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
fs/ntfs3: Fix field-spanning write in INDEX_HDR
Fields flags and res[3] replaced with one 4 byte flags.
Fixes: 4534a70b70
("fs/ntfs3: Add headers and misc files")
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
This commit is contained in:
parent
c091354d6b
commit
2f3e176fee
@ -978,7 +978,7 @@ static struct indx_node *indx_new(struct ntfs_index *indx,
|
||||
hdr->used =
|
||||
cpu_to_le32(eo + sizeof(struct NTFS_DE) + sizeof(u64));
|
||||
de_set_vbn_le(e, *sub_vbn);
|
||||
hdr->flags = 1;
|
||||
hdr->flags = NTFS_INDEX_HDR_HAS_SUBNODES;
|
||||
} else {
|
||||
e->size = cpu_to_le16(sizeof(struct NTFS_DE));
|
||||
hdr->used = cpu_to_le32(eo + sizeof(struct NTFS_DE));
|
||||
@ -1683,7 +1683,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
|
||||
e->size = cpu_to_le16(sizeof(struct NTFS_DE) + sizeof(u64));
|
||||
e->flags = NTFS_IE_HAS_SUBNODES | NTFS_IE_LAST;
|
||||
|
||||
hdr->flags = 1;
|
||||
hdr->flags = NTFS_INDEX_HDR_HAS_SUBNODES;
|
||||
hdr->used = hdr->total =
|
||||
cpu_to_le32(new_root_size - offsetof(struct INDEX_ROOT, ihdr));
|
||||
|
||||
|
@ -693,14 +693,15 @@ static inline bool de_has_vcn_ex(const struct NTFS_DE *e)
|
||||
offsetof(struct ATTR_FILE_NAME, name) + \
|
||||
NTFS_NAME_LEN * sizeof(short), 8)
|
||||
|
||||
#define NTFS_INDEX_HDR_HAS_SUBNODES cpu_to_le32(1)
|
||||
|
||||
struct INDEX_HDR {
|
||||
__le32 de_off; // 0x00: The offset from the start of this structure
|
||||
// to the first NTFS_DE.
|
||||
__le32 used; // 0x04: The size of this structure plus all
|
||||
// entries (quad-word aligned).
|
||||
__le32 total; // 0x08: The allocated size of for this structure plus all entries.
|
||||
u8 flags; // 0x0C: 0x00 = Small directory, 0x01 = Large directory.
|
||||
u8 res[3];
|
||||
__le32 flags; // 0x0C: 0x00 = Small directory, 0x01 = Large directory.
|
||||
|
||||
//
|
||||
// de_off + used <= total
|
||||
@ -748,7 +749,7 @@ static inline struct NTFS_DE *hdr_next_de(const struct INDEX_HDR *hdr,
|
||||
|
||||
static inline bool hdr_has_subnode(const struct INDEX_HDR *hdr)
|
||||
{
|
||||
return hdr->flags & 1;
|
||||
return hdr->flags & NTFS_INDEX_HDR_HAS_SUBNODES;
|
||||
}
|
||||
|
||||
struct INDEX_BUFFER {
|
||||
@ -768,7 +769,7 @@ static inline bool ib_is_empty(const struct INDEX_BUFFER *ib)
|
||||
|
||||
static inline bool ib_is_leaf(const struct INDEX_BUFFER *ib)
|
||||
{
|
||||
return !(ib->ihdr.flags & 1);
|
||||
return !(ib->ihdr.flags & NTFS_INDEX_HDR_HAS_SUBNODES);
|
||||
}
|
||||
|
||||
/* Index root structure ( 0x90 ). */
|
||||
|
Loading…
Reference in New Issue
Block a user