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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 7 Mar 2008 21:36:05 +0300
From:	Cyrill Gorcunov <gorcunov@...il.com>
To:	Sam Ravnborg <sam@...nborg.org>
Cc:	Andi Kleen <andi@...stfloor.org>, linux-kernel@...r.kernel.org,
	linux-mm@...ck.org
Subject: Re: [PATCH] [4/13] Prepare page_alloc for the maskable allocator

[Sam Ravnborg - Fri, Mar 07, 2008 at 07:19:43PM +0100]
| 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)?
| 

well, it will not be that big in compiled form 'cause in real it is

	page->flags & (addflags | (precompiled constant))

| > +
| > +/* 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/
| 
		- Cyrill -
--
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