Merge branch 'selftest-af_unix-enable-wall-and-wflex-array-member-not-at-end'

Kuniyuki Iwashima says:

====================
selftest: af_unix: Enable -Wall and -Wflex-array-member-not-at-end.

This series fix 4 warnings caught by -Wall and
-Wflex-array-member-not-at-end.
====================

Link: https://patch.msgid.link/20250811215432.3379570-1-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Jakub Kicinski
2025-08-12 17:58:35 -07:00
4 changed files with 26 additions and 32 deletions

View File

@@ -1,4 +1,4 @@
CFLAGS += $(KHDR_INCLUDES)
CFLAGS += $(KHDR_INCLUDES) -Wall -Wflex-array-member-not-at-end
TEST_GEN_PROGS := diag_uid msg_oob scm_inq scm_pidfd scm_rights unix_connect
include ../../lib.mk

View File

@@ -11,11 +11,6 @@
#define NR_CHUNKS 100
#define MSG_LEN 256
struct scm_inq {
struct cmsghdr cmsghdr;
int inq;
};
FIXTURE(scm_inq)
{
int fd[2];
@@ -70,35 +65,38 @@ static void send_chunks(struct __test_metadata *_metadata,
static void recv_chunks(struct __test_metadata *_metadata,
FIXTURE_DATA(scm_inq) *self)
{
char cmsg_buf[CMSG_SPACE(sizeof(int))];
struct msghdr msg = {};
struct iovec iov = {};
struct scm_inq cmsg;
struct cmsghdr *cmsg;
char buf[MSG_LEN];
int i, ret;
int inq;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
msg.msg_control = &cmsg;
msg.msg_controllen = CMSG_SPACE(sizeof(cmsg.inq));
msg.msg_control = cmsg_buf;
msg.msg_controllen = sizeof(cmsg_buf);
iov.iov_base = buf;
iov.iov_len = sizeof(buf);
for (i = 0; i < NR_CHUNKS; i++) {
memset(buf, 0, sizeof(buf));
memset(&cmsg, 0, sizeof(cmsg));
memset(cmsg_buf, 0, sizeof(cmsg_buf));
ret = recvmsg(self->fd[1], &msg, 0);
ASSERT_EQ(MSG_LEN, ret);
ASSERT_NE(NULL, CMSG_FIRSTHDR(&msg));
ASSERT_EQ(CMSG_LEN(sizeof(cmsg.inq)), cmsg.cmsghdr.cmsg_len);
ASSERT_EQ(SOL_SOCKET, cmsg.cmsghdr.cmsg_level);
ASSERT_EQ(SCM_INQ, cmsg.cmsghdr.cmsg_type);
cmsg = CMSG_FIRSTHDR(&msg);
ASSERT_NE(NULL, cmsg);
ASSERT_EQ(CMSG_LEN(sizeof(int)), cmsg->cmsg_len);
ASSERT_EQ(SOL_SOCKET, cmsg->cmsg_level);
ASSERT_EQ(SCM_INQ, cmsg->cmsg_type);
ret = ioctl(self->fd[1], SIOCINQ, &inq);
ASSERT_EQ(0, ret);
ASSERT_EQ(cmsg.inq, inq);
ASSERT_EQ(*(int *)CMSG_DATA(cmsg), inq);
}
}

View File

@@ -137,7 +137,6 @@ struct cmsg_data {
static int parse_cmsg(struct msghdr *msg, struct cmsg_data *res)
{
struct cmsghdr *cmsg;
int data = 0;
if (msg->msg_flags & (MSG_TRUNC | MSG_CTRUNC)) {
log_err("recvmsg: truncated");
@@ -243,7 +242,6 @@ static int cmsg_check_dead(int fd, int expected_pid)
int data = 0;
char control[CMSG_SPACE(sizeof(struct ucred)) +
CMSG_SPACE(sizeof(int))] = { 0 };
pid_t client_pid;
struct pidfd_info info = {
.mask = PIDFD_INFO_EXIT,
};

View File

@@ -271,20 +271,11 @@ void __send_fd(struct __test_metadata *_metadata,
{
#define MSG "x"
#define MSGLEN 1
struct {
struct cmsghdr cmsghdr;
int fd[2];
} cmsg = {
.cmsghdr = {
.cmsg_len = CMSG_LEN(sizeof(cmsg.fd)),
.cmsg_level = SOL_SOCKET,
.cmsg_type = SCM_RIGHTS,
},
.fd = {
self->fd[inflight * 2],
self->fd[inflight * 2],
},
int fds[2] = {
self->fd[inflight * 2],
self->fd[inflight * 2],
};
char cmsg_buf[CMSG_SPACE(sizeof(fds))];
struct iovec iov = {
.iov_base = MSG,
.iov_len = MSGLEN,
@@ -294,11 +285,18 @@ void __send_fd(struct __test_metadata *_metadata,
.msg_namelen = 0,
.msg_iov = &iov,
.msg_iovlen = 1,
.msg_control = &cmsg,
.msg_controllen = CMSG_SPACE(sizeof(cmsg.fd)),
.msg_control = cmsg_buf,
.msg_controllen = sizeof(cmsg_buf),
};
struct cmsghdr *cmsg;
int ret;
cmsg = CMSG_FIRSTHDR(&msg);
cmsg->cmsg_level = SOL_SOCKET;
cmsg->cmsg_type = SCM_RIGHTS;
cmsg->cmsg_len = CMSG_LEN(sizeof(fds));
memcpy(CMSG_DATA(cmsg), fds, sizeof(fds));
ret = sendmsg(self->fd[receiver * 2 + 1], &msg, variant->flags);
if (variant->disabled) {