mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	 3d3800b4f7
			
		
	
	
		3d3800b4f7
		
	
	
	
	
		
			
			rv_reactor has a reference counter to ensure it is not removed while monitors are still using it. However, this is futile, as __exit functions are not expected to fail and will proceed normally despite rv_unregister_reactor() returning an error. At the moment, reactors do not support being built as modules, therefore they are never removed and the reference counters are not necessary. If we support building RV reactors as modules in the future, kernel module's centralized facilities such as try_module_get(), module_put() or MODULE_SOFTDEP should be used instead of this custom implementation. Remove this reference counter. Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/bb946398436a5e17fb0f5b842ef3313c02291852.1753378331.git.namcao@linutronix.de Reviewed-by: Gabriele Monaco <gmonaco@redhat.com> Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #include <linux/mutex.h>
 | |
| 
 | |
| struct rv_interface {
 | |
| 	struct dentry		*root_dir;
 | |
| 	struct dentry		*monitors_dir;
 | |
| };
 | |
| 
 | |
| #include "../trace.h"
 | |
| #include <linux/tracefs.h>
 | |
| #include <linux/rv.h>
 | |
| 
 | |
| #define RV_MODE_WRITE			TRACE_MODE_WRITE
 | |
| #define RV_MODE_READ			TRACE_MODE_READ
 | |
| 
 | |
| #define rv_create_dir			tracefs_create_dir
 | |
| #define rv_create_file			tracefs_create_file
 | |
| #define rv_remove			tracefs_remove
 | |
| 
 | |
| #define MAX_RV_MONITOR_NAME_SIZE	32
 | |
| #define MAX_RV_REACTOR_NAME_SIZE	32
 | |
| 
 | |
| extern struct mutex rv_interface_lock;
 | |
| extern struct list_head rv_monitors_list;
 | |
| 
 | |
| struct dentry *get_monitors_root(void);
 | |
| int rv_disable_monitor(struct rv_monitor *mon);
 | |
| int rv_enable_monitor(struct rv_monitor *mon);
 | |
| bool rv_is_container_monitor(struct rv_monitor *mon);
 | |
| bool rv_is_nested_monitor(struct rv_monitor *mon);
 | |
| 
 | |
| #ifdef CONFIG_RV_REACTORS
 | |
| int reactor_populate_monitor(struct rv_monitor *mon);
 | |
| int init_rv_reactors(struct dentry *root_dir);
 | |
| #else
 | |
| static inline int reactor_populate_monitor(struct rv_monitor *mon)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| static inline int init_rv_reactors(struct dentry *root_dir)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| #endif
 |