lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <CADvbK_eujS_Kg3FenuAhOMv+Xga92H9o92LC3Lw=f+7NYdxRoA@mail.gmail.com> Date: Sun, 21 May 2023 19:27:10 -0400 From: Xin Long <lucien.xin@...il.com> To: Eric Dumazet <edumazet@...gle.com> Cc: Stephen Hemminger <stephen@...workplumber.org>, network dev <netdev@...r.kernel.org>, davem@...emloft.net, kuba@...nel.org, Paolo Abeni <pabeni@...hat.com>, Alexander Duyck <alexanderduyck@...com> Subject: Re: [PATCH net] rtnetlink: not allow dev gro_max_size to exceed GRO_MAX_SIZE On Sun, May 21, 2023 at 1:25 PM Eric Dumazet <edumazet@...gle.com> wrote: > > On Fri, May 19, 2023 at 10:43 PM Stephen Hemminger > <stephen@...workplumber.org> wrote: > > > > On Fri, 19 May 2023 13:16:08 -0400 > > Xin Long <lucien.xin@...il.com> wrote: > > > > > In commit 0fe79f28bfaf ("net: allow gro_max_size to exceed 65536"), > > > it limited GRO_MAX_SIZE to (8 * 65535) to avoid overflows, but also > > > deleted the check of GRO_MAX_SIZE when setting the dev gro_max_size. > > > > > > Currently, dev gro_max_size can be set up to U32_MAX (0xFFFFFFFF), > > > and GRO_MAX_SIZE is not even used anywhere. > > > > > > This patch brings back the GRO_MAX_SIZE check when setting dev > > > gro_max_size/gro_ipv4_max_size by users. > > > > > > Fixes: 0fe79f28bfaf ("net: allow gro_max_size to exceed 65536") > > > Reported-by: Xiumei Mu <xmu@...hat.com> > > > Signed-off-by: Xin Long <lucien.xin@...il.com> > > > --- > > > net/core/rtnetlink.c | 10 ++++++++++ > > > 1 file changed, 10 insertions(+) > > > > > > diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c > > > index 653901a1bf75..59b24b184cb0 100644 > > > --- a/net/core/rtnetlink.c > > > +++ b/net/core/rtnetlink.c > > > @@ -2886,6 +2886,11 @@ static int do_setlink(const struct sk_buff *skb, > > > if (tb[IFLA_GRO_MAX_SIZE]) { > > > u32 gro_max_size = nla_get_u32(tb[IFLA_GRO_MAX_SIZE]); > > > > > > + if (gro_max_size > GRO_MAX_SIZE) { > > > + err = -EINVAL; > > > + goto errout; > > > + } > > > + > > > > Please add extack messages so the error can be reported better. > > Also, what is the reason for not changing rtnl_create_link() ? Good catch! Not only GRO_MAX_SIZE, all tb[IFLA_GSO/GRO_*] checks should be moved to validate_linkmsg(), with extra added for sure. Otherwise: # ip link add dummy1 gso_max_size 4294967295 gro_max_size 4294967295 gso_ipv4_max_size 4294967295 gro_ipv4_max_size 4294967295 type dummy # ip -d link show dummy1 6: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether ba:cd:f2:8d:84:9b brd ff:ff:ff:ff:ff:ff promiscuity 0 allmulti 0 minmtu 0 maxmtu 0 dummy addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 4294967295 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 4294967295 gso_ipv4_max_size 4294967295 gro_ipv4_max_size 4294967295 Also, I might move validate_linkmsg() from do_setlink() to its caller, to avoid validate_linkmsg() being called twice in the path of: __rtnl_newlink() -> do_setlink(). Thanks.
Powered by blists - more mailing lists