forked from mirrors/linux
		
	mm/page_poison.c: replace bool variable with static key
Variable 'want_page_poisoning' is a switch deciding if page poisoning should be enabled. This patch changes it to be static key. Signed-off-by: Mateusz Nosek <mateusznosek0@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Oscar Salvador <OSalvador@suse.com> Link: https://lkml.kernel.org/r/20200921152931.938-1-mateusznosek0@gmail.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									b94e02822d
								
							
						
					
					
						commit
						11c9c7edae
					
				
					 1 changed files with 15 additions and 5 deletions
				
			
		| 
						 | 
					@ -8,13 +8,23 @@
 | 
				
			||||||
#include <linux/ratelimit.h>
 | 
					#include <linux/ratelimit.h>
 | 
				
			||||||
#include <linux/kasan.h>
 | 
					#include <linux/kasan.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool want_page_poisoning __read_mostly;
 | 
					static DEFINE_STATIC_KEY_FALSE_RO(want_page_poisoning);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int __init early_page_poison_param(char *buf)
 | 
					static int __init early_page_poison_param(char *buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!buf)
 | 
						int ret;
 | 
				
			||||||
		return -EINVAL;
 | 
						bool tmp;
 | 
				
			||||||
	return strtobool(buf, &want_page_poisoning);
 | 
					
 | 
				
			||||||
 | 
						ret = strtobool(buf, &tmp);
 | 
				
			||||||
 | 
						if (ret)
 | 
				
			||||||
 | 
							return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (tmp)
 | 
				
			||||||
 | 
							static_branch_enable(&want_page_poisoning);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							static_branch_disable(&want_page_poisoning);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
early_param("page_poison", early_page_poison_param);
 | 
					early_param("page_poison", early_page_poison_param);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +41,7 @@ bool page_poisoning_enabled(void)
 | 
				
			||||||
	 * Page poisoning is debug page alloc for some arches. If
 | 
						 * Page poisoning is debug page alloc for some arches. If
 | 
				
			||||||
	 * either of those options are enabled, enable poisoning.
 | 
						 * either of those options are enabled, enable poisoning.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	return (want_page_poisoning ||
 | 
						return (static_branch_unlikely(&want_page_poisoning) ||
 | 
				
			||||||
		(!IS_ENABLED(CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC) &&
 | 
							(!IS_ENABLED(CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC) &&
 | 
				
			||||||
		debug_pagealloc_enabled()));
 | 
							debug_pagealloc_enabled()));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue