All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [tglx-devel:timers/posix 8/14] kernel/time/posix-timers.c:852 timer_wait_running() warn: inconsistent returns '&timer->it_lock'.
Date: Tue, 25 Feb 2025 07:55:27 +0800	[thread overview]
Message-ID: <202502250737.fMTOUVfQ-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Thomas Gleixner <tglx@linutronix.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git timers/posix
head:   2f9ae35230ff61b3caa708359c745f375cf0c075
commit: 029c3a43aaca2ffc86a970704b469733b70fe88b [8/14] posix-timers: Rework timer removal
:::::: branch date: 17 hours ago
:::::: commit date: 24 hours ago
config: x86_64-randconfig-161-20250225 (https://download.01.org/0day-ci/archive/20250225/202502250737.fMTOUVfQ-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/202502250737.fMTOUVfQ-lkp@intel.com/

smatch warnings:
kernel/time/posix-timers.c:852 timer_wait_running() warn: inconsistent returns '&timer->it_lock'.

vim +852 kernel/time/posix-timers.c

ec8f954a40da8c Thomas Gleixner     2019-08-02  800  
0bee3b601b77db Frederic Weisbecker 2019-08-20  801  /*
7d990902664506 Thomas Gleixner     2023-04-25  802   * On PREEMPT_RT this prevents priority inversion and a potential livelock
7d990902664506 Thomas Gleixner     2023-04-25  803   * against the ksoftirqd thread in case that ksoftirqd gets preempted while
7d990902664506 Thomas Gleixner     2023-04-25  804   * executing a hrtimer callback.
7d990902664506 Thomas Gleixner     2023-04-25  805   *
7d990902664506 Thomas Gleixner     2023-04-25  806   * See the comments in hrtimer_cancel_wait_running(). For PREEMPT_RT=n this
7d990902664506 Thomas Gleixner     2023-04-25  807   * just results in a cpu_relax().
7d990902664506 Thomas Gleixner     2023-04-25  808   *
7d990902664506 Thomas Gleixner     2023-04-25  809   * For POSIX CPU timers with CONFIG_POSIX_CPU_TIMERS_TASK_WORK=n this is
7d990902664506 Thomas Gleixner     2023-04-25  810   * just a cpu_relax(). With CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y this
7d990902664506 Thomas Gleixner     2023-04-25  811   * prevents spinning on an eventually scheduled out task and a livelock
7d990902664506 Thomas Gleixner     2023-04-25  812   * when the task which tries to delete or disarm the timer has preempted
7d990902664506 Thomas Gleixner     2023-04-25  813   * the task which runs the expiry in task work context.
0bee3b601b77db Frederic Weisbecker 2019-08-20  814   */
029c3a43aaca2f Thomas Gleixner     2025-02-20  815  static struct k_itimer *timer_wait_running(struct k_itimer *timer, unsigned long *flags,
029c3a43aaca2f Thomas Gleixner     2025-02-20  816  					   bool delete)
6945e5c2abe008 Thomas Gleixner     2019-07-31  817  {
ec8f954a40da8c Thomas Gleixner     2019-08-02  818  	const struct k_clock *kc = READ_ONCE(timer->kclock);
6945e5c2abe008 Thomas Gleixner     2019-07-31  819  	timer_t timer_id = READ_ONCE(timer->it_id);
6945e5c2abe008 Thomas Gleixner     2019-07-31  820  
ec8f954a40da8c Thomas Gleixner     2019-08-02  821  	/* Prevent kfree(timer) after dropping the lock */
ec8f954a40da8c Thomas Gleixner     2019-08-02  822  	rcu_read_lock();
da7ae390d73a82 Thomas Gleixner     2025-02-20  823  	spin_unlock_irqrestore(&timer->it_lock, *flags);
ec8f954a40da8c Thomas Gleixner     2019-08-02  824  
f7abf14f0001a5 Thomas Gleixner     2023-04-17  825  	/*
029c3a43aaca2f Thomas Gleixner     2025-02-20  826  	 * kc->timer_wait_running() might drop RCU lock. So @timer cannot
029c3a43aaca2f Thomas Gleixner     2025-02-20  827  	 * be touched anymore after the function returns, except when
029c3a43aaca2f Thomas Gleixner     2025-02-20  828  	 * @delete is true!
f7abf14f0001a5 Thomas Gleixner     2023-04-17  829  	 */
ec8f954a40da8c Thomas Gleixner     2019-08-02  830  	if (!WARN_ON_ONCE(!kc->timer_wait_running))
ec8f954a40da8c Thomas Gleixner     2019-08-02  831  		kc->timer_wait_running(timer);
ec8f954a40da8c Thomas Gleixner     2019-08-02  832  
ec8f954a40da8c Thomas Gleixner     2019-08-02  833  	rcu_read_unlock();
029c3a43aaca2f Thomas Gleixner     2025-02-20  834  
029c3a43aaca2f Thomas Gleixner     2025-02-20  835  	/*
029c3a43aaca2f Thomas Gleixner     2025-02-20  836  	 * On deletion the timer has been marked invalid before
029c3a43aaca2f Thomas Gleixner     2025-02-20  837  	 * timer_delete_hook() has been invoked. That means that the
029c3a43aaca2f Thomas Gleixner     2025-02-20  838  	 * current task is the only one which has access to the timer and
029c3a43aaca2f Thomas Gleixner     2025-02-20  839  	 * even after dropping timer::it_lock above, no other thread can
029c3a43aaca2f Thomas Gleixner     2025-02-20  840  	 * have accessed the timer.
029c3a43aaca2f Thomas Gleixner     2025-02-20  841  	 */
029c3a43aaca2f Thomas Gleixner     2025-02-20  842  	if (delete) {
029c3a43aaca2f Thomas Gleixner     2025-02-20  843  		spin_lock_irqsave(&timer->it_lock, *flags);
029c3a43aaca2f Thomas Gleixner     2025-02-20  844  		return timer;
029c3a43aaca2f Thomas Gleixner     2025-02-20  845  	}
029c3a43aaca2f Thomas Gleixner     2025-02-20  846  
029c3a43aaca2f Thomas Gleixner     2025-02-20  847  	/*
029c3a43aaca2f Thomas Gleixner     2025-02-20  848  	 * If invoked from timer_set() the timer could have been deleted
029c3a43aaca2f Thomas Gleixner     2025-02-20  849  	 * after dropping the lock. So in that case the timer needs to be
029c3a43aaca2f Thomas Gleixner     2025-02-20  850  	 * looked up and validated.
029c3a43aaca2f Thomas Gleixner     2025-02-20  851  	 */
6945e5c2abe008 Thomas Gleixner     2019-07-31 @852  	return lock_timer(timer_id, flags);
6945e5c2abe008 Thomas Gleixner     2019-07-31  853  }
6945e5c2abe008 Thomas Gleixner     2019-07-31  854  

:::::: The code at line 852 was first introduced by commit
:::::: 6945e5c2abe008302b20266248d6de95575311a8 posix-timers: Rework cancel retry loops

:::::: TO: Thomas Gleixner <tglx@linutronix.de>
:::::: CC: Thomas Gleixner <tglx@linutronix.de>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2025-02-24 23:56 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202502250737.fMTOUVfQ-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.