mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	kprobes: set kprobes_all_disarmed earlier to enable re-optimization.
In original code, the probed instruction doesn't get optimized after echo 0 > /sys/kernel/debug/kprobes/enabled echo 1 > /sys/kernel/debug/kprobes/enabled This is because original code checks kprobes_all_disarmed in optimize_kprobe(), but this flag is turned off after calling that function. Therefore, optimize_kprobe() will see kprobes_all_disarmed == true and doesn't do the optimization. This patch simply turns off kprobes_all_disarmed earlier to enable optimization. Signed-off-by: Wang Nan <wangnan0@huawei.com> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Ingo Molnar <mingo@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									5125991c9a
								
							
						
					
					
						commit
						977ad481b6
					
				
					 1 changed files with 6 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -2320,6 +2320,12 @@ static void arm_all_kprobes(void)
 | 
			
		|||
	if (!kprobes_all_disarmed)
 | 
			
		||||
		goto already_enabled;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * optimize_kprobe() called by arm_kprobe() checks
 | 
			
		||||
	 * kprobes_all_disarmed, so set kprobes_all_disarmed before
 | 
			
		||||
	 * arm_kprobe.
 | 
			
		||||
	 */
 | 
			
		||||
	kprobes_all_disarmed = false;
 | 
			
		||||
	/* Arming kprobes doesn't optimize kprobe itself */
 | 
			
		||||
	for (i = 0; i < KPROBE_TABLE_SIZE; i++) {
 | 
			
		||||
		head = &kprobe_table[i];
 | 
			
		||||
| 
						 | 
				
			
			@ -2328,7 +2334,6 @@ static void arm_all_kprobes(void)
 | 
			
		|||
				arm_kprobe(p);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	kprobes_all_disarmed = false;
 | 
			
		||||
	printk(KERN_INFO "Kprobes globally enabled\n");
 | 
			
		||||
 | 
			
		||||
already_enabled:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue