Re: [PATCH 4.10 070/111] audit: fix auditd/kernel connection state tracking
From: Peter Zijlstra
Date: Tue Feb 20 2018 - 09:06:57 EST
On Tue, Feb 20, 2018 at 08:25:21AM -0500, Paul Moore wrote:
> On Tue, Feb 20, 2018 at 7:37 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> > On Tue, Mar 28, 2017 at 02:30:56PM +0200, Greg Kroah-Hartman wrote:
> >> 4.10-stable review patch. If anyone has any objections, please let me know.
> >
> >> + if (!(auditd_test_task(current) ||
> >> + (current == __mutex_owner(&audit_cmd_mutex)))) {
> >> + long stime = audit_backlog_wait_time;
> >
> > Since I cannot find the original email on lkml, NAK on this.
> > __mutex_owner() is not a general purpose helper function.
>
> Since this code also exists in the current kernel, I need to ask what
> recommended alternatives exist for determining the mutex owner?
>
> I imagine we could track the mutex owner separately in the audit
> subsystem, but I'd much prefer to leverage an existing mechanism if
> possible.
It's not at all clear to me what that code does, I just stumbled upon
__mutex_owner() outside of the mutex code itself and went WTF.
The comment (aside from having the most horribly style) is wrong too,
because it claims it will not block when we hold that lock, while,
afaict, it will in fact do just that.
Maybe if you could explain how that code is supposed to work and why it
doesn't know if it holds a lock I could make a suggestion...