Message ID | 20220907155510.968666-1-liam.merwick@oracle.com |
---|---|
State | New |
Headers | show |
Series | KVM: selftests: Make rseq compatible with versions prior to glibc-2.30 | expand |
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 --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);
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(-)