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  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 5 Apr 2007 22:28:36 +0200
From:	Andi Kleen <ak@...e.de>
To:	Jeremy Fitzhardinge <jeremy@...p.org>
Cc:	Benjamin LaHaise <bcrl@...ck.org>, Ingo Molnar <mingo@...e.hu>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: What protects cpu_tlbstate?

On Thursday 05 April 2007 21:44:10 Jeremy Fitzhardinge wrote:
> Hi,
> 
> What protects the cpu_tlbstate?  I see in i386/kernel/smp.c that its
> always used in a non-preemptable area, but what prevents races with
> interrupts?  For example, what prevents leave_mm() called via the
> flush_tlb_all IPI from racing with, say, enter_lazy_tlb?  Couldn't a
> race leave cpu_tlbstate in an inconsistent state?
> 
> Or does it simply not matter?  But if that were true, it seems to me
> that there should be at least some barriers or something to make sure
> the final state is consistent.

The interrupts can only happen when the other CPU is already lazy
and enter_lazy_tlb would be a nop then.  The flushers itself are
synchronized by the page_table_lock or the mm semaphore.

Against switch_mm it tries to protect with ordering.

wmb()s are not needed on x86 (ok minus errata on ppro and
VIA magic mode but which is UP only). That would leave some rmb()s,
but I don't see any place they would be needed. 

-Andi

-
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