[GIT PULL] hfs/hfsplus changes for 7.0-rc1

From: Viacheslav Dubeyko

Date: Fri Feb 06 2026 - 19:26:49 EST


Hello Linus,

This pull request contains several fixes of syzbot reported
issues and HFS+ fixes of xfstests failures.

Jori Koolstra has fixed the syzbot reported issue of triggering
BUG_ON() in the case of corrupted superblock. This patch replaces
the BUG_ON() in multiple places with proper error handling and
resolves the syzbot reported bug.

Mehdi Ben Hadj Khelifa has fixed the syzbot reported issues in
mount logic of HFS/HFS+ file systems. When HFS/HFS+ were converted to
the new mount api a bug was introduced by changing the allocation
pattern of sb->s_fs_info. The memory leaks issue has been fixed
by these two patches.

Shardul Bankar suggested the nice fix in hfs_bnode_create() by
returning ERR_PTR(-EEXIST) instead of the node pointer when it's
already hashed and fix of avoiding the double unload_nls() on mount
failure.

Tetsuo Handa added logic of setting inode's mode as regular
file for the case of system inodes.

The rest patches fix issue of failures in generic/020,
generic/037, generic/062, generic/480, and generic/498
xfstests for the case of HFS+ file system. Currently,
only 30 xfstests' test-cases experience failures for HFS+
file system (initially, it was around 100 failed xfstests).

The following changes since commit
8f0b4cce4481fb22653697cced8d0d04027cb1e8:

Linux 6.19-rc1 (2025-12-14 16:05:07 +1200)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/vdubeyko/hfs.git
tags/hfs-v7.0-tag1

for you to fetch changes up to
ebebb04baefdace1e0dc17f7779e5549063ca592:

hfsplus: avoid double unload_nls() on mount failure (2026-02-06
15:20:00 -0800)

----------------------------------------------------------------
hfs/hfsplus updates for v7.0

- hfsplus: avoid double unload_nls() on mount failure
- hfsplus: fix warning issue in inode.c
- hfsplus: fix generic/062 xfstests failure
- hfsplus: fix generic/037 xfstests failure
- hfsplus: pretend special inodes as regular files
- hfsplus: return error when node already exists in hfs_bnode_create
- hfs: Replace BUG_ON with error handling for CNID count checks
- hfsplus: fix generic/020 xfstests failure
- hfsplus: fix volume corruption issue for generic/498
- hfsplus: fix volume corruption issue for generic/480
- hfsplus: ensure sb->s_fs_info is always cleaned up
- hfs: ensure sb->s_fs_info is always cleaned up

----------------------------------------------------------------
Jori Koolstra (1):
hfs: Replace BUG_ON with error handling for CNID count checks

Mehdi Ben Hadj Khelifa (2):
hfs: ensure sb->s_fs_info is always cleaned up
hfsplus: ensure sb->s_fs_info is always cleaned up

Shardul Bankar (2):
hfsplus: return error when node already exists in
hfs_bnode_create
hfsplus: avoid double unload_nls() on mount failure

Tetsuo Handa (1):
hfsplus: pretend special inodes as regular files

Viacheslav Dubeyko (6):
hfsplus: fix volume corruption issue for generic/480
hfsplus: fix volume corruption issue for generic/498
hfsplus: fix generic/020 xfstests failure
hfsplus: fix generic/037 xfstests failure
hfsplus: fix generic/062 xfstests failure
hfsplus: fix warning issue in inode.c

fs/hfs/dir.c | 15 +++-
fs/hfs/hfs_fs.h | 1 +
fs/hfs/inode.c | 30 ++++++--
fs/hfs/mdb.c | 66 ++++++++++-------
fs/hfs/super.c | 13 +++-
fs/hfsplus/attributes.c | 189 +++++++++++++++++++++++++++++++++++-----
--------
fs/hfsplus/bnode.c | 2 +-
fs/hfsplus/dir.c | 46 +++++++++++-
fs/hfsplus/hfsplus_fs.h | 3 +
fs/hfsplus/inode.c | 40 +++++++++-
fs/hfsplus/super.c | 20 +++--
fs/hfsplus/xattr.c | 104 +++++++++++++++++++-------
12 files changed, 407 insertions(+), 122 deletions(-)