diff options
Diffstat (limited to 'drivers/virtio/virtio_ring.c')
-rw-r--r-- | drivers/virtio/virtio_ring.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 5777196bf6c9..5c52369ab9bb 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c | |||
@@ -23,15 +23,21 @@ | |||
23 | 23 | ||
24 | #ifdef DEBUG | 24 | #ifdef DEBUG |
25 | /* For development, we want to crash whenever the ring is screwed. */ | 25 | /* For development, we want to crash whenever the ring is screwed. */ |
26 | #define BAD_RING(vq, fmt...) \ | 26 | #define BAD_RING(_vq, fmt...) \ |
27 | do { dev_err(&vq->vq.vdev->dev, fmt); BUG(); } while(0) | 27 | do { dev_err(&(_vq)->vq.vdev->dev, fmt); BUG(); } while(0) |
28 | #define START_USE(vq) \ | 28 | /* Caller is supposed to guarantee no reentry. */ |
29 | do { if ((vq)->in_use) panic("in_use = %i\n", (vq)->in_use); (vq)->in_use = __LINE__; mb(); } while(0) | 29 | #define START_USE(_vq) \ |
30 | #define END_USE(vq) \ | 30 | do { \ |
31 | do { BUG_ON(!(vq)->in_use); (vq)->in_use = 0; mb(); } while(0) | 31 | if ((_vq)->in_use) \ |
32 | panic("in_use = %i\n", (_vq)->in_use); \ | ||
33 | (_vq)->in_use = __LINE__; \ | ||
34 | mb(); \ | ||
35 | } while(0) | ||
36 | #define END_USE(_vq) \ | ||
37 | do { BUG_ON(!(_vq)->in_use); (_vq)->in_use = 0; mb(); } while(0) | ||
32 | #else | 38 | #else |
33 | #define BAD_RING(vq, fmt...) \ | 39 | #define BAD_RING(_vq, fmt...) \ |
34 | do { dev_err(&vq->vq.vdev->dev, fmt); (vq)->broken = true; } while(0) | 40 | do { dev_err(&_vq->vq.vdev->dev, fmt); (_vq)->broken = true; } while(0) |
35 | #define START_USE(vq) | 41 | #define START_USE(vq) |
36 | #define END_USE(vq) | 42 | #define END_USE(vq) |
37 | #endif | 43 | #endif |