search for: loopback_work

Displaying 20 results from an estimated 30 matches for "loopback_work".

2019 May 29
2
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...ock/virtio_transport.c > +++ b/net/vmw_vsock/virtio_transport.c > @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) > return ret; > } > > +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) > +{ > + flush_work(&vsock->loopback_work); > + flush_work(&vsock->rx_work); > + flush_work(&vsock->tx_work); > + flush_work(&vsock->event_work); > + flush_work(&vsock->send_pkt_work); > +} > + > static void virtio_vsock_remove(struct virtio_device *vdev) > { > struct virtio_vso...
2019 May 29
2
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...ock/virtio_transport.c > +++ b/net/vmw_vsock/virtio_transport.c > @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) > return ret; > } > > +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) > +{ > + flush_work(&vsock->loopback_work); > + flush_work(&vsock->rx_work); > + flush_work(&vsock->tx_work); > + flush_work(&vsock->event_work); > + flush_work(&vsock->send_pkt_work); > +} > + > static void virtio_vsock_remove(struct virtio_device *vdev) > { > struct virtio_vso...
2019 May 30
2
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...vsock/virtio_transport.c >>> @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) >>> return ret; >>> } >>> +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) >>> +{ >>> + flush_work(&vsock->loopback_work); >>> + flush_work(&vsock->rx_work); >>> + flush_work(&vsock->tx_work); >>> + flush_work(&vsock->event_work); >>> + flush_work(&vsock->send_pkt_work); >>> +} >>> + >>> static void virtio_vsock_remove(struc...
2019 May 30
2
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...vsock/virtio_transport.c >>> @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) >>> return ret; >>> } >>> +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) >>> +{ >>> + flush_work(&vsock->loopback_work); >>> + flush_work(&vsock->rx_work); >>> + flush_work(&vsock->tx_work); >>> + flush_work(&vsock->event_work); >>> + flush_work(&vsock->send_pkt_work); >>> +} >>> + >>> static void virtio_vsock_remove(struc...
2019 May 28
8
[PATCH 0/4] vsock/virtio: several fixes in the .probe() and .remove()
During the review of "[PATCH] vsock/virtio: Initialize core virtio vsock before registering the driver", Stefan pointed out some possible issues in the .probe() and .remove() callbacks of the virtio-vsock driver. This series tries to solve these issues: - Patch 1 postpones the 'the_virtio_vsock' assignment at the end of the .probe() to avoid that some sockets queue works when
2019 May 28
8
[PATCH 0/4] vsock/virtio: several fixes in the .probe() and .remove()
During the review of "[PATCH] vsock/virtio: Initialize core virtio vsock before registering the driver", Stefan pointed out some possible issues in the .probe() and .remove() callbacks of the virtio-vsock driver. This series tries to solve these issues: - Patch 1 postpones the 'the_virtio_vsock' assignment at the end of the .probe() to avoid that some sockets queue works when
2019 May 28
0
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...0ab61..ad093ce96693 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) return ret; } +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) +{ + flush_work(&vsock->loopback_work); + flush_work(&vsock->rx_work); + flush_work(&vsock->tx_work); + flush_work(&vsock->event_work); + flush_work(&vsock->send_pkt_work); +} + static void virtio_vsock_remove(struct virtio_device *vdev) { struct virtio_vsock *vsock = vdev->priv; @@ -668,12 +677,6 @@...
2019 Jun 28
0
[PATCH v2 3/3] vsock/virtio: fix flush of works during the .remove()
...t.c index 1b44ec6f3f6c..96dafa978268 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -680,12 +680,6 @@ static void virtio_vsock_remove(struct virtio_device *vdev) rcu_assign_pointer(the_virtio_vsock, NULL); synchronize_rcu(); - flush_work(&vsock->loopback_work); - flush_work(&vsock->rx_work); - flush_work(&vsock->tx_work); - flush_work(&vsock->event_work); - flush_work(&vsock->send_pkt_work); - /* Reset all connected sockets when the device disappear */ vsock_for_each_connected_socket(virtio_vsock_reset_sock); @@ -740,6...
2019 Jul 05
0
[PATCH v3 3/3] vsock/virtio: fix flush of works during the .remove()
...t.c index 4dbdce7746bd..0815d1357861 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -681,12 +681,6 @@ static void virtio_vsock_remove(struct virtio_device *vdev) rcu_assign_pointer(the_virtio_vsock, NULL); synchronize_rcu(); - flush_work(&vsock->loopback_work); - flush_work(&vsock->rx_work); - flush_work(&vsock->tx_work); - flush_work(&vsock->event_work); - flush_work(&vsock->send_pkt_work); - /* Reset all connected sockets when the device disappear */ vsock_for_each_connected_socket(virtio_vsock_reset_sock); @@ -741,6...
2019 Jul 05
4
[PATCH v3 0/3] vsock/virtio: several fixes in the .probe() and .remove()
During the review of "[PATCH] vsock/virtio: Initialize core virtio vsock before registering the driver", Stefan pointed out some possible issues in the .probe() and .remove() callbacks of the virtio-vsock driver. This series tries to solve these issues: - Patch 1 adds RCU critical sections to avoid use-after-free of 'the_virtio_vsock' pointer. - Patch 2 stops workers before to
2019 May 29
0
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...> +++ b/net/vmw_vsock/virtio_transport.c > > @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) > > return ret; > > } > > +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) > > +{ > > + flush_work(&vsock->loopback_work); > > + flush_work(&vsock->rx_work); > > + flush_work(&vsock->tx_work); > > + flush_work(&vsock->event_work); > > + flush_work(&vsock->send_pkt_work); > > +} > > + > > static void virtio_vsock_remove(struct virtio_device *vdev)...
2019 Dec 10
7
[PATCH net-next v2 0/6] vsock: add local transport support
v2: - style fixes [Dave] - removed RCU sync and changed 'the_vsock_loopback' in a global static variable [Stefan] - use G2H transport when local transport is not loaded and remote cid is VMADDR_CID_LOCAL [Stefan] - rebased on net-next v1: https://patchwork.kernel.org/cover/11251735/ This series introduces a new transport (vsock_loopback) to handle local communication. This
2019 May 30
0
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...t; @@ -660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) > > > > return ret; > > > > } > > > > +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) > > > > +{ > > > > + flush_work(&vsock->loopback_work); > > > > + flush_work(&vsock->rx_work); > > > > + flush_work(&vsock->tx_work); > > > > + flush_work(&vsock->event_work); > > > > + flush_work(&vsock->send_pkt_work); > > > > +} > > > > + > > &...
2019 Jun 28
11
[PATCH v2 0/3] vsock/virtio: several fixes in the .probe() and .remove()
During the review of "[PATCH] vsock/virtio: Initialize core virtio vsock before registering the driver", Stefan pointed out some possible issues in the .probe() and .remove() callbacks of the virtio-vsock driver. This series tries to solve these issues: - Patch 1 adds RCU critical sections to avoid use-after-free of 'the_virtio_vsock' pointer. - Patch 2 stops workers before to
2019 Jun 28
11
[PATCH v2 0/3] vsock/virtio: several fixes in the .probe() and .remove()
During the review of "[PATCH] vsock/virtio: Initialize core virtio vsock before registering the driver", Stefan pointed out some possible issues in the .probe() and .remove() callbacks of the virtio-vsock driver. This series tries to solve these issues: - Patch 1 adds RCU critical sections to avoid use-after-free of 'the_virtio_vsock' pointer. - Patch 2 stops workers before to
2019 Sep 27
0
[RFC PATCH 05/13] vsock/virtio: add transport parameter to the virtio_transport_reset_no_sock()
...t/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c index 082a30936690..3756f0857946 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -86,33 +86,6 @@ static u32 virtio_transport_get_local_cid(void) return ret; } -static void virtio_transport_loopback_work(struct work_struct *work) -{ - struct virtio_vsock *vsock = - container_of(work, struct virtio_vsock, loopback_work); - LIST_HEAD(pkts); - - spin_lock_bh(&vsock->loopback_list_lock); - list_splice_init(&vsock->loopback_list, &pkts); - spin_unlock_bh(&vsock->loopback_list_l...
2019 May 30
2
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) >>>>> return ret; >>>>> } >>>>> +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) >>>>> +{ >>>>> + flush_work(&vsock->loopback_work); >>>>> + flush_work(&vsock->rx_work); >>>>> + flush_work(&vsock->tx_work); >>>>> + flush_work(&vsock->event_work); >>>>> + flush_work(&vsock->send_pkt_work); >>>>> +} >>>>> + >&...
2019 May 30
2
[PATCH 3/4] vsock/virtio: fix flush of works during the .remove()
...660,6 +660,15 @@ static int virtio_vsock_probe(struct virtio_device *vdev) >>>>> return ret; >>>>> } >>>>> +static void virtio_vsock_flush_works(struct virtio_vsock *vsock) >>>>> +{ >>>>> + flush_work(&vsock->loopback_work); >>>>> + flush_work(&vsock->rx_work); >>>>> + flush_work(&vsock->tx_work); >>>>> + flush_work(&vsock->event_work); >>>>> + flush_work(&vsock->send_pkt_work); >>>>> +} >>>>> + >&...
2019 May 28
0
[PATCH 1/4] vsock/virtio: fix locking around 'the_virtio_vsock'
...;the_virtio_vsock_mutex); return 0; @@ -628,6 +635,9 @@ static void virtio_vsock_remove(struct virtio_device *vdev) struct virtio_vsock *vsock = vdev->priv; struct virtio_vsock_pkt *pkt; + mutex_lock(&the_virtio_vsock_mutex); + the_virtio_vsock = NULL; + flush_work(&vsock->loopback_work); flush_work(&vsock->rx_work); flush_work(&vsock->tx_work); @@ -667,13 +677,10 @@ static void virtio_vsock_remove(struct virtio_device *vdev) } spin_unlock_bh(&vsock->loopback_list_lock); - mutex_lock(&the_virtio_vsock_mutex); - the_virtio_vsock = NULL; - mutex_un...
2019 Jun 28
0
[PATCH v2 1/3] vsock/virtio: use RCU to avoid use-after-free on the_virtio_vsock
...vsock) - return VMADDR_CID_ANY; + rcu_read_lock(); + vsock = rcu_dereference(the_virtio_vsock); + if (!vsock) { + ret = VMADDR_CID_ANY; + goto out_rcu; + } - return vsock->guest_cid; + ret = vsock->guest_cid; +out_rcu: + rcu_read_unlock(); + return ret; } static void virtio_transport_loopback_work(struct work_struct *work) @@ -197,14 +200,18 @@ virtio_transport_send_pkt(struct virtio_vsock_pkt *pkt) struct virtio_vsock *vsock; int len = pkt->len; - vsock = virtio_vsock_get(); + rcu_read_lock(); + vsock = rcu_dereference(the_virtio_vsock); if (!vsock) { virtio_transport_free_pkt...