diff mbox

[net] netlink: mmap: fix lookup frame position

Message ID 20150828070520.GB32596@gmail.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Ken-ichirou MATSUZAWA Aug. 28, 2015, 7:05 a.m. UTC
__netlink_lookup_frame() was always called with the same "pos"
value in netlink_forward_ring(). It will look at the same ring entry
header over and over again, every time through this loop. Then cycle
through the whole ring, advancing ring->head, not "pos" until it
equals the "ring->head != head" loop test fails.

Signed-off-by: Ken-ichirou MATSUZAWA <chamas@h4.dion.ne.jp>
---
 net/netlink/af_netlink.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

David Miller Aug. 29, 2015, 5:26 a.m. UTC | #1
From: Ken-ichirou MATSUZAWA <chamaken@gmail.com>
Date: Fri, 28 Aug 2015 16:05:20 +0900

> __netlink_lookup_frame() was always called with the same "pos"
> value in netlink_forward_ring(). It will look at the same ring entry
> header over and over again, every time through this loop. Then cycle
> through the whole ring, advancing ring->head, not "pos" until it
> equals the "ring->head != head" loop test fails.
> 
> Signed-off-by: Ken-ichirou MATSUZAWA <chamas@h4.dion.ne.jp>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index a774985..39fa91f 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -610,11 +610,11 @@  static void netlink_increment_head(struct netlink_ring *ring)
 
 static void netlink_forward_ring(struct netlink_ring *ring)
 {
-	unsigned int head = ring->head, pos = head;
+	unsigned int head = ring->head;
 	const struct nl_mmap_hdr *hdr;
 
 	do {
-		hdr = __netlink_lookup_frame(ring, pos);
+		hdr = __netlink_lookup_frame(ring, ring->head);
 		if (hdr->nm_status == NL_MMAP_STATUS_UNUSED)
 			break;
 		if (hdr->nm_status != NL_MMAP_STATUS_SKIP)