Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package userspace-rcu for openSUSE:Factory 
checked in at 2026-03-26 21:07:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/userspace-rcu (Old)
 and      /work/SRC/openSUSE:Factory/.userspace-rcu.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "userspace-rcu"

Thu Mar 26 21:07:32 2026 rev:23 rq:1342337 version:0.15.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/userspace-rcu/userspace-rcu.changes      
2026-01-05 14:50:24.331395572 +0100
+++ /work/SRC/openSUSE:Factory/.userspace-rcu.new.8177/userspace-rcu.changes    
2026-03-27 06:52:14.872751372 +0100
@@ -1,0 +2,17 @@
+Tue Mar 24 23:17:21 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.15.6:
+  * urcu-mb: Add missing TSAN annotation to
+    _urcu_mb_read_lock_update
+  * lfstack: Coding style cleanup
+  * urcu-qsbr: Use CMM_SEQ_CST_FENCE for _urcu_qsbr_thread_online
+  * urcu-mb: Use CMM_SEQ_CST_FENCE for _urcu_mb_read_lock_update
+  * urcu-qsbr: Use CMM_SEQ_CST_FENCE for quiescent state update
+    and offline
+  * urcu-mb: Use CMM_SEQ_CST_FENCE for
+    _urcu_mb_read_unlock_update_and_wakeup
+  * Fix: Only include linux/time_types.h when __NR_futex_time64
+    is defined
+  * Use __NR_futex_time64 in futex syscall wrapper
+
+-------------------------------------------------------------------

Old:
----
  userspace-rcu-0.15.5.tar.bz2
  userspace-rcu-0.15.5.tar.bz2.asc

New:
----
  userspace-rcu-0.15.6.tar.bz2
  userspace-rcu-0.15.6.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ userspace-rcu.spec ++++++
--- /var/tmp/diff_new_pack.yr9KmI/_old  2026-03-27 06:52:15.516777958 +0100
+++ /var/tmp/diff_new_pack.yr9KmI/_new  2026-03-27 06:52:15.520778122 +0100
@@ -20,7 +20,7 @@
 
 %define soname  8
 Name:           userspace-rcu
-Version:        0.15.5
+Version:        0.15.6
 Release:        0
 Summary:        Userspace Read-Copy-Update Library
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT AND 
GPL-3.0-or-later

++++++ userspace-rcu-0.15.5.tar.bz2 -> userspace-rcu-0.15.6.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/ChangeLog 
new/userspace-rcu-0.15.6/ChangeLog
--- old/userspace-rcu-0.15.5/ChangeLog  2025-11-11 02:28:34.000000000 +0100
+++ new/userspace-rcu-0.15.6/ChangeLog  2026-01-26 15:24:09.000000000 +0100
@@ -1,7 +1,17 @@
-# SPDX-FileCopyrightText: 2011-2025 Mathieu Desnoyers 
<[email protected]>
+# SPDX-FileCopyrightText: 2011-2026 Mathieu Desnoyers 
<[email protected]>
 #
 # SPDX-License-Identifier: CC-BY-4.0
 
+2026-01-26 Userspace RCU 0.15.6
+       * urcu-mb: Add missing TSAN annotation to _urcu_mb_read_lock_update
+       * lfstack: Coding style cleanup
+       * urcu-qsbr: Use CMM_SEQ_CST_FENCE for _urcu_qsbr_thread_online
+       * urcu-mb: Use CMM_SEQ_CST_FENCE for _urcu_mb_read_lock_update
+       * urcu-qsbr: Use CMM_SEQ_CST_FENCE for quiescent state update and 
offline
+       * urcu-mb: Use CMM_SEQ_CST_FENCE for 
_urcu_mb_read_unlock_update_and_wakeup
+       * Fix: Only include linux/time_types.h when __NR_futex_time64 is defined
+       * Use __NR_futex_time64 in futex syscall wrapper
+
 2025-11-10 Userspace RCU 0.15.5
        * x86: Define cmm_smp_mb() as lock; addl rather than mfence
        * Introduce barrier test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/configure 
