ARM: 6489/1: thumb2: fix incorrect optimisation in usracc
Commit 8b592783 added a Thumb-2 variant of usracc which, when it is
called with \rept=2, calls usraccoff once with an offset of 0 and
secondly with a hard-coded offset of 4 in order to avoid incrementing
the pointer again. If \inc != 4 then we will store the data to the wrong
offset from \ptr. Luckily, the only caller that passes \rept=2 to this
function is __clear_user so we haven't been actively corrupting user data.
This patch fixes usracc to pass \inc instead of #4 to usraccoff
when it is called a second time.
Cc: <stable@kernel.org>
Reported-by: Tony Thompson <tony.thompson@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
	
	
This commit is contained in:
		
					parent
					
						
							
								8fbb97a2bc
							
						
					
				
			
			
				commit
				
					
						1142b71d85
					
				
			
		
					 1 changed files with 1 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -238,7 +238,7 @@
 | 
			
		|||
	@ Slightly optimised to avoid incrementing the pointer twice
 | 
			
		||||
	usraccoff \instr, \reg, \ptr, \inc, 0, \cond, \abort
 | 
			
		||||
	.if	\rept == 2
 | 
			
		||||
	usraccoff \instr, \reg, \ptr, \inc, 4, \cond, \abort
 | 
			
		||||
	usraccoff \instr, \reg, \ptr, \inc, \inc, \cond, \abort
 | 
			
		||||
	.endif
 | 
			
		||||
 | 
			
		||||
	add\cond \ptr, #\rept * \inc
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue