On Thu, Sep 04, 2014 at 03:00:31PM +0100, Kees Cook wrote: > On Thu, Sep 4, 2014 at 2:27 AM, Will Deacon <will.deacon@xxxxxxx> wrote: > > On Wed, Sep 03, 2014 at 10:43:58PM +0100, Kees Cook wrote: > >> On Wed, Aug 20, 2014 at 5:28 AM, Kees Cook <keescook@xxxxxxxxxxxx> wrote: > >> > On Tue, Aug 19, 2014 at 7:29 AM, Will Deacon <will.deacon@xxxxxxx> wrote: > >> >> On Wed, Aug 13, 2014 at 06:06:29PM +0100, Kees Cook wrote: > >> >>> + set_fixmap(fixmap, page_to_phys(page)); > >> >> > >> >> set_fixmap does TLB invalidation, right? I think that means it can block on > >> >> 11MPCore and A15 w/ the TLBI erratum, so it's not safe to call this with > >> >> interrupts disabled anyway. > >> > > >> > Oh right. Hrm. > >> > > >> > In an earlier version of this series set_fixmap did not perform TLB > >> > invalidation. I wonder if this is not needed at all? (Wouldn't that be > >> > nice...) > >> > >> As suspected, my tests fail spectacularly without the TLB flush. > >> Adding WARN_ON(!irqs_disabled()) doesn't warn, so I think we're safe > >> here. Should I leave the WARN_ON in place for clarity, or some other > >> comments? > > > > I thought there was a potential call to spin_lock_irqsave right before > > this TLB flush? > > I'm not sure I understand what you mean. Should I change something > here? It looks like irqs are disabled, so isn't this a safe code path? My point was that it's not safe to call set_fixmap when interrupts are disabled, because it will try to flush the TLB, and this can lock-up on some CPUs where it needs to do something like smp_call_function. Will -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html