Merge branch 'next-seccomp' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[sfrench/cifs-2.6.git] / kernel / ptrace.c
index 84b1367935e410f79770c06efadc20deb51346b3..5e1d713c8e61f92e77fd0b3e4f46a678f2500a15 100644 (file)
@@ -659,7 +659,7 @@ static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info)
        if (lock_task_sighand(child, &flags)) {
                error = -EINVAL;
                if (likely(child->last_siginfo != NULL)) {
-                       *info = *child->last_siginfo;
+                       copy_siginfo(info, child->last_siginfo);
                        error = 0;
                }
                unlock_task_sighand(child, &flags);
@@ -675,7 +675,7 @@ static int ptrace_setsiginfo(struct task_struct *child, const siginfo_t *info)
        if (lock_task_sighand(child, &flags)) {
                error = -EINVAL;
                if (likely(child->last_siginfo != NULL)) {
-                       *child->last_siginfo = *info;
+                       copy_siginfo(child->last_siginfo, info);
                        error = 0;
                }
                unlock_task_sighand(child, &flags);
@@ -1092,6 +1092,10 @@ int ptrace_request(struct task_struct *child, long request,
                ret = seccomp_get_filter(child, addr, datavp);
                break;
 
+       case PTRACE_SECCOMP_GET_METADATA:
+               ret = seccomp_get_metadata(child, addr, datavp);
+               break;
+
        default:
                break;
        }
@@ -1226,7 +1230,6 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request,
                break;
 
        case PTRACE_SETSIGINFO:
-               memset(&siginfo, 0, sizeof siginfo);
                if (copy_siginfo_from_user32(
                            &siginfo, (struct compat_siginfo __user *) datap))
                        ret = -EFAULT;