[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] lockprof: don't leave locks uninitialized upon allocation failure
commit 82cba984b2e37496360ef2bf22e529a53c084631 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri Jul 24 10:18:30 2020 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Jul 24 10:18:30 2020 +0200 lockprof: don't leave locks uninitialized upon allocation failure Even if a specific struct lock_profile instance can't be allocated, the lock itself should still be functional. As this isn't a production use feature, also log a message in the event that the profiling struct can't be allocated. Fixes: d98feda5c756 ("Make lock profiling usable again") Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/include/xen/spinlock.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h index 468b9ac9ef..c0e7690a6c 100644 --- a/xen/include/xen/spinlock.h +++ b/xen/include/xen/spinlock.h @@ -103,10 +103,16 @@ struct lock_profile_qhead { do { \ struct lock_profile *prof; \ prof = xzalloc(struct lock_profile); \ - if (!prof) break; \ + (s)->l = (spinlock_t)_SPIN_LOCK_UNLOCKED(prof); \ + if ( !prof ) \ + { \ + printk(XENLOG_WARNING \ + "lock profiling unavailable for %p(%d)'s %s\n", \ + s, (s)->profile_head.idx, #l); \ + break; \ + } \ prof->name = #l; \ prof->lock = &(s)->l; \ - (s)->l = (spinlock_t)_SPIN_LOCK_UNLOCKED(prof); \ prof->next = (s)->profile_head.elem_q; \ (s)->profile_head.elem_q = prof; \ } while(0) -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |