[libc-commits] [libc] [libc] Small recvfrom fixes (yaml, unpoison) (PR #111020)
Michael Jones via libc-commits
libc-commits at lists.llvm.org
Thu Oct 3 11:35:10 PDT 2024
https://github.com/michaelrj-google updated https://github.com/llvm/llvm-project/pull/111020
>From 252ed0dfea10a368ad10a797664ef9b7506a5dba Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Thu, 3 Oct 2024 09:45:39 -0700
Subject: [PATCH 1/3] [libc] Small recvfrom fixes (yaml, unpoison)
Forgot to update the newhdrgen yaml (old headergen is fine) and forgot
to unpoison addrlen. This patch fixes those.
---
libc/newhdrgen/yaml/sys/socket.yaml | 2 +-
libc/src/sys/socket/linux/recvfrom.cpp | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/libc/newhdrgen/yaml/sys/socket.yaml b/libc/newhdrgen/yaml/sys/socket.yaml
index accb4b14099e82..45602d4b3bff03 100644
--- a/libc/newhdrgen/yaml/sys/socket.yaml
+++ b/libc/newhdrgen/yaml/sys/socket.yaml
@@ -62,7 +62,7 @@ functions:
- type: size_t
- type: int
- type: const struct sockaddr *
- - type: socklen_t
+ - type: socklen_t *
- name: recvmsg
standards:
- POSIX
diff --git a/libc/src/sys/socket/linux/recvfrom.cpp b/libc/src/sys/socket/linux/recvfrom.cpp
index fdcaceee8ad293..791005529acdf2 100644
--- a/libc/src/sys/socket/linux/recvfrom.cpp
+++ b/libc/src/sys/socket/linux/recvfrom.cpp
@@ -45,6 +45,7 @@ LLVM_LIBC_FUNCTION(ssize_t, recvfrom,
}
MSAN_UNPOISON(buf, ret);
+ MSAN_UNPOISON(addrlen, sizeof(socklen_t));
return ret;
}
>From c1f9be4549005eb4a0075abc7337a221533cd0b5 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Thu, 3 Oct 2024 10:37:37 -0700
Subject: [PATCH 2/3] remove incorrect consts
---
libc/newhdrgen/yaml/sys/socket.yaml | 8 ++++----
libc/src/sys/socket/linux/recv.cpp | 2 +-
libc/src/sys/socket/linux/recvfrom.cpp | 4 ++--
libc/src/sys/socket/linux/recvmsg.cpp | 2 +-
libc/src/sys/socket/recv.h | 2 +-
libc/src/sys/socket/recvfrom.h | 4 ++--
libc/src/sys/socket/recvmsg.h | 2 +-
7 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/libc/newhdrgen/yaml/sys/socket.yaml b/libc/newhdrgen/yaml/sys/socket.yaml
index 45602d4b3bff03..c76bf5c51aca59 100644
--- a/libc/newhdrgen/yaml/sys/socket.yaml
+++ b/libc/newhdrgen/yaml/sys/socket.yaml
@@ -49,7 +49,7 @@ functions:
return_type: ssize_t
arguments:
- type: int
- - type: const void *
+ - type: void *
- type: size_t
- type: int
- name: recvfrom
@@ -58,10 +58,10 @@ functions:
return_type: ssize_t
arguments:
- type: int
- - type: const void*
+ - type: void *
- type: size_t
- type: int
- - type: const struct sockaddr *
+ - type: struct sockaddr *
- type: socklen_t *
- name: recvmsg
standards:
@@ -69,7 +69,7 @@ functions:
return_type: ssize_t
arguments:
- type: int
- - type: const struct msghdr *
+ - type: struct msghdr *
- type: int
- name: send
standards:
diff --git a/libc/src/sys/socket/linux/recv.cpp b/libc/src/sys/socket/linux/recv.cpp
index a534dffd0f583f..5e9f2d3233fcf3 100644
--- a/libc/src/sys/socket/linux/recv.cpp
+++ b/libc/src/sys/socket/linux/recv.cpp
@@ -22,7 +22,7 @@
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(ssize_t, recv,
- (int sockfd, const void *buf, size_t len, int flags)) {
+ (int sockfd, void *buf, size_t len, int flags)) {
#ifdef SYS_recv
ssize_t ret =
LIBC_NAMESPACE::syscall_impl<ssize_t>(SYS_recv, sockfd, buf, len, flags);
diff --git a/libc/src/sys/socket/linux/recvfrom.cpp b/libc/src/sys/socket/linux/recvfrom.cpp
index 791005529acdf2..f973a91a960672 100644
--- a/libc/src/sys/socket/linux/recvfrom.cpp
+++ b/libc/src/sys/socket/linux/recvfrom.cpp
@@ -22,8 +22,8 @@
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(ssize_t, recvfrom,
- (int sockfd, const void *buf, size_t len, int flags,
- const struct sockaddr *dest_addr, socklen_t *addrlen)) {
+ (int sockfd, void *buf, size_t len, int flags,
+ struct sockaddr *dest_addr, socklen_t *addrlen)) {
#ifdef SYS_recvfrom
ssize_t ret = LIBC_NAMESPACE::syscall_impl<ssize_t>(
SYS_recvfrom, sockfd, buf, len, flags, dest_addr, addrlen);
diff --git a/libc/src/sys/socket/linux/recvmsg.cpp b/libc/src/sys/socket/linux/recvmsg.cpp
index 59a99210c1a840..60bbc84877b850 100644
--- a/libc/src/sys/socket/linux/recvmsg.cpp
+++ b/libc/src/sys/socket/linux/recvmsg.cpp
@@ -21,7 +21,7 @@
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(ssize_t, recvmsg,
- (int sockfd, const struct msghdr *msg, int flags)) {
+ (int sockfd, struct msghdr *msg, int flags)) {
#ifdef SYS_recvmsg
ssize_t ret =
LIBC_NAMESPACE::syscall_impl<ssize_t>(SYS_recvmsg, sockfd, msg, flags);
diff --git a/libc/src/sys/socket/recv.h b/libc/src/sys/socket/recv.h
index 093e8ca9b12304..ea64daa1183feb 100644
--- a/libc/src/sys/socket/recv.h
+++ b/libc/src/sys/socket/recv.h
@@ -14,7 +14,7 @@
namespace LIBC_NAMESPACE_DECL {
-ssize_t recv(int sockfd, const void *buf, size_t len, int flags);
+ssize_t recv(int sockfd, void *buf, size_t len, int flags);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/sys/socket/recvfrom.h b/libc/src/sys/socket/recvfrom.h
index 40e6cabca043b9..d434e93723173d 100644
--- a/libc/src/sys/socket/recvfrom.h
+++ b/libc/src/sys/socket/recvfrom.h
@@ -17,8 +17,8 @@
namespace LIBC_NAMESPACE_DECL {
-ssize_t recvfrom(int sockfd, const void *buf, size_t len, int flags,
- const struct sockaddr *address, socklen_t *addrlen);
+ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
+ struct sockaddr *address, socklen_t *addrlen);
} // namespace LIBC_NAMESPACE_DECL
diff --git a/libc/src/sys/socket/recvmsg.h b/libc/src/sys/socket/recvmsg.h
index a506fb0ae68fa0..6230136f439b12 100644
--- a/libc/src/sys/socket/recvmsg.h
+++ b/libc/src/sys/socket/recvmsg.h
@@ -15,7 +15,7 @@
namespace LIBC_NAMESPACE_DECL {
-ssize_t recvmsg(int sockfd, const struct msghdr *msg, int flags);
+ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
} // namespace LIBC_NAMESPACE_DECL
>From 5b2c86deff3bb982d10c3e81120dc163e7295f25 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Thu, 3 Oct 2024 11:34:54 -0700
Subject: [PATCH 3/3] add restrict
---
libc/newhdrgen/yaml/sys/socket.yaml | 4 ++--
libc/src/sys/socket/linux/recvfrom.cpp | 3 ++-
libc/src/sys/socket/recvfrom.h | 3 ++-
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/libc/newhdrgen/yaml/sys/socket.yaml b/libc/newhdrgen/yaml/sys/socket.yaml
index c76bf5c51aca59..47d835fa5f4a19 100644
--- a/libc/newhdrgen/yaml/sys/socket.yaml
+++ b/libc/newhdrgen/yaml/sys/socket.yaml
@@ -61,8 +61,8 @@ functions:
- type: void *
- type: size_t
- type: int
- - type: struct sockaddr *
- - type: socklen_t *
+ - type: struct sockaddr *__restrict
+ - type: socklen_t *__restrict
- name: recvmsg
standards:
- POSIX
diff --git a/libc/src/sys/socket/linux/recvfrom.cpp b/libc/src/sys/socket/linux/recvfrom.cpp
index f973a91a960672..a0f8278cd5deb4 100644
--- a/libc/src/sys/socket/linux/recvfrom.cpp
+++ b/libc/src/sys/socket/linux/recvfrom.cpp
@@ -23,7 +23,8 @@ namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(ssize_t, recvfrom,
(int sockfd, void *buf, size_t len, int flags,
- struct sockaddr *dest_addr, socklen_t *addrlen)) {
+ struct sockaddr *__restrict dest_addr,
+ socklen_t *__restrict addrlen)) {
#ifdef SYS_recvfrom
ssize_t ret = LIBC_NAMESPACE::syscall_impl<ssize_t>(
SYS_recvfrom, sockfd, buf, len, flags, dest_addr, addrlen);
diff --git a/libc/src/sys/socket/recvfrom.h b/libc/src/sys/socket/recvfrom.h
index d434e93723173d..14869802e72563 100644
--- a/libc/src/sys/socket/recvfrom.h
+++ b/libc/src/sys/socket/recvfrom.h
@@ -18,7 +18,8 @@
namespace LIBC_NAMESPACE_DECL {
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
- struct sockaddr *address, socklen_t *addrlen);
+ struct sockaddr *__restrict address,
+ socklen_t *__restrict addrlen);
} // namespace LIBC_NAMESPACE_DECL
More information about the libc-commits
mailing list