From: Miloslav Trmac <mitr@redhat.com>
To: Andrew Morton <akpm@linux-foundation.org>, dwmw2@infradead.org
Cc: linux-kernel@vger.kernel.org, Alan Cox <alan@redhat.com>,
Steve Grubb <sgrubb@redhat.com>,
Alexander Viro <aviro@redhat.com>
Subject: Re: [PATCH, v2] Audit: Add TTY input auditing
Date: Fri, 08 Jun 2007 18:00:35 +0200 [thread overview]
Message-ID: <46697D23.4060506@redhat.com> (raw)
In-Reply-To: <20070607233139.de85725f.akpm@linux-foundation.org>
[-- Attachment #1: Type: text/plain, Size: 515 bytes --]
Andrew Morton napsal(a):
> On Fri, 08 Jun 2007 06:23:23 +0200 Miloslav Trmac <mitr@redhat.com> wrote:
>> diff --git a/include/linux/sched.h b/include/linux/sched.h
>> index d58e74b..d9d734c 100644
>> --- a/include/linux/sched.h
>> +++ b/include/linux/sched.h
>> @@ -506,6 +506,8 @@ struct signal_struct {
>> #ifdef CONFIG_TASKSTATS
>> struct taskstats *stats;
>> #endif
>> + unsigned audit_tty;
>> + struct tty_audit_buf *tty_audit_buf;
>> };
>
> Can we ifdef these?
Sure, here's an incremental patch.
Mirek
[-- Attachment #2: linux-2.patch --]
[-- Type: text/x-patch, Size: 3289 bytes --]
From: Miloslav Trmac <mitr@redhat.com>
Only add TTY audit state to struct signal_struct if CONFIG_AUDIT. Move the
copying of TTY audit state on fork () to tty_audit.c.
Signed-off-by: Miloslav Trmac <mitr@redhat.com>
---
drivers/char/tty_audit.c | 13 +++++++++++++
include/linux/sched.h | 2 ++
include/linux/tty.h | 5 +++++
kernel/exit.c | 2 +-
kernel/fork.c | 6 ++----
5 files changed, 23 insertions(+), 5 deletions(-)
diff -u b/drivers/char/tty_audit.c b/drivers/char/tty_audit.c
--- b/drivers/char/tty_audit.c
+++ b/drivers/char/tty_audit.c
@@ -134,6 +134,19 @@
}
/**
+ * tty_audit_fork - Copy TTY audit state for a new task
+ *
+ * Set up TTY audit state in @sig from current. @sig needs no locking.
+ */
+void tty_audit_fork(struct signal_struct *sig)
+{
+ spin_lock_irq(¤t->sighand->siglock);
+ sig->audit_tty = current->signal->audit_tty;
+ spin_unlock_irq(¤t->sighand->siglock);
+ sig->tty_audit_buf = NULL;
+}
+
+/**
* tty_audit_push_task - Flush task's pending audit data
*/
void tty_audit_push_task(struct task_struct *tsk, uid_t loginuid)
diff -u b/include/linux/sched.h b/include/linux/sched.h
--- b/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -506,8 +506,10 @@
#ifdef CONFIG_TASKSTATS
struct taskstats *stats;
#endif
+#ifdef CONFIG_AUDIT
unsigned audit_tty;
struct tty_audit_buf *tty_audit_buf;
+#endif
};
/* Context switch must be unlocked if interrupts are to be enabled */
diff -u b/include/linux/tty.h b/include/linux/tty.h
--- b/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -178,6 +178,7 @@
#define L_IEXTEN(tty) _L_FLAG((tty),IEXTEN)
struct device;
+struct signal_struct;
/*
* Where all of the state associated with a tty is kept while the tty
* is open. Since the termios state should be kept even if the tty
@@ -347,6 +348,7 @@
extern void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
size_t size);
extern void tty_audit_exit(void);
+extern void tty_audit_fork(struct signal_struct *sig);
extern void tty_audit_push(struct tty_struct *tty);
extern void tty_audit_push_task(struct task_struct *tsk, uid_t loginuid);
extern void tty_audit_opening(void);
@@ -358,6 +360,9 @@
static inline void tty_audit_exit(void)
{
}
+static inline void tty_audit_fork(struct signal_struct *sig)
+{
+}
static inline void tty_audit_push(struct tty_struct *tty)
{
}
diff -u b/kernel/exit.c b/kernel/exit.c
--- b/kernel/exit.c
+++ b/kernel/exit.c
@@ -922,7 +922,7 @@
if (unlikely(tsk->compat_robust_list))
compat_exit_robust_list(tsk);
#endif
- if (group_dead && unlikely(tsk->signal->tty_audit_buf))
+ if (group_dead)
tty_audit_exit();
if (unlikely(tsk->audit_context))
audit_free(tsk);
diff -u b/kernel/fork.c b/kernel/fork.c
--- b/kernel/fork.c
+++ b/kernel/fork.c
@@ -49,6 +49,7 @@
#include <linux/delayacct.h>
#include <linux/taskstats_kern.h>
#include <linux/random.h>
+#include <linux/tty.h>
#include <asm/pgtable.h>
#include <asm/pgalloc.h>
@@ -897,10 +898,7 @@
}
acct_init_pacct(&sig->pacct);
- spin_lock_irq(¤t->sighand->siglock);
- sig->audit_tty = current->signal->audit_tty;
- spin_unlock_irq(¤t->sighand->siglock);
- sig->tty_audit_buf = NULL;
+ tty_audit_fork(sig);
return 0;
}
next prev parent reply other threads:[~2007-06-08 16:07 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-06 9:49 [PATCH] Audit: Add TTY input auditing Miloslav Trmac
2007-06-06 10:10 ` Miloslav Trmac
2007-06-07 0:41 ` Andrew Morton
2007-06-07 10:10 ` Alan Cox
2007-06-07 14:20 ` Miloslav Trmac
2007-06-07 21:59 ` Alan Cox
2007-06-08 4:18 ` Miloslav Trmac
2007-06-08 4:23 ` [PATCH, v2] " Miloslav Trmac
2007-06-08 6:31 ` Andrew Morton
2007-06-08 16:00 ` Miloslav Trmac [this message]
2007-06-07 8:13 ` [PATCH] " Jan Engelhardt
2007-06-07 10:50 ` Steve Grubb
2007-06-07 15:42 ` Casey Schaufler
2007-06-07 15:52 ` Alan Cox
2007-06-07 16:31 ` Steve Grubb
2007-06-07 17:33 ` Casey Schaufler
2007-06-07 19:28 ` Miloslav Trmac
2007-06-07 21:09 ` Jan Engelhardt
2007-06-07 22:32 ` Casey Schaufler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46697D23.4060506@redhat.com \
--to=mitr@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alan@redhat.com \
--cc=aviro@redhat.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sgrubb@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.