Generic Linux architectural discussions
 help / color / mirror / Atom feed
diff for duplicates of <20160813145228.GA24335@yury-N73SV>

diff --git a/a/1.txt b/N1/1.txt
index bc97ae4..a563b64 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -19,245 +19,3 @@ this patch with current patchset as it basicly the bugfux and update
 submission when I'll finish with all comments.
 
 Yury.
-
-
-From 6a023da977713e9eade0a404c4f000d432d1fd67 Mon Sep 17 00:00:00 2001
-From: Yury Norov <ynorov@caviumnetworks.com>
-Date: Sat, 13 Aug 2016 17:36:59 +0300
-Subject: [PATCH] aaa
-
-Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
----
- arch/arm64/include/asm/signal32.h        |  3 ++
- arch/arm64/include/asm/signal32_common.h |  3 ++
- arch/arm64/include/asm/signal_ilp32.h    |  4 +++
- arch/arm64/kernel/ptrace.c               | 47 ++++++++++++++++++++++++++++++--
- arch/arm64/kernel/signal32.c             | 22 ---------------
- arch/arm64/kernel/signal32_common.c      | 21 ++++++++++++++
- arch/arm64/kernel/signal_ilp32.c         | 25 +----------------
- 7 files changed, 76 insertions(+), 49 deletions(-)
-
-diff --git a/arch/arm64/include/asm/signal32.h b/arch/arm64/include/asm/signal32.h
-index e68fcce..1c4ede7 100644
---- a/arch/arm64/include/asm/signal32.h
-+++ b/arch/arm64/include/asm/signal32.h
-@@ -13,6 +13,9 @@
-  * You should have received a copy of the GNU General Public License
-  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-+
-+#include <asm/signal32_common.h>
-+
- #ifndef __ASM_SIGNAL32_H
- #define __ASM_SIGNAL32_H
- 
-diff --git a/arch/arm64/include/asm/signal32_common.h b/arch/arm64/include/asm/signal32_common.h
-index b4f2099..e3e2d01 100644
---- a/arch/arm64/include/asm/signal32_common.h
-+++ b/arch/arm64/include/asm/signal32_common.h
-@@ -19,6 +19,9 @@
- int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from);
- int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from);
- 
-+int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set);
-+int get_sigset_t(sigset_t *set, const compat_sigset_t __user *uset);
-+
- #endif /* CONFIG_COMPAT*/
- 
- #endif /* __ASM_SIGNAL32_COMMON_H */
-diff --git a/arch/arm64/include/asm/signal_ilp32.h b/arch/arm64/include/asm/signal_ilp32.h
-index 30eff23..3c6d737 100644
---- a/arch/arm64/include/asm/signal_ilp32.h
-+++ b/arch/arm64/include/asm/signal_ilp32.h
-@@ -11,6 +11,10 @@
-  * You should have received a copy of the GNU General Public License
-  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
-  */
-+
-+#include <asm/signal32_common.h>
-+#include <asm/signal_common.h>
-+
- #ifndef __ASM_SIGNAL_ILP32_H
- #define __ASM_SIGNAL_ILP32_H
- 
-diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
-index e69c79a..4f0df07 100644
---- a/arch/arm64/kernel/ptrace.c
-+++ b/arch/arm64/kernel/ptrace.c
-@@ -41,6 +41,7 @@
- 
- #include <asm/debug-monitors.h>
- #include <asm/pgtable.h>
-+#include <asm/signal32_common.h>
- #include <asm/syscall.h>
- #include <asm/traps.h>
- #include <asm/system_misc.h>
-@@ -1332,15 +1333,55 @@ COMPAT_SYSCALL_DEFINE4(aarch32_ptrace, compat_long_t, request, compat_long_t, pi
- 
- #endif /* CONFIG_AARCH32_EL0 */
- 
--#ifdef CONFIG_COMPAT
-+#ifdef CONFIG_ARM64_ILP32
- 
- long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
- 			compat_ulong_t caddr, compat_ulong_t cdata)
- {
--	return compat_ptrace_request(child, request, caddr, cdata);
-+	sigset_t new_set;
-+
-+	switch (request) {
-+	case PTRACE_GETSIGMASK:
-+		if (caddr != sizeof(compat_sigset_t))
-+			return -EINVAL;
-+
-+		return put_sigset_t((compat_sigset_t __user *) (u64) cdata,
-+					&child->blocked);
-+
-+	case PTRACE_SETSIGMASK:
-+		if (caddr != sizeof(compat_sigset_t))
-+			return -EINVAL;
-+
-+		if (get_sigset_t(&new_set, (compat_sigset_t __user *) (u64) cdata))
-+			return -EFAULT;
-+
-+		sigdelsetmask(&new_set, sigmask(SIGKILL)|sigmask(SIGSTOP));
-+
-+		/*
-+		 * Every thread does recalc_sigpending() after resume, so
-+		 * retarget_shared_pending() and recalc_sigpending() are not
-+		 * called here.
-+		 */
-+		spin_lock_irq(&child->sighand->siglock);
-+		child->blocked = new_set;
-+		spin_unlock_irq(&child->sighand->siglock);
-+
-+		return 0;
-+
-+	default:
-+		return compat_ptrace_request(child, request, caddr, cdata);
-+	}
- }
- 
--#endif /* CONFIG_COMPAT */
-+#elif defined (CONFIG_COMPAT)
-+
-+long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
-+		compat_ulong_t caddr, compat_ulong_t cdata)
-+{
-+	return 0;
-+}
-+
-+#endif
- 
- const struct user_regset_view *task_user_regset_view(struct task_struct *task)
- {
-diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c
-index b103af3..f2c1a38 100644
---- a/arch/arm64/kernel/signal32.c
-+++ b/arch/arm64/kernel/signal32.c
-@@ -103,28 +103,6 @@ struct compat_rt_sigframe {
- 
- #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
- 
--static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
--{
--	compat_sigset_t	cset;
--
--	cset.sig[0] = set->sig[0] & 0xffffffffull;
--	cset.sig[1] = set->sig[0] >> 32;
--
--	return copy_to_user(uset, &cset, sizeof(*uset));
--}
--
--static inline int get_sigset_t(sigset_t *set,
--			       const compat_sigset_t __user *uset)
--{
--	compat_sigset_t s32;
--
--	if (copy_from_user(&s32, uset, sizeof(*uset)))
--		return -EFAULT;
--
--	set->sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);
--	return 0;
--}
--
- /*
-  * VFP save/restore code.
-  *
-diff --git a/arch/arm64/kernel/signal32_common.c b/arch/arm64/kernel/signal32_common.c
-index 8fbb609..4a45aa6 100644
---- a/arch/arm64/kernel/signal32_common.c
-+++ b/arch/arm64/kernel/signal32_common.c
-@@ -28,6 +28,27 @@
- #include <asm/uaccess.h>
- #include <asm/unistd.h>
- 
-+int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
-+{
-+	compat_sigset_t	cset;
-+
-+	cset.sig[0] = set->sig[0] & 0xffffffffull;
-+	cset.sig[1] = set->sig[0] >> 32;
-+
-+	return copy_to_user(uset, &cset, sizeof(*uset));
-+}
-+
-+int get_sigset_t(sigset_t *set, const compat_sigset_t __user *uset)
-+{
-+	compat_sigset_t s32;
-+
-+	if (copy_from_user(&s32, uset, sizeof(*uset)))
-+		return -EFAULT;
-+
-+	set->sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);
-+	return 0;
-+}
-+
- int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)
- {
- 	int err;
-diff --git a/arch/arm64/kernel/signal_ilp32.c b/arch/arm64/kernel/signal_ilp32.c
-index 8ca64b9..7cc9122 100644
---- a/arch/arm64/kernel/signal_ilp32.c
-+++ b/arch/arm64/kernel/signal_ilp32.c
-@@ -26,8 +26,7 @@
- 
- #include <asm/esr.h>
- #include <asm/fpsimd.h>
--#include <asm/signal32_common.h>
--#include <asm/signal_common.h>
-+#include <asm/signal_ilp32.h>
- #include <asm/uaccess.h>
- #include <asm/unistd.h>
- #include <asm/ucontext.h>
-@@ -58,28 +57,6 @@ struct ilp32_rt_sigframe {
- 	struct ilp32_sigframe sig;
- };
- 
--static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
--{
--	compat_sigset_t cset;
--
--	cset.sig[0] = set->sig[0] & 0xffffffffull;
--	cset.sig[1] = set->sig[0] >> 32;
--
--	return copy_to_user(uset, &cset, sizeof(*uset));
--}
--
--static inline int get_sigset_t(sigset_t *set,
--                               const compat_sigset_t __user *uset)
--{
--	compat_sigset_t s32;
--
--	if (copy_from_user(&s32, uset, sizeof(*uset)))
--		return -EFAULT;
--
--	set->sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);
--	return 0;
--}
--
- static int restore_ilp32_sigframe(struct pt_regs *regs,
-                             struct ilp32_sigframe __user *sf)
- {
--- 
-2.7.4
diff --git a/a/content_digest b/N1/content_digest
index 703bd1d..801b38e 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -53,248 +53,6 @@
  "this patch with current patchset as it basicly the bugfux and update\n"
  "submission when I'll finish with all comments.\n"
  "\n"
- "Yury.\n"
- "\n"
- "\n"
- "From 6a023da977713e9eade0a404c4f000d432d1fd67 Mon Sep 17 00:00:00 2001\n"
- "From: Yury Norov <ynorov@caviumnetworks.com>\n"
- "Date: Sat, 13 Aug 2016 17:36:59 +0300\n"
- "Subject: [PATCH] aaa\n"
- "\n"
- "Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>\n"
- "---\n"
- " arch/arm64/include/asm/signal32.h        |  3 ++\n"
- " arch/arm64/include/asm/signal32_common.h |  3 ++\n"
- " arch/arm64/include/asm/signal_ilp32.h    |  4 +++\n"
- " arch/arm64/kernel/ptrace.c               | 47 ++++++++++++++++++++++++++++++--\n"
- " arch/arm64/kernel/signal32.c             | 22 ---------------\n"
- " arch/arm64/kernel/signal32_common.c      | 21 ++++++++++++++\n"
- " arch/arm64/kernel/signal_ilp32.c         | 25 +----------------\n"
- " 7 files changed, 76 insertions(+), 49 deletions(-)\n"
- "\n"
- "diff --git a/arch/arm64/include/asm/signal32.h b/arch/arm64/include/asm/signal32.h\n"
- "index e68fcce..1c4ede7 100644\n"
- "--- a/arch/arm64/include/asm/signal32.h\n"
- "+++ b/arch/arm64/include/asm/signal32.h\n"
- "@@ -13,6 +13,9 @@\n"
- "  * You should have received a copy of the GNU General Public License\n"
- "  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n"
- "  */\n"
- "+\n"
- "+#include <asm/signal32_common.h>\n"
- "+\n"
- " #ifndef __ASM_SIGNAL32_H\n"
- " #define __ASM_SIGNAL32_H\n"
- " \n"
- "diff --git a/arch/arm64/include/asm/signal32_common.h b/arch/arm64/include/asm/signal32_common.h\n"
- "index b4f2099..e3e2d01 100644\n"
- "--- a/arch/arm64/include/asm/signal32_common.h\n"
- "+++ b/arch/arm64/include/asm/signal32_common.h\n"
- "@@ -19,6 +19,9 @@\n"
- " int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from);\n"
- " int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from);\n"
- " \n"
- "+int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set);\n"
- "+int get_sigset_t(sigset_t *set, const compat_sigset_t __user *uset);\n"
- "+\n"
- " #endif /* CONFIG_COMPAT*/\n"
- " \n"
- " #endif /* __ASM_SIGNAL32_COMMON_H */\n"
- "diff --git a/arch/arm64/include/asm/signal_ilp32.h b/arch/arm64/include/asm/signal_ilp32.h\n"
- "index 30eff23..3c6d737 100644\n"
- "--- a/arch/arm64/include/asm/signal_ilp32.h\n"
- "+++ b/arch/arm64/include/asm/signal_ilp32.h\n"
- "@@ -11,6 +11,10 @@\n"
- "  * You should have received a copy of the GNU General Public License\n"
- "  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n"
- "  */\n"
- "+\n"
- "+#include <asm/signal32_common.h>\n"
- "+#include <asm/signal_common.h>\n"
- "+\n"
- " #ifndef __ASM_SIGNAL_ILP32_H\n"
- " #define __ASM_SIGNAL_ILP32_H\n"
- " \n"
- "diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c\n"
- "index e69c79a..4f0df07 100644\n"
- "--- a/arch/arm64/kernel/ptrace.c\n"
- "+++ b/arch/arm64/kernel/ptrace.c\n"
- "@@ -41,6 +41,7 @@\n"
- " \n"
- " #include <asm/debug-monitors.h>\n"
- " #include <asm/pgtable.h>\n"
- "+#include <asm/signal32_common.h>\n"
- " #include <asm/syscall.h>\n"
- " #include <asm/traps.h>\n"
- " #include <asm/system_misc.h>\n"
- "@@ -1332,15 +1333,55 @@ COMPAT_SYSCALL_DEFINE4(aarch32_ptrace, compat_long_t, request, compat_long_t, pi\n"
- " \n"
- " #endif /* CONFIG_AARCH32_EL0 */\n"
- " \n"
- "-#ifdef CONFIG_COMPAT\n"
- "+#ifdef CONFIG_ARM64_ILP32\n"
- " \n"
- " long compat_arch_ptrace(struct task_struct *child, compat_long_t request,\n"
- " \t\t\tcompat_ulong_t caddr, compat_ulong_t cdata)\n"
- " {\n"
- "-\treturn compat_ptrace_request(child, request, caddr, cdata);\n"
- "+\tsigset_t new_set;\n"
- "+\n"
- "+\tswitch (request) {\n"
- "+\tcase PTRACE_GETSIGMASK:\n"
- "+\t\tif (caddr != sizeof(compat_sigset_t))\n"
- "+\t\t\treturn -EINVAL;\n"
- "+\n"
- "+\t\treturn put_sigset_t((compat_sigset_t __user *) (u64) cdata,\n"
- "+\t\t\t\t\t&child->blocked);\n"
- "+\n"
- "+\tcase PTRACE_SETSIGMASK:\n"
- "+\t\tif (caddr != sizeof(compat_sigset_t))\n"
- "+\t\t\treturn -EINVAL;\n"
- "+\n"
- "+\t\tif (get_sigset_t(&new_set, (compat_sigset_t __user *) (u64) cdata))\n"
- "+\t\t\treturn -EFAULT;\n"
- "+\n"
- "+\t\tsigdelsetmask(&new_set, sigmask(SIGKILL)|sigmask(SIGSTOP));\n"
- "+\n"
- "+\t\t/*\n"
- "+\t\t * Every thread does recalc_sigpending() after resume, so\n"
- "+\t\t * retarget_shared_pending() and recalc_sigpending() are not\n"
- "+\t\t * called here.\n"
- "+\t\t */\n"
- "+\t\tspin_lock_irq(&child->sighand->siglock);\n"
- "+\t\tchild->blocked = new_set;\n"
- "+\t\tspin_unlock_irq(&child->sighand->siglock);\n"
- "+\n"
- "+\t\treturn 0;\n"
- "+\n"
- "+\tdefault:\n"
- "+\t\treturn compat_ptrace_request(child, request, caddr, cdata);\n"
- "+\t}\n"
- " }\n"
- " \n"
- "-#endif /* CONFIG_COMPAT */\n"
- "+#elif defined (CONFIG_COMPAT)\n"
- "+\n"
- "+long compat_arch_ptrace(struct task_struct *child, compat_long_t request,\n"
- "+\t\tcompat_ulong_t caddr, compat_ulong_t cdata)\n"
- "+{\n"
- "+\treturn 0;\n"
- "+}\n"
- "+\n"
- "+#endif\n"
- " \n"
- " const struct user_regset_view *task_user_regset_view(struct task_struct *task)\n"
- " {\n"
- "diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c\n"
- "index b103af3..f2c1a38 100644\n"
- "--- a/arch/arm64/kernel/signal32.c\n"
- "+++ b/arch/arm64/kernel/signal32.c\n"
- "@@ -103,28 +103,6 @@ struct compat_rt_sigframe {\n"
- " \n"
- " #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))\n"
- " \n"
- "-static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)\n"
- "-{\n"
- "-\tcompat_sigset_t\tcset;\n"
- "-\n"
- "-\tcset.sig[0] = set->sig[0] & 0xffffffffull;\n"
- "-\tcset.sig[1] = set->sig[0] >> 32;\n"
- "-\n"
- "-\treturn copy_to_user(uset, &cset, sizeof(*uset));\n"
- "-}\n"
- "-\n"
- "-static inline int get_sigset_t(sigset_t *set,\n"
- "-\t\t\t       const compat_sigset_t __user *uset)\n"
- "-{\n"
- "-\tcompat_sigset_t s32;\n"
- "-\n"
- "-\tif (copy_from_user(&s32, uset, sizeof(*uset)))\n"
- "-\t\treturn -EFAULT;\n"
- "-\n"
- "-\tset->sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);\n"
- "-\treturn 0;\n"
- "-}\n"
- "-\n"
- " /*\n"
- "  * VFP save/restore code.\n"
- "  *\n"
- "diff --git a/arch/arm64/kernel/signal32_common.c b/arch/arm64/kernel/signal32_common.c\n"
- "index 8fbb609..4a45aa6 100644\n"
- "--- a/arch/arm64/kernel/signal32_common.c\n"
- "+++ b/arch/arm64/kernel/signal32_common.c\n"
- "@@ -28,6 +28,27 @@\n"
- " #include <asm/uaccess.h>\n"
- " #include <asm/unistd.h>\n"
- " \n"
- "+int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)\n"
- "+{\n"
- "+\tcompat_sigset_t\tcset;\n"
- "+\n"
- "+\tcset.sig[0] = set->sig[0] & 0xffffffffull;\n"
- "+\tcset.sig[1] = set->sig[0] >> 32;\n"
- "+\n"
- "+\treturn copy_to_user(uset, &cset, sizeof(*uset));\n"
- "+}\n"
- "+\n"
- "+int get_sigset_t(sigset_t *set, const compat_sigset_t __user *uset)\n"
- "+{\n"
- "+\tcompat_sigset_t s32;\n"
- "+\n"
- "+\tif (copy_from_user(&s32, uset, sizeof(*uset)))\n"
- "+\t\treturn -EFAULT;\n"
- "+\n"
- "+\tset->sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);\n"
- "+\treturn 0;\n"
- "+}\n"
- "+\n"
- " int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)\n"
- " {\n"
- " \tint err;\n"
- "diff --git a/arch/arm64/kernel/signal_ilp32.c b/arch/arm64/kernel/signal_ilp32.c\n"
- "index 8ca64b9..7cc9122 100644\n"
- "--- a/arch/arm64/kernel/signal_ilp32.c\n"
- "+++ b/arch/arm64/kernel/signal_ilp32.c\n"
- "@@ -26,8 +26,7 @@\n"
- " \n"
- " #include <asm/esr.h>\n"
- " #include <asm/fpsimd.h>\n"
- "-#include <asm/signal32_common.h>\n"
- "-#include <asm/signal_common.h>\n"
- "+#include <asm/signal_ilp32.h>\n"
- " #include <asm/uaccess.h>\n"
- " #include <asm/unistd.h>\n"
- " #include <asm/ucontext.h>\n"
- "@@ -58,28 +57,6 @@ struct ilp32_rt_sigframe {\n"
- " \tstruct ilp32_sigframe sig;\n"
- " };\n"
- " \n"
- "-static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)\n"
- "-{\n"
- "-\tcompat_sigset_t cset;\n"
- "-\n"
- "-\tcset.sig[0] = set->sig[0] & 0xffffffffull;\n"
- "-\tcset.sig[1] = set->sig[0] >> 32;\n"
- "-\n"
- "-\treturn copy_to_user(uset, &cset, sizeof(*uset));\n"
- "-}\n"
- "-\n"
- "-static inline int get_sigset_t(sigset_t *set,\n"
- "-                               const compat_sigset_t __user *uset)\n"
- "-{\n"
- "-\tcompat_sigset_t s32;\n"
- "-\n"
- "-\tif (copy_from_user(&s32, uset, sizeof(*uset)))\n"
- "-\t\treturn -EFAULT;\n"
- "-\n"
- "-\tset->sig[0] = s32.sig[0] | (((long)s32.sig[1]) << 32);\n"
- "-\treturn 0;\n"
- "-}\n"
- "-\n"
- " static int restore_ilp32_sigframe(struct pt_regs *regs,\n"
- "                             struct ilp32_sigframe __user *sf)\n"
- " {\n"
- "-- \n"
- 2.7.4
+ Yury.
 
-91231909348c2e874701ecb0f163ec207d6f18f1d4ed84d168ae22c85b626154
+122d86dbb28cd42f4cd902104aea440664a22fdbb59fab1679980022dc38ba3f

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox