|
@@ -590,6 +590,10 @@ void secure_computing_strict(int this_syscall)
|
|
{
|
|
{
|
|
int mode = current->seccomp.mode;
|
|
int mode = current->seccomp.mode;
|
|
|
|
|
|
|
|
+ if (config_enabled(CONFIG_CHECKPOINT_RESTORE) &&
|
|
|
|
+ unlikely(current->ptrace & PT_SUSPEND_SECCOMP))
|
|
|
|
+ return;
|
|
|
|
+
|
|
if (mode == 0)
|
|
if (mode == 0)
|
|
return;
|
|
return;
|
|
else if (mode == SECCOMP_MODE_STRICT)
|
|
else if (mode == SECCOMP_MODE_STRICT)
|
|
@@ -691,6 +695,10 @@ u32 seccomp_phase1(struct seccomp_data *sd)
|
|
int this_syscall = sd ? sd->nr :
|
|
int this_syscall = sd ? sd->nr :
|
|
syscall_get_nr(current, task_pt_regs(current));
|
|
syscall_get_nr(current, task_pt_regs(current));
|
|
|
|
|
|
|
|
+ if (config_enabled(CONFIG_CHECKPOINT_RESTORE) &&
|
|
|
|
+ unlikely(current->ptrace & PT_SUSPEND_SECCOMP))
|
|
|
|
+ return SECCOMP_PHASE1_OK;
|
|
|
|
+
|
|
switch (mode) {
|
|
switch (mode) {
|
|
case SECCOMP_MODE_STRICT:
|
|
case SECCOMP_MODE_STRICT:
|
|
__secure_computing_strict(this_syscall); /* may call do_exit */
|
|
__secure_computing_strict(this_syscall); /* may call do_exit */
|