landlock: Handle weird files
[ Upstream commit 49440290a0935f428a1e43a5ac8dc275a647ff80 ]
A corrupted filesystem (e.g. bcachefs) might return weird files.
Instead of throwing a warning and allowing access to such file, treat
them as regular files.
Cc: Dave Chinner <david@fromorbit.com>
Cc: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Paul Moore <paul@paul-moore.com>
Reported-by: syzbot+34b68f850391452207df@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/r/000000000000a65b35061cffca61@google.com
Reported-by: syzbot+360866a59e3c80510a62@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/r/67379b3f.050a0220.85a0.0001.GAE@google.com
Reported-by: Ubisectech Sirius <bugreport@ubisectech.com>
Closes: https://lore.kernel.org/r/c426821d-8380-46c4-a494-7008bbd7dd13.bugreport@ubisectech.com
Fixes: cb2c7d1a17 ("landlock: Support filesystem access-control")
Reviewed-by: Günther Noack <gnoack3000@gmail.com>
Link: https://lore.kernel.org/r/20250110153918.241810-1-mic@digikod.net
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d433ccd987
commit
39bb3d56f1
@@ -664,10 +664,6 @@ static inline access_mask_t get_mode_access(const umode_t mode)
|
||||
switch (mode & S_IFMT) {
|
||||
case S_IFLNK:
|
||||
return LANDLOCK_ACCESS_FS_MAKE_SYM;
|
||||
case 0:
|
||||
/* A zero mode translates to S_IFREG. */
|
||||
case S_IFREG:
|
||||
return LANDLOCK_ACCESS_FS_MAKE_REG;
|
||||
case S_IFDIR:
|
||||
return LANDLOCK_ACCESS_FS_MAKE_DIR;
|
||||
case S_IFCHR:
|
||||
@@ -678,9 +674,12 @@ static inline access_mask_t get_mode_access(const umode_t mode)
|
||||
return LANDLOCK_ACCESS_FS_MAKE_FIFO;
|
||||
case S_IFSOCK:
|
||||
return LANDLOCK_ACCESS_FS_MAKE_SOCK;
|
||||
case S_IFREG:
|
||||
case 0:
|
||||
/* A zero mode translates to S_IFREG. */
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
return 0;
|
||||
/* Treats weird files as regular files. */
|
||||
return LANDLOCK_ACCESS_FS_MAKE_REG;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user