that are, not this version ..

this is the BAD:
----8<----
 From [EMAIL PROTECTED] Mon Dec 17 16:32:25 2007
   2 From: Christoph Lameter <[EMAIL PROTECTED]>
   3 Date: Mon, 17 Dec 2007 16:20:27 -0800
   4 Subject: quicklist: Set tlb->need_flush if pages are remaining in
quicklist 0
   5 To: [EMAIL PROTECTED]
   6 Cc: [EMAIL PROTECTED], [EMAIL PROTECTED],
[EMAIL PROTECTED], [EMAIL PROTECTED]
   7 Message-ID: <[EMAIL PROTECTED]>
   8
   9
  10 From: Christoph Lameter <[EMAIL PROTECTED]>
  11
  12 patch 421d99193537a6522aac2148286f08792167d5fd in mainline.
  13
  14 This ensures that the quicklists are drained. Otherwise draining may only
  15 occur when the processor reaches an idle state.
  16
  17 Fixes fatal leakage of pgd_t's on 2.6.22 and later.
  18
  19 Signed-off-by: Christoph Lameter <[EMAIL PROTECTED]>
  20 Reported-by: Dhaval Giani <[EMAIL PROTECTED]>
  21 Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
  22 Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
  23 Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
  24
  25
  26 ---
  27  include/asm-generic/tlb.h |    4 ++++
  28  1 file changed, 4 insertions(+)
  29
  30 --- a/include/asm-generic/tlb.h
  31 +++ b/include/asm-generic/tlb.h
  32 @@ -14,6 +14,7 @@
  33  #define _ASM_GENERIC__TLB_H
  34
  35  #include <linux/swap.h>
  36 +#include <linux/quicklist.h>
  37  #include <asm/pgalloc.h>
  38  #include <asm/tlbflush.h>
  39
  40 @@ -85,6 +86,9 @@ tlb_flush_mmu(struct mmu_gather *tlb, un
  41  static inline void
  42  tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start,
unsigned long end)
  43  {
  44 +#ifdef CONFIG_QUICKLIST
  45 +       tlb->need_flush += &__get_cpu_var(quicklist)[0].nr_pages != 0;
  46 +#endif
  47         tlb_flush_mmu(tlb, start, end);
  48
  49         /* keep the page table cache within bounds
----8<----

On 2/5/08, Greg KH <[EMAIL PROTECTED]> wrote:
> On Tue, Feb 05, 2008 at 04:33:03PM +0530, Dhaval Giani wrote:
> > On Tue, Feb 05, 2008 at 02:07:37AM -0800, Andrew Morton wrote:
> > > On Thu, 31 Jan 2008 13:53:05 +0100 Claude Frantz
> <[EMAIL PROTECTED]> wrote:
> > >
> > > > Hello !
> > > >
> > > > I'm faced to a problem where the OOM-killer is invoked but I cannot
> find
> > > > the reason why. The machine is rather powerfull, the load is very
> moderate,
> > > > the disk swap space is nearly unused. The only strange observation
> which
> > > > appears to me is the slow but progressive decreasing of kbbuffers
> during
> > > > many hours.
> > > >
> > > > Can you help me to diagnose the problem and to find a good solution ?
> > > >
> > > > ...
> > > >
> > > > Jan 28 03:50:49 toaster kernel: 177466 pages slab
> > > > Jan 28 03:50:49 toaster kernel: 1915 pages pagetables
> > > > Jan 28 03:50:49 toaster kernel: Out of memory: kill process 10859
> (amavisd) score 36218 or a child
> > > > Jan 28 03:50:49 toaster kernel: Killed process 19146 (amavisd)
> > >
> > > slab.  Maybe you've been bitten by the quicklist leak.  If you're able
> to
> > > patch your kernel then please try this fix:
> > >
> > > commit 96990a4ae979df9e235d01097d6175759331e88c
> > > Author: Christoph Lameter <[EMAIL PROTECTED]>
> > > Date:   Mon Jan 14 00:55:14 2008 -0800
> > >
> > >     quicklists: Only consider memory that can be used with GFP_KERNEL
> > >
> > >     Quicklists calculates the size of the quicklists based on the number
> of
> > >     free pages.  This must be the number of free pages that can be
> allocated
> > >     with GFP_KERNEL.  node_page_state() includes the pages in
> ZONE_HIGHMEM and
> > >     ZONE_MOVABLE which may lead the quicklists to become too large
> causing OOM.
> > >
> > >     Signed-off-by: Christoph Lameter <[EMAIL PROTECTED]>
> > >     Tested-by: Dhaval Giani <[EMAIL PROTECTED]>
> > >     Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
> > >     Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
> > >
> > > diff --git a/mm/quicklist.c b/mm/quicklist.c
> > > index ae8189c..3f703f7 100644
> > > --- a/mm/quicklist.c
> > > +++ b/mm/quicklist.c
> > > @@ -26,9 +26,17 @@ DEFINE_PER_CPU(struct quicklist,
> quicklist)[CONFIG_NR_QUICK];
> > >  static unsigned long max_pages(unsigned long min_pages)
> > >  {
> > >   unsigned long node_free_pages, max;
> > > + struct zone *zones = NODE_DATA(numa_node_id())->node_zones;
> > > +
> > > + node_free_pages =
> > > +#ifdef CONFIG_ZONE_DMA
> > > +         zone_page_state(&zones[ZONE_DMA], NR_FREE_PAGES) +
> > > +#endif
> > > +#ifdef CONFIG_ZONE_DMA32
> > > +         zone_page_state(&zones[ZONE_DMA32], NR_FREE_PAGES) +
> > > +#endif
> > > +         zone_page_state(&zones[ZONE_NORMAL], NR_FREE_PAGES);
> > >
> > > - node_free_pages = node_page_state(numa_node_id(),
> > > -                 NR_FREE_PAGES);
> > >   max = node_free_pages / FRACTION_OF_NODE_MEM;
> > >   return max(max, min_pages);
> > >  }
> > >
> > >
> > > I note that this didn't have the [EMAIL PROTECTED] cc.  Christoph, did
> we
> > > deliberately decide not to backport?
> > >
> >
> > According to
> > http://archive.netbsd.se/?ml=linux-stable-commits&a=2008-01&m=6134301 ,
> > its been added to the stable tree. I remember asking Greg to add it.
>
> And then Christoph told me to remove it...
>
> thanks,
>
> greg k-h
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>


-- 
Thanks,
Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to