Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp761075pxf; Wed, 10 Mar 2021 17:35:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJy56csjTfZIfaX0OOEXwVNlvh9xb7EMoKi689N9F3vw3VwL3cplbawYulCYQnFCZSG/Ur+y X-Received: by 2002:a17:906:1453:: with SMTP id q19mr730648ejc.76.1615426527042; Wed, 10 Mar 2021 17:35:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615426527; cv=none; d=google.com; s=arc-20160816; b=NTtOlAozrfJmZEDYAcOUvCZYCP73ikt+XaRcZX/jMLg2jJoMe5BXysRMnDybkYokw1 DRg5qoItVmT1qfXsNO/ncfILR/fLch+LTpq9se62f7Xbfk2EBeyuIGZbl0hgqSuxOye3 2Histu+asUb2E602EPyebJNFppE1JsD3mRdmqinw4366157NJgBJ9XjulFL2vSma13dC h7j7SFEA5lLtolYyEURAXO+knU/pKXV2byjdmPVJ7iPgf6MuCdUmXSPbZTu7uTzlyiie 6P1O1UmaBCRATpWXFEWlpJbn21cY0v6UDxXpT+2U3h8iv+kywoU4IwrdUjTnt7wPBa00 BelQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :ironport-sdr:ironport-sdr; bh=A1mib/9997aKmVAs/dN/P8Sj3AhspppKbnzeDUtdvg4=; b=FPqElQxU3nprucfFwAzHmntUHb72REEmzqtQk471VmRVEL7dd33ufclMMH7/VAljKT WQXJTOwvIwwwpyevEZHnRvdpW5G/LJe826tJH12M+k+52A88NSX9ovpUvftPkdfqB9qA mN2IMPGXjIMdI1tsdhk/DBFIzEHw0VOnuNzavSNC1wkzuoGkKf9HveYRsmavvZCUWpva MQJTT1Mni5Lox6mnwW5kliSWIbYJN6F4NOhe8527nMCLjNH1EUCYz+cv41nsGXGCccFu gVRsm8OYLaDD3dF56/Z/iGueawMMQ/DHC7BCabJYoSNr4rfFvZPuISOALZ8/+50bu5i9 WR9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q14si619244ejy.320.2021.03.10.17.35.03; Wed, 10 Mar 2021 17:35:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229520AbhCKBd2 (ORCPT + 99 others); Wed, 10 Mar 2021 20:33:28 -0500 Received: from mga07.intel.com ([134.134.136.100]:57456 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229512AbhCKBc7 (ORCPT ); Wed, 10 Mar 2021 20:32:59 -0500 IronPort-SDR: HdImSpLfWYLJTMY2UOa62on6Iu8fDitF0JHWi6WymnBgIUEsOwDIJw5m+fOpF+Brwj5xeMD+tr cLDk6enGSA2g== X-IronPort-AV: E=McAfee;i="6000,8403,9919"; a="252613275" X-IronPort-AV: E=Sophos;i="5.81,238,1610438400"; d="gz'50?scan'50,208,50";a="252613275" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Mar 2021 17:32:52 -0800 IronPort-SDR: /oe2LsilgA/OQZLiEFbw38OtfYI/VJNHHBBhS4fskrODhBDU5G5M4c32qogYtesDaQEnz6fW3a yo0YwOiwDktQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,238,1610438400"; d="gz'50?scan'50,208,50";a="520932203" Received: from lkp-server02.sh.intel.com (HELO ce64c092ff93) ([10.239.97.151]) by orsmga004.jf.intel.com with ESMTP; 10 Mar 2021 17:32:50 -0800 Received: from kbuild by ce64c092ff93 with local (Exim 4.92) (envelope-from ) id 1lKAC1-0000V8-Ph; Thu, 11 Mar 2021 01:32:49 +0000 Date: Thu, 11 Mar 2021 09:31:59 +0800 From: kernel test robot To: Jim Newsome , Oleg Nesterov Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Jim Newsome Subject: Re: [PATCH] ptrace: Allow other threads to access tracee Message-ID: <202103110931.HnpbO1g6-lkp@intel.com> References: <20210310205908.23447-1-jnewsome@torproject.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="fUYQa+Pmc3FrFX/N" Content-Disposition: inline In-Reply-To: <20210310205908.23447-1-jnewsome@torproject.org> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --fUYQa+Pmc3FrFX/N Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Jim, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linux/master] [also build test WARNING on linus/master v5.12-rc2 next-20210310] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Jim-Newsome/ptrace-Allow-other-threads-to-access-tracee/20210311-050039 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 144c79ef33536b4ecb4951e07dbc1f2b7fa99d32 config: x86_64-randconfig-s021-20210309 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-262-g5e674421-dirty # https://github.com/0day-ci/linux/commit/874466f21257b7eb31b17d2bdb19da3f365436d7 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jim-Newsome/ptrace-Allow-other-threads-to-access-tracee/20210311-050039 git checkout 874466f21257b7eb31b17d2bdb19da3f365436d7 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot "sparse warnings: (new ones prefixed by >>)" >> kernel/ptrace.c:53:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *p2 @@ got struct task_struct [noderef] __rcu *parent @@ kernel/ptrace.c:53:44: sparse: expected struct task_struct *p2 kernel/ptrace.c:53:44: sparse: got struct task_struct [noderef] __rcu *parent kernel/ptrace.c:72:23: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct task_struct [noderef] __rcu *parent @@ got struct task_struct *new_parent @@ kernel/ptrace.c:72:23: sparse: expected struct task_struct [noderef] __rcu *parent kernel/ptrace.c:72:23: sparse: got struct task_struct *new_parent kernel/ptrace.c:73:29: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct cred const [noderef] __rcu *ptracer_cred @@ got struct cred const * @@ kernel/ptrace.c:73:29: sparse: expected struct cred const [noderef] __rcu *ptracer_cred kernel/ptrace.c:73:29: sparse: got struct cred const * kernel/ptrace.c:127:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct cred const *old_cred @@ got struct cred const [noderef] __rcu *ptracer_cred @@ kernel/ptrace.c:127:18: sparse: expected struct cred const *old_cred kernel/ptrace.c:127:18: sparse: got struct cred const [noderef] __rcu *ptracer_cred kernel/ptrace.c:131:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:131:25: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:131:25: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:169:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:169:27: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:169:27: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:181:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:181:28: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:181:28: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:186:30: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:186:30: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:186:30: sparse: got struct spinlock [noderef] __rcu * >> kernel/ptrace.c:196:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *parent @@ kernel/ptrace.c:196:9: sparse: expected struct task_struct *p1 kernel/ptrace.c:196:9: sparse: got struct task_struct [noderef] __rcu *parent kernel/ptrace.c:202:28: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:202:28: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:202:28: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:209:30: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:209:30: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:209:30: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:241:53: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *parent @@ kernel/ptrace.c:241:53: sparse: expected struct task_struct *p1 kernel/ptrace.c:241:53: sparse: got struct task_struct [noderef] __rcu *parent kernel/ptrace.c:415:24: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:415:24: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:415:24: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:438:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:438:26: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:438:26: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:474:54: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *parent @@ got struct task_struct [noderef] __rcu *parent @@ kernel/ptrace.c:474:54: sparse: expected struct task_struct *parent kernel/ptrace.c:474:54: sparse: got struct task_struct [noderef] __rcu *parent kernel/ptrace.c:482:53: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct task_struct *new_parent @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/ptrace.c:482:53: sparse: expected struct task_struct *new_parent kernel/ptrace.c:482:53: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/ptrace.c:530:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct task_struct *p1 @@ got struct task_struct [noderef] __rcu *real_parent @@ kernel/ptrace.c:530:41: sparse: expected struct task_struct *p1 kernel/ptrace.c:530:41: sparse: got struct task_struct [noderef] __rcu *real_parent kernel/ptrace.c:532:50: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct sighand_struct *sigh @@ got struct sighand_struct [noderef] __rcu *sighand @@ kernel/ptrace.c:532:50: sparse: expected struct sighand_struct *sigh kernel/ptrace.c:532:50: sparse: got struct sighand_struct [noderef] __rcu *sighand kernel/ptrace.c:734:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:734:37: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:734:37: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:742:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:742:39: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:742:39: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:847:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:847:37: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:847:37: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:851:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:851:39: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:851:39: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:1081:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:1081:37: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:1081:37: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:1083:39: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ kernel/ptrace.c:1083:39: sparse: expected struct spinlock [usertype] *lock kernel/ptrace.c:1083:39: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:480:38: sparse: sparse: dereference of noderef expression kernel/ptrace.c: note: in included file (through include/linux/rcuwait.h, include/linux/percpu-rwsem.h, include/linux/fs.h, ...): include/linux/sched/signal.h:708:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:708:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:708:37: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:681:9: sparse: sparse: context imbalance in 'ptrace_getsiginfo' - different lock contexts for basic block include/linux/sched/signal.h:708:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:708:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:708:37: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:697:9: sparse: sparse: context imbalance in 'ptrace_setsiginfo' - different lock contexts for basic block kernel/ptrace.c:853:9: sparse: sparse: context imbalance in 'ptrace_resume' - different lock contexts for basic block include/linux/sched/signal.h:708:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:708:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:708:37: sparse: got struct spinlock [noderef] __rcu * include/linux/sched/signal.h:708:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct spinlock [usertype] *lock @@ got struct spinlock [noderef] __rcu * @@ include/linux/sched/signal.h:708:37: sparse: expected struct spinlock [usertype] *lock include/linux/sched/signal.h:708:37: sparse: got struct spinlock [noderef] __rcu * kernel/ptrace.c:1229:9: sparse: sparse: context imbalance in 'ptrace_request' - different lock contexts for basic block vim +53 kernel/ptrace.c 36 37 /* 38 * Access another process' address space via ptrace. 39 * Source/target buffer must be kernel space, 40 * Do not walk the page table directly, use get_user_pages 41 */ 42 int ptrace_access_vm(struct task_struct *tsk, unsigned long addr, 43 void *buf, int len, unsigned int gup_flags) 44 { 45 struct mm_struct *mm; 46 int ret; 47 48 mm = get_task_mm(tsk); 49 if (!mm) 50 return 0; 51 52 if (!tsk->ptrace || > 53 !same_thread_group(current, tsk->parent) || 54 ((get_dumpable(mm) != SUID_DUMP_USER) && 55 !ptracer_capable(tsk, mm->user_ns))) { 56 mmput(mm); 57 return 0; 58 } 59 60 ret = __access_remote_vm(mm, addr, buf, len, gup_flags); 61 mmput(mm); 62 63 return ret; 64 } 65 66 67 void __ptrace_link(struct task_struct *child, struct task_struct *new_parent, 68 const struct cred *ptracer_cred) 69 { 70 BUG_ON(!list_empty(&child->ptrace_entry)); 71 list_add(&child->ptrace_entry, &new_parent->ptraced); 72 child->parent = new_parent; 73 child->ptracer_cred = get_cred(ptracer_cred); 74 } 75 76 /* 77 * ptrace a task: make the debugger its new parent and 78 * move it to the ptrace list. 79 * 80 * Must be called with the tasklist lock write-held. 81 */ 82 static void ptrace_link(struct task_struct *child, struct task_struct *new_parent) 83 { 84 __ptrace_link(child, new_parent, current_cred()); 85 } 86 87 /** 88 * __ptrace_unlink - unlink ptracee and restore its execution state 89 * @child: ptracee to be unlinked 90 * 91 * Remove @child from the ptrace list, move it back to the original parent, 92 * and restore the execution state so that it conforms to the group stop 93 * state. 94 * 95 * Unlinking can happen via two paths - explicit PTRACE_DETACH or ptracer 96 * exiting. For PTRACE_DETACH, unless the ptracee has been killed between 97 * ptrace_check_attach() and here, it's guaranteed to be in TASK_TRACED. 98 * If the ptracer is exiting, the ptracee can be in any state. 99 * 100 * After detach, the ptracee should be in a state which conforms to the 101 * group stop. If the group is stopped or in the process of stopping, the 102 * ptracee should be put into TASK_STOPPED; otherwise, it should be woken 103 * up from TASK_TRACED. 104 * 105 * If the ptracee is in TASK_TRACED and needs to be moved to TASK_STOPPED, 106 * it goes through TRACED -> RUNNING -> STOPPED transition which is similar 107 * to but in the opposite direction of what happens while attaching to a 108 * stopped task. However, in this direction, the intermediate RUNNING 109 * state is not hidden even from the current ptracer and if it immediately 110 * re-attaches and performs a WNOHANG wait(2), it may fail. 111 * 112 * CONTEXT: 113 * write_lock_irq(tasklist_lock) 114 */ 115 void __ptrace_unlink(struct task_struct *child) 116 { 117 const struct cred *old_cred; 118 BUG_ON(!child->ptrace); 119 120 clear_task_syscall_work(child, SYSCALL_TRACE); 121 #if defined(CONFIG_GENERIC_ENTRY) || defined(TIF_SYSCALL_EMU) 122 clear_task_syscall_work(child, SYSCALL_EMU); 123 #endif 124 125 child->parent = child->real_parent; 126 list_del_init(&child->ptrace_entry); 127 old_cred = child->ptracer_cred; 128 child->ptracer_cred = NULL; 129 put_cred(old_cred); 130 131 spin_lock(&child->sighand->siglock); 132 child->ptrace = 0; 133 /* 134 * Clear all pending traps and TRAPPING. TRAPPING should be 135 * cleared regardless of JOBCTL_STOP_PENDING. Do it explicitly. 136 */ 137 task_clear_jobctl_pending(child, JOBCTL_TRAP_MASK); 138 task_clear_jobctl_trapping(child); 139 140 /* 141 * Reinstate JOBCTL_STOP_PENDING if group stop is in effect and 142 * @child isn't dead. 143 */ 144 if (!(child->flags & PF_EXITING) && 145 (child->signal->flags & SIGNAL_STOP_STOPPED || 146 child->signal->group_stop_count)) { 147 child->jobctl |= JOBCTL_STOP_PENDING; 148 149 /* 150 * This is only possible if this thread was cloned by the 151 * traced task running in the stopped group, set the signal 152 * for the future reports. 153 * FIXME: we should change ptrace_init_task() to handle this 154 * case. 155 */ 156 if (!(child->jobctl & JOBCTL_STOP_SIGMASK)) 157 child->jobctl |= SIGSTOP; 158 } 159 160 /* 161 * If transition to TASK_STOPPED is pending or in TASK_TRACED, kick 162 * @child in the butt. Note that @resume should be used iff @child 163 * is in TASK_TRACED; otherwise, we might unduly disrupt 164 * TASK_KILLABLE sleeps. 165 */ 166 if (child->jobctl & JOBCTL_STOP_PENDING || task_is_traced(child)) 167 ptrace_signal_wake_up(child, true); 168 169 spin_unlock(&child->sighand->siglock); 170 } 171 172 /* Ensure that nothing can wake it up, even SIGKILL */ 173 static bool ptrace_freeze_traced(struct task_struct *task) 174 { 175 bool ret = false; 176 177 /* Lockless, nobody but us can set this flag */ 178 if (task->jobctl & JOBCTL_LISTENING) 179 return ret; 180 181 spin_lock_irq(&task->sighand->siglock); 182 if (task_is_traced(task) && !__fatal_signal_pending(task)) { 183 task->state = __TASK_TRACED; 184 ret = true; 185 } 186 spin_unlock_irq(&task->sighand->siglock); 187 188 return ret; 189 } 190 191 static void ptrace_unfreeze_traced(struct task_struct *task) 192 { 193 if (task->state != __TASK_TRACED) 194 return; 195 > 196 WARN_ON(!task->ptrace || !same_thread_group(task->parent, current)); 197 198 /* 199 * PTRACE_LISTEN can allow ptrace_trap_notify to wake us up remotely. 200 * Recheck state under the lock to close this race. 201 */ 202 spin_lock_irq(&task->sighand->siglock); 203 if (task->state == __TASK_TRACED) { 204 if (__fatal_signal_pending(task)) 205 wake_up_state(task, __TASK_TRACED); 206 else 207 task->state = TASK_TRACED; 208 } 209 spin_unlock_irq(&task->sighand->siglock); 210 } 211 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --fUYQa+Pmc3FrFX/N Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 ob93bqPX+up+//8BCACzSzvZAQA= --fUYQa+Pmc3FrFX/N--