* [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
@ 2024-07-14 14:23 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-07-14 14:23 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
TO: Pavel Machek <pavel@denx.de>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git linux-4.19.y-cip-rt-rebase
head: 642e819a3c30d3536e6d66a631b761886a0316e7
commit: 62d0a2a30cd01fabc7f6555df2cfae7dd3d9fad8 [96/9999] tasklet: Address a race resulting in double-enqueue
:::::: branch date: 2 days ago
:::::: commit date: 4 years, 3 months ago
config: i386-randconfig-141-20240714 (https://download.01.org/0day-ci/archive/20240714/202407142205.22hVCdHd-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202407142205.22hVCdHd-lkp@intel.com/
smatch warnings:
kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
vim +/flags +973 kernel/softirq.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 928
6498ddad301c7a Ingo Molnar 2018-02-27 929 static void __tasklet_schedule_common(struct tasklet_struct *t,
6498ddad301c7a Ingo Molnar 2018-02-27 930 struct tasklet_head __percpu *headp,
6498ddad301c7a Ingo Molnar 2018-02-27 931 unsigned int softirq_nr)
^1da177e4c3f41 Linus Torvalds 2005-04-16 932 {
6498ddad301c7a Ingo Molnar 2018-02-27 933 struct tasklet_head *head;
^1da177e4c3f41 Linus Torvalds 2005-04-16 934 unsigned long flags;
^1da177e4c3f41 Linus Torvalds 2005-04-16 935
^1da177e4c3f41 Linus Torvalds 2005-04-16 936 local_irq_save(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 937 if (!tasklet_trylock(t)) {
4a8c8d729198e3 Ingo Molnar 2011-11-29 938 local_irq_restore(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 939 return;
4a8c8d729198e3 Ingo Molnar 2011-11-29 940 }
4a8c8d729198e3 Ingo Molnar 2011-11-29 941
6498ddad301c7a Ingo Molnar 2018-02-27 942 head = this_cpu_ptr(headp);
4a8c8d729198e3 Ingo Molnar 2011-11-29 943 again:
4a8c8d729198e3 Ingo Molnar 2011-11-29 944 /* We may have been preempted before tasklet_trylock
4a8c8d729198e3 Ingo Molnar 2011-11-29 945 * and __tasklet_action may have already run.
4a8c8d729198e3 Ingo Molnar 2011-11-29 946 * So double check the sched bit while the takslet
4a8c8d729198e3 Ingo Molnar 2011-11-29 947 * is locked before adding it to the list.
4a8c8d729198e3 Ingo Molnar 2011-11-29 948 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 949 if (test_bit(TASKLET_STATE_SCHED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 950 if (test_and_set_bit(TASKLET_STATE_CHAINED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 951 tasklet_unlock(t);
62d0a2a30cd01f Zhang Xiao 2020-03-17 952 return;
62d0a2a30cd01f Zhang Xiao 2020-03-17 953 }
48f20a9a9488c4 Olof Johansson 2008-03-04 954 t->next = NULL;
6498ddad301c7a Ingo Molnar 2018-02-27 955 *head->tail = t;
6498ddad301c7a Ingo Molnar 2018-02-27 956 head->tail = &(t->next);
6498ddad301c7a Ingo Molnar 2018-02-27 957 raise_softirq_irqoff(softirq_nr);
4a8c8d729198e3 Ingo Molnar 2011-11-29 958 tasklet_unlock(t);
4a8c8d729198e3 Ingo Molnar 2011-11-29 959 } else {
4a8c8d729198e3 Ingo Molnar 2011-11-29 960 /* This is subtle. If we hit the corner case above
4a8c8d729198e3 Ingo Molnar 2011-11-29 961 * It is possible that we get preempted right here,
4a8c8d729198e3 Ingo Molnar 2011-11-29 962 * and another task has successfully called
4a8c8d729198e3 Ingo Molnar 2011-11-29 963 * tasklet_schedule(), then this function, and
4a8c8d729198e3 Ingo Molnar 2011-11-29 964 * failed on the trylock. Thus we must be sure
4a8c8d729198e3 Ingo Molnar 2011-11-29 965 * before releasing the tasklet lock, that the
4a8c8d729198e3 Ingo Molnar 2011-11-29 966 * SCHED_BIT is clear. Otherwise the tasklet
4a8c8d729198e3 Ingo Molnar 2011-11-29 967 * may get its SCHED_BIT set, but not added to the
4a8c8d729198e3 Ingo Molnar 2011-11-29 968 * list
4a8c8d729198e3 Ingo Molnar 2011-11-29 969 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 970 if (!tasklet_tryunlock(t))
4a8c8d729198e3 Ingo Molnar 2011-11-29 971 goto again;
4a8c8d729198e3 Ingo Molnar 2011-11-29 972 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 @973 local_irq_restore(flags);
^1da177e4c3f41 Linus Torvalds 2005-04-16 974 }
6498ddad301c7a Ingo Molnar 2018-02-27 975
:::::: The code at line 973 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread* [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
@ 2024-07-15 14:51 Dan Carpenter
0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2024-07-15 14:51 UTC (permalink / raw)
To: oe-kbuild, Nobuhiro Iwamatsu, Pavel Machek; +Cc: lkp, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git linux-4.19.y-cip-rt-rebase
head: 642e819a3c30d3536e6d66a631b761886a0316e7
commit: 62d0a2a30cd01fabc7f6555df2cfae7dd3d9fad8 [96/9999] tasklet: Address a race resulting in double-enqueue
config: i386-randconfig-141-20240714 (https://download.01.org/0day-ci/archive/20240714/202407142205.22hVCdHd-lkp@intel.com/config)
compiler: gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202407142205.22hVCdHd-lkp@intel.com/
smatch warnings:
kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
vim +/flags +973 kernel/softirq.c
6498ddad301c7a Ingo Molnar 2018-02-27 929 static void __tasklet_schedule_common(struct tasklet_struct *t,
6498ddad301c7a Ingo Molnar 2018-02-27 930 struct tasklet_head __percpu *headp,
6498ddad301c7a Ingo Molnar 2018-02-27 931 unsigned int softirq_nr)
^1da177e4c3f41 Linus Torvalds 2005-04-16 932 {
6498ddad301c7a Ingo Molnar 2018-02-27 933 struct tasklet_head *head;
^1da177e4c3f41 Linus Torvalds 2005-04-16 934 unsigned long flags;
^1da177e4c3f41 Linus Torvalds 2005-04-16 935
^1da177e4c3f41 Linus Torvalds 2005-04-16 936 local_irq_save(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 937 if (!tasklet_trylock(t)) {
4a8c8d729198e3 Ingo Molnar 2011-11-29 938 local_irq_restore(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 939 return;
4a8c8d729198e3 Ingo Molnar 2011-11-29 940 }
4a8c8d729198e3 Ingo Molnar 2011-11-29 941
6498ddad301c7a Ingo Molnar 2018-02-27 942 head = this_cpu_ptr(headp);
4a8c8d729198e3 Ingo Molnar 2011-11-29 943 again:
4a8c8d729198e3 Ingo Molnar 2011-11-29 944 /* We may have been preempted before tasklet_trylock
4a8c8d729198e3 Ingo Molnar 2011-11-29 945 * and __tasklet_action may have already run.
4a8c8d729198e3 Ingo Molnar 2011-11-29 946 * So double check the sched bit while the takslet
4a8c8d729198e3 Ingo Molnar 2011-11-29 947 * is locked before adding it to the list.
4a8c8d729198e3 Ingo Molnar 2011-11-29 948 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 949 if (test_bit(TASKLET_STATE_SCHED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 950 if (test_and_set_bit(TASKLET_STATE_CHAINED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 951 tasklet_unlock(t);
local_irq_restore(flags);
62d0a2a30cd01f Zhang Xiao 2020-03-17 952 return;
62d0a2a30cd01f Zhang Xiao 2020-03-17 953 }
48f20a9a9488c4 Olof Johansson 2008-03-04 954 t->next = NULL;
6498ddad301c7a Ingo Molnar 2018-02-27 955 *head->tail = t;
6498ddad301c7a Ingo Molnar 2018-02-27 956 head->tail = &(t->next);
6498ddad301c7a Ingo Molnar 2018-02-27 957 raise_softirq_irqoff(softirq_nr);
4a8c8d729198e3 Ingo Molnar 2011-11-29 958 tasklet_unlock(t);
4a8c8d729198e3 Ingo Molnar 2011-11-29 959 } else {
4a8c8d729198e3 Ingo Molnar 2011-11-29 960 /* This is subtle. If we hit the corner case above
4a8c8d729198e3 Ingo Molnar 2011-11-29 961 * It is possible that we get preempted right here,
4a8c8d729198e3 Ingo Molnar 2011-11-29 962 * and another task has successfully called
4a8c8d729198e3 Ingo Molnar 2011-11-29 963 * tasklet_schedule(), then this function, and
4a8c8d729198e3 Ingo Molnar 2011-11-29 964 * failed on the trylock. Thus we must be sure
4a8c8d729198e3 Ingo Molnar 2011-11-29 965 * before releasing the tasklet lock, that the
4a8c8d729198e3 Ingo Molnar 2011-11-29 966 * SCHED_BIT is clear. Otherwise the tasklet
4a8c8d729198e3 Ingo Molnar 2011-11-29 967 * may get its SCHED_BIT set, but not added to the
4a8c8d729198e3 Ingo Molnar 2011-11-29 968 * list
4a8c8d729198e3 Ingo Molnar 2011-11-29 969 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 970 if (!tasklet_tryunlock(t))
4a8c8d729198e3 Ingo Molnar 2011-11-29 971 goto again;
4a8c8d729198e3 Ingo Molnar 2011-11-29 972 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 @973 local_irq_restore(flags);
^1da177e4c3f41 Linus Torvalds 2005-04-16 974 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread* [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
@ 2024-09-27 22:29 kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-09-27 22:29 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git linux-4.19.y-cip-rt-rebase
head: 67ac3270c7aaf93810ea5b43e2bf8361b683718e
commit: 62d0a2a30cd01fabc7f6555df2cfae7dd3d9fad8 [96/9999] tasklet: Address a race resulting in double-enqueue
:::::: branch date: 4 days ago
:::::: commit date: 4 years, 5 months ago
config: i386-randconfig-141-20240927 (https://download.01.org/0day-ci/archive/20240928/202409280623.vGQgQ1pn-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202409280623.vGQgQ1pn-lkp@intel.com/
smatch warnings:
kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
vim +/flags +973 kernel/softirq.c
^1da177e4c3f41 Linus Torvalds 2005-04-16 928
6498ddad301c7a Ingo Molnar 2018-02-27 929 static void __tasklet_schedule_common(struct tasklet_struct *t,
6498ddad301c7a Ingo Molnar 2018-02-27 930 struct tasklet_head __percpu *headp,
6498ddad301c7a Ingo Molnar 2018-02-27 931 unsigned int softirq_nr)
^1da177e4c3f41 Linus Torvalds 2005-04-16 932 {
6498ddad301c7a Ingo Molnar 2018-02-27 933 struct tasklet_head *head;
^1da177e4c3f41 Linus Torvalds 2005-04-16 934 unsigned long flags;
^1da177e4c3f41 Linus Torvalds 2005-04-16 935
^1da177e4c3f41 Linus Torvalds 2005-04-16 936 local_irq_save(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 937 if (!tasklet_trylock(t)) {
4a8c8d729198e3 Ingo Molnar 2011-11-29 938 local_irq_restore(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 939 return;
4a8c8d729198e3 Ingo Molnar 2011-11-29 940 }
4a8c8d729198e3 Ingo Molnar 2011-11-29 941
6498ddad301c7a Ingo Molnar 2018-02-27 942 head = this_cpu_ptr(headp);
4a8c8d729198e3 Ingo Molnar 2011-11-29 943 again:
4a8c8d729198e3 Ingo Molnar 2011-11-29 944 /* We may have been preempted before tasklet_trylock
4a8c8d729198e3 Ingo Molnar 2011-11-29 945 * and __tasklet_action may have already run.
4a8c8d729198e3 Ingo Molnar 2011-11-29 946 * So double check the sched bit while the takslet
4a8c8d729198e3 Ingo Molnar 2011-11-29 947 * is locked before adding it to the list.
4a8c8d729198e3 Ingo Molnar 2011-11-29 948 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 949 if (test_bit(TASKLET_STATE_SCHED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 950 if (test_and_set_bit(TASKLET_STATE_CHAINED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 951 tasklet_unlock(t);
62d0a2a30cd01f Zhang Xiao 2020-03-17 952 return;
62d0a2a30cd01f Zhang Xiao 2020-03-17 953 }
48f20a9a9488c4 Olof Johansson 2008-03-04 954 t->next = NULL;
6498ddad301c7a Ingo Molnar 2018-02-27 955 *head->tail = t;
6498ddad301c7a Ingo Molnar 2018-02-27 956 head->tail = &(t->next);
6498ddad301c7a Ingo Molnar 2018-02-27 957 raise_softirq_irqoff(softirq_nr);
4a8c8d729198e3 Ingo Molnar 2011-11-29 958 tasklet_unlock(t);
4a8c8d729198e3 Ingo Molnar 2011-11-29 959 } else {
4a8c8d729198e3 Ingo Molnar 2011-11-29 960 /* This is subtle. If we hit the corner case above
4a8c8d729198e3 Ingo Molnar 2011-11-29 961 * It is possible that we get preempted right here,
4a8c8d729198e3 Ingo Molnar 2011-11-29 962 * and another task has successfully called
4a8c8d729198e3 Ingo Molnar 2011-11-29 963 * tasklet_schedule(), then this function, and
4a8c8d729198e3 Ingo Molnar 2011-11-29 964 * failed on the trylock. Thus we must be sure
4a8c8d729198e3 Ingo Molnar 2011-11-29 965 * before releasing the tasklet lock, that the
4a8c8d729198e3 Ingo Molnar 2011-11-29 966 * SCHED_BIT is clear. Otherwise the tasklet
4a8c8d729198e3 Ingo Molnar 2011-11-29 967 * may get its SCHED_BIT set, but not added to the
4a8c8d729198e3 Ingo Molnar 2011-11-29 968 * list
4a8c8d729198e3 Ingo Molnar 2011-11-29 969 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 970 if (!tasklet_tryunlock(t))
4a8c8d729198e3 Ingo Molnar 2011-11-29 971 goto again;
4a8c8d729198e3 Ingo Molnar 2011-11-29 972 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 @973 local_irq_restore(flags);
^1da177e4c3f41 Linus Torvalds 2005-04-16 974 }
6498ddad301c7a Ingo Molnar 2018-02-27 975
:::::: The code at line 973 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2
:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread* [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
@ 2024-09-28 9:15 Dan Carpenter
0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2024-09-28 9:15 UTC (permalink / raw)
To: oe-kbuild, Nobuhiro Iwamatsu; +Cc: lkp, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git linux-4.19.y-cip-rt-rebase
head: 67ac3270c7aaf93810ea5b43e2bf8361b683718e
commit: 62d0a2a30cd01fabc7f6555df2cfae7dd3d9fad8 [96/9999] tasklet: Address a race resulting in double-enqueue
config: i386-randconfig-141-20240927 (https://download.01.org/0day-ci/archive/20240928/202409280623.vGQgQ1pn-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202409280623.vGQgQ1pn-lkp@intel.com/
smatch warnings:
kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
vim +/flags +973 kernel/softirq.c
6498ddad301c7a Ingo Molnar 2018-02-27 929 static void __tasklet_schedule_common(struct tasklet_struct *t,
6498ddad301c7a Ingo Molnar 2018-02-27 930 struct tasklet_head __percpu *headp,
6498ddad301c7a Ingo Molnar 2018-02-27 931 unsigned int softirq_nr)
^1da177e4c3f41 Linus Torvalds 2005-04-16 932 {
6498ddad301c7a Ingo Molnar 2018-02-27 933 struct tasklet_head *head;
^1da177e4c3f41 Linus Torvalds 2005-04-16 934 unsigned long flags;
^1da177e4c3f41 Linus Torvalds 2005-04-16 935
^1da177e4c3f41 Linus Torvalds 2005-04-16 936 local_irq_save(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 937 if (!tasklet_trylock(t)) {
4a8c8d729198e3 Ingo Molnar 2011-11-29 938 local_irq_restore(flags);
4a8c8d729198e3 Ingo Molnar 2011-11-29 939 return;
4a8c8d729198e3 Ingo Molnar 2011-11-29 940 }
4a8c8d729198e3 Ingo Molnar 2011-11-29 941
6498ddad301c7a Ingo Molnar 2018-02-27 942 head = this_cpu_ptr(headp);
4a8c8d729198e3 Ingo Molnar 2011-11-29 943 again:
4a8c8d729198e3 Ingo Molnar 2011-11-29 944 /* We may have been preempted before tasklet_trylock
4a8c8d729198e3 Ingo Molnar 2011-11-29 945 * and __tasklet_action may have already run.
4a8c8d729198e3 Ingo Molnar 2011-11-29 946 * So double check the sched bit while the takslet
4a8c8d729198e3 Ingo Molnar 2011-11-29 947 * is locked before adding it to the list.
4a8c8d729198e3 Ingo Molnar 2011-11-29 948 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 949 if (test_bit(TASKLET_STATE_SCHED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 950 if (test_and_set_bit(TASKLET_STATE_CHAINED, &t->state)) {
62d0a2a30cd01f Zhang Xiao 2020-03-17 951 tasklet_unlock(t);
62d0a2a30cd01f Zhang Xiao 2020-03-17 952 return;
local_irq_restore(flags) before returning.
62d0a2a30cd01f Zhang Xiao 2020-03-17 953 }
48f20a9a9488c4 Olof Johansson 2008-03-04 954 t->next = NULL;
6498ddad301c7a Ingo Molnar 2018-02-27 955 *head->tail = t;
6498ddad301c7a Ingo Molnar 2018-02-27 956 head->tail = &(t->next);
6498ddad301c7a Ingo Molnar 2018-02-27 957 raise_softirq_irqoff(softirq_nr);
4a8c8d729198e3 Ingo Molnar 2011-11-29 958 tasklet_unlock(t);
4a8c8d729198e3 Ingo Molnar 2011-11-29 959 } else {
4a8c8d729198e3 Ingo Molnar 2011-11-29 960 /* This is subtle. If we hit the corner case above
4a8c8d729198e3 Ingo Molnar 2011-11-29 961 * It is possible that we get preempted right here,
4a8c8d729198e3 Ingo Molnar 2011-11-29 962 * and another task has successfully called
4a8c8d729198e3 Ingo Molnar 2011-11-29 963 * tasklet_schedule(), then this function, and
4a8c8d729198e3 Ingo Molnar 2011-11-29 964 * failed on the trylock. Thus we must be sure
4a8c8d729198e3 Ingo Molnar 2011-11-29 965 * before releasing the tasklet lock, that the
4a8c8d729198e3 Ingo Molnar 2011-11-29 966 * SCHED_BIT is clear. Otherwise the tasklet
4a8c8d729198e3 Ingo Molnar 2011-11-29 967 * may get its SCHED_BIT set, but not added to the
4a8c8d729198e3 Ingo Molnar 2011-11-29 968 * list
4a8c8d729198e3 Ingo Molnar 2011-11-29 969 */
4a8c8d729198e3 Ingo Molnar 2011-11-29 970 if (!tasklet_tryunlock(t))
4a8c8d729198e3 Ingo Molnar 2011-11-29 971 goto again;
4a8c8d729198e3 Ingo Molnar 2011-11-29 972 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 @973 local_irq_restore(flags);
^1da177e4c3f41 Linus Torvalds 2005-04-16 974 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-09-28 9:15 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-14 14:23 [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2024-07-15 14:51 Dan Carpenter
2024-09-27 22:29 kernel test robot
2024-09-28 9:15 Dan Carpenter
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.