Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f701b75ed5ffb6820efe530d1a3abcc6fc4678ad
Commit:     f701b75ed5ffb6820efe530d1a3abcc6fc4678ad
Parent:     bfef93a5d1fb5654fe2025276c55e202d10b5255
Author:     Eric Paris <[EMAIL PROTECTED]>
AuthorDate: Mon Jan 7 13:34:51 2008 -0500
Committer:  Al Viro <[EMAIL PROTECTED]>
CommitDate: Fri Feb 1 14:05:55 2008 -0500

    [AUDIT] return EINTR not ERESTART*
    
    The syscall exit code will change ERESTART* kernel internal return codes
    to EINTR if it does not restart the syscall.  Since we collect the audit
    info before that point we should fix those in the audit log as well.
    
    Signed-off-by: Eric Paris <[EMAIL PROTECTED]>
---
 kernel/auditsc.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index c95173a..ce8c957 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -701,7 +701,24 @@ static inline struct audit_context 
*audit_get_context(struct task_struct *tsk,
        if (likely(!context))
                return NULL;
        context->return_valid = return_valid;
-       context->return_code  = return_code;
+
+       /*
+        * we need to fix up the return code in the audit logs if the actual
+        * return codes are later going to be fixed up by the arch specific
+        * signal handlers
+        *
+        * This is actually a test for:
+        * (rc == ERESTARTSYS ) || (rc == ERESTARTNOINTR) ||
+        * (rc == ERESTARTNOHAND) || (rc == ERESTART_RESTARTBLOCK)
+        *
+        * but is faster than a bunch of ||
+        */
+       if (unlikely(return_code <= -ERESTARTSYS) &&
+           (return_code >= -ERESTART_RESTARTBLOCK) &&
+           (return_code != -ENOIOCTLCMD))
+               context->return_code = -EINTR;
+       else
+               context->return_code  = return_code;
 
        if (context->in_syscall && !context->dummy && !context->auditable) {
                enum audit_state state;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to