Re: lsm sb_delete hook, was Re: [PATCH 4/7] vfs: Convert sb->s_inodes iteration to super_iter_inodes()
From: Mickaël Salaün <mic@digikod.net>
Date: 2024-10-05 15:39:26
Also in:
linux-bcachefs, linux-fsdevel, linux-xfs
On Sat, Oct 05, 2024 at 08:57:32AM +1000, Dave Chinner wrote:
On Fri, Oct 04, 2024 at 09:21:19AM +0200, Christian Brauner wrote:quoted
On Fri, Oct 04, 2024 at 10:46:27AM GMT, Dave Chinner wrote:quoted
On Thu, Oct 03, 2024 at 06:17:31PM +0200, Jan Kara wrote:quoted
On Thu 03-10-24 23:59:51, Dave Chinner wrote:quoted
As for the landlock code, I think it needs to have it's own internal tracking mechanism and not search the sb inode list for inodes that it holds references to. LSM cleanup should be run before before we get to tearing down the inode cache, not after....Well, I think LSM cleanup could in principle be handled together with the fsnotify cleanup but I didn't check the details.I'm not sure how we tell if an inode potentially has a LSM related reference hanging off it. The landlock code looks to make an assumption in that the only referenced inodes it sees will have a valid inode->i_security pointer if landlock is enabled. i.e. it calls landlock_inode(inode) and dereferences the returned value without ever checking if inode->i_security is NULL or not.
Correct, i_security should always be valid when this hook is called because it means that at least Landlock is enabled and then i_security refers to a valid LSM blob.
quoted
quoted
I mean, we could do a check for inode->i_security when the refcount is elevated and replace the security_sb_delete hook with an security_evict_inode hook similar to the proposed fsnotify eviction from evict_inodes().
That would be nice.
quoted
quoted
But screwing with LSM instructure looks .... obnoxiously complex from the outside...Imho, please just focus on the immediate feedback and ignore all the extra bells and whistles that we could or should do. I prefer all of that to be done after this series lands.Actually, it's not as bad as I thought it was going to be. I've already moved both fsnotify and LSM inode eviction to evict_inodes() as preparatory patches...
Good, please Cc me and Günther on related patch series. FYI, we have the two release_inodes tests to check this hook in tools/testing/selftests/landlock/fs_test.c
Dave Chinner (2):
vfs: move fsnotify inode eviction to evict_inodes()
vfs, lsm: rework lsm inode eviction at unmount
fs/inode.c | 52 +++++++++++++---
fs/notify/fsnotify.c | 60 -------------------
fs/super.c | 8 +--
include/linux/lsm_hook_defs.h | 2 +-
include/linux/security.h | 2 +-
security/landlock/fs.c | 134 ++++++++++--------------------------------
security/security.c | 31 ++++++----
7 files changed, 99 insertions(+), 190 deletions(-)
-Dave.
--
Dave Chinner
david@fromorbit.com