On 16/04/05, Paul Moore wrote: > From: Paul Moore <[email protected]> > > Remove the calls to __set_current_state() to mark the task as running > and do some related cleanup in wait_for_auditd() to limit the amount > of work we do when we aren't going to reschedule the current task.
Wow, the logic of this goes back to 9ad9ad38 (2005-06-22, AUDIT: Wait for backlog to clear when generating messages.) > Signed-off-by: Paul Moore <[email protected]> These changes look good to me. > --- > kernel/audit.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) > > diff --git a/kernel/audit.c b/kernel/audit.c > index 3a3e5de..f52fbef 100644 > --- a/kernel/audit.c > +++ b/kernel/audit.c > @@ -430,7 +430,6 @@ restart: > attempts, audit_pid); > set_current_state(TASK_INTERRUPTIBLE); > schedule(); > - __set_current_state(TASK_RUNNING); > goto restart; > } > } > @@ -1324,15 +1323,14 @@ static inline void audit_get_stamp(struct > audit_context *ctx, > static long wait_for_auditd(long sleep_time) > { > DECLARE_WAITQUEUE(wait, current); > - set_current_state(TASK_UNINTERRUPTIBLE); > - add_wait_queue_exclusive(&audit_backlog_wait, &wait); > > if (audit_backlog_limit && > - skb_queue_len(&audit_skb_queue) > audit_backlog_limit) > + skb_queue_len(&audit_skb_queue) > audit_backlog_limit) { > + add_wait_queue_exclusive(&audit_backlog_wait, &wait); > + set_current_state(TASK_UNINTERRUPTIBLE); > sleep_time = schedule_timeout(sleep_time); > - > - __set_current_state(TASK_RUNNING); > - remove_wait_queue(&audit_backlog_wait, &wait); > + remove_wait_queue(&audit_backlog_wait, &wait); > + } > > return sleep_time; > } - RGB -- Richard Guy Briggs <[email protected]> Senior Software Engineer, Kernel Security, AMER ENG Base Operating Systems, Red Hat Remote, Ottawa, Canada Voice: +1.647.777.2635, Internal: (81) 32635, Alt: +1.613.693.0684x3545 -- Linux-audit mailing list [email protected] https://www.redhat.com/mailman/listinfo/linux-audit
