All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v3 3/4] mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal
@ 2021-06-17 23:38 kernel test robot
  0 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2021-06-17 23:38 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 8060 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <1623921276-97178-4-git-send-email-liyonglong@chinatelecom.cn>
References: <1623921276-97178-4-git-send-email-liyonglong@chinatelecom.cn>
TO: Yonglong Li <liyonglong@chinatelecom.cn>
TO: mptcp(a)lists.linux.dev
CC: pabeni(a)redhat.com
CC: matthieu.baerts(a)tessares.net
CC: mathew.j.martineau(a)linux.intel.com
CC: geliangtang(a)gmail.com
CC: Yonglong Li <liyonglong@chinatelecom.cn>

Hi Yonglong,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mptcp/export]
[also build test WARNING on linus/master v5.13-rc6 next-20210617]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Yonglong-Li/mptcp-fix-conflicts-when-using-pm-add_signal-in-ADD_ADDR-echo-and-RM_ADDR-process/20210617-171559
base:   https://github.com/multipath-tcp/mptcp_net-next.git export
:::::: branch date: 14 hours ago
:::::: commit date: 14 hours ago
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

   net/mptcp/options.c:591:3: warning: Assignment of function parameter has no effect outside the function. [uselessAssignmentArg]
     remaining -= map_size;
     ^
   net/mptcp/options.c:849:3: warning: Assignment of function parameter has no effect outside the function. [uselessAssignmentArg]
     remaining -= opt_size;
     ^
>> net/mptcp/options.c:726:34: warning: Uninitialized variable: flags [uninitvar]
    WRITE_ONCE(msk->pm.addr_signal, flags | msk->pm.addr_signal);
                                    ^

vim +726 net/mptcp/options.c

