]> xenbits.xensource.com Git - people/andrewcoop/xen.git/commitdiff
force CONFIG_STACK_PROTECTOR xen-stack-prot
authorAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 13 Feb 2025 22:18:50 +0000 (22:18 +0000)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Fri, 14 Feb 2025 03:37:57 +0000 (03:37 +0000)
automation/gitlab-ci/build.yaml
xen/common/sched/credit2.c
xen/include/xen/kernel.h

index 35e224366f62bf4e97349ebc1db26c0332b9a280..3060811b538bf6af9692dbeb1f7aa7492e16fe38 100644 (file)
@@ -335,6 +335,7 @@ alpine-3.18-gcc-debug:
       CONFIG_ARGO=y
       CONFIG_UBSAN=y
       CONFIG_UBSAN_FATAL=y
+      CONFIG_STACK_PROTECTOR=y
 
 debian-12-x86_64-gcc-debug:
   extends: .gcc-x86-64-build-debug
@@ -370,12 +371,20 @@ debian-bookworm-gcc-arm32:
   variables:
     CONTAINER: debian:bookworm-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
+    EXTRA_XEN_CONFIG: |
+      CONFIG_UBSAN=y
+      CONFIG_UBSAN_FATAL=y
+      CONFIG_STACK_PROTECTOR=y
 
 debian-bookworm-gcc-arm32-debug:
   extends: .gcc-arm32-cross-build-debug
   variables:
     CONTAINER: debian:bookworm-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
+    EXTRA_XEN_CONFIG: |
+      CONFIG_UBSAN=y
+      CONFIG_UBSAN_FATAL=y
+      CONFIG_STACK_PROTECTOR=y
 
 debian-bookworm-gcc-arm32-randconfig:
   extends: .gcc-arm32-cross-build
@@ -419,6 +428,10 @@ alpine-3.18-gcc-arm64:
   extends: .gcc-arm64-build
   variables:
     CONTAINER: alpine:3.18-arm64v8
+    EXTRA_XEN_CONFIG: |
+      CONFIG_UBSAN=y
+      CONFIG_UBSAN_FATAL=y
+      CONFIG_STACK_PROTECTOR=y
 
 alpine-3.18-gcc-debug-arm64:
   extends: .gcc-arm64-build-debug
@@ -427,6 +440,7 @@ alpine-3.18-gcc-debug-arm64:
     EXTRA_XEN_CONFIG: |
       CONFIG_UBSAN=y
       CONFIG_UBSAN_FATAL=y
+      CONFIG_STACK_PROTECTOR=y
 
 alpine-3.18-gcc-arm64-randconfig:
   extends: .gcc-arm64-build
index 0a83f237259f6a5e4453f8d68427392ed7a7a6ca..271ed1fb3ba8b1b060bbf8224dc484622d65d50f 100644 (file)
@@ -958,7 +958,28 @@ cpu_add_to_runqueue(const struct scheduler *ops, unsigned int cpu)
     write_lock_irqsave(&prv->lock, flags);
 
     rqd_ins = &prv->rql;
+
+#if 1
     list_for_each_entry ( rqd, &prv->rql, rql )
+#else
+    for ( (rqd) = ({
+                typeof(((typeof(*(rqd)) *)((void*)0))->rql) *__mptr =
+                    ((&prv->rql)->next);
+                (typeof(*(rqd)) *)
+                    ((char *)__mptr -
+                     __builtin_offsetof(typeof(*(rqd)),rql) );
+            });
+          &(rqd)->rql !=
+              (&prv->rql);
+          (rqd) = ({
+                  typeof(((typeof(*(rqd)) *)((void*)0))->rql) *__mptr =
+                      ((rqd)->rql.next);
+                  (typeof(*(rqd)) *)
+                      ((char *)__mptr -
+                       __builtin_offsetof(typeof(*(rqd)),rql) );
+              })
+        )
+#endif
     {
         /* Remember first unused queue index. */
         if ( !rqi_unused && rqd->id > rqi )
index c5b6cc977772f6564308a1748c736d1b23a3bc2b..a0ab7930ff39a544f284a2acfecf8c5720550235 100644 (file)
@@ -17,8 +17,8 @@
  *
  */
 #define container_of(ptr, type, member) ({                      \
-        typeof_field(type, member) *__mptr = (ptr);             \
-        (type *)( (char *)__mptr - offsetof(type,member) );})
+        void *__mptr = (void *)(ptr);                           \
+        (type *)(__mptr - offsetof(type , member)); })
 
 /**
  * __struct_group() - Create a mirrored named and anonyomous struct