diff for duplicates of <1495805128.29205.64.camel@redhat.com> diff --git a/a/1.txt b/N1/1.txt index dcab148..57719c4 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -6,12 +6,12 @@ On Thu, 2017-05-25 at 19:01 -0700, Andy Lutomirski wrote: > > > +++ b/arch/x86/mm/tlb.c > > > @@ -311,7 +311,7 @@ void flush_tlb_mm_range(struct mm_struct *mm, > > > unsigned long start, -> > > A A A A A A A A A A A A A A goto out; -> > > A A A A A A } +> > > goto out; +> > > } > > > -> > > -A A A A A if (!current->mm) { -> > > +A A A A A if (this_cpu_read(cpu_tlbstate.state) != TLBSTATE_OK) { -> > > A A A A A A A A A A A A A A leave_mm(smp_processor_id()); +> > > - if (!current->mm) { +> > > + if (this_cpu_read(cpu_tlbstate.state) != TLBSTATE_OK) { +> > > leave_mm(smp_processor_id()); > > > > Unless -mm changed leave_mm (I did not check), this > > is not quite correct yet. @@ -24,23 +24,17 @@ On Thu, 2017-05-25 at 19:01 -0700, Andy Lutomirski wrote: > > > > void leave_mm(int cpu) > > { -> > A A A A A A A A struct mm_struct *active_mm = +> > struct mm_struct *active_mm = > > this_cpu_read(cpu_tlbstate.active_mm); -> > A A A A A A A A if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) -> > A A A A A A A A A A A A A A A A BUG(); -> > A A A A A A A A if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) { -> > A A A A A A A A A A A A A A A A cpumask_clear_cpu(cpu, mm_cpumask(active_mm)); -> > A A A A A A A A A A A A A A A A load_cr3(swapper_pg_dir); +> > if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK) +> > BUG(); +> > if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) { +> > cpumask_clear_cpu(cpu, mm_cpumask(active_mm)); +> > load_cr3(swapper_pg_dir); > -> I agree it's odd, but what's the bug?A A Both before and after, +> I agree it's odd, but what's the bug? Both before and after, > leave_mm > needed to be called with cpu == smp_processor_id(), and > smp_processor_id() warns if it's called in a preemptible context. Indeed, you are right. Looking at too much code at once... - --- -To unsubscribe, send a message with 'unsubscribe linux-mm' in -the body to majordomo@kvack.org. For more info on Linux MM, -see: http://www.linux-mm.org/ . -Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N1/content_digest index 2d15506..234d5f0 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -28,12 +28,12 @@ "> > > +++ b/arch/x86/mm/tlb.c\n" "> > > @@ -311,7 +311,7 @@ void flush_tlb_mm_range(struct mm_struct *mm,\n" "> > > unsigned long start,\n" - "> > > A A A A A A A A A A A A A A goto out;\n" - "> > > A A A A A A }\n" + "> > > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto out;\n" + "> > > \302\240\302\240\302\240\302\240\302\240\302\240}\n" "> > > \n" - "> > > -A A A A A if (!current->mm) {\n" - "> > > +A A A A A if (this_cpu_read(cpu_tlbstate.state) != TLBSTATE_OK) {\n" - "> > > A A A A A A A A A A A A A A leave_mm(smp_processor_id());\n" + "> > > -\302\240\302\240\302\240\302\240\302\240if (!current->mm) {\n" + "> > > +\302\240\302\240\302\240\302\240\302\240if (this_cpu_read(cpu_tlbstate.state) != TLBSTATE_OK) {\n" + "> > > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240leave_mm(smp_processor_id());\n" "> > \n" "> > Unless -mm changed leave_mm (I did not check), this\n" "> > is not quite correct yet.\n" @@ -46,25 +46,19 @@ "> > \n" "> > void leave_mm(int cpu)\n" "> > {\n" - "> > A A A A A A A A struct mm_struct *active_mm =\n" + "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct mm_struct *active_mm =\n" "> > this_cpu_read(cpu_tlbstate.active_mm);\n" - "> > A A A A A A A A if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK)\n" - "> > A A A A A A A A A A A A A A A A BUG();\n" - "> > A A A A A A A A if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) {\n" - "> > A A A A A A A A A A A A A A A A cpumask_clear_cpu(cpu, mm_cpumask(active_mm));\n" - "> > A A A A A A A A A A A A A A A A load_cr3(swapper_pg_dir);\n" + "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (this_cpu_read(cpu_tlbstate.state) == TLBSTATE_OK)\n" + "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240BUG();\n" + "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) {\n" + "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240cpumask_clear_cpu(cpu, mm_cpumask(active_mm));\n" + "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240load_cr3(swapper_pg_dir);\n" "> \n" - "> I agree it's odd, but what's the bug?A A Both before and after,\n" + "> I agree it's odd, but what's the bug?\302\240\302\240Both before and after,\n" "> leave_mm\n" "> needed to be called with cpu == smp_processor_id(), and\n" "> smp_processor_id() warns if it's called in a preemptible context.\n" "\n" - "Indeed, you are right. Looking at too much code at once...\n" - "\n" - "--\n" - "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" - "the body to majordomo@kvack.org. For more info on Linux MM,\n" - "see: http://www.linux-mm.org/ .\n" - "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" + Indeed, you are right. Looking at too much code at once... -61ac1e426bdfc8476563013ec9f2958bc398ed6895c6cb4803c4b818ae187762 +e19ad29ab7d568c1189624b8d2263b52e9cb9526768cab5584185bf65e21326b
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.