Re: [PATCH net-next v4] rust: net: netlink: validate attribute length before casting to `c_int`
From: Gary Guo
Date: Wed Sep 23 2026 - 15:37:36 EST
On Wed Sep 23, 2026 at 1:05 PM BST, Sagar Taunk wrote:
> `put()` trusted an unchecked `as` cast from `usize` to `c_int`.
> When the length exceeds `i32::MAX` that cast wraps around to a
> negative value.
>
> This ultimately resulted in a kernel panic when the reinterpreted
> value via `__nla_reserve()` and `skb_put()` became enormous.
>
> Validate payload and header both fit together in a `u16`, rejecting
> any payload that wouldn't leave room for `NLA_HDRLEN`.
>
> Fixes: 5eaa5fbb6e6c ("rust: netlink: add raw netlink abstraction")
> Reviewed-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
> Signed-off-by: Sagar Taunk <sagartaunk@xxxxxxxxx>
Reviewed-by: Gary Guo <gary@xxxxxxxxxxx>
> ---
> Changes Since V3:
> Rebased on the upstream rust-next tree.
> No functional changes.
>
> rust/kernel/net/netlink.rs | 9 +++++++++
> 1 file changed, 9 insertions(+)