|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/2] lockprof: don't leave locks uninitialized upon allocation failure
On 23/07/2020 11:51, Jan Beulich wrote:
> 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>
>
> --- 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 " #l "\n",
> \
> + s, (s)->profile_head.idx);
> \
You'll end up with far less .rodata if you use %s and pass #l in as a
parameter.
Either way, Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> + 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)
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |