lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Sun, 19 Feb 2012 10:13:32 +0200
From:	Gilad Ben-Yossef <gilad@...yossef.com>
To:	Ingo Molnar <mingo@...e.hu>
Cc:	linux-kernel@...r.kernel.org, Thomas Gleixner <tglx@...utronix.de>,
	Ingo Molnar <mingo@...hat.com>,
	"H. Peter Anvin" <hpa@...or.com>, Milton Miller <miltonm@....com>,
	x86@...nel.org, Peter Zijlstra <a.p.zijlstra@...llo.nl>
Subject: Re: [PATCH] x86: drop false warning of empty cpumask in IPI

On Fri, Feb 17, 2012 at 2:01 PM, Ingo Molnar <mingo@...e.hu> wrote:
>
> * Gilad Ben-Yossef <gilad@...yossef.com> wrote:
>
>> With current generic SMP infrastructure, it is feasible
>> for the target CPUs to begin processing an IPI work item
>> even before we sent them the actual IPI in the case that
>> an IPI from another CPU woke them first.
>>
>> This can lead to generating a false warning in a valid
>> state of trying to send IPI with an empty cpumask when
>> multiple concurrent IPIs are being sent.
>>
>> This patch was triggered by the following LKML discussion:
>> https://lkml.org/lkml/2012/1/13/308
>>
>> Signed-off-by: Gilad Ben-Yossef <gilad@...yossef.com>
>> CC: Thomas Gleixner <tglx@...utronix.de>
>> CC: Ingo Molnar <mingo@...hat.com>
>> CC: "H. Peter Anvin" <hpa@...or.com>
>> CC: Milton Miller <miltonm@....com>
>> CC: x86@...nel.org
>> ---
>>  arch/x86/kernel/apic/ipi.c |    5 ++++-
>>  1 files changed, 4 insertions(+), 1 deletions(-)
>>
>> diff --git a/arch/x86/kernel/apic/ipi.c b/arch/x86/kernel/apic/ipi.c
>> index cce91bf..00b68a3 100644
>> --- a/arch/x86/kernel/apic/ipi.c
>> +++ b/arch/x86/kernel/apic/ipi.c
>> @@ -106,7 +106,10 @@ void default_send_IPI_mask_logical(const struct cpumask *cpumask, int vector)
>>       unsigned long mask = cpumask_bits(cpumask)[0];
>>       unsigned long flags;
>>
>> -     if (WARN_ONCE(!mask, "empty IPI mask"))
>> +     if (!mask)
>> +             /* The target CPUs must have already processed the
>> +              * work items due to a concurrent IPI
>> +              */
>>               return;
>
> This could potentially hide real bugs on other callsites.
>
> So why not do the checking at the call site? In almost every
> other scenario it's invalid to send an empty mask.

hmm... isn't that racy? Also, none of the other send_IPI_maks
implementations do the check.

I can obviously add a warning at the "zero not OK" call sites, though.

Actually, the code is racy right now as well. I think we're
trying to program the APIC with a zero dest field from time to
time. How bad is that? :-)

Thanks,
Gilad




-- 
Gilad Ben-Yossef
Chief Coffee Drinker
gilad@...yossef.com
Israel Cell: +972-52-8260388
US Cell: +1-973-8260388
http://benyossef.com

"If you take a class in large-scale robotics, can you end up in a
situation where the homework eats your dog?"
 -- Jean-Baptiste Queru
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists