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