diff options
author | Heinz Graalfs <graalfs@linux.vnet.ibm.com> | 2013-10-28 19:10:30 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2013-10-28 20:58:17 -0400 |
commit | 7f03b17d5c3f3b63dcacf0e481cf94c9d07267ab (patch) | |
tree | 338af05a9b2456350b84858b314d101c9c71fc5a /drivers/block/virtio_blk.c | |
parent | b3b32c94133621c9ba7e4c8f29ec7533f2f4d8ec (diff) |
virtio_blk: verify if queue is broken after virtqueue_get_buf()
In case virtqueue_get_buf() returned with a NULL pointer verify if the
virtqueue is broken in order to leave while loop.
Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/block/virtio_blk.c')
-rw-r--r-- | drivers/block/virtio_blk.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 6b66252fc4e6..f3be496ac8fa 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
@@ -292,6 +292,8 @@ static void virtblk_done(struct virtqueue *vq) | |||
292 | req_done = true; | 292 | req_done = true; |
293 | } | 293 | } |
294 | } | 294 | } |
295 | if (unlikely(virtqueue_is_broken(vq))) | ||
296 | break; | ||
295 | } while (!virtqueue_enable_cb(vq)); | 297 | } while (!virtqueue_enable_cb(vq)); |
296 | /* In case queue is stopped waiting for more buffers. */ | 298 | /* In case queue is stopped waiting for more buffers. */ |
297 | if (req_done) | 299 | if (req_done) |