From: Geliang Tang Date: Mon, 8 Jun 2020 10:47:54 +0000 (+0800) Subject: mptcp: bugfix for RM_ADDR option parsing X-Git-Tag: v5.8-rc1~3^2~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e60eed6b38e464e8c9d68f9caecafaa554dffe0;p=thirdparty%2Flinux.git mptcp: bugfix for RM_ADDR option parsing In MPTCPOPT_RM_ADDR option parsing, the pointer "ptr" pointed to the "Subtype" octet, the pointer "ptr+1" pointed to the "Address ID" octet: +-------+-------+---------------+ |Subtype|(resvd)| Address ID | +-------+-------+---------------+ | | ptr ptr+1 We should set mp_opt->rm_id to the value of "ptr+1", not "ptr". This patch will fix this bug. Fixes: 3df523ab582c ("mptcp: Add ADD_ADDR handling") Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts Signed-off-by: David S. Miller --- diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 01f1f4cf4902a..490b92534afc3 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -273,6 +273,8 @@ static void mptcp_parse_option(const struct sk_buff *skb, if (opsize != TCPOLEN_MPTCP_RM_ADDR_BASE) break; + ptr++; + mp_opt->rm_addr = 1; mp_opt->rm_id = *ptr++; pr_debug("RM_ADDR: id=%d", mp_opt->rm_id);