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;
        }


                                                                Pavel

-- 
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
-
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