Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3668641pxb; Mon, 24 Jan 2022 14:56:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJzdqV7jPjC7StxKD8FYmp3vlmmB+UJmbQidVfdqEyXP+W+V2GDphzGVnLjLharR5xPYr7w9 X-Received: by 2002:a63:6ac1:: with SMTP id f184mr8973502pgc.20.1643064972370; Mon, 24 Jan 2022 14:56:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643064972; cv=none; d=google.com; s=arc-20160816; b=A01fKZ5HxJE92KDrp9CYAXVpB+vulnTo4yddIz3rVQane3OAPsRgI53w9dyL7fFKu9 e4/MF9vJW4FWxYWJqXoy9BiO7FuC8lzRGujvuZyHCOhEAXo69Z1MQNHf6H2AI7PJ3GSE zbp/OJG83oWWsSkpoiBchAGmWoRJFHv8XDGt/RepXKXFtFKSvFOEeqCJeHB+PrTo8VBL +/t/iCOhHdIAgDLPbvKwmeckT6wZb5WQSPq6BLDVosU04LKXgyueY7YzSyoZh5E1NIG9 PAQ115IjK8wdTaMv5mCOTcGXltqeUcwvOWQA6KotN6oxJCYKBUi4XVQlvmJf8kGs7vka J6cQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9Ny1L5TPHtq3pPkxCMg10pHmCoPGvUaINm81jprxyyk=; b=B+FfPHR6MTHapAsiIDY6onvMc1tG6Mug2U8v4GEW1QPOO59yz8H+ljOh4qss3QtYDN zKj/FLUo3D6X4656wTIuvfFJ3ZQRHpMxSMGYy/zcpf/eQgDz4Hxd2l5A7wzxqRR9P1UL 0fXQvtsLUouoflXgG5lPMVf18ovapTHPVTMCfAYjdAB4Ssl/VVPbFyhys5mFkUvyt7vK LNFf46Kb4TtgdZ+aYTrLHwG0U7hg0/KMSHSJXfN7CpghvnQbfu3qc/FNAhXjpv2M5Pmy hsWvVSJ+bR3MhopLiFOA6fzlvnUYBFQFqJHpc4nnGne0PVRuhkaU5EX/W3D4F/8stmMA KEcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=yjb5nDQI; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c9si514806pjg.176.2022.01.24.14.55.59; Mon, 24 Jan 2022 14:56:12 -0800 (PST) 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=@linuxfoundation.org header.s=korg header.b=yjb5nDQI; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1839851AbiAXWwC (ORCPT + 99 others); Mon, 24 Jan 2022 17:52:02 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]:33472 "EHLO dfw.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379034AbiAXVoI (ORCPT ); Mon, 24 Jan 2022 16:44:08 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D638C61534; Mon, 24 Jan 2022 21:44:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B6A88C340E4; Mon, 24 Jan 2022 21:44:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643060647; bh=157YON3ewFpZewgxjqxaCDDdcCeplABo9eTS1EJvvBU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yjb5nDQIzmgEnWMfvXCY5T83twSZlgWVp1wP8nLDiqHlXJQifdBl4ap9K6191/t6g tpI/5J/6DKWb2QC5Vvoo0syn949KYc+q6cQVMDlvaiMR5iXoarB+hE454j6UNqsbgX kUCXKEzBcL8Yve7Xen/wK5NTCCv+bqP8+cUlZOeU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Matthias Kaehlcke , Alex Elder , "David S. Miller" Subject: [PATCH 5.16 1010/1039] net: ipa: fix atomic update in ipa_endpoint_replenish() Date: Mon, 24 Jan 2022 19:46:39 +0100 Message-Id: <20220124184159.242299257@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184125.121143506@linuxfoundation.org> References: <20220124184125.121143506@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alex Elder commit 6c0e3b5ce94947b311348c367db9e11dcb2ccc93 upstream. In ipa_endpoint_replenish(), if an error occurs when attempting to replenish a receive buffer, we just quit and try again later. In that case we increment the backlog count to reflect that the attempt was unsuccessful. Then, if the add_one flag was true we increment the backlog again. This second increment is not included in the backlog local variable though, and its value determines whether delayed work should be scheduled. This is a bug. Fix this by determining whether 1 or 2 should be added to the backlog before adding it in a atomic_add_return() call. Reviewed-by: Matthias Kaehlcke Fixes: 84f9bd12d46db ("soc: qcom: ipa: IPA endpoints") Signed-off-by: Alex Elder Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- drivers/net/ipa/ipa_endpoint.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) --- a/drivers/net/ipa/ipa_endpoint.c +++ b/drivers/net/ipa/ipa_endpoint.c @@ -1067,6 +1067,7 @@ static void ipa_endpoint_replenish(struc { struct gsi *gsi; u32 backlog; + int delta; if (!endpoint->replenish_enabled) { if (add_one) @@ -1084,10 +1085,8 @@ static void ipa_endpoint_replenish(struc try_again_later: /* The last one didn't succeed, so fix the backlog */ - backlog = atomic_inc_return(&endpoint->replenish_backlog); - - if (add_one) - atomic_inc(&endpoint->replenish_backlog); + delta = add_one ? 2 : 1; + backlog = atomic_add_return(delta, &endpoint->replenish_backlog); /* Whenever a receive buffer transaction completes we'll try to * replenish again. It's unlikely, but if we fail to supply even