3df523ab582c52 Peter Krystad 2020-03-27  656  
84dfe3677a6f45 Geliang Tang  2020-11-19  657  static bool mptcp_established_options_add_addr(struct sock *sk, struct sk_buff *skb,
3df523ab582c52 Peter Krystad 2020-03-27  658  					       unsigned int *size,
3df523ab582c52 Peter Krystad 2020-03-27  659  					       unsigned int remaining,
3df523ab582c52 Peter Krystad 2020-03-27  660  					       struct mptcp_out_options *opts)
3df523ab582c52 Peter Krystad 2020-03-27  661  {
3df523ab582c52 Peter Krystad 2020-03-27  662  	struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(sk);
3df523ab582c52 Peter Krystad 2020-03-27  663  	struct mptcp_sock *msk = mptcp_sk(subflow->conn);
84dfe3677a6f45 Geliang Tang  2020-11-19  664  	bool drop_other_suboptions = false;
84dfe3677a6f45 Geliang Tang  2020-11-19  665  	unsigned int opt_size = *size;
dcb008513c667a Yonglong Li   2021-06-17  666  	struct mptcp_addr_info remote;
dcb008513c667a Yonglong Li   2021-06-17  667  	struct mptcp_addr_info local;
dcb008513c667a Yonglong Li   2021-06-17  668  	int ret = false;
dcb008513c667a Yonglong Li   2021-06-17  669  	u8 add_addr, flags;
1b1c7a0ef7f323 Peter Krystad 2020-03-27  670  	int len;
3df523ab582c52 Peter Krystad 2020-03-27  671  
dcb008513c667a Yonglong Li   2021-06-17  672  	if (!mptcp_pm_should_add_signal(msk))
dcb008513c667a Yonglong Li   2021-06-17  673  		goto out;
dcb008513c667a Yonglong Li   2021-06-17  674  
dcb008513c667a Yonglong Li   2021-06-17  675  	*size = 0;
dcb008513c667a Yonglong Li   2021-06-17  676  	mptcp_pm_add_addr_signal(msk, &local, &remote, &add_addr);
dcb008513c667a Yonglong Li   2021-06-17  677  	if (mptcp_pm_should_add_signal_echo(msk)) {
dcb008513c667a Yonglong Li   2021-06-17  678  		if (skb && skb_is_tcp_pure_ack(skb)) {
84dfe3677a6f45 Geliang Tang  2020-11-19  679  			pr_debug("drop other suboptions");
84dfe3677a6f45 Geliang Tang  2020-11-19  680  			opts->suboptions = 0;
3ae32c07815a24 Geliang Tang  2020-12-15  681  			opts->ext_copy.use_ack = 0;
3ae32c07815a24 Geliang Tang  2020-12-15  682  			opts->ext_copy.use_map = 0;
84dfe3677a6f45 Geliang Tang  2020-11-19  683  			remaining += opt_size;
84dfe3677a6f45 Geliang Tang  2020-11-19  684  			drop_other_suboptions = true;
84dfe3677a6f45 Geliang Tang  2020-11-19  685  		}
dcb008513c667a Yonglong Li   2021-06-17  686  		len = mptcp_add_addr_len(remote.family, true, !!remote.port);
dcb008513c667a Yonglong Li   2021-06-17  687  		if (remaining < len && mptcp_pm_should_add_signal_addr(msk))
dcb008513c667a Yonglong Li   2021-06-17  688  			goto add_addr;
dcb008513c667a Yonglong Li   2021-06-17  689  		else if (remaining < len)
dcb008513c667a Yonglong Li   2021-06-17  690  			goto out;
dcb008513c667a Yonglong Li   2021-06-17  691  		remaining -= len;
dcb008513c667a Yonglong Li   2021-06-17  692  		*size += len;
dcb008513c667a Yonglong Li   2021-06-17  693  		opts->remote = remote;
dcb008513c667a Yonglong Li   2021-06-17  694  		flags = (u8)~BIT(MPTCP_ADD_ADDR_ECHO);
dcb008513c667a Yonglong Li   2021-06-17  695  		opts->suboptions |= OPTION_MPTCP_ADD_ECHO;
dcb008513c667a Yonglong Li   2021-06-17  696  		pr_debug("addr_id=%d, echo=1, port=%d addr_signal:%x",
dcb008513c667a Yonglong Li   2021-06-17  697  			 opts->remote.id, ntohs(opts->remote.port), add_addr);
dcb008513c667a Yonglong Li   2021-06-17  698  	} else if (mptcp_pm_should_add_signal_addr(msk)) {
dcb008513c667a Yonglong Li   2021-06-17  699  add_addr:
dcb008513c667a Yonglong Li   2021-06-17  700  		if ((local.family == AF_INET6 || local.port) && skb &&
dcb008513c667a Yonglong Li   2021-06-17  701  		    skb_is_tcp_pure_ack(skb)) {
dcb008513c667a Yonglong Li   2021-06-17  702  			pr_debug("drop other suboptions");
dcb008513c667a Yonglong Li   2021-06-17  703  			opts->suboptions = 0;
dcb008513c667a Yonglong Li   2021-06-17  704  			opts->ext_copy.use_ack = 0;
dcb008513c667a Yonglong Li   2021-06-17  705  			opts->ext_copy.use_map = 0;
dcb008513c667a Yonglong Li   2021-06-17  706  			remaining += opt_size;
dcb008513c667a Yonglong Li   2021-06-17  707  			drop_other_suboptions = true;
dcb008513c667a Yonglong Li   2021-06-17  708  		}
dcb008513c667a Yonglong Li   2021-06-17  709  		len = mptcp_add_addr_len(local.family, false, !!local.port);
1b1c7a0ef7f323 Peter Krystad 2020-03-27  710  		if (remaining < len)
dcb008513c667a Yonglong Li   2021-06-17  711  			goto out;
dcb008513c667a Yonglong Li   2021-06-17  712  		*size += len;
dcb008513c667a Yonglong Li   2021-06-17  713  		opts->addr = local;
3df523ab582c52 Peter Krystad 2020-03-27  714  		opts->ahmac = add_addr_generate_hmac(msk->local_key,
3df523ab582c52 Peter Krystad 2020-03-27  715  						     msk->remote_key,
761c124ed96985 Geliang Tang  2021-04-06  716  						     &opts->addr);
dcb008513c667a Yonglong Li   2021-06-17  717  		opts->suboptions |= OPTION_MPTCP_ADD_ADDR;
dcb008513c667a Yonglong Li   2021-06-17  718  		flags = (u8)~BIT(MPTCP_ADD_ADDR_SIGNAL);
dcb008513c667a Yonglong Li   2021-06-17  719  		pr_debug("addr_id=%d, ahmac=%llu, echo=0, port=%d, addr_signal:%x",
dcb008513c667a Yonglong Li   2021-06-17  720  			 opts->addr.id, opts->ahmac, ntohs(opts->addr.port), add_addr);
3df523ab582c52 Peter Krystad 2020-03-27  721  	}
3df523ab582c52 Peter Krystad 2020-03-27  722  
dcb008513c667a Yonglong Li   2021-06-17  723  	if (drop_other_suboptions)
dcb008513c667a Yonglong Li   2021-06-17  724  		*size -= opt_size;
dcb008513c667a Yonglong Li   2021-06-17  725  	spin_lock_bh(&msk->pm.lock);
dcb008513c667a Yonglong Li   2021-06-17 @726  	WRITE_ONCE(msk->pm.addr_signal, flags | msk->pm.addr_signal);
dcb008513c667a Yonglong Li   2021-06-17  727  	spin_unlock_bh(&msk->pm.lock);
dcb008513c667a Yonglong Li   2021-06-17  728  	ret = true;
dcb008513c667a Yonglong Li   2021-06-17  729  
dcb008513c667a Yonglong Li   2021-06-17  730  out:
dcb008513c667a Yonglong Li   2021-06-17  731  	return ret;
3df523ab582c52 Peter Krystad 2020-03-27  732  }
3df523ab582c52 Peter Krystad 2020-03-27  733  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 8+ messages in thread
* [PATCH v3 0/4] mptcp: fix conflicts when using pm.add_signal in ADD_ADDR/echo and RM_ADDR process
@ 2021-06-17  9:14 Yonglong Li
  2021-06-17  9:14 ` [PATCH v3 3/4] mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal Yonglong Li
  0 siblings, 1 reply; 8+ messages in thread
From: Yonglong Li @ 2021-06-17  9:14 UTC (permalink / raw)
  To: mptcp
  Cc: pabeni, matthieu.baerts, mathew.j.martineau, geliangtang, Yonglong Li

fix issue: ADD_ADDR and RM_ADDR use pm.add_signal to mark event, so 
in some case pm.add_signal will be flush when ADD_ADDR/RM_ADDR in 
process.

fix issue: if ADD_ADDR and ADD_ADDR-echo process at the same time, 
only one event can write pm.add_signal. so ADD_ADDR will process 
after add_timer timeout or ADD_ADDR-echo will not be process.

Patch 1 fix ADD_ADDR and RM_ADDR maybe clear addr_signal each other.

Patch 2 and 3 deal ADD_ADDR and ADD_ADDR-echo with separately to fix 
conflicts in using pm.addr_signal porcess.

Patch 4 MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT is not necessary.

v1->v2:
 - remove READ_ONCE under the pm spin lock.

v2->v3:
 - Patch 2: rename mptcp_pm_should_add_addr to mptcp_pm_should_add_signal_addr
 - Patch 3: avoid read-modify-write of msk->pm.addr_signal and change  
   mptcp_pm_add_addr_signal to return void.

Yonglong Li (4):
  mptcp: fix ADD_ADDR and RM_ADDR maybe flush addr_signal each other
  mptcp: make MPTCP_ADD_ADDR_SIGNAL and MPTCP_ADD_ADDR_ECHO separate
  mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal
  mptcp: remove MPTCP_ADD_ADDR_IPV6 and MPTCP_ADD_ADDR_PORT

 include/net/mptcp.h    |   1 +
 net/mptcp/options.c    | 161 ++++++++++++++++++++++++++++++++-----------------
 net/mptcp/pm.c         |  53 +++++++---------
 net/mptcp/pm_netlink.c |  10 ++-
 net/mptcp/protocol.h   |  31 ++++------
 5 files changed, 147 insertions(+), 109 deletions(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-06-18  1:24 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 23:38 [PATCH v3 3/4] mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-06-17  9:14 [PATCH v3 0/4] mptcp: fix conflicts when using pm.add_signal in ADD_ADDR/echo and RM_ADDR process Yonglong Li
2021-06-17  9:14 ` [PATCH v3 3/4] mptcp: build ADD_ADDR/echo-ADD_ADDR option according pm.add_signal Yonglong Li
2021-06-17 12:37   ` Geliang Tang
2021-06-18  1:10     ` Yonglong Li
2021-06-17 19:22   ` kernel test robot
2021-06-17 19:22     ` kernel test robot
2021-06-18  0:25   ` Mat Martineau
2021-06-18  1:24     ` Yonglong Li

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.