diff mbox series

KVM: selftests: Make rseq compatible with versions prior to glibc-2.30

Message ID 20220907155510.968666-1-liam.merwick@oracle.com (mailing list archive)
State Accepted
Commit 561cafebb2cf97b0927b4fb0eba22de6200f682e
Headers show
Series KVM: selftests: Make rseq compatible with versions prior to glibc-2.30 | expand

Commit Message

Liam Merwick Sept. 7, 2022, 3:55 p.m. UTC
The fix for commit e923b0537d28 ("KVM: selftests: Fix target thread to be migrated in rseq_test")
added a call to gettid() which was only added to glibc-2.30 and fails to
compile with older glibc versions.

rseq_test.c: In function 'main':
rseq_test.c:230:33: warning: implicit declaration of function 'gettid'; did you mean 'getgid'? [-Wimplicit-function-declaration]
          (void *)(unsigned long)gettid());
                                 ^~~~~~
                                 getgid

Switch the call to syscall(SYS_gettid) which was the original advice in the
gettid(2) NOTES section and which works with both new and older glibc versions.

Fixes: e923b0537d28 ("KVM: selftests: Fix target thread to be migrated in rseq_test")
Cc: stable@vger.kernel.org # v5.15
Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
---

Verified with glibc-2.28 and glibc-2.34 and ensured test case from e923b0537d28 still passes.

 tools/testing/selftests/kvm/rseq_test.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Sean Christopherson Sept. 7, 2022, 4 p.m. UTC | #1
On Wed, Sep 07, 2022, Liam Merwick wrote:
> The fix for commit e923b0537d28 ("KVM: selftests: Fix target thread to be migrated in rseq_test")
> added a call to gettid() which was only added to glibc-2.30 and fails to
> compile with older glibc versions.
> 
> rseq_test.c: In function 'main':
> rseq_test.c:230:33: warning: implicit declaration of function 'gettid'; did you mean 'getgid'? [-Wimplicit-function-declaration]
>           (void *)(unsigned long)gettid());
>                                  ^~~~~~
>                                  getgid
> 
> Switch the call to syscall(SYS_gettid) which was the original advice in the
> gettid(2) NOTES section and which works with both new and older glibc versions.
> 
> Fixes: e923b0537d28 ("KVM: selftests: Fix target thread to be migrated in rseq_test")
> Cc: stable@vger.kernel.org # v5.15
> Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
> ---
> 
> Verified with glibc-2.28 and glibc-2.34 and ensured test case from e923b0537d28 still passes.
> 
>  tools/testing/selftests/kvm/rseq_test.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selftests/kvm/rseq_test.c
> index fac248a43666..6f88da7e60be 100644
> --- a/tools/testing/selftests/kvm/rseq_test.c
> +++ b/tools/testing/selftests/kvm/rseq_test.c
> @@ -227,7 +227,7 @@ int main(int argc, char *argv[])
>  	ucall_init(vm, NULL);
>  
>  	pthread_create(&migration_thread, NULL, migration_worker,
> -		       (void *)(unsigned long)gettid());
> +		       (void *)(unsigned long)syscall(SYS_gettid));

This exact fix was already posted[*], but we rat-holed a bit on coming up with an
elegant solution and the patch never got applied.  I'll poke that thread to see if
Paolo wants to take it for 6.0.

[*] https://lore.kernel.org/all/20220802071240.84626-1-cloudliang@tencent.com
diff mbox series

Patch

diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selftests/kvm/rseq_test.c
index fac248a43666..6f88da7e60be 100644
--- a/tools/testing/selftests/kvm/rseq_test.c
+++ b/tools/testing/selftests/kvm/rseq_test.c
@@ -227,7 +227,7 @@  int main(int argc, char *argv[])
 	ucall_init(vm, NULL);
 
 	pthread_create(&migration_thread, NULL, migration_worker,
-		       (void *)(unsigned long)gettid());
+		       (void *)(unsigned long)syscall(SYS_gettid));
 
 	for (i = 0; !done; i++) {
 		vcpu_run(vcpu);