|
@@ -388,6 +388,10 @@ static void discard_port_data(struct port *port)
|
|
|
unsigned int len;
|
|
unsigned int len;
|
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
|
|
|
|
+ if (!port->portdev) {
|
|
|
|
|
+ /* Device has been unplugged. vqs are already gone. */
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
vq = port->in_vq;
|
|
vq = port->in_vq;
|
|
|
if (port->inbuf)
|
|
if (port->inbuf)
|
|
|
buf = port->inbuf;
|
|
buf = port->inbuf;
|
|
@@ -470,6 +474,10 @@ static void reclaim_consumed_buffers(struct port *port)
|
|
|
void *buf;
|
|
void *buf;
|
|
|
unsigned int len;
|
|
unsigned int len;
|
|
|
|
|
|
|
|
|
|
+ if (!port->portdev) {
|
|
|
|
|
+ /* Device has been unplugged. vqs are already gone. */
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
while ((buf = virtqueue_get_buf(port->out_vq, &len))) {
|
|
while ((buf = virtqueue_get_buf(port->out_vq, &len))) {
|
|
|
kfree(buf);
|
|
kfree(buf);
|
|
|
port->outvq_full = false;
|
|
port->outvq_full = false;
|