All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore
@ 2021-09-15  8:11 Ammar Faizi
  2021-09-15  8:11 ` [PATCH liburing 1/3] test/io_uring_setup: Don't use `__errno` as local variable name Ammar Faizi
  2021-09-15 12:41 ` [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore Jens Axboe
  0 siblings, 2 replies; 5+ messages in thread
From: Ammar Faizi @ 2021-09-15  8:11 UTC (permalink / raw)
  To: Jens Axboe; +Cc: io-uring

- Louvian reported build error (2 fixes from me).
- Add `/test/output` dir to .gitignore from me.

Ammar Faizi (3):
      test/io_uring_setup: Don't use `__errno` as local variable name
      test/send_recv: Use proper cast for (struct sockaddr *) argument
      .gitignore: add `/test/output/`

 .gitignore            |  1 +
 test/io_uring_setup.c | 10 +++++-----
 test/send_recv.c      |  2 +-
 3 files changed, 7 insertions(+), 6 deletions(-)
 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH liburing 1/3] test/io_uring_setup: Don't use `__errno` as local variable name
  2021-09-15  8:11 [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore Ammar Faizi
@ 2021-09-15  8:11 ` Ammar Faizi
  2021-09-15  8:11   ` [PATCH liburing 2/3] test/send_recv: Use proper cast for (struct sockaddr *) argument Ammar Faizi
  2021-09-15  8:11   ` [PATCH liburing 3/3] .gitignore: add `/test/output/` Ammar Faizi
  2021-09-15 12:41 ` [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore Jens Axboe
  1 sibling, 2 replies; 5+ messages in thread
From: Ammar Faizi @ 2021-09-15  8:11 UTC (permalink / raw)
  To: Jens Axboe; +Cc: io-uring, Ammar Faizi, Louvian Lyndal

This commit fixes build for armv8l.

On some systems, the macro `errno` is defined as
`#define errno (*__errno())`

It is clear that `__errno` is a global function on such systems.

The problem is, `io_uring_setup.c` uses `int __errno` as a local
variable, so it shadows the `__errno` function, result in the
following error:

```
       CC io_uring_setup
  io_uring_setup.c:116:12: error: called object type 'int' is not a function or function pointer
          __errno = errno;
                    ^~~~~
  /usr/include/errno.h:58:24: note: expanded from macro 'errno'
  #define errno (*__errno())
                  ~~~~~~~^
  1 error generated.
  make[1]: *** [Makefile:163: io_uring_setup] Error 1
  make[1]: *** Waiting for unfinished jobs....
```

Fix this by not using `__errno` as local variable name.

Reported-by: Louvian Lyndal <louvianlyndal@gmail.com>
Tested-by: Louvian Lyndal <louvianlyndal@gmail.com>
Signed-off-by: Ammar Faizi <ammarfaizi2@gmail.com>
---
 test/io_uring_setup.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/test/io_uring_setup.c b/test/io_uring_setup.c
index a0709a7..94b54fd 100644
--- a/test/io_uring_setup.c
+++ b/test/io_uring_setup.c
@@ -99,7 +99,7 @@ dump_resv(struct io_uring_params *p)
 int
 try_io_uring_setup(unsigned entries, struct io_uring_params *p, int expect, int error)
 {
-	int ret, __errno;
+	int ret, err;
 
 	printf("io_uring_setup(%u, %p), flags: %s, feat: %s, resv: %s, sq_thread_cpu: %u\n",
 	       entries, p, flags_string(p), features_string(p), dump_resv(p),
@@ -113,13 +113,13 @@ try_io_uring_setup(unsigned entries, struct io_uring_params *p, int expect, int
 			close(ret);
 		return 1;
 	}
-	__errno = errno;
-	if (expect == -1 && error != __errno) {
-		if (__errno == EPERM && geteuid() != 0) {
+	err = errno;
+	if (expect == -1 && error != err) {
+		if (err == EPERM && geteuid() != 0) {
 			printf("Needs root, not flagging as an error\n");
 			return 0;
 		}
-		printf("expected errno %d, got %d\n", error, __errno);
+		printf("expected errno %d, got %d\n", error, err);
 		return 1;
 	}
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH liburing 2/3] test/send_recv: Use proper cast for (struct sockaddr *) argument
  2021-09-15  8:11 ` [PATCH liburing 1/3] test/io_uring_setup: Don't use `__errno` as local variable name Ammar Faizi
@ 2021-09-15  8:11   ` Ammar Faizi
  2021-09-15  8:11   ` [PATCH liburing 3/3] .gitignore: add `/test/output/` Ammar Faizi
  1 sibling, 0 replies; 5+ messages in thread
From: Ammar Faizi @ 2021-09-15  8:11 UTC (permalink / raw)
  To: Jens Axboe; +Cc: io-uring, Ammar Faizi, Louvian Lyndal

This commit fixes build for armv8l.

Sometimes the compiler accepts (struct sockaddr_in *) to be passed to
(struct sockaddr *) without cast. But not all compilers agree with that.

Louvian found the following warning on armv8l:
```
  send_recv.c:203:24: warning: incompatible pointer types passing 'struct sockaddr_in *' to parameter of type 'const struct sockaddr *' [-Wincompatible-pointer-types]
          ret = connect(sockfd, &saddr, sizeof(saddr));
                                ^~~~~~
  /usr/include/sys/socket.h:308:59: note: passing argument to parameter '__addr' here
  __socketcall int connect(int __fd, const struct sockaddr* __addr, socklen_t __addr_length);
                                                            ^
  1 warning generated.
```

Fix this by casting the second argument to (struct sockaddr *).

Reported-by: Louvian Lyndal <louvianlyndal@gmail.com>
Tested-by: Louvian Lyndal <louvianlyndal@gmail.com>
Signed-off-by: Ammar Faizi <ammarfaizi2@gmail.com>
---
 test/send_recv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/send_recv.c b/test/send_recv.c
index 38ae27f..1ee0234 100644
--- a/test/send_recv.c
+++ b/test/send_recv.c
@@ -200,7 +200,7 @@ static int do_send(void)
 		return 1;
 	}
 
-	ret = connect(sockfd, &saddr, sizeof(saddr));
+	ret = connect(sockfd, (struct sockaddr *)&saddr, sizeof(saddr));
 	if (ret < 0) {
 		perror("connect");
 		return 1;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH liburing 3/3] .gitignore: add `/test/output/`
  2021-09-15  8:11 ` [PATCH liburing 1/3] test/io_uring_setup: Don't use `__errno` as local variable name Ammar Faizi
  2021-09-15  8:11   ` [PATCH liburing 2/3] test/send_recv: Use proper cast for (struct sockaddr *) argument Ammar Faizi
@ 2021-09-15  8:11   ` Ammar Faizi
  1 sibling, 0 replies; 5+ messages in thread
From: Ammar Faizi @ 2021-09-15  8:11 UTC (permalink / raw)
  To: Jens Axboe; +Cc: io-uring, Ammar Faizi

Signed-off-by: Ammar Faizi <ammarfaizi2@gmail.com>
---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index 0213bfa..45f3cde 100644
--- a/.gitignore
+++ b/.gitignore
@@ -131,6 +131,7 @@
 /test/submit-link-fail
 /test/exec-target
 /test/*.dmesg
+/test/output/
 
 config-host.h
 config-host.mak
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore
  2021-09-15  8:11 [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore Ammar Faizi
  2021-09-15  8:11 ` [PATCH liburing 1/3] test/io_uring_setup: Don't use `__errno` as local variable name Ammar Faizi
@ 2021-09-15 12:41 ` Jens Axboe
  1 sibling, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2021-09-15 12:41 UTC (permalink / raw)
  To: Ammar Faizi; +Cc: io-uring

On 9/15/21 2:11 AM, Ammar Faizi wrote:
> - Louvian reported build error (2 fixes from me).
> - Add `/test/output` dir to .gitignore from me.
> 
> Ammar Faizi (3):
>       test/io_uring_setup: Don't use `__errno` as local variable name
>       test/send_recv: Use proper cast for (struct sockaddr *) argument
>       .gitignore: add `/test/output/`
> 
>  .gitignore            |  1 +
>  test/io_uring_setup.c | 10 +++++-----
>  test/send_recv.c      |  2 +-
>  3 files changed, 7 insertions(+), 6 deletions(-)

Applied, thanks.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-15 12:41 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-15  8:11 [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore Ammar Faizi
2021-09-15  8:11 ` [PATCH liburing 1/3] test/io_uring_setup: Don't use `__errno` as local variable name Ammar Faizi
2021-09-15  8:11   ` [PATCH liburing 2/3] test/send_recv: Use proper cast for (struct sockaddr *) argument Ammar Faizi
2021-09-15  8:11   ` [PATCH liburing 3/3] .gitignore: add `/test/output/` Ammar Faizi
2021-09-15 12:41 ` [PATCH liburing 0/3] Fix build and add /test/output dir to .gitignore Jens Axboe

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.