All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ppc64: Fix possible race with set_pte on a present PTE
@ 2004-05-24  3:29 Benjamin Herrenschmidt
  2004-05-24  3:47 ` Linus Torvalds
  0 siblings, 1 reply; 149+ messages in thread
From: Benjamin Herrenschmidt @ 2004-05-24  3:29 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Linus Torvalds, Linux Kernel list

(RESENT)

There is a subtle race which can cause set_pte to be called on ppc64 on
a PTE that is already present (that normally doesn't happen for us) and
which itself, in the proper race condition, can trigger a duplicate hash
entry to be added to the hash table (very bad).

This fixes it by making sure we trigger the actual flush of the batch
whenever set_pte is called on a present PTE, before putting the new PTE
in.

===== include/asm-ppc64/pgtable.h 1.32 vs edited =====
--- 1.32/include/asm-ppc64/pgtable.h	Fri Apr  9 03:30:57 2004
+++ edited/include/asm-ppc64/pgtable.h	Thu May 20 15:47:40 2004
@@ -396,8 +396,10 @@
  */
 static inline void set_pte(pte_t *ptep, pte_t pte)
 {
-	if (pte_present(*ptep))
+	if (pte_present(*ptep)) {
 		pte_clear(ptep);
+		flush_tlb_pending();
+	}
 	*ptep = __pte(pte_val(pte)) & ~_PAGE_HPTEFLAGS;
 }
 



^ permalink raw reply	[flat|nested] 149+ messages in thread

end of thread, other threads:[~2004-05-28  1:29 UTC | newest]

Thread overview: 149+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-24  3:29 [PATCH] ppc64: Fix possible race with set_pte on a present PTE Benjamin Herrenschmidt
2004-05-24  3:47 ` Linus Torvalds
2004-05-24  4:13   ` Benjamin Herrenschmidt
2004-05-24  4:36     ` Linus Torvalds
2004-05-24  4:44       ` Benjamin Herrenschmidt
2004-05-24  5:10         ` Linus Torvalds
2004-05-24  5:10           ` Linus Torvalds
2004-05-24  5:34           ` Benjamin Herrenschmidt
2004-05-24  5:34             ` Benjamin Herrenschmidt
2004-05-24  5:38             ` Benjamin Herrenschmidt
2004-05-24  5:38               ` Benjamin Herrenschmidt
2004-05-24  5:52               ` Benjamin Herrenschmidt
2004-05-24  5:52                 ` Benjamin Herrenschmidt
2004-05-24  7:39           ` Ingo Molnar
2004-05-24  7:39             ` Ingo Molnar
2004-05-24  5:39             ` Benjamin Herrenschmidt
2004-05-24  5:39               ` Benjamin Herrenschmidt
2004-05-25  3:43           ` Andrea Arcangeli
2004-05-25  3:43             ` Andrea Arcangeli
2004-05-25  4:00             ` Linus Torvalds
2004-05-25  4:00               ` Linus Torvalds
2004-05-25  4:17               ` Benjamin Herrenschmidt
2004-05-25  4:17                 ` Benjamin Herrenschmidt
2004-05-25  4:37                 ` Andrea Arcangeli
2004-05-25  4:37                   ` Andrea Arcangeli
2004-05-25  4:40                   ` Benjamin Herrenschmidt
2004-05-25  4:40                     ` Benjamin Herrenschmidt
2004-05-25  4:20               ` Andrea Arcangeli
2004-05-25  4:20                 ` Andrea Arcangeli
2004-05-25  4:39                 ` Linus Torvalds
2004-05-25  4:39                   ` Linus Torvalds
2004-05-25  4:44                   ` Linus Torvalds
2004-05-25  4:44                     ` Linus Torvalds
2004-05-25  4:59                     ` Andrea Arcangeli
2004-05-25  4:59                       ` Andrea Arcangeli
2004-05-25  5:09                       ` Andrea Arcangeli
2004-05-25  5:09                         ` Andrea Arcangeli
2004-05-25  4:50                   ` Andrea Arcangeli
2004-05-25  4:50                     ` Andrea Arcangeli
2004-05-25  4:59                     ` Linus Torvalds
2004-05-25  4:59                       ` Linus Torvalds
2004-05-25  4:43                 ` David Mosberger
2004-05-25  4:43                   ` David Mosberger
2004-05-25  4:53                   ` Andrea Arcangeli
2004-05-25  4:53                     ` Andrea Arcangeli
2004-05-27 21:56                     ` David Mosberger
2004-05-27 21:56                       ` David Mosberger
2004-05-27 22:00                       ` Benjamin Herrenschmidt
2004-05-27 22:00                         ` Benjamin Herrenschmidt
2004-05-27 22:12                         ` David Mosberger
2004-05-27 22:12                           ` David Mosberger
2004-05-25 11:44               ` Matthew Wilcox
2004-05-25 11:44                 ` Matthew Wilcox
2004-05-25 14:48                 ` Linus Torvalds
2004-05-25 14:48                   ` Linus Torvalds
2004-05-25 15:35                   ` Keith M Wesolowski
2004-05-25 15:35                     ` Keith M Wesolowski
2004-05-25 16:19                     ` Linus Torvalds
2004-05-25 16:19                       ` Linus Torvalds
2004-05-25 17:25                       ` David S. Miller
2004-05-25 17:25                         ` David S. Miller
2004-05-25 17:49                         ` Linus Torvalds
2004-05-25 17:49                           ` Linus Torvalds
2004-05-25 17:54                           ` David S. Miller
2004-05-25 17:54                             ` David S. Miller
2004-05-25 18:05                             ` Linus Torvalds
2004-05-25 18:05                               ` Linus Torvalds
2004-05-25 20:30                               ` Linus Torvalds
2004-05-25 20:30                                 ` Linus Torvalds
2004-05-25 20:35                               ` David S. Miller
2004-05-25 20:35                                 ` David S. Miller
2004-05-25 20:35                                 ` David S. Miller
2004-05-25 20:49                                 ` Linus Torvalds
2004-05-25 20:49                                   ` Linus Torvalds
2004-05-25 20:57                                   ` David S. Miller
2004-05-25 20:57                                     ` David S. Miller
2004-05-26  6:20                                   ` Keith M Wesolowski
2004-05-26  6:20                                     ` Keith M Wesolowski
2004-05-25 21:40                               ` Benjamin Herrenschmidt
2004-05-25 21:40                                 ` Benjamin Herrenschmidt
2004-05-25 21:54                                 ` Linus Torvalds
2004-05-25 21:54                                   ` Linus Torvalds
2004-05-25 22:00                                   ` Linus Torvalds
2004-05-25 22:00                                     ` Linus Torvalds
2004-05-25 22:07                                     ` Benjamin Herrenschmidt
2004-05-25 22:07                                       ` Benjamin Herrenschmidt
2004-05-25 22:14                                       ` Linus Torvalds
2004-05-25 22:14                                         ` Linus Torvalds
2004-05-26  0:21                                         ` Benjamin Herrenschmidt
2004-05-26  0:21                                           ` Benjamin Herrenschmidt
2004-05-26  0:50                                           ` Linus Torvalds
2004-05-26  0:50                                             ` Linus Torvalds
2004-05-26  3:25                                             ` Benjamin Herrenschmidt
2004-05-26  3:25                                               ` Benjamin Herrenschmidt
2004-05-26  4:08                                               ` Linus Torvalds
2004-05-26  4:08                                                 ` Linus Torvalds
2004-05-26  4:12                                                 ` Benjamin Herrenschmidt
2004-05-26  4:12                                                   ` Benjamin Herrenschmidt
2004-05-26  4:18                                                   ` Benjamin Herrenschmidt
2004-05-26  4:18                                                     ` Benjamin Herrenschmidt
2004-05-26  4:50                                                     ` Linus Torvalds
2004-05-26  4:50                                                       ` Linus Torvalds
2004-05-26  4:49                                                       ` Benjamin Herrenschmidt
2004-05-26  4:49                                                         ` Benjamin Herrenschmidt
2004-05-26  4:28                                                   ` Linus Torvalds
2004-05-26  4:28                                                     ` Linus Torvalds
2004-05-26  4:46                                                 ` Benjamin Herrenschmidt
2004-05-26  4:46                                                   ` Benjamin Herrenschmidt
2004-05-26  4:54                                                   ` Linus Torvalds
2004-05-26  4:54                                                     ` Linus Torvalds
2004-05-26  4:55                                                     ` Benjamin Herrenschmidt
2004-05-26  4:55                                                       ` Benjamin Herrenschmidt
2004-05-26  5:41                                                     ` Benjamin Herrenschmidt
2004-05-26  5:41                                                       ` Benjamin Herrenschmidt
2004-05-26  5:59                                                     ` [PATCH] (signoff) " Benjamin Herrenschmidt
2004-05-26  5:59                                                       ` Benjamin Herrenschmidt
2004-05-26  6:55                                                       ` Benjamin Herrenschmidt
2004-05-26  6:55                                                         ` Benjamin Herrenschmidt
2004-05-26  7:11                                                         ` [PATCH] ppc32 implementation of ptep_set_access_flags Benjamin Herrenschmidt
2004-05-26 15:22                                                           ` Linus Torvalds
2004-05-26 18:49                                                             ` David S. Miller
2004-05-26 21:43                                                             ` Benjamin Herrenschmidt
2004-05-28  1:29                                                             ` David Mosberger
2004-05-25 22:05                                   ` [PATCH] ppc64: Fix possible race with set_pte on a present PTE Benjamin Herrenschmidt
2004-05-25 22:05                                     ` Benjamin Herrenschmidt
2004-05-25 22:09                                 ` Linus Torvalds
2004-05-25 22:09                                   ` Linus Torvalds
2004-05-25 22:19                                   ` Benjamin Herrenschmidt
2004-05-25 22:19                                     ` Benjamin Herrenschmidt
2004-05-25 22:24                                     ` Linus Torvalds
2004-05-25 22:24                                       ` Linus Torvalds
2004-05-25 21:27                   ` Andrea Arcangeli
2004-05-25 21:27                     ` Andrea Arcangeli
2004-05-25 21:43                     ` Linus Torvalds
2004-05-25 21:43                       ` Linus Torvalds
2004-05-25 21:55                       ` Andrea Arcangeli
2004-05-25 21:55                         ` Andrea Arcangeli
2004-05-25 22:01                         ` Linus Torvalds
2004-05-25 22:01                           ` Linus Torvalds
2004-05-25 22:18                           ` Ivan Kokshaysky
2004-05-25 22:18                             ` Ivan Kokshaysky
2004-05-25 22:42                             ` Andrea Arcangeli
2004-05-25 22:42                               ` Andrea Arcangeli
2004-05-26  2:26                               ` Linus Torvalds
2004-05-26  2:26                                 ` Linus Torvalds
2004-05-26  7:06                                 ` Andrea Arcangeli
2004-05-26  7:06                                   ` Andrea Arcangeli
2004-05-25 21:44                     ` Andrea Arcangeli
2004-05-25 21:44                       ` Andrea Arcangeli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.