Re: [patch] mm: fix a race condition under SMC + COW

From: Siddha, Suresh B
Date: Wed Sep 27 2006 - 20:41:45 EST


On Wed, Sep 27, 2006 at 03:54:42PM -0700, David Miller wrote:
> You can't really do a set_pte_at() in this code path because
> there isn't a subsequent flush_tlb_*().
>
> This is needed because some architectures queue up all set_pte_at()
> calls until the next flush_tlb_*() in order to batch TLB flushes.
> PowerPC and Sparc64 both do this.
>
> The pte_establish() in the existing code works fine because it takes
> care of the set_pte_at() and flush_tlb_*() work internally when
> necessary on a given platform.

I am flushing the pte entry in ptep_clear_flush() and it is Ok not
to do another TLB flush after doing set_pte_at().

On Sparc64, this new set_pte_at() (after ptep_clear_flush) will not batch
any TLB flush as the previous pte contents were zero.

We are Ok with this patch, isn't it?

thanks,
suresh
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/