mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 20:42:39 +00:00 
			
		
		
		
	 1b6725dea7
			
		
	
	
		1b6725dea7
		
	
	
	
	
		
			
			Removed the __exit annotation of tfrc_lib_exit(), in order to suppress the following section mismatch messages: WARNING: net/dccp/dccp.o(.text+0xd9): Section mismatch in reference from the function ccid_cleanup_builtins() to the function .exit.text:tfrc_lib_exit() The function ccid_cleanup_builtins() references a function in an exit section. Often the function tfrc_lib_exit() has valid usage outside the exit section and the fix is to remove the __exit annotation of tfrc_lib_exit. WARNING: net/dccp/dccp.o(.init.text+0x48): Section mismatch in reference from the function ccid_initialize_builtins() to the function .exit.text:tfrc_lib_exit() The function __init ccid_initialize_builtins() references a function __exit tfrc_lib_exit(). This is often seen when error handling in the init function uses functionality in the exit path. The fix is often to remove the __exit annotation of tfrc_lib_exit() so it may be used outside an exit section. Signed-off-by: Leonardo Potenza <lpotenza@inwind.it> Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com> Acked-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			45 lines
		
	
	
		
			815 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			815 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * TFRC library initialisation
 | |
|  *
 | |
|  * Copyright (c) 2007 The University of Aberdeen, Scotland, UK
 | |
|  * Copyright (c) 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
 | |
|  */
 | |
| #include "tfrc.h"
 | |
| 
 | |
| #ifdef CONFIG_IP_DCCP_TFRC_DEBUG
 | |
| int tfrc_debug;
 | |
| module_param(tfrc_debug, bool, 0644);
 | |
| MODULE_PARM_DESC(tfrc_debug, "Enable TFRC debug messages");
 | |
| #endif
 | |
| 
 | |
| int __init tfrc_lib_init(void)
 | |
| {
 | |
| 	int rc = tfrc_li_init();
 | |
| 
 | |
| 	if (rc)
 | |
| 		goto out;
 | |
| 
 | |
| 	rc = tfrc_tx_packet_history_init();
 | |
| 	if (rc)
 | |
| 		goto out_free_loss_intervals;
 | |
| 
 | |
| 	rc = tfrc_rx_packet_history_init();
 | |
| 	if (rc)
 | |
| 		goto out_free_tx_history;
 | |
| 	return 0;
 | |
| 
 | |
| out_free_tx_history:
 | |
| 	tfrc_tx_packet_history_exit();
 | |
| out_free_loss_intervals:
 | |
| 	tfrc_li_exit();
 | |
| out:
 | |
| 	return rc;
 | |
| }
 | |
| 
 | |
| void tfrc_lib_exit(void)
 | |
| {
 | |
| 	tfrc_rx_packet_history_exit();
 | |
| 	tfrc_tx_packet_history_exit();
 | |
| 	tfrc_li_exit();
 | |
| }
 |