linux/net/vmw_vsock
Cong Wang 455f05ecd2 vsock: split dwork to avoid reinitializations
syzbot reported that we reinitialize an active delayed
work in vsock_stream_connect():

	ODEBUG: init active (active state 0) object type: timer_list hint:
	delayed_work_timer_fn+0x0/0x90 kernel/workqueue.c:1414
	WARNING: CPU: 1 PID: 11518 at lib/debugobjects.c:329
	debug_print_object+0x16a/0x210 lib/debugobjects.c:326

The pattern is apparently wrong, we should only initialize
the dealyed work once and could repeatly schedule it. So we
have to move out the initializations to allocation side.
And to avoid confusion, we can split the shared dwork
into two, instead of re-using the same one.

Fixes: d021c34405 ("VSOCK: Introduce VM Sockets")
Reported-by: <syzbot+8a9b1bd330476a4f3db6@syzkaller.appspotmail.com>
Cc: Andy king <acking@vmware.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Jorgen Hansen <jhansen@vmware.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-08-07 12:39:13 -07:00
..
af_vsock_tap.c VSOCK: Add vsockmon tap functions 2017-04-24 12:35:56 -04:00
af_vsock.c vsock: split dwork to avoid reinitializations 2018-08-07 12:39:13 -07:00
diag.c VSOCK: add sock_diag interface 2017-10-05 18:44:17 -07:00
hyperv_transport.c VSOCK: fix outdated sk_state value in hvs_release() 2017-12-05 15:07:37 -05:00
Kconfig VSOCK: add sock_diag interface 2017-10-05 18:44:17 -07:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
virtio_transport_common.c VSOCK: use TCP state constants for sk_state 2017-10-05 18:44:17 -07:00
virtio_transport.c VSOCK: fix loopback on big-endian systems 2018-06-22 09:34:08 +09:00
vmci_transport_notify_qstate.c VSOCK: use TCP state constants for sk_state 2017-10-05 18:44:17 -07:00
vmci_transport_notify.c VSOCK: use TCP state constants for sk_state 2017-10-05 18:44:17 -07:00
vmci_transport_notify.h
vmci_transport.c vsock: split dwork to avoid reinitializations 2018-08-07 12:39:13 -07:00
vmci_transport.h
vsock_addr.c