From: Paolo Abeni <pabeni@redhat.com>
To: ouster@cs.stanford.edu
Cc: horms@kernel.org, netdev@vger.kernel.org, kuba@kernel.org,
pabeni@redhat.com, edumazet@google.com
Subject: Re: [net-next,v17,09/14] net: homa: create homa_outgoing.c
Date: Wed, 18 Mar 2026 08:21:36 +0100 [thread overview]
Message-ID: <20260318072136.269073-1-pabeni@redhat.com> (raw)
In-Reply-To: <20260316223228.2611-10-ouster@cs.stanford.edu>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
net: homa: create homa_outgoing.c
This file does most of the work of transmitting outgoing messages.
It is also responsible for copying data from user space into skbs.
> diff --git a/net/homa/homa_impl.h b/net/homa/homa_impl.h
> --- a/net/homa/homa_impl.h
> +++ b/net/homa/homa_impl.h
[ ... ]
> diff --git a/net/homa/homa_outgoing.c b/net/homa/homa_outgoing.c
> --- /dev/null
> +++ b/net/homa/homa_outgoing.c
[ ... ]
> +/**
> + * homa_xmit_unknown() - Send an RPC_UNKNOWN packet to a peer.
> + * @skb: Buffer containing an incoming packet; identifies the peer to
> + * which the RPC_UNKNOWN packet should be sent.
> + * @hsk: Socket that should be used to send the RPC_UNKNOWN packet.
> + */
> +void homa_xmit_unknown(struct sk_buff *skb, struct homa_sock *hsk)
> +{
> + struct homa_common_hdr *h = (struct homa_common_hdr *)skb->data;
> + struct in6_addr saddr = skb_canonical_ipv6_saddr(skb);
> + struct homa_rpc_unknown_hdr unknown;
^^^^^^^^^^
Does this code send uninitialized kernel stack memory over the network?
The struct homa_rpc_unknown_hdr unknown is only partially initialized.
Four fields are set:
unknown.common.sport = h->dport;
unknown.common.dport = h->sport;
unknown.common.type = RPC_UNKNOWN;
unknown.common.sender_id = cpu_to_be64(homa_local_id(h->sender_id));
But the remaining fields of homa_common_hdr (sequence, ack[3], doff,
reserved1, window, checksum, reserved2) are left uninitialized. These total
15 bytes of data.
__homa_xmit_control() copies the entire struct via memcpy():
h = skb_put(skb, length);
memcpy(h, contents, length);
and the packet is then transmitted over the network via ip_queue_xmit() or
ip6_xmit().
This sends uninitialized kernel stack memory contents over the wire, which is
an information leak.
> + struct homa_peer *peer;
> +
> + unknown.common.sport = h->dport;
> + unknown.common.dport = h->sport;
> + unknown.common.type = RPC_UNKNOWN;
> + unknown.common.sender_id = cpu_to_be64(homa_local_id(h->sender_id));
> + peer = homa_peer_get(hsk, &saddr);
> + if (!IS_ERR(peer))
> + __homa_xmit_control(&unknown, sizeof(unknown), peer, hsk);
> + homa_peer_release(peer);
^^^^^^^^^^^^^^^^^^^^
Can this dereference an error pointer? When homa_peer_get() fails and
returns an ERR_PTR (for example, -ENOMEM from allocation failure or
rhashtable insert error), homa_peer_release(peer) is called unconditionally on
the error pointer.
homa_peer_release() calls refcount_dec_and_test(&peer->refs), which
dereferences the invalid ERR_PTR address.
The IS_ERR check on the previous line correctly guards __homa_xmit_control
but does not guard homa_peer_release.
> +}
[ ... ]
next prev parent reply other threads:[~2026-03-18 7:21 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-16 22:32 [PATCH net-next v17 00/14] Begin upstreaming Homa transport protocol John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 01/14] net: homa: define user-visible API for Homa John Ousterhout
2026-03-17 10:10 ` kernel test robot
2026-03-17 18:40 ` kernel test robot
2026-03-16 22:32 ` [PATCH net-next v17 02/14] net: homa: create homa_wire.h John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 03/14] net: homa: create shared Homa header files John Ousterhout
2026-03-18 7:20 ` [net-next,v17,03/14] " Paolo Abeni
2026-03-19 20:37 ` John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 04/14] net: homa: create homa_pool.h and homa_pool.c John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 05/14] net: homa: create homa_peer.h and homa_peer.c John Ousterhout
2026-03-18 7:21 ` [net-next,v17,05/14] " Paolo Abeni
2026-03-20 17:13 ` John Ousterhout
2026-03-20 17:20 ` Paolo Abeni
2026-03-16 22:32 ` [PATCH net-next v17 06/14] net: homa: create homa_sock.h and homa_sock.c John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 07/14] net: homa: create homa_interest.h and homa_interest.c John Ousterhout
2026-03-18 7:21 ` [net-next,v17,07/14] " Paolo Abeni
2026-03-16 22:32 ` [PATCH net-next v17 08/14] net: homa: create homa_rpc.h and homa_rpc.c John Ousterhout
2026-03-18 7:21 ` [net-next,v17,08/14] " Paolo Abeni
2026-03-23 22:43 ` John Ousterhout
2026-03-24 8:55 ` Paolo Abeni
2026-03-16 22:32 ` [PATCH net-next v17 09/14] net: homa: create homa_outgoing.c John Ousterhout
2026-03-18 7:21 ` Paolo Abeni [this message]
2026-03-20 18:21 ` [net-next,v17,09/14] " John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 10/14] net: homa: create homa_utils.c John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 11/14] net: homa: create homa_incoming.c John Ousterhout
2026-03-18 7:21 ` [net-next,v17,11/14] " Paolo Abeni
2026-03-20 20:51 ` John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 12/14] net: homa: create homa_timer.c John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 13/14] net: homa: create homa_plumbing.c John Ousterhout
2026-03-18 7:21 ` [net-next,v17,13/14] " Paolo Abeni
2026-03-20 21:49 ` John Ousterhout
2026-03-16 22:32 ` [PATCH net-next v17 14/14] net: homa: create Makefile and Kconfig John Ousterhout
2026-03-17 18:51 ` kernel test robot
2026-03-17 19:26 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260318072136.269073-1-pabeni@redhat.com \
--to=pabeni@redhat.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ouster@cs.stanford.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox