mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	x86/entry/vm86: Clean up saved_fs/gs
There is no need to save FS and non-lazy GS outside the 32-bit regs. Lazy GS still needs to be saved because it wasn't saved on syscall entry. Save it in the gs slot of regs32, which is present but unused. Signed-off-by: Brian Gerst <brgerst@gmail.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1437354550-25858-2-git-send-email-brgerst@gmail.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									bf9f2ee28d
								
							
						
					
					
						commit
						0233606ce5
					
				
					 2 changed files with 2 additions and 6 deletions
				
			
		|  | @ -410,8 +410,6 @@ struct thread_struct { | |||
| 	unsigned long		v86flags; | ||||
| 	unsigned long		v86mask; | ||||
| 	unsigned long		saved_sp0; | ||||
| 	unsigned int		saved_fs; | ||||
| 	unsigned int		saved_gs; | ||||
| #endif | ||||
| 	/* IO permissions: */ | ||||
| 	unsigned long		*io_bitmap_ptr; | ||||
|  |  | |||
|  | @ -159,8 +159,7 @@ struct pt_regs *save_v86_state(struct kernel_vm86_regs *regs) | |||
| 
 | ||||
| 	ret = KVM86->regs32; | ||||
| 
 | ||||
| 	ret->fs = current->thread.saved_fs; | ||||
| 	set_user_gs(ret, current->thread.saved_gs); | ||||
| 	lazy_load_gs(ret->gs); | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
|  | @ -315,8 +314,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk | |||
|  */ | ||||
| 	info->regs32->ax = VM86_SIGNAL; | ||||
| 	tsk->thread.saved_sp0 = tsk->thread.sp0; | ||||
| 	tsk->thread.saved_fs = info->regs32->fs; | ||||
| 	tsk->thread.saved_gs = get_user_gs(info->regs32); | ||||
| 	lazy_save_gs(info->regs32->gs); | ||||
| 
 | ||||
| 	tss = &per_cpu(cpu_tss, get_cpu()); | ||||
| 	tsk->thread.sp0 = (unsigned long) &info->VM86_TSS_ESP0; | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Brian Gerst
						Brian Gerst