[git commit] ARC: siagction: opencode memcpy

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Mon Feb 16 20:52:13 UTC 2015


commit: http://git.uclibc.org/uClibc/commit/?id=90b115c036d68c4c581ae974cdbf5352ad7daa84
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

Signed-off-by: Vineet Gupta <vgupta at synopsys.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 libc/sysdeps/linux/arc/sigaction.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/libc/sysdeps/linux/arc/sigaction.c b/libc/sysdeps/linux/arc/sigaction.c
index 73c496d..a34c7cf 100644
--- a/libc/sysdeps/linux/arc/sigaction.c
+++ b/libc/sysdeps/linux/arc/sigaction.c
@@ -22,8 +22,9 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 {
 	struct sigaction kact;
 
-	/* !act means caller only wants to know @oact
-	 * Hence only otherwise, do SA_RESTORER stuff
+	/*
+	 * SA_RESTORER is only relevant for act != NULL case
+	 * (!act means caller only wants to know @oact)
 	 *
 	 * For the normal/default cases (user not providing SA_RESTORER) use
 	 * a real sigreturn stub to avoid kernel synthesizing one on user stack
@@ -31,9 +32,11 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 	 * update) and costly cache line flushes for code modification
 	 */
 	if (act && !(act->sa_flags & SA_RESTORER)) {
-		memcpy(&kact, act, sizeof(kact));
 		kact.sa_restorer = __default_rt_sa_restorer;
-		kact.sa_flags |= SA_RESTORER;
+		kact.sa_flags = act->sa_flags | SA_RESTORER;
+
+		kact.sa_handler = act->sa_handler;
+		kact.sa_mask = act->sa_mask;
 
 		act = &kact;
 	}


More information about the uClibc-cvs mailing list