CC: [email protected] CC: [email protected] TO: Chris Hyser <[email protected]> CC: Peter Zijlstra <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: c741e49150dbb0c0aebe234389f4aa8b47958fa8 commit: 7ac592aa35a684ff1858fb9ec282886b9e3575ac sched: prctl() core-scheduling interface date: 7 months ago :::::: branch date: 9 hours ago :::::: commit date: 7 months ago config: s390-randconfig-m031-20211209 (https://download.01.org/0day-ci/archive/20211210/[email protected]/config) compiler: s390-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: kernel/sched/core_sched.c:175 sched_core_share_pid() warn: ignoring unreachable code. vim +175 kernel/sched/core_sched.c 7ac592aa35a684 Chris Hyser 2021-03-24 124 7ac592aa35a684 Chris Hyser 2021-03-24 125 /* Called from prctl interface: PR_SCHED_CORE */ 7ac592aa35a684 Chris Hyser 2021-03-24 126 int sched_core_share_pid(unsigned int cmd, pid_t pid, enum pid_type type, 7ac592aa35a684 Chris Hyser 2021-03-24 127 unsigned long uaddr) 7ac592aa35a684 Chris Hyser 2021-03-24 128 { 7ac592aa35a684 Chris Hyser 2021-03-24 129 unsigned long cookie = 0, id = 0; 7ac592aa35a684 Chris Hyser 2021-03-24 130 struct task_struct *task, *p; 7ac592aa35a684 Chris Hyser 2021-03-24 131 struct pid *grp; 7ac592aa35a684 Chris Hyser 2021-03-24 132 int err = 0; 7ac592aa35a684 Chris Hyser 2021-03-24 133 7ac592aa35a684 Chris Hyser 2021-03-24 134 if (!static_branch_likely(&sched_smt_present)) 7ac592aa35a684 Chris Hyser 2021-03-24 135 return -ENODEV; 7ac592aa35a684 Chris Hyser 2021-03-24 136 7ac592aa35a684 Chris Hyser 2021-03-24 137 if (type > PIDTYPE_PGID || cmd >= PR_SCHED_CORE_MAX || pid < 0 || 7ac592aa35a684 Chris Hyser 2021-03-24 138 (cmd != PR_SCHED_CORE_GET && uaddr)) 7ac592aa35a684 Chris Hyser 2021-03-24 139 return -EINVAL; 7ac592aa35a684 Chris Hyser 2021-03-24 140 7ac592aa35a684 Chris Hyser 2021-03-24 141 rcu_read_lock(); 7ac592aa35a684 Chris Hyser 2021-03-24 142 if (pid == 0) { 7ac592aa35a684 Chris Hyser 2021-03-24 143 task = current; 7ac592aa35a684 Chris Hyser 2021-03-24 144 } else { 7ac592aa35a684 Chris Hyser 2021-03-24 145 task = find_task_by_vpid(pid); 7ac592aa35a684 Chris Hyser 2021-03-24 146 if (!task) { 7ac592aa35a684 Chris Hyser 2021-03-24 147 rcu_read_unlock(); 7ac592aa35a684 Chris Hyser 2021-03-24 148 return -ESRCH; 7ac592aa35a684 Chris Hyser 2021-03-24 149 } 7ac592aa35a684 Chris Hyser 2021-03-24 150 } 7ac592aa35a684 Chris Hyser 2021-03-24 151 get_task_struct(task); 7ac592aa35a684 Chris Hyser 2021-03-24 152 rcu_read_unlock(); 7ac592aa35a684 Chris Hyser 2021-03-24 153 7ac592aa35a684 Chris Hyser 2021-03-24 154 /* 7ac592aa35a684 Chris Hyser 2021-03-24 155 * Check if this process has the right to modify the specified 7ac592aa35a684 Chris Hyser 2021-03-24 156 * process. Use the regular "ptrace_may_access()" checks. 7ac592aa35a684 Chris Hyser 2021-03-24 157 */ 7ac592aa35a684 Chris Hyser 2021-03-24 158 if (!ptrace_may_access(task, PTRACE_MODE_READ_REALCREDS)) { 7ac592aa35a684 Chris Hyser 2021-03-24 159 err = -EPERM; 7ac592aa35a684 Chris Hyser 2021-03-24 160 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 161 } 7ac592aa35a684 Chris Hyser 2021-03-24 162 7ac592aa35a684 Chris Hyser 2021-03-24 163 switch (cmd) { 7ac592aa35a684 Chris Hyser 2021-03-24 164 case PR_SCHED_CORE_GET: 7ac592aa35a684 Chris Hyser 2021-03-24 165 if (type != PIDTYPE_PID || uaddr & 7) { 7ac592aa35a684 Chris Hyser 2021-03-24 166 err = -EINVAL; 7ac592aa35a684 Chris Hyser 2021-03-24 167 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 168 } 7ac592aa35a684 Chris Hyser 2021-03-24 169 cookie = sched_core_clone_cookie(task); 7ac592aa35a684 Chris Hyser 2021-03-24 170 if (cookie) { 7ac592aa35a684 Chris Hyser 2021-03-24 171 /* XXX improve ? */ 7ac592aa35a684 Chris Hyser 2021-03-24 172 ptr_to_hashval((void *)cookie, &id); 7ac592aa35a684 Chris Hyser 2021-03-24 173 } 7ac592aa35a684 Chris Hyser 2021-03-24 174 err = put_user(id, (u64 __user *)uaddr); 7ac592aa35a684 Chris Hyser 2021-03-24 @175 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 176 7ac592aa35a684 Chris Hyser 2021-03-24 177 case PR_SCHED_CORE_CREATE: 7ac592aa35a684 Chris Hyser 2021-03-24 178 cookie = sched_core_alloc_cookie(); 7ac592aa35a684 Chris Hyser 2021-03-24 179 if (!cookie) { 7ac592aa35a684 Chris Hyser 2021-03-24 180 err = -ENOMEM; 7ac592aa35a684 Chris Hyser 2021-03-24 181 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 182 } 7ac592aa35a684 Chris Hyser 2021-03-24 183 break; 7ac592aa35a684 Chris Hyser 2021-03-24 184 7ac592aa35a684 Chris Hyser 2021-03-24 185 case PR_SCHED_CORE_SHARE_TO: 7ac592aa35a684 Chris Hyser 2021-03-24 186 cookie = sched_core_clone_cookie(current); 7ac592aa35a684 Chris Hyser 2021-03-24 187 break; 7ac592aa35a684 Chris Hyser 2021-03-24 188 7ac592aa35a684 Chris Hyser 2021-03-24 189 case PR_SCHED_CORE_SHARE_FROM: 7ac592aa35a684 Chris Hyser 2021-03-24 190 if (type != PIDTYPE_PID) { 7ac592aa35a684 Chris Hyser 2021-03-24 191 err = -EINVAL; 7ac592aa35a684 Chris Hyser 2021-03-24 192 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 193 } 7ac592aa35a684 Chris Hyser 2021-03-24 194 cookie = sched_core_clone_cookie(task); 7ac592aa35a684 Chris Hyser 2021-03-24 195 __sched_core_set(current, cookie); 7ac592aa35a684 Chris Hyser 2021-03-24 196 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 197 7ac592aa35a684 Chris Hyser 2021-03-24 198 default: 7ac592aa35a684 Chris Hyser 2021-03-24 199 err = -EINVAL; 7ac592aa35a684 Chris Hyser 2021-03-24 200 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 201 }; 7ac592aa35a684 Chris Hyser 2021-03-24 202 7ac592aa35a684 Chris Hyser 2021-03-24 203 if (type == PIDTYPE_PID) { 7ac592aa35a684 Chris Hyser 2021-03-24 204 __sched_core_set(task, cookie); 7ac592aa35a684 Chris Hyser 2021-03-24 205 goto out; 7ac592aa35a684 Chris Hyser 2021-03-24 206 } 7ac592aa35a684 Chris Hyser 2021-03-24 207 7ac592aa35a684 Chris Hyser 2021-03-24 208 read_lock(&tasklist_lock); 7ac592aa35a684 Chris Hyser 2021-03-24 209 grp = task_pid_type(task, type); 7ac592aa35a684 Chris Hyser 2021-03-24 210 7ac592aa35a684 Chris Hyser 2021-03-24 211 do_each_pid_thread(grp, type, p) { 7ac592aa35a684 Chris Hyser 2021-03-24 212 if (!ptrace_may_access(p, PTRACE_MODE_READ_REALCREDS)) { 7ac592aa35a684 Chris Hyser 2021-03-24 213 err = -EPERM; 7ac592aa35a684 Chris Hyser 2021-03-24 214 goto out_tasklist; 7ac592aa35a684 Chris Hyser 2021-03-24 215 } 7ac592aa35a684 Chris Hyser 2021-03-24 216 } while_each_pid_thread(grp, type, p); 7ac592aa35a684 Chris Hyser 2021-03-24 217 7ac592aa35a684 Chris Hyser 2021-03-24 218 do_each_pid_thread(grp, type, p) { 7ac592aa35a684 Chris Hyser 2021-03-24 219 __sched_core_set(p, cookie); 7ac592aa35a684 Chris Hyser 2021-03-24 220 } while_each_pid_thread(grp, type, p); 7ac592aa35a684 Chris Hyser 2021-03-24 221 out_tasklist: 7ac592aa35a684 Chris Hyser 2021-03-24 222 read_unlock(&tasklist_lock); 7ac592aa35a684 Chris Hyser 2021-03-24 223 7ac592aa35a684 Chris Hyser 2021-03-24 224 out: 7ac592aa35a684 Chris Hyser 2021-03-24 225 sched_core_put_cookie(cookie); 7ac592aa35a684 Chris Hyser 2021-03-24 226 put_task_struct(task); 7ac592aa35a684 Chris Hyser 2021-03-24 227 return err; 7ac592aa35a684 Chris Hyser 2021-03-24 228 } 7ac592aa35a684 Chris Hyser 2021-03-24 229 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
