Re: [RFC][PATCH] swsusp: do not use higher order memory allocations on suspend

From: Rafael J. Wysocki
Date: Mon Jan 31 2005 - 13:53:49 EST


On Monday, 31 of January 2005 19:20, Pavel Machek wrote:
> Hi!
>
> > > static inline void free_pagedir(struct pbe *pblist)
> > > {
> > > struct pbe *pbe;
> > >
> > > while (pblist) {
> > > pbe = pblist + PB_PAGE_SKIP;
> > > pblist = pbe->next;
> > > free_page((unsigned long)pbe);
> > > }
> > > pr_debug("free_pagedir(): done\n");
> > > }
> > >
> > > Should not you free_page(pblist) instead? This passes address in
> > > middle of page to free_page, that seems wrong.
> >
> > Certainly. It should be something like that:
> >
> > while (pblist) {
> > pbe = pblist;
> > pblist = (pbe + PB_PAGE_SKIP)->next;
> > free_page((unsigned long)pbe);
> > }
>
> Hmm, I see, my "fix" leaks one page of memory during each
> suspend... I've fixed it properly now and will eventually propagete it
> back.
>
> This should be right..
>
> while (pblist) {
> pbe = (pblist + PB_PAGE_SKIP)->next;
> free_page((unsigned long)pblist);
> pblist = pbe;
> }

Sure it is.

Greets,
RJW


--
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to.
-- Lewis Carroll "Alice's Adventures in Wonderland"
-
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/