forked from mirrors/linux
		
	Certain architecture specific operating modes (e.g., in powerpc machine check handler that is unable to access vmalloc memory), the search_exception_tables cannot be called because it also searches the module exception tables if entry is not found in the kernel exception table. Signed-off-by: Santosh Sivaraj <santosh@fossix.org> Reviewed-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20190820081352.8641-5-santosh@fossix.org
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
#ifndef _LINUX_EXTABLE_H
 | 
						|
#define _LINUX_EXTABLE_H
 | 
						|
 | 
						|
#include <linux/stddef.h>	/* for NULL */
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
struct module;
 | 
						|
struct exception_table_entry;
 | 
						|
 | 
						|
const struct exception_table_entry *
 | 
						|
search_extable(const struct exception_table_entry *base,
 | 
						|
	       const size_t num,
 | 
						|
	       unsigned long value);
 | 
						|
void sort_extable(struct exception_table_entry *start,
 | 
						|
		  struct exception_table_entry *finish);
 | 
						|
void sort_main_extable(void);
 | 
						|
void trim_init_extable(struct module *m);
 | 
						|
 | 
						|
/* Given an address, look for it in the exception tables */
 | 
						|
const struct exception_table_entry *search_exception_tables(unsigned long add);
 | 
						|
const struct exception_table_entry *
 | 
						|
search_kernel_exception_table(unsigned long addr);
 | 
						|
 | 
						|
#ifdef CONFIG_MODULES
 | 
						|
/* For extable.c to search modules' exception tables. */
 | 
						|
const struct exception_table_entry *search_module_extables(unsigned long addr);
 | 
						|
#else
 | 
						|
static inline const struct exception_table_entry *
 | 
						|
search_module_extables(unsigned long addr)
 | 
						|
{
 | 
						|
	return NULL;
 | 
						|
}
 | 
						|
#endif /*CONFIG_MODULES*/
 | 
						|
 | 
						|
#endif /* _LINUX_EXTABLE_H */
 |