Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp2502249pxk; Sun, 20 Sep 2020 06:27:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJws2vQkHVTgcvPGof9pYbPkGgggimFAW2ATe9730gXA86doC/0p6fXPvcYWQA21iIK04d+c X-Received: by 2002:a17:906:4c51:: with SMTP id d17mr44831711ejw.28.1600608444245; Sun, 20 Sep 2020 06:27:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600608444; cv=none; d=google.com; s=arc-20160816; b=xv4Lb3/c0Z4k9D9shQIkYjbaNX6eENtuMvr/a1TzQfRFSANV+3Ke8lbnynqs8OnlfM a2vZxdSD8hD+0ggbfCKTdICDBITYvNQ4JyEXsvtysjMbERd/YH6KLpBTBRE4yWbLcHli SARwHAneZTTSaJR9DpSmpV9DRKyJBfpCtKQhBQTAtvxGIf+A6evOYhsrdk9ZsYRGoOxO SPw9LPmVRBu+N4H5JVHlC7oZ7Lydkn26eA4OSaSSqLEQk5cBEO5HqlUOLn2oZyJFYma2 M/kewUO1XA3bNJIxCVhub90bu9oLaw0E5h4C9if4iSfsjvKFZVZvKQrsoewpnQBqxnBr QATA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=qfI2IMxoOM9twDERtHPnmwmJ1cITW8j2yls5HqlwuPE=; b=w0x/O6mdHnQ+l7kXkN80grcyfJsZB0fAZv+G3FURFzNtWMZS6qgi8m7lK7AFu0nknJ /hVa18W/A/njef1brFGLjHPOslGbxP2uITfxocRLfCpK1msEOaBgsUiHzsHiQNGOKGEK riJoo38Ma6xLqlO4/ZztCLVA+ulQwtfhzKJVgHUHL3BlF8iq41aBesjRa+JFpD+2hPFK UhAo/Cy7nVo06JVN+66v2FrjyIjSv+yzQ4OgS+40PsMnznuYLCJzfKrIUCXZ2+exc94k FM9a3fIuHfi7G8EGVxF12PVHkQHh74/dw47ycIVxU8nuaD1UrDNiII8Zd0Iq1fD3Tcxe CABQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n13si6592363edq.92.2020.09.20.06.26.47; Sun, 20 Sep 2020 06:27:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726437AbgITN03 (ORCPT + 99 others); Sun, 20 Sep 2020 09:26:29 -0400 Received: from mx2.suse.de ([195.135.220.15]:35488 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726327AbgITN0Z (ORCPT ); Sun, 20 Sep 2020 09:26:25 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 4E375ADA8; Sun, 20 Sep 2020 13:26:59 +0000 (UTC) From: =?UTF-8?q?Andreas=20F=C3=A4rber?= To: Yan-Hsuan Chuang , Kalle Valo , linux-wireless@vger.kernel.org Cc: Chin-Yen Lee , "David S . Miller" , Jakub Kicinski , netdev@vger.kernel.org, linux-realtek-soc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Andreas=20F=C3=A4rber?= Subject: [PATCH 2/2] rtw88: Fix potential probe error handling race with wow firmware loading Date: Sun, 20 Sep 2020 15:26:21 +0200 Message-Id: <20200920132621.26468-3-afaerber@suse.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200920132621.26468-1-afaerber@suse.de> References: <20200920132621.26468-1-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org If rtw_core_init() fails to load the wow firmware, rtw_core_deinit() will not get called to clean up the regular firmware. Ensure that an error loading the wow firmware does not produce an oops for the regular firmware by waiting on its completion to be signalled before returning. Also release the loaded firmware. Fixes: c8e5695eae99 ("rtw88: load wowlan firmware if wowlan is supported") Cc: Chin-Yen Lee Cc: Yan-Hsuan Chuang Signed-off-by: Andreas Färber --- drivers/net/wireless/realtek/rtw88/main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index dc48ec4b0a31..cc82c80f0433 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -1472,6 +1472,9 @@ int rtw_core_init(struct rtw_dev *rtwdev) ret = rtw_load_firmware(rtwdev, RTW_WOWLAN_FW); if (ret) { rtw_warn(rtwdev, "no wow firmware loaded\n"); + wait_for_completion(&rtwdev->fw.completion); + if (rtwdev->fw.firmware) + release_firmware(rtwdev->fw.firmware); return ret; } } -- 2.28.0