Re: [PATCH] mm/page_alloc.c: fix a typo

Andrew Morton
2008-05-06T14:20:10Z

On Tue, 06 May 2008 17:50:31 +0800 Li Zefan <lizf@cn.fujitsu.com> wrote:

> Li Zefan wrote:
> > ---
>
> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
> ---
>
> Sorry for the noise, but the signed-off was eaten. :(
> Maybe I should leave a blank line before the signed-off.
>
> ---
>
> mm/page_alloc.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index bdd5c43..d0ba10d 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -303,7 +303,7 @@ static void destroy_compound_page(struct page *page, unsigned long order)
> for (i = 1; i < nr_pages; i++) {
> struct page *p = page + i;
>
> - if (unlikely(!PageTail(p) |
> + if (unlikely(!PageTail(p) ||
> (p->first_page != page)))
> bad_page(page);
> __ClearPageTail(p);

I have a vague memory that the "|" was deliberate. Most of the time,
"!PageTail" will be false so most of the time we won't take the first
branch so it's probably worth omitting it and always doing the pointer
comparison.

It's a somewhat dopey trick and shouldn't have been done without a comment.

otoh maybe it was a typo.