Page MenuHomeFreeBSD

D8570.id22321.diff
No OneTemporary

D8570.id22321.diff

Index: sys/dev/hyperv/vmbus/vmbus_chan.c
===================================================================
--- sys/dev/hyperv/vmbus/vmbus_chan.c
+++ sys/dev/hyperv/vmbus/vmbus_chan.c
@@ -814,8 +814,22 @@
/*
* Disconnect the TX+RX bufrings from this channel.
*/
- if (chan->ch_bufring_gpadl) {
- vmbus_chan_gpadl_disconnect(chan, chan->ch_bufring_gpadl);
+ if (chan->ch_bufring_gpadl != 0) {
+ int error1;
+
+ error1 = vmbus_chan_gpadl_disconnect(chan,
+ chan->ch_bufring_gpadl);
+ if (error1) {
+ /*
+ * XXX
+ * The bufring GPADL is still connected; abandon
+ * this bufring, instead of having mysterious
+ * crash or trashed data later on.
+ */
+ vmbus_chan_printf(chan, "chan%u bufring GPADL "
+ "is still connected after close\n", chan->ch_id);
+ chan->ch_bufring = NULL;
+ }
chan->ch_bufring_gpadl = 0;
}

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 20, 9:53 AM (18 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29973604
Default Alt Text
D8570.id22321.diff (863 B)

Event Timeline