Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp470369pxv; Fri, 9 Jul 2021 02:07:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy9yCQqpzYYKDI2oGHkTYN+r2y4RGo4acNP+hAH/uBqbRDpixvjaB5j0f4t7N3SlL0nG59A X-Received: by 2002:a05:6638:341:: with SMTP id x1mr30800946jap.118.1625821653018; Fri, 09 Jul 2021 02:07:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625821653; cv=none; d=google.com; s=arc-20160816; b=Vmx6VVkkaf+BWISz+Jq0c6v73274oM+lKQbX0ewfCqi0fGCzbC3Ojc6B2SJpeXmv3W b+KMQdNUBa8Dd15dW8nEnYLJTh/c7vbSCT7ZcRtNDahJRELXESZEc5dpfuWIph9ZbnlQ e5qD3u3b9ZCHH0+LMjXjo5de6faUWePh6+aqQQkMqJMRpe3mNwb60c3WC1xeY/ETF4M6 1VTk9gRBhp6eW+41+4huDGlWxbtVqSZTalGSB1xRsXknyf2EJ+zXAbF3S2mDOAW2hF6s sq37hojH+X7MyuRwQM0syZ3IJkjlgk02sDn5jRtPlB8zrwuLkjey/4UWAqXpbWns1SJ/ sQOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:references:cc :to:subject:from:dkim-signature; bh=vxFf38SOUahWQtSH3d9qMh/k+xeLcgZ7RGmybH79yIc=; b=cv34MdRhHaQsIVPQZ4WvGqUy78Z6uq8uoWg7/F6YTJJEKI32VLbm8yByk7z6BLYd3f Tst3X7INzPKGRqL/c8nzdzftwmacx1KBjdTb4x7+sjyz37gS8O0d3fMHKBWurYNN8cRR O4Dbi5t5mbydi+qR+wXOB9id5xRbAED2uk6IyPX05aNAIqELopg0UCESYprIZIMW7oX1 xSnTsbEC1eeJGzsoQlyY9e9JkWNTRhJyJLPV1id2VaaAfetPAcxC0LqLQviflVW7s+OU 10h9yNLKqlNnFgsppKTx0zvGiSmdnPl8wIPtDACmz59iK3sves6BDr7OKA5UoC6jpBB5 Iu2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=mngrbbUR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w132si5261934jab.61.2021.07.09.02.07.21; Fri, 09 Jul 2021 02:07:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=mngrbbUR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231804AbhGIJHk (ORCPT + 99 others); Fri, 9 Jul 2021 05:07:40 -0400 Received: from relay.sw.ru ([185.231.240.75]:59432 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229563AbhGIJHj (ORCPT ); Fri, 9 Jul 2021 05:07:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Content-Type:MIME-Version:Date:Message-ID:Subject :From; bh=vxFf38SOUahWQtSH3d9qMh/k+xeLcgZ7RGmybH79yIc=; b=mngrbbURItm3FXQH2kV C6sMNJ8ZKZ1Rcgn8AwClMOawXSDMYnkMUSLKug5oyv6PWiiRtWG406V84IMUjprOK1XAeuR6ChICW E5Kj0MwqbfClATHWP49vcn14KxG0lcFqlzQKRzakHJYCRsCtqQVEYmKkuixY+AAvFyak9uAU/Is=; Received: from [10.93.0.56] by relay.sw.ru with esmtp (Exim 4.94.2) (envelope-from ) id 1m1mRK-003Pl0-TM; Fri, 09 Jul 2021 12:04:54 +0300 From: Vasily Averin Subject: [PATCH IPV6 v2 2/4] ipv6: use new helper skb_expand_head() in ip6_xmit() To: "David S. Miller" , Hideaki YOSHIFUJI , David Ahern , Jakub Kicinski , Eric Dumazet Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org References: <1cbf3c7b-455e-f3a5-cc2c-c18ce8be4ce1@gmail.com> Message-ID: <64dd5cd2-cfd9-60b3-ae1c-39470ff75256@virtuozzo.com> Date: Fri, 9 Jul 2021 12:04:54 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By this way can be changed: pptp_xmit vrf_finish_output ax25_transmit_buffer ax25_rt_build_path bpf_out_neigh_v6 bpf_out_neigh_v4 ip_finish_output2 ip6_tnl_xmit ipip6_tunnel_xmit ip_vs_prepare_tunneled_skb Signed-off-by: Vasily Averin --- net/ipv6/ip6_output.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 6c5f85f..9418802 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -278,25 +278,21 @@ int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6, struct ipv6hdr *hdr; u8 proto = fl6->flowi6_proto; int seg_len = skb->len; - int hlimit = -1; + int delta, hlimit = -1; u32 mtu; head_room = sizeof(struct ipv6hdr) + LL_RESERVED_SPACE(dst->dev); if (opt) head_room += opt->opt_nflen + opt->opt_flen; - if (unlikely(skb_headroom(skb) < head_room)) { - struct sk_buff *skb2 = skb_realloc_headroom(skb, head_room); - if (!skb2) { - IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)), + delta = head_room - skb_headroom(skb); + if (unlikely(delta > 0)) { + skb = skb_expand_head(skb, delta); + if (!skb) { + IP6_INC_STATS(net, ip6_dst_idev(dst), IPSTATS_MIB_OUTDISCARDS); - kfree_skb(skb); return -ENOBUFS; } - if (skb->sk) - skb_set_owner_w(skb2, skb->sk); - consume_skb(skb); - skb = skb2; } if (opt) { -- 1.8.3.1