mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	tracing: fix oops in tracepoint_update_probe_range()
Change this crash: BUG: unable to handle kernel NULL pointer dereference at (null) IP: [<ffffffff8107d4de>] tracepoint_update_probe_range+0x1f/0x9b PGD 13d5fb067 PUD 13d688067 PMD 0 Oops: 0000 [#1] SMP To a more debuggable WARN_ONCE(). Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <1237394936.3132.1.camel@localhost.localdomain> [ moved the check outside the lock and added a WARN_ON(). ] Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									4903620034
								
							
						
					
					
						commit
						09933a108e
					
				
					 1 changed files with 7 additions and 2 deletions
				
			
		| 
						 | 
					@ -272,12 +272,17 @@ static void disable_tracepoint(struct tracepoint *elem)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Updates the probe callback corresponding to a range of tracepoints.
 | 
					 * Updates the probe callback corresponding to a range of tracepoints.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void tracepoint_update_probe_range(struct tracepoint *begin,
 | 
					void
 | 
				
			||||||
	struct tracepoint *end)
 | 
					tracepoint_update_probe_range(struct tracepoint *begin, struct tracepoint *end)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct tracepoint *iter;
 | 
						struct tracepoint *iter;
 | 
				
			||||||
	struct tracepoint_entry *mark_entry;
 | 
						struct tracepoint_entry *mark_entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!begin) {
 | 
				
			||||||
 | 
							WARN_ON_ONCE(1);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mutex_lock(&tracepoints_mutex);
 | 
						mutex_lock(&tracepoints_mutex);
 | 
				
			||||||
	for (iter = begin; iter < end; iter++) {
 | 
						for (iter = begin; iter < end; iter++) {
 | 
				
			||||||
		mark_entry = get_tracepoint(iter->name);
 | 
							mark_entry = get_tracepoint(iter->name);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue