fs: move audit parent inode
authorChristian Brauner <brauner@kernel.org>
Thu, 8 Aug 2024 08:16:42 +0000 (10:16 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 30 Aug 2024 06:22:35 +0000 (08:22 +0200)
commitc65d41c5a5279738fc07f99c0e912b28a691c46f
tree1edde5ea9113ef3b6e4696e8b4532f85647ef927
parente747e15156b79efeea0ad056df8de14b93d318c2
fs: move audit parent inode

During O_CREAT we unconditionally audit the parent inode. This makes it
difficult to support a fastpath for O_CREAT when the file already exists
because we have to drop out of RCU lookup needlessly.

We worked around this by checking whether audit was actually active but
that's also suboptimal. Instead, move the audit of the parent inode down
into lookup_open() at a point where it's mostly certain that the file
needs to be created.

This also reduced the inconsistency that currently exists: while audit
on the parent is done independent of whether or no the file already
existed an audit on the file is only performed if it has been created.

By moving the audit down a bit we emit the audit a little later but it
will allow us to simplify the fastpath for O_CREAT significantly.

Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/namei.c