From: Stewart Hildebrand Date: Fri, 26 Apr 2024 10:43:24 +0000 (+0200) Subject: xen/spinlock: use correct pointer X-Git-Tag: 4.19.0-rc1~269 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=13893a58e28d0fee355ec299216568e4ab1c2c23;p=xen.git xen/spinlock: use correct pointer The ->profile member is at different offsets in struct rspinlock and struct spinlock. When initializing the profiling bits of an rspinlock, an unrelated member in struct rspinlock was being overwritten, leading to mild havoc. Use the correct pointer. Fixes: b053075d1a7b ("xen/spinlock: make struct lock_profile rspinlock_t aware") Signed-off-by: Stewart Hildebrand Reviewed-by: Jan Beulich --- diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c index 558ea7ac35..28c6e9d3ac 100644 --- a/xen/common/spinlock.c +++ b/xen/common/spinlock.c @@ -789,7 +789,11 @@ static int __init cf_check lock_prof_init(void) { (*q)->next = lock_profile_glb_q.elem_q; lock_profile_glb_q.elem_q = *q; - (*q)->ptr.lock->profile = *q; + + if ( (*q)->is_rlock ) + (*q)->ptr.rlock->profile = *q; + else + (*q)->ptr.lock->profile = *q; } _lock_profile_register_struct(LOCKPROF_TYPE_GLOBAL,