virtio: check virtqueue parameter when detaching
authorBernard Iremonger <bernard.iremonger@intel.com>
Wed, 15 Jul 2015 13:51:01 +0000 (14:51 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 19 Jul 2015 20:24:42 +0000 (22:24 +0200)
If vq is NULL, there is a segmentation fault.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
drivers/net/virtio/virtqueue.c

index 8a3005f..7f60e3e 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -60,11 +60,13 @@ virtqueue_detatch_unused(struct virtqueue *vq)
        struct rte_mbuf *cookie;
        int idx;
 
-       for (idx = 0; idx < vq->vq_nentries; idx++) {
-               if ((cookie = vq->vq_descx[idx].cookie) != NULL) {
-                       vq->vq_descx[idx].cookie = NULL;
-                       return cookie;
+       if (vq != NULL)
+               for (idx = 0; idx < vq->vq_nentries; idx++) {
+                       cookie = vq->vq_descx[idx].cookie;
+                       if (cookie != NULL) {
+                               vq->vq_descx[idx].cookie = NULL;
+                               return cookie;
+                       }
                }
-       }
        return NULL;
 }