[media] ivtv: steal could be NULL
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 22 Feb 2016 16:27:20 +0000 (13:27 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 23 Feb 2016 10:22:22 +0000 (07:22 -0300)
ivtv_flush_queues() calls ivtv_queue_move() with steal == NULL.
However, part of the code assumes that steal could be not null, as
pointed by smatch:
drivers/media/pci/ivtv/ivtv-queue.c:145 ivtv_queue_move() error: we previously assumed 'steal' could be null (see line 138)

This has the potential of causing an OOPS when the queue is
flushed.

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/pci/ivtv/ivtv-queue.c

index 7fde36e6d22704b9fd8a748c88e67188422d1520..2128c2a8d7fd6d54c0159504dec4839cbd0d5c00 100644 (file)
@@ -141,7 +141,7 @@ int ivtv_queue_move(struct ivtv_stream *s, struct ivtv_queue *from, struct ivtv_
                spin_unlock_irqrestore(&s->qlock, flags);
                return -ENOMEM;
        }
-       while (bytes_available < needed_bytes) {
+       while (steal && bytes_available < needed_bytes) {
                struct ivtv_buffer *buf = list_entry(steal->list.prev, struct ivtv_buffer, list);
                u16 dma_xfer_cnt = buf->dma_xfer_cnt;