Re: [PATCH] selftests: nci: Fix wrong size of status variables in nci_dev test

Thomas Huth <[email protected]>
Newsgroups dev.linux.lists.oe-linux-nfc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest
Message-ID <[email protected]>
On 10/07/2026 13.23, Thomas Huth wrote:
> From: Thomas Huth <[email protected]>
> 
> pthread_join() stores the thread's return value (a "void *", i.e.
> 8 bytes on 64 bit computers) into the address of "status", but the
> "status" variable is declared as "int" with only 4 bytes. The extra
> four bytes clobber whatever is adjacent on the stack, which could
> silently corrupt other local variables. Use "intptr_t" to declare
> the "status" variables with the correct size.
> 
> Signed-off-by: Thomas Huth <[email protected]>
> ---
>   tools/testing/selftests/nci/nci_dev.c | 13 +++++++------
>   1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/testing/selftests/nci/nci_dev.c b/tools/testing/selftests/nci/nci_dev.c
> index 312f84ee0444f..4e7a5856f7ea3 100644
> --- a/tools/testing/selftests/nci/nci_dev.c
> +++ b/tools/testing/selftests/nci/nci_dev.c
> @@ -6,6 +6,7 @@
>    * Test code for nci
>    */
>   
> +#include <stdint.h>
>   #include <stdlib.h>
>   #include <errno.h>
>   #include <string.h>
> @@ -404,7 +405,7 @@ FIXTURE_SETUP(NCI)
>   	struct msgtemplate msg;
>   	pthread_t thread_t;
>   	__u32 event_group;
> -	int status;
> +	intptr_t status;
>   	int rc;
>   
>   	self->open_state = false;
> @@ -497,7 +498,7 @@ static void *virtual_deinit_v2(void *data)
>   FIXTURE_TEARDOWN(NCI)
>   {
>   	pthread_t thread_t;
> -	int status;
> +	intptr_t status;
>   	int rc;
>   
>   	if (self->open_state) {
> @@ -585,7 +586,7 @@ int start_polling(int dev_idx, int proto, int virtual_fd, int sd, int fid, int p
>   	void *nla_start_poll_data[2] = {&dev_idx, &proto};
>   	int nla_start_poll_len[2] = {4, 4};
>   	pthread_t thread_t;
> -	int status;
> +	intptr_t status;
>   	int rc;
>   
>   	rc = pthread_create(&thread_t, NULL, virtual_poll_start,
> @@ -605,7 +606,7 @@ int start_polling(int dev_idx, int proto, int virtual_fd, int sd, int fid, int p
>   int stop_polling(int dev_idx, int virtual_fd, int sd, int fid, int pid)
>   {
>   	pthread_t thread_t;
> -	int status;
> +	intptr_t status;
>   	int rc;
>   
>   	rc = pthread_create(&thread_t, NULL, virtual_poll_stop,
> @@ -816,7 +817,7 @@ int disconnect_tag(int nfc_sock, int virtual_fd)
>   {
>   	pthread_t thread_t;
>   	char buf[256];
> -	int status;
> +	intptr_t status;
>   	int len;
>   
>   	send(nfc_sock, &nci_t4t_select_cmd3[3], sizeof(nci_t4t_select_cmd3) - 3, 0);
> @@ -860,7 +861,7 @@ TEST_F(NCI, deinit)
>   {
>   	struct msgtemplate msg;
>   	pthread_t thread_t;
> -	int status;
> +	intptr_t status;
>   	int rc;
>   
>   	rc = get_nci_devid(self->sd, self->fid, self->pid, self->dev_idex,

Friendly ping!

  Thomas
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.