new/userspace-rcu-0.15.6/configure
--- old/userspace-rcu-0.15.5/configure  2025-11-11 02:26:39.000000000 +0100
+++ new/userspace-rcu-0.15.6/configure  2026-01-26 15:24:27.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for userspace-rcu 0.15.5.
+# Generated by GNU Autoconf 2.71 for userspace-rcu 0.15.6.
 #
 # Report bugs to <mathieu dot desnoyers at efficios dot com>.
 #
@@ -621,8 +621,8 @@
 # Identity of this package.
 PACKAGE_NAME='userspace-rcu'
 PACKAGE_TARNAME='userspace-rcu'
-PACKAGE_VERSION='0.15.5'
-PACKAGE_STRING='userspace-rcu 0.15.5'
+PACKAGE_VERSION='0.15.6'
+PACKAGE_STRING='userspace-rcu 0.15.6'
 PACKAGE_BUGREPORT='mathieu dot desnoyers at efficios dot com'
 PACKAGE_URL='http://liburcu.org/'
 
@@ -1398,7 +1398,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures userspace-rcu 0.15.5 to adapt to many kinds of systems.
+\`configure' configures userspace-rcu 0.15.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1470,7 +1470,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of userspace-rcu 0.15.5:";;
+     short | recursive ) echo "Configuration of userspace-rcu 0.15.6:";;
    esac
   cat <<\_ACEOF
 
@@ -1607,7 +1607,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-userspace-rcu configure 0.15.5
+userspace-rcu configure 0.15.6
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2224,7 +2224,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by userspace-rcu $as_me 0.15.5, which was
+It was created by userspace-rcu $as_me 0.15.6, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3844,7 +3844,7 @@
 
 # Define the identity of the package.
  PACKAGE='userspace-rcu'
- VERSION='0.15.5'
+ VERSION='0.15.6'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -21633,7 +21633,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by userspace-rcu $as_me 0.15.5, which was
+This file was extended by userspace-rcu $as_me 0.15.6, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21702,7 +21702,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-userspace-rcu config.status 0.15.5
+userspace-rcu config.status 0.15.6
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/configure.ac 
new/userspace-rcu-0.15.6/configure.ac
--- old/userspace-rcu-0.15.5/configure.ac       2025-11-11 02:26:33.000000000 
+0100
+++ new/userspace-rcu-0.15.6/configure.ac       2026-01-26 15:24:17.000000000 
+0100
@@ -7,7 +7,7 @@
 # Project version information
 m4_define([urcu_version_major], [0])
 m4_define([urcu_version_minor], [15])
-m4_define([urcu_version_patch], [5])
+m4_define([urcu_version_patch], [6])
 m4_define([urcu_version_dev_stage], [])
 m4_define([urcu_version], 
urcu_version_major[.]urcu_version_minor[.]urcu_version_patch[]urcu_version_dev_stage)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/include/urcu/futex.h 
new/userspace-rcu-0.15.6/include/urcu/futex.h
--- old/userspace-rcu-0.15.5/include/urcu/futex.h       2025-11-04 
20:59:29.000000000 +0100
+++ new/userspace-rcu-0.15.6/include/urcu/futex.h       2025-12-14 
04:05:09.000000000 +0100
@@ -69,9 +69,17 @@
 
 #if (defined(__linux__) && defined(__NR_futex))
 
+#ifdef __NR_futex_time64
+# include <linux/time_types.h>
+#endif
+
 static inline int futex(int32_t *uaddr, int op, int32_t val,
                const struct timespec *timeout, int32_t *uaddr2, int32_t val3)
 {
+#ifdef __NR_futex_time64
+       if (sizeof(struct timespec) == sizeof(struct __kernel_timespec))
+               return syscall(__NR_futex_time64, uaddr, op, val, timeout, 
uaddr2, val3);
+#endif
        return syscall(__NR_futex, uaddr, op, val, timeout, uaddr2, val3);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/include/urcu/static/lfstack.h 
new/userspace-rcu-0.15.6/include/urcu/static/lfstack.h
--- old/userspace-rcu-0.15.5/include/urcu/static/lfstack.h      2025-11-04 
20:59:29.000000000 +0100
+++ new/userspace-rcu-0.15.6/include/urcu/static/lfstack.h      2026-01-08 
16:42:35.000000000 +0100
@@ -208,7 +208,7 @@
                next_head = caa_container_of(next,
                                struct cds_lfs_head, node);
                if (uatomic_cmpxchg_mo(&s->head, head, next_head,
-                                       CMM_SEQ_CST, CMM_SEQ_CST) == head){
+                                       CMM_SEQ_CST, CMM_SEQ_CST) == head) {
                        cmm_emit_legacy_smp_mb();
                        return &head->node;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/include/urcu/static/urcu-mb.h 
new/userspace-rcu-0.15.6/include/urcu/static/urcu-mb.h
--- old/userspace-rcu-0.15.5/include/urcu/static/urcu-mb.h      2025-11-04 
20:59:29.000000000 +0100
+++ new/userspace-rcu-0.15.6/include/urcu/static/urcu-mb.h      2026-01-08 
16:42:35.000000000 +0100
@@ -20,6 +20,7 @@
 #include <unistd.h>
 #include <stdint.h>
 
+#include <urcu/annotate.h>
 #include <urcu/debug.h>
 #include <urcu/config.h>
 #include <urcu/compiler.h>
@@ -51,14 +52,18 @@
  * Helper for _urcu_mb_read_lock().  The format of urcu_mb_gp.ctr (as well as
  * the per-thread rcu_reader.ctr) has the lower-order bits containing a count 
of
  * _urcu_mb_read_lock() nesting, and a single high-order URCU_BP_GP_CTR_PHASE 
bit
- * that contains either zero or one.  The cmm_smp_mb() ensures that the 
accesses in
- * _urcu_mb_read_lock() happen before the subsequent read-side critical 
section.
+ * that contains either zero or one.  The CMM_SEQ_CST_FENCE store to
+ * rcu_reader.ctr ensures that the accesses in _urcu_mb_read_lock() happen 
before
+ * the subsequent read-side critical section.
  */
 static inline void _urcu_mb_read_lock_update(unsigned long tmp)
 {
        if (caa_likely(!(tmp & URCU_GP_CTR_NEST_MASK))) {
-               uatomic_store(&URCU_TLS(urcu_mb_reader).ctr, 
uatomic_load(&urcu_mb_gp.ctr));
-               cmm_smp_mb();
+               unsigned long *pgctr = &urcu_mb_gp.ctr;
+               unsigned long gctr = uatomic_load(pgctr);
+
+               cmm_annotate_mem_acquire(pgctr);
+               uatomic_store(&URCU_TLS(urcu_mb_reader).ctr, gctr, 
CMM_SEQ_CST_FENCE);
        } else
                uatomic_store(&URCU_TLS(urcu_mb_reader).ctr, tmp + 
URCU_GP_COUNT);
 }
@@ -87,17 +92,18 @@
 /*
  * This is a helper function for _urcu_mb_read_unlock().
  *
- * The first cmm_smp_mb() call ensures that the critical section is
- * seen to precede the store to rcu_reader.ctr.
- * The second cmm_smp_mb() call ensures that we write to rcu_reader.ctr
- * before reading the update-side futex.
+ * The seq-cst-fence store on rcu_reader.ctr acts as a store-release and
+ * ensures that the critical section is seen to precede the store to
+ * rcu_reader.ctr.
+ * The seq-cst-fence store on rcu_reader.ctr ensures that the store to
+ * rcu_reader.ctr is before the load relaxed of the update-side futex.
  */
 static inline void _urcu_mb_read_unlock_update_and_wakeup(unsigned long tmp)
 {
        unsigned long *ctr = &URCU_TLS(urcu_mb_reader).ctr;
 
        if (caa_likely((tmp & URCU_GP_CTR_NEST_MASK) == URCU_GP_COUNT)) {
-               uatomic_store(ctr, tmp - URCU_GP_COUNT, CMM_SEQ_CST);
+               uatomic_store(ctr, tmp - URCU_GP_COUNT, CMM_SEQ_CST_FENCE);
                urcu_common_wake_up_gp(&urcu_mb_gp);
        } else {
                uatomic_store(ctr, tmp - URCU_GP_COUNT);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/userspace-rcu-0.15.5/include/urcu/static/urcu-qsbr.h 
new/userspace-rcu-0.15.6/include/urcu/static/urcu-qsbr.h
--- old/userspace-rcu-0.15.5/include/urcu/static/urcu-qsbr.h    2025-11-04 
20:59:29.000000000 +0100
+++ new/userspace-rcu-0.15.6/include/urcu/static/urcu-qsbr.h    2026-01-08 
16:42:35.000000000 +0100
@@ -136,16 +136,19 @@
 
 /*
  * This is a helper function for _rcu_quiescent_state().
- * The first cmm_smp_mb() ensures memory accesses in the prior read-side
- * critical sections are not reordered with store to
- * URCU_TLS(urcu_qsbr_reader).ctr, and ensures that mutexes held within an
- * offline section that would happen to end with this
- * urcu_qsbr_quiescent_state() call are not reordered with
- * store to URCU_TLS(urcu_qsbr_reader).ctr.
+ * The seq-cst-fence store on rcu_reader.ctr acts as a store-release and
+ * ensures that the critical section is seen to precede the store to
+ * rcu_reader.ctr, and ensures that mutexes held within an offline
+ * section that would happen to end with this
+ * urcu_qsbr_quiescent_state() call are not reordered with store to
+ * rcu_reader.ctr.
+ * The seq-cst-fence store on rcu_reader.ctr ensures that the store
+ * to rcu_reader.ctr is ordered before the load relaxed of the futex
+ * waiting state.
  */
 static inline void _urcu_qsbr_quiescent_state_update_and_wakeup(unsigned long 
gp_ctr)
 {
-       uatomic_store(&URCU_TLS(urcu_qsbr_reader).ctr, gp_ctr, CMM_SEQ_CST);
+       uatomic_store(&URCU_TLS(urcu_qsbr_reader).ctr, gp_ctr, 
CMM_SEQ_CST_FENCE);
 
        /* write URCU_TLS(urcu_qsbr_reader).ctr before read futex */
        urcu_qsbr_wake_up_gp();
@@ -179,6 +182,13 @@
  * Take a thread offline, prohibiting it from entering further RCU
  * read-side critical sections.
  *
+ * The seq-cst-fence store on rcu_reader.ctr acts as a store-release and
+ * ensures that the critical section is seen to precede the store to
+ * rcu_reader.ctr.
+ * The seq-cst-fence store on rcu_reader.ctr ensures that the store
+ * to rcu_reader.ctr is ordered before the load relaxed of the futex
+ * waiting state.
+ *
  * This function is less than 10 lines long.  The intent is that this
  * function meets the 10-line criterion for LGPL, allowing this function
  * to be invoked directly from non-LGPL code.
@@ -186,7 +196,7 @@
 static inline void _urcu_qsbr_thread_offline(void)
 {
        urcu_assert_debug(URCU_TLS(urcu_qsbr_reader).registered);
-       uatomic_store(&URCU_TLS(urcu_qsbr_reader).ctr, 0, CMM_SEQ_CST);
+       uatomic_store(&URCU_TLS(urcu_qsbr_reader).ctr, 0, CMM_SEQ_CST_FENCE);
        /* write URCU_TLS(urcu_qsbr_reader).ctr before read futex */
        urcu_qsbr_wake_up_gp();
        cmm_barrier();  /* Ensure the compiler does not reorder us with mutex */
@@ -209,8 +219,7 @@
        cmm_barrier();  /* Ensure the compiler does not reorder us with mutex */
        ctr = uatomic_load(&urcu_qsbr_gp.ctr);
        cmm_annotate_mem_acquire(&urcu_qsbr_gp.ctr);
-       uatomic_store(pctr, ctr);
-       cmm_smp_mb();
+       uatomic_store(pctr, ctr, CMM_SEQ_CST_FENCE);
 }
 
 #ifdef __cplusplus

Reply via email to