From: Andrew Cooper Date: Thu, 13 Feb 2025 22:18:50 +0000 (+0000) Subject: force CONFIG_STACK_PROTECTOR X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=refs%2Fheads%2Fxen-stack-prot;p=people%2Fandrewcoop%2Fxen.git force CONFIG_STACK_PROTECTOR --- diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml index 35e224366f..3060811b53 100644 --- a/automation/gitlab-ci/build.yaml +++ b/automation/gitlab-ci/build.yaml @@ -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 diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index 0a83f23725..271ed1fb3b 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -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 ) diff --git a/xen/include/xen/kernel.h b/xen/include/xen/kernel.h index c5b6cc9777..a0ab7930ff 100644 --- a/xen/include/xen/kernel.h +++ b/xen/include/xen/kernel.h @@ -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