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: 36+ 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-04-03 23:04 ` John Ousterhout
2026-04-07 6:07 ` 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.