From: Thomas Huth <thuth@redhat.com>
To: kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>
Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
Subject: [kvm-unit-tests v2 PATCH] Fixes for the umip test
Date: Mon, 10 Feb 2020 15:35:14 +0100 [thread overview]
Message-ID: <20200210143514.5347-1-thuth@redhat.com> (raw)
When compiling umip.c with -O2 instead of -O1, there are currently
two problems. First, the compiler complains:
x86/umip.c: In function ‘do_ring3’:
x86/umip.c:162:37: error: array subscript 4096 is above array bounds of
‘unsigned char[4096]’ [-Werror=array-bounds]
[user_stack_top]"m"(user_stack[sizeof user_stack]),
~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
This can be fixed by initializing the stack to point to one of the last
bytes of the array instead.
The second problem is that some tests are failing - and this is due
to the fact that the GP_ASM macro uses inline asm without the "volatile"
keyword - so that the compiler reorders this code in certain cases
where it should not. Fix it by adding "volatile" here.
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
v2: Add parentheses and fix doubled whitespace as requested by Vitaly
x86/umip.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/x86/umip.c b/x86/umip.c
index 7eee294..339bea4 100644
--- a/x86/umip.c
+++ b/x86/umip.c
@@ -22,7 +22,8 @@ static void gp_handler(struct ex_regs *regs)
#define GP_ASM(stmt, in, clobber) \
- asm ("mov" W " $1f, %[expected_rip]\n\t" \
+ asm volatile ( \
+ "mov" W " $1f, %[expected_rip]\n\t" \
"movl $2f-1f, %[skip_count]\n\t" \
"1: " stmt "\n\t" \
"2: " \
@@ -159,7 +160,7 @@ static int do_ring3(void (*fn)(const char *), const char *arg)
: [ret] "=&a" (ret)
: [user_ds] "i" (USER_DS),
[user_cs] "i" (USER_CS),
- [user_stack_top]"m"(user_stack[sizeof user_stack]),
+ [user_stack_top]"m"(user_stack[sizeof(user_stack) - 2]),
[fn]"r"(fn),
[arg]"D"(arg),
[kernel_ds]"i"(KERNEL_DS),
--
2.18.1
next reply other threads:[~2020-02-10 14:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-10 14:35 Thomas Huth [this message]
2020-02-10 14:56 ` [kvm-unit-tests v2 PATCH] Fixes for the umip test Paolo Bonzini
2020-02-10 14:59 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200210143514.5347-1-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=vkuznets@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.