Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1254090 > unrolled thread
| Started by | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| First post | 2015-10-22 21:00 +0200 |
| Last post | 2015-10-28 20:00 +0100 |
| Articles | 11 — 2 participants |
Back to article view | Back to linux.kernel
[RFC PATCH 0/7] audit: clean up audit queue handling Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 2/7] audit: include auditd's threads in audit_log_start() wait exception Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 1/7] audit: don't needlessly reset valid wait time Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 4/7] audit: wake up threads if queue switched from limited to unlimited Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 6/7] audit: wake up audit_backlog_wait queue when auditd goes away. Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 7/7] audit: wake up kauditd_thread after auditd registers Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 3/7] audit: allow systemd to use queue reserves Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
[RFC PATCH 5/7] audit: allow audit_cmd_mutex holders to use reserves Richard Guy Briggs <rgb@redhat.com> - 2015-10-22 21:00 +0200
Re: [RFC PATCH 0/7] audit: clean up audit queue handling Paul Moore <pmoore@redhat.com> - 2015-10-27 19:50 +0100
Re: [RFC PATCH 0/7] audit: clean up audit queue handling Richard Guy Briggs <rgb@redhat.com> - 2015-10-28 19:50 +0100
Re: [RFC PATCH 0/7] audit: clean up audit queue handling Paul Moore <pmoore@redhat.com> - 2015-10-28 20:00 +0100
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 0/7] audit: clean up audit queue handling |
| Message-ID | <qmtfH-2HW-1@gated-at.bofh.it> |
This set of patches cleans up a number of corner cases in the management of the audit queue. Richard Guy Briggs (7): audit: don't needlessly reset valid wait time audit: include auditd's threads in audit_log_start() wait exception audit: allow systemd to use queue reserves audit: wake up threads if queue switched from limited to unlimited audit: allow audit_cmd_mutex holders to use reserves audit: wake up audit_backlog_wait queue when auditd goes away. audit: wake up kauditd_thread after auditd registers kernel/audit.c | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 2/7] audit: include auditd's threads in audit_log_start() wait exception |
| Message-ID | <qmtfI-2HW-13@gated-at.bofh.it> |
| In reply to | #1254090 |
Should auditd spawn threads, allow all members of its thread group to
use the audit_backlog_limit reserves to bypass the queue limits too.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
kernel/audit.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/kernel/audit.c b/kernel/audit.c
index daefd81..3917aad 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -1375,7 +1375,7 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,
return NULL;
if (gfp_mask & __GFP_WAIT) {
- if (audit_pid && audit_pid == current->pid)
+ if (audit_pid && audit_pid == current->tgid)
gfp_mask &= ~__GFP_WAIT;
else
reserve = 0;
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 1/7] audit: don't needlessly reset valid wait time |
| Message-ID | <qmtfI-2HW-31@gated-at.bofh.it> |
| In reply to | #1254090 |
After auditd has recovered from an overflowed queue, the first process that doesn't use reserves to make it through the queue checks should reset the audit backlog wait time to the configured value. After that, there is no need to keep resetting it. Signed-off-by: Richard Guy Briggs <rgb@redhat.com> --- kernel/audit.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/kernel/audit.c b/kernel/audit.c index a72ad37..daefd81 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -1403,7 +1403,7 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, return NULL; } - if (!reserve) + if (!reserve && !audit_backlog_wait_time) audit_backlog_wait_time = audit_backlog_wait_time_master; ab = audit_buffer_alloc(ctx, gfp_mask, type); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 4/7] audit: wake up threads if queue switched from limited to unlimited |
| Message-ID | <qmtfI-2HW-33@gated-at.bofh.it> |
| In reply to | #1254090 |
If the audit_backlog_limit is changed from a limited value to an
unlimited value (zero) while the queue was overflowed, wake up the
audit_backlog_wait queue to allow those processes to continue.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
kernel/audit.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/kernel/audit.c b/kernel/audit.c
index 384a1a1..02a5ec0 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -523,7 +523,8 @@ static int kauditd_thread(void *dummy)
skb = skb_dequeue(&audit_skb_queue);
if (skb) {
- if (skb_queue_len(&audit_skb_queue) <= audit_backlog_limit)
+ if (!audit_backlog_limit ||
+ (skb_queue_len(&audit_skb_queue) <= audit_backlog_limit))
wake_up(&audit_backlog_wait);
if (audit_pid)
kauditd_send_skb(skb);
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 6/7] audit: wake up audit_backlog_wait queue when auditd goes away. |
| Message-ID | <qmtfJ-2HW-53@gated-at.bofh.it> |
| In reply to | #1254090 |
When auditd goes away (died, killed or shutdown, or net namespace shut
down), there is no point in sleeping waiting for auditd to drain the
queue since that message would be distined for the hold queue after the
timeout anyways. This will needlessly have those processes wait the
full default timeout of 60 seconds (audit_backlog_wait_time).
Wake up the processes caught in the audit_backlog_wait queue when auditd
is no longer present so they can be sent instead to the hold queue.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
kernel/audit.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/kernel/audit.c b/kernel/audit.c
index 34411af..688fa1e 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -425,6 +425,7 @@ restart:
audit_log_lost(s);
audit_pid = 0;
audit_sock = NULL;
+ wake_up(&audit_backlog_wait);
} else {
pr_warn("re-scheduling(#%d) write to audit_pid=%d\n",
attempts, audit_pid);
@@ -882,6 +883,8 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
audit_pid = new_pid;
audit_nlk_portid = NETLINK_CB(skb).portid;
audit_sock = skb->sk;
+ if (!audit_pid)
+ wake_up(&audit_backlog_wait);
}
if (s.mask & AUDIT_STATUS_RATE_LIMIT) {
err = audit_set_rate_limit(s.rate_limit);
@@ -1154,6 +1157,7 @@ static void __net_exit audit_net_exit(struct net *net)
if (sock == audit_sock) {
audit_pid = 0;
audit_sock = NULL;
+ wake_up(&audit_backlog_wait);
}
RCU_INIT_POINTER(aunet->nlsk, NULL);
@@ -1393,7 +1397,7 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,
sleep_time = timeout_start + audit_backlog_wait_time - jiffies;
if (sleep_time > 0) {
sleep_time = wait_for_auditd(sleep_time);
- if (sleep_time > 0)
+ if (audit_pid && sleep_time > 0)
continue;
}
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 7/7] audit: wake up kauditd_thread after auditd registers |
| Message-ID | <qmtfK-2HW-63@gated-at.bofh.it> |
| In reply to | #1254090 |
When auditd is restarted, even though the kauditd_thread is present, it
remains dormant until the next audit log message is queued.
Wake up the kauditd_thread in the kauditd_wait queue immediately when
auditd registers its availability to drain the queue.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
kernel/audit.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/kernel/audit.c b/kernel/audit.c
index 688fa1e..369cfcc 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -885,6 +885,8 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
audit_sock = skb->sk;
if (!audit_pid)
wake_up(&audit_backlog_wait);
+ if (audit_pid)
+ wake_up_interruptible(&kauditd_wait);
}
if (s.mask & AUDIT_STATUS_RATE_LIMIT) {
err = audit_set_rate_limit(s.rate_limit);
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 3/7] audit: allow systemd to use queue reserves |
| Message-ID | <qmtfJ-2HW-59@gated-at.bofh.it> |
| In reply to | #1254090 |
Treat systemd the same way as auditd, allowing it to overrun the queue to avoid
blocking.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
kernel/audit.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/kernel/audit.c b/kernel/audit.c
index 3917aad..384a1a1 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -1375,7 +1375,7 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,
return NULL;
if (gfp_mask & __GFP_WAIT) {
- if (audit_pid && audit_pid == current->tgid)
+ if (current->tgid == 1 || (audit_pid && audit_pid == current->tgid))
gfp_mask &= ~__GFP_WAIT;
else
reserve = 0;
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-22 21:00 +0200 |
| Subject | [RFC PATCH 5/7] audit: allow audit_cmd_mutex holders to use reserves |
| Message-ID | <qmtfK-2HW-65@gated-at.bofh.it> |
| In reply to | #1254090 |
If we hold the audit_cmd_mutex, we should never sleep waiting for auditd
to drain the queue since auditd may need the mutex to shut down.
This was first implemented with mutex_trylock(), but since
audit_log_start() can be called in softirq context, that won't work.
Next, owner_running() was used to check audit_cmd_mutex but another
process could have this locked on another cpu. Use rcu_read_lock() and
ACCESS_ONCE() to check audit_cmd_mutex.
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
---
kernel/audit.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/kernel/audit.c b/kernel/audit.c
index 02a5ec0..34411af 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -1376,12 +1376,15 @@ struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,
return NULL;
if (gfp_mask & __GFP_WAIT) {
- if (current->tgid == 1 || (audit_pid && audit_pid == current->tgid))
+ rcu_read_lock();
+ if (ACCESS_ONCE(audit_cmd_mutex.owner) == current ||
+ current->tgid == 1 ||
+ (audit_pid && audit_pid == current->tgid))
gfp_mask &= ~__GFP_WAIT;
else
reserve = 0;
+ rcu_read_unlock();
}
-
while (audit_backlog_limit
&& skb_queue_len(&audit_skb_queue) > audit_backlog_limit + reserve) {
if (gfp_mask & __GFP_WAIT && audit_backlog_wait_time) {
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Paul Moore <pmoore@redhat.com> |
|---|---|
| Date | 2015-10-27 19:50 +0100 |
| Message-ID | <qohtM-fK-15@gated-at.bofh.it> |
| In reply to | #1254090 |
On Thursday, October 22, 2015 02:53:13 PM Richard Guy Briggs wrote: > This set of patches cleans up a number of corner cases in the management > of the audit queue. > > Richard Guy Briggs (7): > audit: don't needlessly reset valid wait time > audit: include auditd's threads in audit_log_start() wait exception > audit: allow systemd to use queue reserves > audit: wake up threads if queue switched from limited to unlimited > audit: allow audit_cmd_mutex holders to use reserves > audit: wake up audit_backlog_wait queue when auditd goes away. > audit: wake up kauditd_thread after auditd registers > > kernel/audit.c | 20 +++++++++++++++----- > 1 files changed, 15 insertions(+), 5 deletions(-) Due to the fact that these patches were posted late in the 4.3-rcX cycle, I've decided not to merge these into linux-audit#next for the upcoming merge window. I still need to take a closer look and properly review these patches, but I wanted to let you know why I haven't acted on them yet. -- paul moore security @ redhat -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Richard Guy Briggs <rgb@redhat.com> |
|---|---|
| Date | 2015-10-28 19:50 +0100 |
| Message-ID | <qoDXk-6mo-19@gated-at.bofh.it> |
| In reply to | #1257125 |
On 15/10/27, Paul Moore wrote: > On Thursday, October 22, 2015 02:53:13 PM Richard Guy Briggs wrote: > > This set of patches cleans up a number of corner cases in the management > > of the audit queue. > > > > Richard Guy Briggs (7): > > audit: don't needlessly reset valid wait time > > audit: include auditd's threads in audit_log_start() wait exception > > audit: allow systemd to use queue reserves > > audit: wake up threads if queue switched from limited to unlimited > > audit: allow audit_cmd_mutex holders to use reserves > > audit: wake up audit_backlog_wait queue when auditd goes away. > > audit: wake up kauditd_thread after auditd registers > > > > kernel/audit.c | 20 +++++++++++++++----- > > 1 files changed, 15 insertions(+), 5 deletions(-) > > Due to the fact that these patches were posted late in the 4.3-rcX cycle, I've > decided not to merge these into linux-audit#next for the upcoming merge > window. I still need to take a closer look and properly review these patches, > but I wanted to let you know why I haven't acted on them yet. No problem, at least it is out of my queue, as long as we have enough time to hit the next one. :) > paul moore - RGB -- Richard Guy Briggs <rbriggs@redhat.com> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Paul Moore <pmoore@redhat.com> |
|---|---|
| Date | 2015-10-28 20:00 +0100 |
| Message-ID | <qoE70-6pV-27@gated-at.bofh.it> |
| In reply to | #1258367 |
On Wednesday, October 28, 2015 02:43:18 PM Richard Guy Briggs wrote: > On 15/10/27, Paul Moore wrote: > > On Thursday, October 22, 2015 02:53:13 PM Richard Guy Briggs wrote: > > > This set of patches cleans up a number of corner cases in the management > > > of the audit queue. > > > > > > Richard Guy Briggs (7): > > > audit: don't needlessly reset valid wait time > > > audit: include auditd's threads in audit_log_start() wait exception > > > audit: allow systemd to use queue reserves > > > audit: wake up threads if queue switched from limited to unlimited > > > audit: allow audit_cmd_mutex holders to use reserves > > > audit: wake up audit_backlog_wait queue when auditd goes away. > > > audit: wake up kauditd_thread after auditd registers > > > > > > kernel/audit.c | 20 +++++++++++++++----- > > > 1 files changed, 15 insertions(+), 5 deletions(-) > > > > Due to the fact that these patches were posted late in the 4.3-rcX cycle, > > I've decided not to merge these into linux-audit#next for the upcoming > > merge window. I still need to take a closer look and properly review > > these patches, but I wanted to let you know why I haven't acted on them > > yet. > > No problem, at least it is out of my queue, as long as we have enough > time to hit the next one. :) Definitely. I just start getting twitchy about accepting non-trivial patches post -rc5(ish). -- paul moore security @ redhat -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web