Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2975286imu; Sun, 9 Dec 2018 14:05:11 -0800 (PST) X-Google-Smtp-Source: AFSGD/UsUe/144KMvJA+yVwWrCXQmWBS4UoRNF17VDcjDvpyoqWY4wFxzHROb+9eH8wtvWDiSsyN X-Received: by 2002:a17:902:1005:: with SMTP id b5mr9887508pla.310.1544393111696; Sun, 09 Dec 2018 14:05:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544393111; cv=none; d=google.com; s=arc-20160816; b=Zwxp3UyzX5jH6aIqYyGdjamvgBvJjFIO9OzjMJx65IxQz35Hf854OdB9D8I1lO4oBi Q1b7zrKTAXEUu+vaJsESXP/9Hdx1Nbx3jdNOgPymkVD5Gph+jvuKuyDVtgqHvjnxCrrp 2rmiFFt6Bmam+OUPH2xm74+ZNZNirvHHjo7qNuwmJE+O+VHdY7Wp/nPUG2LSa8at0fAh n8rE5ZUpdBOART0PXEFaxXOSOtGzCI4f8vWvr6I+qD7otCMYkRnFgmGHPIQGyVdTrskD g4EqovUBjxfIKKkb6cvo5HhiUtwAUsRPRlvazikXWlCBqF+C+CyV60pDsL15AT35kDk5 BhcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=Z0t1eITLdIl9i8Uah37FxlnUzcByOzcZBXfbFTuroLE=; b=NyQpHD/4MVZhXXW4vIHGsVUELdcXKyuP3HZUp9p+eP2bkYkMLJixUvWRMUCg+uksqh UG3qvBSINDwnHaYqCg5PbhjcFLwDpTBD3hgYg4/oPcFyQ/d+J0eoTPq1VPymhb/g2kJO aIU9uWbEIufQOP5U0TuuhDkNF3C+I4SdPyLRspyaGztTOC4Bjjrvx8nDdfW/hsolLNfb X7fAtYJmcKUKXV+hR+D0dsFsILdmlgVXwTavFEIrYO26RZN1SRyU2D0v79V4zFLM7hAp L5LkrBA6P15Bw0tLlBq9uk940BnDsmYbNOhD2Uz26nu+7hiwM9S2im76qo0lQNQZq9St LeKg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f35si8442671plh.399.2018.12.09.14.04.56; Sun, 09 Dec 2018 14:05:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727382AbeLIWDi (ORCPT + 99 others); Sun, 9 Dec 2018 17:03:38 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:35656 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726599AbeLIVz2 (ORCPT ); Sun, 9 Dec 2018 16:55:28 -0500 Received: from pub.yeoldevic.com ([81.174.156.145] helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gW72r-0002ir-1O; Sun, 09 Dec 2018 21:55:25 +0000 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1gW72l-0003hD-Jh; Sun, 09 Dec 2018 21:55:19 +0000 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, "David Ahern" , "David S. Miller" Date: Sun, 09 Dec 2018 21:50:33 +0000 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 319/328] net/ipv6: Fix index counter for unicast addresses in in6_dump_addrs In-Reply-To: X-SA-Exim-Connect-IP: 81.174.156.145 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.62-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: David Ahern commit 4ba4c566ba8448a05e6257e0b98a21f1a0d55315 upstream. The loop wants to skip previously dumped addresses, so loops until current index >= saved index. If the message fills it wants to save the index for the next address to dump - ie., the one that did not fit in the current message. Currently, it is incrementing the index counter before comparing to the saved index, and then the saved index is off by 1 - it assumes the current address is going to fit in the message. Change the index handling to increment only after a succesful dump. Fixes: 502a2ffd7376a ("ipv6: convert idev_list to list macros") Signed-off-by: David Ahern Signed-off-by: David S. Miller Signed-off-by: Ben Hutchings --- net/ipv6/addrconf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -4085,8 +4085,8 @@ static int in6_dump_addrs(struct inet6_d /* unicast address incl. temp addr */ list_for_each_entry(ifa, &idev->addr_list, if_list) { - if (++ip_idx < s_ip_idx) - continue; + if (ip_idx < s_ip_idx) + goto next; err = inet6_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, @@ -4095,6 +4095,8 @@ static int in6_dump_addrs(struct inet6_d if (err <= 0) break; nl_dump_check_consistent(cb, nlmsg_hdr(skb)); +next: + ip_idx++; } break; }