Re: [PATCH] KVM: selftests: Make rseq compatible with versions prior to glibc-2.30

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx # v5.15
> Signed-off-by: Liam Merwick <liam.merwick@xxxxxxxxxx>
> ---
> 
> 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@xxxxxxxxxxx



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux