Merge master.kernel.org:/pub/scm/linux/kernel/git/aia21/ntfs-2.6
authorLinus Torvalds <torvalds@g5.osdl.org>
Tue, 4 Oct 2005 16:34:00 +0000 (09:34 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 4 Oct 2005 16:34:00 +0000 (09:34 -0700)
fs/ntfs/ChangeLog
fs/ntfs/bitmap.c
fs/ntfs/layout.h
fs/ntfs/mft.c
fs/ntfs/unistr.c

index 83f3322765cd1d47f08398f797550d26b0db5835..de58579a1d0e77a84e4f7d5fcc63c8eadcbb494d 100644 (file)
@@ -102,6 +102,9 @@ ToDo/Notes:
          inode instead of a vfs inode as parameter.
        - Fix the definition of the CHKD ntfs record magic.  It had an off by
          two error causing it to be CHKB instead of CHKD.
+       - Fix a stupid bug in __ntfs_bitmap_set_bits_in_run() which caused the
+         count to become negative and hence we had a wild memset() scribbling
+         all over the system's ram.
 
 2.1.23 - Implement extension of resident files and make writing safe as well as
         many bug fixes, cleanups, and enhancements...
index 12cf2e30c7dda9a2a8234af1c3b5a710f85aab72..7a190cdc60e2f4d403d157e2b5c912f182e4bf46 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * bitmap.c - NTFS kernel bitmap handling.  Part of the Linux-NTFS project.
  *
- * Copyright (c) 2004 Anton Altaparmakov
+ * Copyright (c) 2004-2005 Anton Altaparmakov
  *
  * 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
@@ -90,7 +90,8 @@ int __ntfs_bitmap_set_bits_in_run(struct inode *vi, const s64 start_bit,
        /* If the first byte is partial, modify the appropriate bits in it. */
        if (bit) {
                u8 *byte = kaddr + pos;
-               while ((bit & 7) && cnt--) {
+               while ((bit & 7) && cnt) {
+                       cnt--;
                        if (value)
                                *byte |= 1 << bit++;
                        else
index 01f2dfa39cecaf29f3af0964247c1abd9a008670..5c248d404f05432277be8b0d9fb147ff549578b3 100644 (file)
@@ -309,7 +309,7 @@ typedef le16 MFT_RECORD_FLAGS;
  * Note: The _LE versions will return a CPU endian formatted value!
  */
 #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 le64 leMFT_REF;
index 247586d1d5dc52787c36233c60f10f32105f0bc3..b011369b59561139687e627f211207dc4edff72e 100644 (file)
@@ -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
         * 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;
 
        i_size = i_size_read(mft_vi);
index a389a5a16c84af96be71d6c399b3d7f9b1e52d17..0ea887fc859cc358dca5276f65ea1bcc9bb04e2f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * 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
  * modify it under the terms of the GNU General Public License as published