Messages in this thread | | | Date | Fri, 24 Aug 2012 14:17:21 -0400 | From | Konrad Rzeszutek Wilk <> | Subject | Re: [PATCH] xen: fix logical error in tlb flushing |
| |
On Fri, Aug 24, 2012 at 04:16:39PM +0100, Jan Beulich wrote: > >>> On 24.08.12 at 10:55, Alex Shi <alex.shi@intel.com> wrote: > > While TLB_FLUSH_ALL gets passed as 'end' argument to > > flush_tlb_others(), the Xen code was made to check its 'start' > > parameter. That may give a incorrect op.cmd to MMUEXT_INVLPG_MULTI > > instead of MMUEXT_TLB_FLUSH_MULTI. Then it causes some page can not > > be flushed from TLB. > > > > This patch fixed this issue. > > > > Reported-by: Jan Beulich <jbeulich@suse.com> > > Signed-off-by: Alex Shi <alex.shi@intel.com> > > Acked-by: Jan Beulich <jbeulich@suse.com>
How can I reproduce this and should this also go to stable@kernel.org? > > > --- > > arch/x86/xen/mmu.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c > > index b65a761..5141d80 100644 > > --- a/arch/x86/xen/mmu.c > > +++ b/arch/x86/xen/mmu.c > > @@ -1283,7 +1283,7 @@ static void xen_flush_tlb_others(const struct cpumask > > *cpus, > > cpumask_clear_cpu(smp_processor_id(), to_cpumask(args->mask)); > > > > args->op.cmd = MMUEXT_TLB_FLUSH_MULTI; > > - if (start != TLB_FLUSH_ALL && (end - start) <= PAGE_SIZE) { > > + if (end != TLB_FLUSH_ALL && (end - start) <= PAGE_SIZE) { > > args->op.cmd = MMUEXT_INVLPG_MULTI; > > args->op.arg1.linear_addr = start; > > } > > -- > > 1.7.5.4 > > > > . > > >
| |