From: Simon Horman <horms@kernel.org>
To: Abdifatah Suruur <suruurism@gmail.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, andrew+netdev@lunn.ch,
subash.a.kasiviswanathan@qualcomm.com,
sean.tranchetti@qualcomm.com, dnlplm@gmail.com,
stable@vger.kernel.org
Subject: Re: [PATCH net v7] net: qualcomm: rmnet: require CAP_NET_ADMIN in the real device netns for config ops
Date: Fri, 11 Sep 2026 11:49:06 +0100 [thread overview]
Message-ID: <20260911104906.GC48209@horms.kernel.org> (raw)
In-Reply-To: <20260910082643.14437-1-suruurism@gmail.com>
On Thu, Sep 10, 2026 at 11:26:42AM +0300, Abdifatah Suruur wrote:
> An rmnet device may be created with its real device in a different
> netns than the rmnet device itself (rmnet_newlink() resolves it in
> link_net), and the config paths below only check CAP_NET_ADMIN against
> dev_net(dev), while mutating rmnet port state attached to the real
> device:
>
> - rmnet_changelink() rewrites the endpoint mux table and
> port->data_format and, via rmnet_vnd_update_dev_mtu(), can shrink the
> MTU of the rmnet endpoint netdevs.
> - rmnet_add_bridge() and rmnet_del_bridge(), reachable via
> ndo_add_slave/ndo_del_slave through RTM_SETLINK IFLA_MASTER, flip
> port->rmnet_mode and port->bridge_ep on the real device's port; with
> bridge_ep pointing at a caller-owned device, rmnet_rx_handler() then
> forwards real-device ingress frames to it.
> - rmnet_set_coalesce() rewrites the port aggregation parameters via
> ETHTOOL_SCOALESCE (ioctl) or ETHTOOL_MSG_COALESCE_SET (netlink),
> whose capability checks likewise only cover dev's netns.
>
> A caller privileged only in the rmnet device's netns can therefore
> rewrite the shared cellular data-path state owned by another netns, and
> steer its ingress traffic.
>
> Gate the rtnl paths with rtnl_dev_link_net_capable(), matching the
> "require CAP_NET_ADMIN in the device netns for changelink" series
> (vxlan/geneve, CVE-2026-68432), and gate the ethtool setter with
> ns_capable() in the real device netns, mirroring the check dev_ethtool()
> already applies to dev's netns. Report the new rejections through
> extack where one is available.
>
> The gates cover the configuration paths only. Teardown (RTM_DELLINK
> reaching rmnet_dellink(), and rmnet_config_notify_cb() unregistering
> the bridge when the slave device is deleted) is intentionally left
> ungated: link deletion is normal netdev lifecycle behaviour, and the
> changelink series this matches (vxlan/geneve, CVE-2026-68432) gated
> only the configuration paths.
>
> Fixes: 2abb5792387e ("net: qualcomm: rmnet: Allow configuration updates to existing devices")
> Fixes: 60d58f971c1077 ("net: qualcomm: rmnet: Implement bridge mode")
> Fixes: db8a563a9d9024 ("net: qualcomm: rmnet: add ethtool support for configuring tx aggregation")
> Cc: stable@vger.kernel.org
> Signed-off-by: Abdifatah Suruur <suruurism@gmail.com>
> ---
> v7:
> - state explicitly in the commit message that the dellink and notifier
> teardown paths are out of scope, per the Sashiko review
> - drop the master-moved-into-the-real-device-netns rationale from the
> rmnet_add_bridge() comment: on the add path do_set_master() resolves
> the master in the slave's netns, so the rationale only applies to
> rmnet_del_bridge(), where the master comes from
> netdev_master_upper_dev_get()
> - use the netdev comment style in rmnet_set_coalesce(), per the
> Sashiko review
> v6:
> - gate rmnet_add_bridge() and rmnet_del_bridge() on slave_dev, the
> RTM_SETLINK target the caller was actually authorized against,
> instead of rmnet_dev: a master moved into the real device's netns
> short-circuits rtnl_dev_link_net_capable() through the net_eq()
> check, so a caller only privileged in the slave's netns could
> otherwise attach or clear the bridge state of the real device's
> port
> - add the Fixes tag for the commit that introduced rmnet_set_coalesce()
> v5:
> - also gate rmnet_set_coalesce(), the ethtool setter that rewrites the
> port aggregation parameters of the real device's port, per the
> Sashiko review
> - report the new capability rejections through extack where available
> v4:
> - use the netdev comment style, per Subash Abhinov Kasiviswanathan
> v3:
> - cover rmnet_add_bridge() and rmnet_del_bridge() with the same gate;
> they mutate the same real-device port state via ndo_add_slave/
> ndo_del_slave and have no capability check of their own
> - correct the impact wording: rmnet_vnd_update_dev_mtu() only reads
> real_dev->mtu; the MTU store lands on the rmnet endpoint netdevs via
> rmnet_vnd_change_mtu(), not on the real device
> v2:
> - drop Reported-by: (implied for the author), per Jakub Kicinski
Reviewed-by: Simon Horman <horms@kernel.org>
next prev parent reply other threads:[~2026-09-11 10:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-10 8:26 [PATCH net v7] net: qualcomm: rmnet: require CAP_NET_ADMIN in the real device netns for config ops Abdifatah Suruur
2026-09-11 10:49 ` Simon Horman [this message]
2026-09-15 0:55 ` Jakub Kicinski
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=20260911104906.GC48209@horms.kernel.org \
--to=horms@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=dnlplm@gmail.com \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sean.tranchetti@qualcomm.com \
--cc=stable@vger.kernel.org \
--cc=subash.a.kasiviswanathan@qualcomm.com \
--cc=suruurism@gmail.com \
/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.