forked from mirrors/linux
		
	amdkfd: Disable support for 32-bit user processes
This patch checks if the process that opens the /dev/kfd device is 32-bit process. If so, it returns -EPERM and prints a warning message in dmesg. This is done to prevent 32-bit user processes from using amdkfd, and hence, HSA features. AMD's HSA userspace stack will also support only 64-bit processes on Linux. Reviewed-by: Alexey Skidanov <alexey.skidanov@amd.com> Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
This commit is contained in:
		
							parent
							
								
									7608867d0c
								
							
						
					
					
						commit
						a18069c132
					
				
					 1 changed files with 12 additions and 1 deletions
				
			
		|  | @ -102,15 +102,26 @@ struct device *kfd_chardev(void) | |||
| static int kfd_open(struct inode *inode, struct file *filep) | ||||
| { | ||||
| 	struct kfd_process *process; | ||||
| 	bool is_32bit_user_mode; | ||||
| 
 | ||||
| 	if (iminor(inode) != 0) | ||||
| 		return -ENODEV; | ||||
| 
 | ||||
| 	is_32bit_user_mode = is_compat_task(); | ||||
| 
 | ||||
| 	if (is_32bit_user_mode == true) { | ||||
| 		dev_warn(kfd_device, | ||||
| 			"Process %d (32-bit) failed to open /dev/kfd\n" | ||||
| 			"32-bit processes are not supported by amdkfd\n", | ||||
| 			current->pid); | ||||
| 		return -EPERM; | ||||
| 	} | ||||
| 
 | ||||
| 	process = kfd_create_process(current); | ||||
| 	if (IS_ERR(process)) | ||||
| 		return PTR_ERR(process); | ||||
| 
 | ||||
| 	process->is_32bit_user_mode = is_compat_task(); | ||||
| 	process->is_32bit_user_mode = is_32bit_user_mode; | ||||
| 
 | ||||
| 	dev_dbg(kfd_device, "process %d opened, compat mode (32 bit) - %d\n", | ||||
| 		process->pasid, process->is_32bit_user_mode); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Oded Gabbay
						Oded Gabbay