* [peterz-queue:master 6/13] kernel/sched/psi.c:973:6: sparse: sparse: context imbalance in 'cgroup_move_task' - different lock contexts for basic block
@ 2021-05-05 1:17 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-05-05 1:17 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7644 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Peter Zijlstra <peterz@infradead.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git master
head: 855f695048dbed44a7d9574a7e3d65c4637ea39d
commit: 0cee7807ddccacebbca1a9b40894e904682066e9 [6/13] Merge branch 'sched/core-sched'
:::::: branch date: 4 hours ago
:::::: commit date: 4 hours ago
config: x86_64-randconfig-s021-20210504 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=0cee7807ddccacebbca1a9b40894e904682066e9
git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git
git fetch --no-tags peterz-queue master
git checkout 0cee7807ddccacebbca1a9b40894e904682066e9
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/sched/psi.c:1249:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/sched/psi.c:1249:9: sparse: void [noderef] __rcu *
kernel/sched/psi.c:1249:9: sparse: void *
kernel/sched/psi.c:731:13: sparse: sparse: dereference of noderef expression
kernel/sched/psi.c:751:30: sparse: sparse: dereference of noderef expression
>> kernel/sched/psi.c:973:6: sparse: sparse: context imbalance in 'cgroup_move_task' - different lock contexts for basic block
vim +/cgroup_move_task +973 kernel/sched/psi.c
2ce7135adc9ad0 Johannes Weiner 2018-10-26 960
2ce7135adc9ad0 Johannes Weiner 2018-10-26 961 /**
2ce7135adc9ad0 Johannes Weiner 2018-10-26 962 * cgroup_move_task - move task to a different cgroup
2ce7135adc9ad0 Johannes Weiner 2018-10-26 963 * @task: the task
2ce7135adc9ad0 Johannes Weiner 2018-10-26 964 * @to: the target css_set
2ce7135adc9ad0 Johannes Weiner 2018-10-26 965 *
2ce7135adc9ad0 Johannes Weiner 2018-10-26 966 * Move task to a new cgroup and safely migrate its associated stall
2ce7135adc9ad0 Johannes Weiner 2018-10-26 967 * state between the different groups.
2ce7135adc9ad0 Johannes Weiner 2018-10-26 968 *
2ce7135adc9ad0 Johannes Weiner 2018-10-26 969 * This function acquires the task's rq lock to lock out concurrent
2ce7135adc9ad0 Johannes Weiner 2018-10-26 970 * changes to the task's scheduling state and - in case the task is
2ce7135adc9ad0 Johannes Weiner 2018-10-26 971 * running - concurrent changes to its stall state.
2ce7135adc9ad0 Johannes Weiner 2018-10-26 972 */
2ce7135adc9ad0 Johannes Weiner 2018-10-26 @973 void cgroup_move_task(struct task_struct *task, struct css_set *to)
2ce7135adc9ad0 Johannes Weiner 2018-10-26 974 {
ea3e5f897bbc91 Johannes Weiner 2021-05-03 975 unsigned int task_flags;
2ce7135adc9ad0 Johannes Weiner 2018-10-26 976 struct rq_flags rf;
2ce7135adc9ad0 Johannes Weiner 2018-10-26 977 struct rq *rq;
2ce7135adc9ad0 Johannes Weiner 2018-10-26 978
e0c274472d5d27 Johannes Weiner 2018-11-30 979 if (static_branch_likely(&psi_disabled)) {
8fcb2312d1e330 Olof Johansson 2018-11-16 980 /*
8fcb2312d1e330 Olof Johansson 2018-11-16 981 * Lame to do this here, but the scheduler cannot be locked
8fcb2312d1e330 Olof Johansson 2018-11-16 982 * from the outside, so we move cgroups from inside sched/.
8fcb2312d1e330 Olof Johansson 2018-11-16 983 */
8fcb2312d1e330 Olof Johansson 2018-11-16 984 rcu_assign_pointer(task->cgroups, to);
8fcb2312d1e330 Olof Johansson 2018-11-16 985 return;
8fcb2312d1e330 Olof Johansson 2018-11-16 986 }
8fcb2312d1e330 Olof Johansson 2018-11-16 987
2ce7135adc9ad0 Johannes Weiner 2018-10-26 988 rq = task_rq_lock(task, &rf);
2ce7135adc9ad0 Johannes Weiner 2018-10-26 989
ea3e5f897bbc91 Johannes Weiner 2021-05-03 990 /*
ea3e5f897bbc91 Johannes Weiner 2021-05-03 991 * We may race with schedule() dropping the rq lock between
ea3e5f897bbc91 Johannes Weiner 2021-05-03 992 * deactivating prev and switching to next. Because the psi
ea3e5f897bbc91 Johannes Weiner 2021-05-03 993 * updates from the deactivation are deferred to the switch
ea3e5f897bbc91 Johannes Weiner 2021-05-03 994 * callback to save cgroup tree updates, the task's scheduling
ea3e5f897bbc91 Johannes Weiner 2021-05-03 995 * state here is not coherent with its psi state:
ea3e5f897bbc91 Johannes Weiner 2021-05-03 996 *
ea3e5f897bbc91 Johannes Weiner 2021-05-03 997 * schedule() cgroup_move_task()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 998 * rq_lock()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 999 * deactivate_task()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1000 * p->on_rq = 0
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1001 * psi_dequeue() // defers TSK_RUNNING & TSK_IOWAIT updates
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1002 * pick_next_task()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1003 * rq_unlock()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1004 * rq_lock()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1005 * psi_task_change() // old cgroup
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1006 * task->cgroups = to
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1007 * psi_task_change() // new cgroup
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1008 * rq_unlock()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1009 * rq_lock()
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1010 * psi_sched_switch() // does deferred updates in new cgroup
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1011 *
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1012 * Don't rely on the scheduling state. Use psi_flags instead.
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1013 */
ea3e5f897bbc91 Johannes Weiner 2021-05-03 1014 task_flags = task->psi_flags;
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1015
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1016 if (task_flags)
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1017 psi_task_change(task, task_flags, 0);
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1018
8fcb2312d1e330 Olof Johansson 2018-11-16 1019 /* See comment above */
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1020 rcu_assign_pointer(task->cgroups, to);
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1021
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1022 if (task_flags)
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1023 psi_task_change(task, 0, task_flags);
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1024
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1025 task_rq_unlock(rq, task, &rf);
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1026 }
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1027 #endif /* CONFIG_CGROUPS */
2ce7135adc9ad0 Johannes Weiner 2018-10-26 1028
:::::: The code at line 973 was first introduced by commit
:::::: 2ce7135adc9ad081aa3c49744144376ac74fea60 psi: cgroup support
:::::: TO: Johannes Weiner <hannes@cmpxchg.org>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 42404 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-05-05 1:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-05 1:17 [peterz-queue:master 6/13] kernel/sched/psi.c:973:6: sparse: sparse: context imbalance in 'cgroup_move_task' - different lock contexts for basic block kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.