From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags'.
Date: Sat, 28 Sep 2024 06:29:02 +0800 [thread overview]
Message-ID: <202409280623.vGQgQ1pn-lkp@intel.com> (raw)
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
next reply other threads:[~2024-09-27 22:29 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-27 22:29 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-09-28 9:15 [cip:linux-4.19.y-cip-rt-rebase 96/9999] kernel/softirq.c:973 __tasklet_schedule_common() warn: inconsistent returns 'flags' Dan Carpenter
2024-07-15 14:51 Dan Carpenter
2024-07-14 14:23 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202409280623.vGQgQ1pn-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.