mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Add BTI landing pads to the AArch64 SHA2 assembly
The Arm Branch Target Identification (BTI) extension guards against branching to an unintended instruction. To support BTI add the landing pad instructions to the SHA2 functions. These are from the hint space so are a nop on hardware that lacks BTI support or if BTI isn't enabled. Reviewed-by: Allan Jude <allan@klarasystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Signed-off-by: Andrew Turner <andrew.turner4@arm.com> Closes #14862 Closes #15339
This commit is contained in:
		
							parent
							
								
									8015e2ea66
								
							
						
					
					
						commit
						1611b8e56e
					
				| @ -49,6 +49,7 @@ | |||||||
| .type	zfs_sha256_block_armv7,%function | .type	zfs_sha256_block_armv7,%function | ||||||
| .align	6
 | .align	6
 | ||||||
| zfs_sha256_block_armv7: | zfs_sha256_block_armv7: | ||||||
|  | 	hint	#34					// bti c | ||||||
| 	stp	x29,x30,[sp,#-128]! | 	stp	x29,x30,[sp,#-128]! | ||||||
| 	add	x29,sp,#0 | 	add	x29,sp,#0 | ||||||
| 
 | 
 | ||||||
| @ -1015,6 +1016,7 @@ zfs_sha256_block_armv7: | |||||||
| .type	zfs_sha256_block_armv8,%function | .type	zfs_sha256_block_armv8,%function | ||||||
| .align	6
 | .align	6
 | ||||||
| zfs_sha256_block_armv8: | zfs_sha256_block_armv8: | ||||||
|  | 	hint		#34				// bti c | ||||||
| .Lv8_entry: | .Lv8_entry: | ||||||
| 	stp		x29,x30,[sp,#-16]! | 	stp		x29,x30,[sp,#-16]! | ||||||
| 	add		x29,sp,#0 | 	add		x29,sp,#0 | ||||||
| @ -1155,6 +1157,7 @@ zfs_sha256_block_armv8: | |||||||
| .type	zfs_sha256_block_neon,%function | .type	zfs_sha256_block_neon,%function | ||||||
| .align	4
 | .align	4
 | ||||||
| zfs_sha256_block_neon: | zfs_sha256_block_neon: | ||||||
|  | 	hint	#34					// bti c | ||||||
| .Lneon_entry: | .Lneon_entry: | ||||||
| 	stp	x29, x30, [sp, #-16]! | 	stp	x29, x30, [sp, #-16]! | ||||||
| 	mov	x29, sp | 	mov	x29, sp | ||||||
|  | |||||||
| @ -73,6 +73,7 @@ | |||||||
| .type	zfs_sha512_block_armv7,%function | .type	zfs_sha512_block_armv7,%function | ||||||
| .align	6
 | .align	6
 | ||||||
| zfs_sha512_block_armv7: | zfs_sha512_block_armv7: | ||||||
|  | 	hint	#34					// bti c | ||||||
| 	stp	x29,x30,[sp,#-128]! | 	stp	x29,x30,[sp,#-128]! | ||||||
| 	add	x29,sp,#0 | 	add	x29,sp,#0 | ||||||
| 
 | 
 | ||||||
| @ -1040,6 +1041,7 @@ zfs_sha512_block_armv7: | |||||||
| .type	zfs_sha512_block_armv8,%function | .type	zfs_sha512_block_armv8,%function | ||||||
| .align	6
 | .align	6
 | ||||||
| zfs_sha512_block_armv8: | zfs_sha512_block_armv8: | ||||||
|  | 	hint		#34				// bti c | ||||||
| .Lv8_entry: | .Lv8_entry: | ||||||
| 	// Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later | 	// Armv8.3-A PAuth: even though x30 is pushed to stack it is not popped later | ||||||
| 	stp		x29,x30,[sp,#-16]! | 	stp		x29,x30,[sp,#-16]! | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Andrew Turner
						Andrew Turner