perf_events: Fix perf_event_attr layout
The miss-alignment of bp_addr created a 32bit hole, causing different structure packings on 32 and 64 bit machines. Fix that by moving __reserve_2 into that hole. Further, remove the useless struct and redundant __bp_reserve muck. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> LKML-Reference: <1260902591.8023.781.camel@laptop> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
					parent
					
						
							
								cdccc69003
							
						
					
				
			
			
				commit
				
					
						f13c12c634
					
				
			
		
					 2 changed files with 4 additions and 10 deletions
				
			
		|  | @ -211,17 +211,11 @@ struct perf_event_attr { | ||||||
| 		__u32		wakeup_watermark; /* bytes before wakeup   */ | 		__u32		wakeup_watermark; /* bytes before wakeup   */ | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	struct { /* Hardware breakpoint info */ | 	__u32			__reserved_2; | ||||||
|  | 
 | ||||||
| 	__u64			bp_addr; | 	__u64			bp_addr; | ||||||
| 	__u32			bp_type; | 	__u32			bp_type; | ||||||
| 	__u32			bp_len; | 	__u32			bp_len; | ||||||
| 		__u64		__bp_reserved_1; |  | ||||||
| 		__u64		__bp_reserved_2; |  | ||||||
| 	}; |  | ||||||
| 
 |  | ||||||
| 	__u32			__reserved_2; |  | ||||||
| 
 |  | ||||||
| 	__u64			__reserved_3; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  |  | ||||||
|  | @ -4564,7 +4564,7 @@ static int perf_copy_attr(struct perf_event_attr __user *uattr, | ||||||
| 	if (attr->type >= PERF_TYPE_MAX) | 	if (attr->type >= PERF_TYPE_MAX) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	if (attr->__reserved_1 || attr->__reserved_2 || attr->__reserved_3) | 	if (attr->__reserved_1 || attr->__reserved_2) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 
 | 
 | ||||||
| 	if (attr->sample_type & ~(PERF_SAMPLE_MAX-1)) | 	if (attr->sample_type & ~(PERF_SAMPLE_MAX-1)) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Peter Zijlstra
				Peter Zijlstra