Commit 980fd895 authored by Julia Lawall's avatar Julia Lawall Committed by Greg Kroah-Hartman
Browse files

Staging: b3dfg: Drop NULL test on list_entry result

list_entry, which is an alias for container_of, cannot return NULL, as
there is no way to add a NULL value to a doubly linked list.

A simplified version of the semantic match that findds this problem is as
follows:
(http://www.emn.fr/x-info/coccinelle/

)

// <smpl>
@r@
expression x,E;
statement S1,S2;
position p,p1;
@@

*x = list_entry@p(...)
... when != x = E
*if@p1 (x == NULL) S1 else S2
// </smpl>

Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f2eb5197
Loading
Loading
Loading
Loading
+17 −24
Original line number Diff line number Diff line
@@ -632,7 +632,7 @@ static void transfer_complete(struct b3dfg_dev *fgdev)
	fgdev->cur_dma_frame_addr = 0;

	buf = list_entry(fgdev->buffer_queue.next, struct b3dfg_buffer, list);
	if (buf) {

	dev_dbg(dev, "handle frame completion\n");
	if (fgdev->cur_dma_frame_idx == B3DFG_FRAMES_PER_BUFFER - 1) {

@@ -642,9 +642,6 @@ static void transfer_complete(struct b3dfg_dev *fgdev)
		list_del_init(&buf->list);
		wake_up_interruptible(&fgdev->buffer_waitqueue);
	}
	} else {
		dev_err(dev, "got frame but no buffer!\n");
	}
}

/*
@@ -663,7 +660,6 @@ static bool setup_next_frame_transfer(struct b3dfg_dev *fgdev, int idx)
	dev_dbg(dev, "program DMA transfer for next frame: %d\n", idx);

	buf = list_entry(fgdev->buffer_queue.next, struct b3dfg_buffer, list);
	if (buf) {
	if (idx == fgdev->cur_dma_frame_idx + 2) {
		if (setup_frame_transfer(fgdev, buf, idx - 1))
			dev_err(dev, "unable to map DMA buffer\n");
@@ -674,9 +670,6 @@ static bool setup_next_frame_transfer(struct b3dfg_dev *fgdev, int idx)

		/* FIXME: handle dropped triplets here */
	}
	} else {
		dev_err(dev, "cannot setup DMA, no buffer\n");
	}

	return need_ack;
}