All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Dmitry Vyukov <dvyukov@google.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [dvyukov:pr/4 1/1] kernel/sched/membarrier.c:337:41: error: 'struct mm_mm_cid' has no member named 'fence_seq'
Date: Tue, 24 Mar 2026 09:18:44 +0800	[thread overview]
Message-ID: <202603240952.18iaUtep-lkp@intel.com> (raw)

tree:   https://github.com/dvyukov/linux pr/4
head:   1284e3723047cb5afd247f75c53de43efc18db82
commit: 1284e3723047cb5afd247f75c53de43efc18db82 [1/1] rseq: always overwrite cpu_id after membarrier
config: alpha-allnoconfig (https://download.01.org/0day-ci/archive/20260324/202603240952.18iaUtep-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260324/202603240952.18iaUtep-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>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603240952.18iaUtep-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from kernel/sched/build_utility.c:97:
   kernel/sched/membarrier.c: In function 'membarrier_private_expedited':
>> kernel/sched/membarrier.c:337:41: error: 'struct mm_mm_cid' has no member named 'fence_seq'
     337 |                 atomic64_inc(&mm->mm_cid.fence_seq);
         |                                         ^


vim +337 kernel/sched/membarrier.c

   316	
   317	static int membarrier_private_expedited(int flags, int cpu_id)
   318	{
   319		cpumask_var_t tmpmask;
   320		struct mm_struct *mm = current->mm;
   321		smp_call_func_t ipi_func = ipi_mb;
   322	
   323		if (flags == MEMBARRIER_FLAG_SYNC_CORE) {
   324			if (!IS_ENABLED(CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE))
   325				return -EINVAL;
   326			if (!(atomic_read(&mm->membarrier_state) &
   327			      MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY))
   328				return -EPERM;
   329			ipi_func = ipi_sync_core;
   330			prepare_sync_core_cmd(mm);
   331		} else if (flags == MEMBARRIER_FLAG_RSEQ) {
   332			if (!IS_ENABLED(CONFIG_RSEQ))
   333				return -EINVAL;
   334			if (!(atomic_read(&mm->membarrier_state) &
   335			      MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ_READY))
   336				return -EPERM;
 > 337			atomic64_inc(&mm->mm_cid.fence_seq);
   338			rseq_force_update();
   339			ipi_func = ipi_rseq;
   340		} else {
   341			WARN_ON_ONCE(flags);
   342			if (!(atomic_read(&mm->membarrier_state) &
   343			      MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY))
   344				return -EPERM;
   345		}
   346	
   347		if (flags != MEMBARRIER_FLAG_SYNC_CORE &&
   348		    (atomic_read(&mm->mm_users) == 1 || num_online_cpus() == 1))
   349			return 0;
   350	
   351		/*
   352		 * Matches memory barriers after rq->curr modification in
   353		 * scheduler.
   354		 *
   355		 * On RISC-V, this barrier pairing is also needed for the
   356		 * SYNC_CORE command when switching between processes, cf.
   357		 * the inline comments in membarrier_arch_switch_mm().
   358		 */
   359		smp_mb();	/* system call entry is not a mb. */
   360	
   361		if (cpu_id < 0 && !zalloc_cpumask_var(&tmpmask, GFP_KERNEL))
   362			return -ENOMEM;
   363	
   364		SERIALIZE_IPI();
   365		cpus_read_lock();
   366	
   367		if (cpu_id >= 0) {
   368			struct task_struct *p;
   369	
   370			if (cpu_id >= nr_cpu_ids || !cpu_online(cpu_id))
   371				goto out;
   372			rcu_read_lock();
   373			p = rcu_dereference(cpu_rq(cpu_id)->curr);
   374			if (!p || p->mm != mm) {
   375				rcu_read_unlock();
   376				goto out;
   377			}
   378			rcu_read_unlock();
   379		} else {
   380			int cpu;
   381	
   382			rcu_read_lock();
   383			for_each_online_cpu(cpu) {
   384				struct task_struct *p;
   385	
   386				p = rcu_dereference(cpu_rq(cpu)->curr);
   387				if (p && p->mm == mm)
   388					__cpumask_set_cpu(cpu, tmpmask);
   389			}
   390			rcu_read_unlock();
   391		}
   392	
   393		if (cpu_id >= 0) {
   394			/*
   395			 * smp_call_function_single() will call ipi_func() if cpu_id
   396			 * is the calling CPU.
   397			 */
   398			smp_call_function_single(cpu_id, ipi_func, NULL, 1);
   399		} else {
   400			/*
   401			 * For regular membarrier, we can save a few cycles by
   402			 * skipping the current cpu -- we're about to do smp_mb()
   403			 * below, and if we migrate to a different cpu, this cpu
   404			 * and the new cpu will execute a full barrier in the
   405			 * scheduler.
   406			 *
   407			 * For SYNC_CORE, we do need a barrier on the current cpu --
   408			 * otherwise, if we are migrated and replaced by a different
   409			 * task in the same mm just before, during, or after
   410			 * membarrier, we will end up with some thread in the mm
   411			 * running without a core sync.
   412			 *
   413			 * For RSEQ, don't invoke rseq_sched_switch_event() on the
   414			 * caller.  User code is not supposed to issue syscalls at
   415			 * all from inside an rseq critical section.
   416			 */
   417			if (flags != MEMBARRIER_FLAG_SYNC_CORE) {
   418				preempt_disable();
   419				smp_call_function_many(tmpmask, ipi_func, NULL, true);
   420				preempt_enable();
   421			} else {
   422				on_each_cpu_mask(tmpmask, ipi_func, NULL, true);
   423			}
   424		}
   425	
   426	out:
   427		if (cpu_id < 0)
   428			free_cpumask_var(tmpmask);
   429		cpus_read_unlock();
   430	
   431		/*
   432		 * Memory barrier on the caller thread _after_ we finished
   433		 * waiting for the last IPI. Matches memory barriers before
   434		 * rq->curr modification in scheduler.
   435		 */
   436		smp_mb();	/* exit from system call is not a mb */
   437	
   438		return 0;
   439	}
   440	

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

                 reply	other threads:[~2026-03-24  1:19 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=202603240952.18iaUtep-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=dvyukov@google.com \
    --cc=oe-kbuild-all@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.