[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 13:23, Andrew Cooper wrote:
> 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.

Well, "far less" perhaps goes a little far, as we currently have
just three use sites, but I see your point and hence will switch.

> Either way, Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

Thanks, Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.