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, Julia Lawall <julia.lawall@inria.fr>
Subject: [rt-devel:linux-6.6.y-rt 5/9] kernel/printk/nbcon.c:1058:2-8: preceding lock on line 1077
Date: Mon, 9 Oct 2023 19:53:58 +0800	[thread overview]
Message-ID: <202310091931.Av3oDqEt-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git linux-6.6.y-rt
head:   fb5f8b0de45537865e3eaec52e24ad991eef1701
commit: da042bbb7a3ffcb2d18fc69e01f8a2f1ff0f0aab [5/9] printk: Update the printk series.
:::::: branch date: 3 days ago
:::::: commit date: 5 days ago
config: x86_64-randconfig-102-20231009 (https://download.01.org/0day-ci/archive/20231009/202310091931.Av3oDqEt-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce: (https://download.01.org/0day-ci/archive/20231009/202310091931.Av3oDqEt-lkp@intel.com/reproduce)

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: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202310091931.Av3oDqEt-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> kernel/printk/nbcon.c:1058:2-8: preceding lock on line 1077

vim +1058 kernel/printk/nbcon.c

da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1019  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1020  /**
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1021   * nbcon_kthread_func - The printk thread function
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1022   * @__console:	Console to operate on
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1023   */
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1024  static int nbcon_kthread_func(void *__console)
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1025  {
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1026  	struct console *con = __console;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1027  	struct nbcon_write_context wctxt = {
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1028  		.ctxt.console	= con,
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1029  		.ctxt.prio	= NBCON_PRIO_NORMAL,
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1030  	};
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1031  	struct nbcon_context *ctxt = &ACCESS_PRIVATE(&wctxt, ctxt);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1032  	struct uart_port *port = NULL;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1033  	unsigned long flags;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1034  	short con_flags;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1035  	bool backlog;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1036  	int cookie;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1037  	int ret;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1038  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1039  	if (con->uart_port)
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1040  		port = con->uart_port(con);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1041  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1042  wait_for_event:
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1043  	/*
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1044  	 * Guarantee this task is visible on the rcuwait before
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1045  	 * checking the wake condition.
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1046  	 *
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1047  	 * The full memory barrier within set_current_state() of
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1048  	 * ___rcuwait_wait_event() pairs with the full memory
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1049  	 * barrier within rcuwait_has_sleeper().
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1050  	 *
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1051  	 * This pairs with rcuwait_has_sleeper:A and nbcon_kthread_wake:A.
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1052  	 */
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1053  	ret = rcuwait_wait_event(&con->rcuwait,
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1054  				 nbcon_kthread_should_wakeup(con, ctxt),
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1055  				 TASK_INTERRUPTIBLE); /* LMM(nbcon_kthread_func:A) */
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1056  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1057  	if (kthread_should_stop())
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04 @1058  		return 0;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1059  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1060  	/* Wait was interrupted by a spurious signal, go back to sleep. */
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1061  	if (ret)
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1062  		goto wait_for_event;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1063  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1064  	do {
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1065  		backlog = false;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1066  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1067  		cookie = console_srcu_read_lock();
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1068  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1069  		con_flags = console_srcu_read_flags(con);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1070  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1071  		if (console_is_usable(con, con_flags, false)) {
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1072  			/*
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1073  			 * Ensure this stays on the CPU to make handover and
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1074  			 * takeover possible.
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1075  			 */
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1076  			if (port)
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04 @1077  				spin_lock_irqsave(&port->lock, flags);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1078  			else
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1079  				migrate_disable();
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1080  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1081  			if (nbcon_context_try_acquire(ctxt)) {
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1082  				/*
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1083  				 * If the emit fails, this context is no
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1084  				 * longer the owner.
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1085  				 */
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1086  				if (nbcon_emit_next_record(&wctxt, true)) {
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1087  					nbcon_context_release(ctxt);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1088  					backlog = ctxt->backlog;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1089  				}
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1090  			}
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1091  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1092  			if (port)
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1093  				spin_unlock_irqrestore(&port->lock, flags);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1094  			else
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1095  				migrate_enable();
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1096  		}
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1097  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1098  		console_srcu_read_unlock(cookie);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1099  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1100  		cond_resched();
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1101  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1102  	} while (backlog);
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1103  
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1104  	goto wait_for_event;
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1105  }
da042bbb7a3ffc Sebastian Andrzej Siewior 2023-10-04  1106  

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

                 reply	other threads:[~2023-10-09 11:54 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=202310091931.Av3oDqEt-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=julia.lawall@inria.fr \
    --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.