bianbu-linux-6.6/fs/ntfs3
Konstantin Komarov e4fd2dce71 fs/ntfs3: Taking DOS names into account during link counting
commit 110b24eb1a749bea3440f3ca2ff890a26179050a upstream.

When counting and checking hard links in an ntfs file record,

  struct MFT_REC {
    struct NTFS_RECORD_HEADER rhdr; // 'FILE'
    __le16 seq;		    // 0x10: Sequence number for this record.
>>  __le16 hard_links;	// 0x12: The number of hard links to record.
    __le16 attr_off;	// 0x14: Offset to attributes.
  ...

the ntfs3 driver ignored short names (DOS names), causing the link count
to be reduced by 1 and messages to be output to dmesg.

For Windows, such a situation is a minor error, meaning chkdsk does not report
errors on such a volume, and in the case of using the /f switch, it silently
corrects them, reporting that no errors were found. This does not affect
the consistency of the file system.

Nevertheless, the behavior in the ntfs3 driver is incorrect and
changes the content of the file system. This patch should fix that.

PS: most likely, there has been a confusion of concepts
MFT_REC::hard_links and inode::__i_nlink.

Fixes: 82cae269cf ("fs/ntfs3: Add initialization of super block")
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-06-12 11:11:20 +02:00
..
lib fs/ntfs3: Add missing header and guards to lib/ headers 2021-09-13 19:41:44 +03:00
attrib.c fs/ntfs3: Use i_size_read and i_size_write 2024-03-01 13:34:54 +01:00
attrlist.c fs/ntfs3: Use kvfree to free memory allocated by kvmalloc 2024-03-01 13:34:54 +01:00
bitfunc.c fs/ntfs3: Add ntfs_bitmap_weight_le function and refactoring 2022-11-14 19:50:42 +03:00
bitmap.c fs/ntfs3: Use kvfree to free memory allocated by kvmalloc 2024-03-01 13:34:54 +01:00
debug.h fs/ntfs3. Add forward declarations for structs to debug.h 2021-09-13 19:41:43 +03:00
dir.c fs/ntfs3: Use i_size_read and i_size_write 2024-03-01 13:34:54 +01:00
file.c fs/ntfs3: Update inode->i_size after success write into compressed file 2024-03-01 13:34:54 +01:00
frecord.c fs/ntfs3: fix build without CONFIG_NTFS3_LZX_XPRESS 2024-03-02 18:23:09 +01:00
fslog.c fs/ntfs3: Correct function is_rst_area_valid 2024-03-01 13:34:54 +01:00
fsntfs.c fs/ntfs3: Prevent generic message "attempt to access beyond end of device" 2024-03-01 13:34:54 +01:00
index.c fs/ntfs3: Use i_size_read and i_size_write 2024-03-01 13:34:54 +01:00
inode.c fs/ntfs3: Taking DOS names into account during link counting 2024-06-12 11:11:20 +02:00
Kconfig fs: add CONFIG_BUFFER_HEAD 2023-08-02 09:13:09 -06:00
lznt.c fs/ntfs3: Code formatting 2023-07-03 00:21:27 +04:00
Makefile
namei.c fs/ntfs3: Implement super_operations::shutdown 2024-03-01 13:34:53 +01:00
ntfs.h fs/ntfs3: Disable ATTR_LIST_ENTRY size check 2024-03-01 13:34:54 +01:00
ntfs_fs.h fs/ntfs3: Prevent generic message "attempt to access beyond end of device" 2024-03-01 13:34:54 +01:00
record.c fs/ntfs3: Taking DOS names into account during link counting 2024-06-12 11:11:20 +02:00
run.c fs/ntfs3: Code formatting 2023-07-03 00:21:27 +04:00
super.c fs/ntfs3: Remove max link count info display during driver init 2024-06-12 11:11:20 +02:00
upcase.c fs/ntfs3: Add option "nocase" 2022-09-30 17:39:47 +03:00
xattr.c fs/ntfs3: Fix oob in ntfs_listxattr 2024-03-01 13:34:54 +01:00