Re: [PATCH 1/2] vsock: each transport cycles only on its own sockets

From: kernel test robot
Date: Thu Mar 10 2022 - 21:55:24 EST


Hi Jiyong,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on 3bf7edc84a9eb4007dd9a0cb8878a7e1d5ec6a3b]

url: https://github.com/0day-ci/linux/commits/Jiyong-Park/vsock-cycle-only-on-its-own-socket/20220310-205638
base: 3bf7edc84a9eb4007dd9a0cb8878a7e1d5ec6a3b
config: x86_64-rhel-8.3 (https://download.01.org/0day-ci/archive/20220311/202203111023.SPYFGn7W-lkp@xxxxxxxxx/config)
compiler: gcc-9 (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/6219060e1d706d7055fb0829b3bf23c5ae84790e
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jiyong-Park/vsock-cycle-only-on-its-own-socket/20220310-205638
git checkout 6219060e1d706d7055fb0829b3bf23c5ae84790e
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash net/vmw_vsock/

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

All errors (new ones prefixed by >>):

net/vmw_vsock/vmci_transport.c: In function 'vmci_transport_handle_detach':
>> net/vmw_vsock/vmci_transport.c:808:25: error: 'vmci_transport' undeclared (first use in this function)
808 | if (vsk->transport != &vmci_transport)
| ^~~~~~~~~~~~~~
net/vmw_vsock/vmci_transport.c:808:25: note: each undeclared identifier is reported only once for each function it appears in


vim +/vmci_transport +808 net/vmw_vsock/vmci_transport.c

800
801 static void vmci_transport_handle_detach(struct sock *sk)
802 {
803 struct vsock_sock *vsk;
804
805 vsk = vsock_sk(sk);
806
807 /* Only handle our own sockets */
> 808 if (vsk->transport != &vmci_transport)
809 return;
810
811 if (!vmci_handle_is_invalid(vmci_trans(vsk)->qp_handle)) {
812 sock_set_flag(sk, SOCK_DONE);
813
814 /* On a detach the peer will not be sending or receiving
815 * anymore.
816 */
817 vsk->peer_shutdown = SHUTDOWN_MASK;
818
819 /* We should not be sending anymore since the peer won't be
820 * there to receive, but we can still receive if there is data
821 * left in our consume queue. If the local endpoint is a host,
822 * we can't call vsock_stream_has_data, since that may block,
823 * but a host endpoint can't read data once the VM has
824 * detached, so there is no available data in that case.
825 */
826 if (vsk->local_addr.svm_cid == VMADDR_CID_HOST ||
827 vsock_stream_has_data(vsk) <= 0) {
828 if (sk->sk_state == TCP_SYN_SENT) {
829 /* The peer may detach from a queue pair while
830 * we are still in the connecting state, i.e.,
831 * if the peer VM is killed after attaching to
832 * a queue pair, but before we complete the
833 * handshake. In that case, we treat the detach
834 * event like a reset.
835 */
836
837 sk->sk_state = TCP_CLOSE;
838 sk->sk_err = ECONNRESET;
839 sk_error_report(sk);
840 return;
841 }
842 sk->sk_state = TCP_CLOSE;
843 }
844 sk->sk_state_change(sk);
845 }
846 }
847

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx