OSDN Git Service

fs/ntfs3: Don't clear upper bits accidentally in log_replay()
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 9 May 2022 09:03:00 +0000 (12:03 +0300)
committerKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
Fri, 10 Jun 2022 16:14:08 +0000 (19:14 +0300)
The "vcn" variable is a 64 bit.  The "log->clst_per_page" variable is a
u32.  This means that the mask accidentally clears out the high 32 bits
when it was only supposed to clear some low bits.  Fix this by adding a
cast to u64.

Fixes: b46acd6a6a62 ("fs/ntfs3: Add NTFS journal")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
fs/ntfs3/fslog.c

index 49b7df6..6145134 100644 (file)
@@ -5057,7 +5057,7 @@ undo_action_next:
                goto add_allocated_vcns;
 
        vcn = le64_to_cpu(lrh->target_vcn);
-       vcn &= ~(log->clst_per_page - 1);
+       vcn &= ~(u64)(log->clst_per_page - 1);
 
 add_allocated_vcns:
        for (i = 0, vcn = le64_to_cpu(lrh->target_vcn),