From: Geliang Tang <tanggeli...@kylinos.cn>

Incorrect arguments are passed to fcntl() in test_sockmap.c when invoking
it to set file status flags. If O_NONBLOCK is used as 2nd argument and
passed into fcntl, -EINVAL will be returned (See do_fcntl() in fs/fcntl.c).
The correct approach is to use F_SETFL as 2nd argument, and O_NONBLOCK as
3rd one.

Fixes: 16962b2404ac ("bpf: sockmap, add selftests")
Signed-off-by: Geliang Tang <tanggeli...@kylinos.cn>
Acked-by: Yonghong Song <yonghong.s...@linux.dev>
---
 tools/testing/selftests/bpf/test_sockmap.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/bpf/test_sockmap.c 
b/tools/testing/selftests/bpf/test_sockmap.c
index 24b55da9d4af..74a2c6e74fae 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -603,7 +603,9 @@ static int msg_loop(int fd, int iov_count, int iov_length, 
int cnt,
                struct timeval timeout;
                fd_set w;
 
-               fcntl(fd, fd_flags);
+               if (fcntl(fd, F_SETFL, fd_flags))
+                       goto out_errno;
+
                /* Account for pop bytes noting each iteration of apply will
                 * call msg_pop_data helper so we need to account for this
                 * by calculating the number of apply iterations. Note user
-- 
2.40.1


Reply via email to