[PATCH 5/8] ARC: siagction: opencode memcpy

Vineet Gupta <[email protected]>
Newsgroups gmane.comp.lib.uclibc.general
Message-ID <[email protected]>
Signed-off-by: Vineet Gupta <[email protected]>
---
 libc/sysdeps/linux/arc/sigaction.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libc/sysdeps/linux/arc/sigaction.c b/libc/sysdeps/linux/arc/sigaction.c
index 73c496d2a814..a34c7cf4c556 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;
 	}
-- 
1.9.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.