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

The value of recv in msg_loop may be negative, like EWOULDBLOCK, so it's
necessary to check if it is positive before accumulating it to bytes_recvd.

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

diff --git a/tools/testing/selftests/bpf/test_sockmap.c 
b/tools/testing/selftests/bpf/test_sockmap.c
index 3654babfac59..4c7cb206b31d 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -681,7 +681,8 @@ static int msg_loop(int fd, int iov_count, int iov_length, 
int cnt,
                                }
                        }
 
-                       s->bytes_recvd += recv;
+                       if (recv > 0)
+                               s->bytes_recvd += recv;
 
                        if (opt->check_recved_len && s->bytes_recvd > 
total_bytes) {
                                errno = EMSGSIZE;
-- 
2.43.0


Reply via email to