Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp1080927rdb; Fri, 1 Dec 2023 06:39:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IFguxT9a65kVIp5/GRrF536rujDQauh4OPrwnImjAj5T3zi1OUNJqG9WgB1DGAAnSD8jRl2 X-Received: by 2002:a05:6358:40e:b0:16e:5ae3:30f2 with SMTP id 14-20020a056358040e00b0016e5ae330f2mr9895464rwd.4.1701441583290; Fri, 01 Dec 2023 06:39:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701441583; cv=none; d=google.com; s=arc-20160816; b=QdQOhT4H5UElc2A1iHiMZtqz8aLTAe1EO2yb59OpQGbousyQJN08szD3LVs3OZEIJl B/+GMbrGObTqmzLQdGBJRYxnC4/n9FvBPlMhYcMGv7+EifdAUkrppp275/NmBK3vzB6Z K7X0n4cO0TMtEbF/JIVA/J5LdJm3NK19v8UWCc1LnS8Gz5TDVP+PC1RQlTZ3bON9KLjU h8Uo3BcLrDDDMVveZqTPAGJP0H9tUWE3q6Atb8RKYj7uSPRNSJPQZxvOpwwFglk8Udj+ 7oPuBuDl6y/DC/YVW5v2lShMIM3iPVCmUpi2YHiZzXuNRgxWh78QGfcc1XJzWSb+9ZoS Vulg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=XWdC8pAV7jkFsViaiEZwj8Vm0eg8l6gjScL5lYPb+e0=; fh=WLaaapiirTQIm8ul+N0E7ty+OAG9VckTLAIRj3YIqwU=; b=JFU/i5bVxtKbmxser6iP4r73CrVqpHfXhnaDvWbPTGOxyfHanI3WYfVoLXzxRp4PxV egPWPaEXZ95EjzK2NCRqdEADQ1HcZxe4ROJb0Bga/Qzy4jbiZ3VOqNFUEhZ8tvl7onVJ K97LYJQfDJv7FQJjdmKKMZfuZCvZYzCylG1wUI9O+ij8ew2QGOkkG3u05JaSKGaJCahg AwBAK724STdT4ldFgNeMXvBNkl/p5FAAheWBeV5M+cQOIYRy9RP7aT1+tE+P4m3ADhVd QMfMcrg87IUhZXPBmclUXzQcyJKIojLVq4F07u2iyhz9A5jwWXtpMHLXPbFY79sRM5Wd 2Jfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=S5NX34br; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id bh10-20020a056a02020a00b005c2122e482csi3581028pgb.700.2023.12.01.06.39.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 06:39:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=S5NX34br; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 7D4EF806A431; Fri, 1 Dec 2023 06:39:41 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379192AbjLAOjb (ORCPT + 99 others); Fri, 1 Dec 2023 09:39:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379202AbjLAOj2 (ORCPT ); Fri, 1 Dec 2023 09:39:28 -0500 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E66E171B; Fri, 1 Dec 2023 06:39:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701441571; x=1732977571; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=t8zt17gleUs6XdyCrQUt22NFtXS6H7COoWrjOZ8T+sc=; b=S5NX34br8AOZqWrnoTha5RmB6Ti7SNlMM5quV1FwhII2MJZVw2ybeBKz hYSEIZI7CsIdCtXVoaWdldwy2jBxk//l3T/+naoUv5hrIDoahc5WJKUw8 xShpCeeQMpu1dZ+bOkxKUs/Yvo8NEPQWNOkR5cU+bmk4PcaYY9Q4Cp6ZH 0y8eo5kB3SE7xW8Pq8V8ErQZZlkJjm5F2/R16jEQ3xHi82wkN3VDwZAma ex88pLiSIf2pbTRqPXFF2tQQmTEX5IeCFUmn1iL1vb2d/99g3zHEp9Px0 FuC9oMgvGI+GdEV9U56URj1i2goXgFkEI0SWeKwSDgAWib1diYCDf9SYF A==; X-IronPort-AV: E=McAfee;i="6600,9927,10911"; a="359144" X-IronPort-AV: E=Sophos;i="6.04,241,1695711600"; d="scan'208";a="359144" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2023 06:39:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10911"; a="913597561" X-IronPort-AV: E=Sophos;i="6.04,241,1695711600"; d="scan'208";a="913597561" Received: from newjersey.igk.intel.com ([10.102.20.203]) by fmsmga001.fm.intel.com with ESMTP; 01 Dec 2023 06:39:28 -0800 From: Alexander Lobakin To: intel-wired-lan@lists.osuosl.org Cc: Alexander Lobakin , Michal Kubiak , Przemek Kitszel , Maciej Fijalkowski , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH iwl] idpf: fix corrupted frames and skb leaks in singleq mode Date: Fri, 1 Dec 2023 15:38:21 +0100 Message-ID: <20231201143821.1091005-1-aleksander.lobakin@intel.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 01 Dec 2023 06:39:41 -0800 (PST) idpf_ring::skb serves only for keeping an incomplete frame between several NAPI Rx polling cycles, as one cycle may end up before processing the end of packet descriptor. The pointer is taken from the ring onto the stack before entering the loop and gets written there after the loop exits. When inside the loop, only the onstack pointer is used. For some reason, the logics is broken in the singleq mode, where the pointer is taken from the ring each iteration. This means that if a frame got fragmented into several descriptors, each fragment will have its own skb, but only the last one will be passed up the stack (containing garbage), leaving the rest leaked. Just don't touch the ring skb field inside the polling loop, letting the onstack skb pointer work as expected: build a new skb if it's the first frame descriptor and attach a frag otherwise. Fixes: a5ab9ee0df0b ("idpf: add singleq start_xmit and napi poll") Reviewed-by: Przemek Kitszel Reviewed-by: Michal Kubiak Signed-off-by: Alexander Lobakin --- drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c index 81288a17da2a..20c4b3a64710 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c +++ b/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c @@ -1044,7 +1044,6 @@ static int idpf_rx_singleq_clean(struct idpf_queue *rx_q, int budget) } idpf_rx_sync_for_cpu(rx_buf, fields.size); - skb = rx_q->skb; if (skb) idpf_rx_add_frag(rx_buf, skb, fields.size); else -- 2.43.0