diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2025-01-11 04:58:08 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2025-01-11 04:58:08 +0000 |
commit | 26d1ad5a44e17d2d8c48d36755567043349d8b63 (patch) | |
tree | 1a94ea36ab37d050539ef4f893042f7653e5f7e7 | |
parent | bbe6559cf958a9016cb18ff1833ebd3a884f349f (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.h | 16 |
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); } |