]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
IB/core: Fix IPv6 netlink message size in ib_nl_ip_send_msg()
authorMaher Sanalla <msanalla@nvidia.com>
Mon, 27 Apr 2026 11:02:34 +0000 (14:02 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Wed, 29 Apr 2026 19:37:12 +0000 (16:37 -0300)
When resolving an RDMA-CM IPv6 address, ib_nl_ip_send_msg() sends a
netlink request to the userspace daemon to perform IP-to-GID
resolution in certain cases. The function allocates the netlink message
buffer using nla_total_size(sizeof(size)), which passes 8 bytes (the
size of size_t) instead of 16 bytes (the size of an IPv6 address).
This results in an 8-byte under-allocation.

This is currently masked by nlmsg_new() over-allocation of the skb
in its internal logic. However, the code remains incorrect.

Fix the issue by supplying the proper IPv6 address length to
nla_total_size().

Fixes: ae43f8286730 ("IB/core: Add IP to GID netlink offload")
Link: https://patch.msgid.link/r/20260427-security-bug-fixes-v3-3-4621fa52de0e@nvidia.com
Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
Reviewed-by: Patrisious Haddad <phaddad@nvidia.com>
Signed-off-by: Edward Srouji <edwards@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/addr.c

index a40a765f0307288775365272ee418edcb150ec28..27992c38ad90205c47c7a0d4307c684c8958b1d5 100644 (file)
@@ -149,7 +149,7 @@ static int ib_nl_ip_send_msg(struct rdma_dev_addr *dev_addr,
                attrtype = RDMA_NLA_F_MANDATORY | LS_NLA_TYPE_IPV6;
        }
 
-       len = nla_total_size(sizeof(size));
+       len = nla_total_size(size);
        len += NLMSG_ALIGN(sizeof(*header));
 
        skb = nlmsg_new(len, GFP_KERNEL);