NTFS: Fix a 64-bitness bug where a left-shift could overflow a 32-bit variable
which we now cast to 64-bit first (fs/ntfs/mft.c::map_mft_record_page(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
This commit is contained in:
Родитель
18efefa935
Коммит
c394e458b6
|
@ -309,7 +309,7 @@ typedef le16 MFT_RECORD_FLAGS;
|
||||||
* Note: The _LE versions will return a CPU endian formatted value!
|
* Note: The _LE versions will return a CPU endian formatted value!
|
||||||
*/
|
*/
|
||||||
#define MFT_REF_MASK_CPU 0x0000ffffffffffffULL
|
#define MFT_REF_MASK_CPU 0x0000ffffffffffffULL
|
||||||
#define MFT_REF_MASK_LE const_cpu_to_le64(0x0000ffffffffffffULL)
|
#define MFT_REF_MASK_LE const_cpu_to_le64(MFT_REF_MASK_CPU)
|
||||||
|
|
||||||
typedef u64 MFT_REF;
|
typedef u64 MFT_REF;
|
||||||
typedef le64 leMFT_REF;
|
typedef le64 leMFT_REF;
|
||||||
|
|
|
@ -58,7 +58,8 @@ static inline MFT_RECORD *map_mft_record_page(ntfs_inode *ni)
|
||||||
* overflowing the unsigned long, but I don't think we would ever get
|
* overflowing the unsigned long, but I don't think we would ever get
|
||||||
* here if the volume was that big...
|
* here if the volume was that big...
|
||||||
*/
|
*/
|
||||||
index = ni->mft_no << vol->mft_record_size_bits >> PAGE_CACHE_SHIFT;
|
index = (u64)ni->mft_no << vol->mft_record_size_bits >>
|
||||||
|
PAGE_CACHE_SHIFT;
|
||||||
ofs = (ni->mft_no << vol->mft_record_size_bits) & ~PAGE_CACHE_MASK;
|
ofs = (ni->mft_no << vol->mft_record_size_bits) & ~PAGE_CACHE_MASK;
|
||||||
|
|
||||||
i_size = i_size_read(mft_vi);
|
i_size = i_size_read(mft_vi);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* unistr.c - NTFS Unicode string handling. Part of the Linux-NTFS project.
|
* unistr.c - NTFS Unicode string handling. Part of the Linux-NTFS project.
|
||||||
*
|
*
|
||||||
* Copyright (c) 2001-2004 Anton Altaparmakov
|
* Copyright (c) 2001-2005 Anton Altaparmakov
|
||||||
*
|
*
|
||||||
* This program/include file is free software; you can redistribute it and/or
|
* This program/include file is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as published
|
* modify it under the terms of the GNU General Public License as published
|
||||||
|
|
Загрузка…
Ссылка в новой задаче