Christophe Leroy's on March 21, 2020 1:33 am:
> 
> 
> Le 20/03/2020 à 16:24, Nicholas Piggin a écrit :
>> Signed-off-by: Nicholas Piggin <npig...@gmail.com>
>> ---
>>   arch/powerpc/platforms/pseries/lpar.c | 10 +++++++++-
>>   1 file changed, 9 insertions(+), 1 deletion(-)
>> 
>> diff --git a/arch/powerpc/platforms/pseries/lpar.c 
>> b/arch/powerpc/platforms/pseries/lpar.c
>> index 3c3da25b445c..e4ed5317f117 100644
>> --- a/arch/powerpc/platforms/pseries/lpar.c
>> +++ b/arch/powerpc/platforms/pseries/lpar.c
>> @@ -636,8 +636,16 @@ static const struct proc_ops 
>> vcpudispatch_stats_freq_proc_ops = {
>>   
>>   static int __init vcpudispatch_stats_procfs_init(void)
>>   {
>> -    if (!lppaca_shared_proc(get_lppaca()))
>> +    /*
>> +     * Avoid smp_processor_id while preemptible. All CPUs should have
>> +     * the same value for lppaca_shared_proc.
>> +     */
>> +    preempt_disable();
>> +    if (!lppaca_shared_proc(get_lppaca())) {
>> +            preempt_enable();
>>              return 0;
>> +    }
>> +    preempt_enable();
> 
> Can we avoid the double preempt_enable() with something like:
> 
>       preempt_disable();
>       is_shared = lppaca_shared_proc(get_lppaca());
>       preempt_enable();
>       if (!is_shared)
>               return 0;

I don't mind too much. Same number of lines.

Thanks,
Nick

Reply via email to