aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2025-01-11 04:58:08 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2025-01-11 04:58:08 +0000
commit26d1ad5a44e17d2d8c48d36755567043349d8b63 (patch)
tree1a94ea36ab37d050539ef4f893042f7653e5f7e7
parentbbe6559cf958a9016cb18ff1833ebd3a884f349f (diff)
netlink: snl_create_genl_msg_request() may fail due to ENOMEM
Reviewed by: melifaro Differential Revision: https://reviews.freebsd.org/D48310
-rw-r--r--sys/netlink/netlink_snl_generic.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/netlink/netlink_snl_generic.h b/sys/netlink/netlink_snl_generic.h
index 32b460c612bd..e2dc4d1bfffe 100644
--- a/sys/netlink/netlink_snl_generic.h
+++ b/sys/netlink/netlink_snl_generic.h
@@ -33,16 +33,24 @@
/* Genetlink helpers */
static inline struct nlmsghdr *
-snl_create_genl_msg_request(struct snl_writer *nw, int genl_family, uint8_t genl_cmd)
+snl_create_genl_msg_request(struct snl_writer *nw, uint16_t genl_family,
+ uint8_t genl_cmd)
{
+ struct nlmsghdr *hdr;
+ struct genlmsghdr *ghdr;
+
assert(nw->hdr == NULL);
- struct nlmsghdr *hdr = snl_reserve_msg_object(nw, struct nlmsghdr);
+ hdr = snl_reserve_msg_object(nw, struct nlmsghdr);
+ if (__predict_false(hdr == NULL))
+ return (NULL);
hdr->nlmsg_type = genl_family;
hdr->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK;
- nw->hdr = hdr;
- struct genlmsghdr *ghdr = snl_reserve_msg_object(nw, struct genlmsghdr);
+ ghdr = snl_reserve_msg_object(nw, struct genlmsghdr);
+ if (__predict_false(ghdr == NULL))
+ return (NULL);
ghdr->cmd = genl_cmd;
+ nw->hdr = hdr;
return (hdr);
}