Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp2914893ybx; Fri, 8 Nov 2019 11:12:44 -0800 (PST) X-Google-Smtp-Source: APXvYqxORF7OWES9ZEYDU+VzrHLb4h9mmTgGrQP3/7L4fWbTqaPdeN632p0Ors6TacZ5nYW95lCf X-Received: by 2002:aa7:d2cf:: with SMTP id k15mr12079706edr.267.1573240364356; Fri, 08 Nov 2019 11:12:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573240364; cv=none; d=google.com; s=arc-20160816; b=H2+wc8pB7e8M4Hw5YIZ8C7xPL6tJcDF1W4FqpN0n8dRODgHHIKw2piEn3BFx76ijeK xIyYYs9ZLAQAWBAEAokvajnZs5EDhRl8Gvv8anP1fFbZC7h5OYryR33Xpm9Wq/V3GGwT SWHr7LJF+m2ne6zGfjdzE18WPUAByCpl58a+j0dFrHtu3txLerILKw7cSrcL+xl3su0q rGXi5KXNlObPfEIRtVyG8JBxqvyrkDXbQ2NjafjnB+XWRzGs/yWC70FpdnSVd/0OiaKL 8BH9nnpdyF+qt7rCCinU/jpYtp8S3FzLxlhcFsQ/Ss+up8bYjW0bJh2/rg5S52NJopl/ pJhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=EANmIQzKErKXl8vRQ5x388H9+SDeRHtzHnFFBXmbEkE=; b=m4l7Lau2eJM5GQKTRQQ1KmEkClZT3KVdjfH+QOgHlh5BLHC7EgrG68llhTR2eaEAMP mv/p88lvb0dhhlCR2OtWkyW44dP4il+/nc66yqZYeZNwkvvcpVRmbz7vzppvRZGh2cIL ydY3OwlV/dVtoQpKJcRDW73OTIlSA0XngSMHGRpvJ71za4Wy6y70xq8+FIYLVJD7d0p/ VKtEcC+gTM9qym1auL/7MZ7gmsYpsaijeHi3m/3X7LXg61l9p5CQ6KwIe0c2gWDKIxeX aAS65UIe2cvpUf51wTh5a5dGtBasNS1qToImZeQ7xJb2oVJiRQGD4HhO+MOw8OTXkjst BwAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="uWF8kh/s"; 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 h1si4584209eds.434.2019.11.08.11.12.20; Fri, 08 Nov 2019 11:12:44 -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; dkim=pass header.i=@kernel.org header.s=default header.b="uWF8kh/s"; 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 S2390534AbfKHTKL (ORCPT + 99 others); Fri, 8 Nov 2019 14:10:11 -0500 Received: from mail.kernel.org ([198.145.29.99]:42230 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390558AbfKHTKH (ORCPT ); Fri, 8 Nov 2019 14:10:07 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DD61A2087E; Fri, 8 Nov 2019 19:10:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573240206; bh=YhMzm4NgSEM2VlaCR0suJJCJG7KofwFCLJtHo+JQlgA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uWF8kh/s8lRXGRNio2rqmwBwPSDoeOXY1g7ePzHCEZfomViinFNVZKyB9tGO72yoD DjPRbt9aiP0j4ike6r7C1Z//drn+Q+ZOKVeATgsdTnHlnph/1b5D18GajLG2qjnhX2 5hrmwbrLOgijSBJnFaK/zPB8rmC9fu5h2y13FHcs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, kbuild test robot , Dan Carpenter , Ben Hutchings , Jakub Kicinski , Simon Horman , "David S. Miller" Subject: [PATCH 5.3 126/140] net: netem: fix error path for corrupted GSO frames Date: Fri, 8 Nov 2019 19:50:54 +0100 Message-Id: <20191108174912.631787150@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191108174900.189064908@linuxfoundation.org> References: <20191108174900.189064908@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jakub Kicinski [ Upstream commit a7fa12d15855904aff1716e1fc723c03ba38c5cc ] To corrupt a GSO frame we first perform segmentation. We then proceed using the first segment instead of the full GSO skb and requeue the rest of the segments as separate packets. If there are any issues with processing the first segment we still want to process the rest, therefore we jump to the finish_segs label. Commit 177b8007463c ("net: netem: fix backlog accounting for corrupted GSO frames") started using the pointer to the first segment in the "rest of segments processing", but as mentioned above the first segment may had already been freed at this point. Backlog corrections for parent qdiscs have to be adjusted. Fixes: 177b8007463c ("net: netem: fix backlog accounting for corrupted GSO frames") Reported-by: kbuild test robot Reported-by: Dan Carpenter Reported-by: Ben Hutchings Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/sched/sch_netem.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -509,6 +509,7 @@ static int netem_enqueue(struct sk_buff if (skb->ip_summed == CHECKSUM_PARTIAL && skb_checksum_help(skb)) { qdisc_drop(skb, sch, to_free); + skb = NULL; goto finish_segs; } @@ -593,9 +594,10 @@ static int netem_enqueue(struct sk_buff finish_segs: if (segs) { unsigned int len, last_len; - int nb = 0; + int nb; - len = skb->len; + len = skb ? skb->len : 0; + nb = skb ? 1 : 0; while (segs) { skb2 = segs->next; @@ -612,7 +614,8 @@ finish_segs: } segs = skb2; } - qdisc_tree_reduce_backlog(sch, -nb, prev_len - len); + /* Parent qdiscs accounted for 1 skb of size @prev_len */ + qdisc_tree_reduce_backlog(sch, -(nb - 1), -(len - prev_len)); } return NET_XMIT_SUCCESS; }