lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 7 Mar 2008 19:19:43 +0100
From:	Sam Ravnborg <sam@...nborg.org>
To:	Andi Kleen <andi@...stfloor.org>
Cc:	linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: Re: [PATCH] [4/13] Prepare page_alloc for the maskable allocator

Hi Andi.

> Index: linux/mm/internal.h
> ===================================================================
> --- linux.orig/mm/internal.h
> +++ linux/mm/internal.h
> @@ -12,6 +12,7 @@
>  #define __MM_INTERNAL_H
>  
>  #include <linux/mm.h>
> +#include <linux/memcontrol.h>
>  
>  static inline void set_page_count(struct page *page, int v)
>  {
> @@ -48,6 +49,72 @@ static inline unsigned long page_order(s
>  	return page_private(page);
>  }
>  
> +extern void bad_page(struct page *page);
> +
> +static inline int free_pages_check(struct page *page, unsigned long addflags)
> +{
> +	if (unlikely(page_mapcount(page) |
> +		(page->mapping != NULL)  |
> +		(page_get_page_cgroup(page) != NULL) |
> +		(page_count(page) != 0)  |
> +		(page->flags & (
> +			addflags |
> +			1 << PG_lru	|
> +			1 << PG_private |
> +			1 << PG_locked	|
> +			1 << PG_active	|
> +			1 << PG_slab	|
> +			1 << PG_swapcache |
> +			1 << PG_writeback |
> +			1 << PG_reserved |
> +			1 << PG_buddy))))
> +		bad_page(page);
> +	if (PageDirty(page))
> +		__ClearPageDirty(page);
> +	/*
> +	 * For now, we report if PG_reserved was found set, but do not
> +	 * clear it, and do not free the page.  But we shall soon need
> +	 * to do more, for when the ZERO_PAGE count wraps negative.
> +	 */
> +	return PageReserved(page);
> +}
Looks a bit too big for an inline in a header (~9 lines of code)?

> +
> +/* Set up a struc page for business during allocation */
> +static inline int page_prep_struct(struct page *page)
> +{
> +	if (unlikely(page_mapcount(page) |
> +		(page->mapping != NULL)  |
> +		(page_get_page_cgroup(page) != NULL) |
> +		(page_count(page) != 0)  |
> +		(page->flags & (
> +			1 << PG_lru	|
> +			1 << PG_private	|
> +			1 << PG_locked	|
> +			1 << PG_active	|
> +			1 << PG_dirty	|
> +			1 << PG_slab    |
> +			1 << PG_swapcache |
> +			1 << PG_writeback |
> +			1 << PG_reserved |
> +			1 << PG_buddy))))
> +		bad_page(page);
> +
> +	/*
> +	 * For now, we report if PG_reserved was found set, but do not
> +	 * clear it, and do not allocate the page: as a safety net.
> +	 */
> +	if (PageReserved(page))
> +		return 1;
> +
> +	page->flags &= ~(1 << PG_uptodate | 1 << PG_error | 1 << PG_readahead |
> +			1 << PG_referenced | 1 << PG_arch_1 |
> +			1 << PG_owner_priv_1 | 1 << PG_mappedtodisk);
> +	set_page_private(page, 0);
> +	set_page_refcounted(page);
> +
> +	return 0;
> +}
Again - looks too big to inline..

But for both I do not know where they are used and how often.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