Re: [PATCH v2] audit: Avoid excessive dput/dget in audit_context setup and reset paths

Al Viro <[email protected]>
Newsgroups org.kernel.vger.audit,org.kernel.vger.linux-kernel
Message-ID <20260203232634.GJ3183987@ZenIV>
On Tue, Feb 03, 2026 at 09:50:02PM +0000, Al Viro wrote:
> On Tue, Feb 03, 2026 at 03:32:04PM -0500, Waiman Long wrote:
> 
> > That is actually a concern that I have at the back of my mind. I can modify
> > the patch to cache only the dentry and do get/put the mount every time which
> > is much cheaper as it is a percpu counter.  In that way, a chdir(2) followed
> > by a umount(2) shouldn't cause a -EBUSY. Right?
> 
> Quite - it will just retain a reference to dentry, with filesystem shutdown
> being very unhappy about somebody retaining references to objects on the
> filesystem about to be taken out...

Sarcasm aside, I wonder if we could do the following trick:
	* a new primitive for "grab or borrow pwd", similar to what fdget() 
does for struct file.  If current->fs is shared, do what we do now and return
true; otherwise just copy the contents of current->fs->pwd return false.
	* paired primitive that would take a boolean + struct path * and
do path_put() if boolean is true.
	* syscalls that might alter ->fs, ->fs->pwd or add extra references to
->fs would start with grabbing an extra ref on entry and drop it in the end;
that would make that primitive safe to use there.
	* audit using that thing and storing the result along with the copy
of pwd; on the way out it would use the "put unless borrowed" primitive.

Might or might not be useful - hard to tell without knowing the job mix of those
audit-afflicted production systems.

I'll try to put something along those lines together...
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.