From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752468AbcEKTzv (ORCPT ); Wed, 11 May 2016 15:55:51 -0400 Received: from relay1.sgi.com ([192.48.180.66]:41642 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751824AbcEKTzs (ORCPT ); Wed, 11 May 2016 15:55:48 -0400 From: Alex Thorlton To: linux-kernel@vger.kernel.org Cc: Alex Thorlton , Dimitri Sivanich , Russ Anderson , Mike Travis , Matt Fleming , Borislav Petkov , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, linux-efi@vger.kernel.org Subject: [PATCH 2/2] Fix efi_call Date: Wed, 11 May 2016 14:55:45 -0500 Message-Id: <1462996545-98387-3-git-send-email-athorlton@sgi.com> X-Mailer: git-send-email 1.8.5.6 In-Reply-To: <1462996545-98387-1-git-send-email-athorlton@sgi.com> References: <1462996545-98387-1-git-send-email-athorlton@sgi.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The efi_call assembly code has a slight error that prevents us from using arguments 7 and higher, which will be passed in on the stack. mov (%rsp), %rax mov 8(%rax), %rax ... mov %rax, 40(%rsp) This code goes and grabs the return address for the current stack frame, and puts it on the stack, next the 5th argument for the EFI runtime call. Considering the fact that having the return address in that position on the stack makes no sense, I'm guessing that the intent of this code was actually to grab an argument off the stack frame for this call and place it into the frame for the next one. The small change to that offset (i.e. 8(%rax) to 16(%rax)) ensures that we grab the 7th argument off the stack, and pass it as the 6th argument to the EFI runtime function that we're about to call. This change gets our EFI runtime calls that need to pass more than 6 arguments working again. Signed-off-by: Alex Thorlton Cc: Dimitri Sivanich Cc: Russ Anderson Cc: Mike Travis Cc: Matt Fleming Cc: Borislav Petkov Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: x86@kernel.org Cc: linux-efi@vger.kernel.org --- arch/x86/platform/efi/efi_stub_64.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S index 92723ae..62938ff 100644 --- a/arch/x86/platform/efi/efi_stub_64.S +++ b/arch/x86/platform/efi/efi_stub_64.S @@ -43,7 +43,7 @@ ENTRY(efi_call) FRAME_BEGIN SAVE_XMM mov (%rsp), %rax - mov 8(%rax), %rax + mov 16(%rax), %rax subq $48, %rsp mov %r9, 32(%rsp) mov %rax, 40(%rsp) -- 1.8.5.6