Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp2693630pxy; Mon, 3 May 2021 06:06:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx7htVS0qDbVEgGxXO0/FlmG+mMov6bLxizh+QeRaUKcpzFDWzNUUO3uthlNG041EbfY39S X-Received: by 2002:a17:90a:6c62:: with SMTP id x89mr12723470pjj.213.1620047178758; Mon, 03 May 2021 06:06:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620047178; cv=none; d=google.com; s=arc-20160816; b=LUv9AKpmiLj7AJonoufkugHC9hcUiPBaLYIEqnLi888VTdQLfploZFDmhcN9E6ESK4 p3UgyL5W9AXcCzteCd4SWz/y86tMgcUHtRcrKRc30t83RU9/espTBts6MgrICccpixwr k1huZms48nxapwxnFwHIFjwNV0HYLjt4aTjZYGWq5fbf1MhTvDX3Mskcel4XZj2ZRSVi I69xR8xa+mM/e0rsE9zlrBYh7r8LK4bgNq9hnR/Fgo4e8PByanH6kDIuFYSAxYVqJb0Q 9nd8r/w/v8o+tsBpPdB8lMVGvycIsYrrsHWmx3+Wj0S7oTH2nlTm0l3FElyxdc1Rt+2+ 2V/A== 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 :dkim-signature; bh=6UPqE0na2wx6D2AqrcLW70ipv/Aay80EW9H0zcbwWro=; b=HmFSCwLVW6H4rcG5QWLvAQaecvr1rp/Uf4YatHP2iXcEav6MQ8aRjbaHTWVig1MRjW DVgJt/aZiX1d+9k63RpxIjz2BjK19ZLkjCCMxFgUzz14VvwxVIjAquKsI4a/FuXhgZrD yI57hRWvyUMmGAkTFgV/dza2pWufJF8V2u9iMM610A63szo/VkGVT2saWJmfHQFtM200 4qDxWkJ3sGEhfFvgCzrR5BrVkvcf7oVn0tCrnN6DY6MvVbAhTDacEWGLz0zs90uIp6+M nKQIwtD1ti0tDvFBnah7EB/nlkQwoQfO8zMALTpwynIEH60s4If82r0v50MZ1jCjS4vX ayLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=buna9D0G; 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 c12si14525808pgc.272.2021.05.03.06.05.59; Mon, 03 May 2021 06:06:18 -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=@linuxfoundation.org header.s=korg header.b=buna9D0G; 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 S233535AbhECL74 (ORCPT + 99 others); Mon, 3 May 2021 07:59:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:33778 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233353AbhECL7x (ORCPT ); Mon, 3 May 2021 07:59:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6CDF56127A; Mon, 3 May 2021 11:58:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620043139; bh=ai49qo2xncmZvSTVWexxt3oB6tZvJINjoI9g6I/u8B4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=buna9D0GC8+9CvIMqY5xmiwUWg3tutDI3zfHQ0XY7FWSwJvpON6Doq47xQddo+2eq HJ0IG+XfZIHU/ebyJ/dQrtlmagOjJDEtkfhCeYgqTdsraSCjyPo2Zdn7M5LTFKtc7E KrXVzidGG/f8FV2HUoXBc6A08p1vab+Wul++0Py0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , Kalle Valo , Bryan Brattlof , stable Subject: [PATCH 13/69] net: rtlwifi: properly check for alloc_workqueue() failure Date: Mon, 3 May 2021 13:56:40 +0200 Message-Id: <20210503115736.2104747-14-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210503115736.2104747-1-gregkh@linuxfoundation.org> References: <20210503115736.2104747-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If alloc_workqueue() fails, properly catch this and propagate the error to the calling functions, so that the devuce initialization will properly error out. Cc: Kalle Valo Cc: Bryan Brattlof Cc: stable Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/realtek/rtlwifi/base.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c index 4136d7c63254..ffd150ec181f 100644 --- a/drivers/net/wireless/realtek/rtlwifi/base.c +++ b/drivers/net/wireless/realtek/rtlwifi/base.c @@ -440,9 +440,14 @@ static void rtl_watchdog_wq_callback(struct work_struct *work); static void rtl_fwevt_wq_callback(struct work_struct *work); static void rtl_c2hcmd_wq_callback(struct work_struct *work); -static void _rtl_init_deferred_work(struct ieee80211_hw *hw) +static int _rtl_init_deferred_work(struct ieee80211_hw *hw) { struct rtl_priv *rtlpriv = rtl_priv(hw); + struct workqueue_struct *wq; + + wq = alloc_workqueue("%s", 0, 0, rtlpriv->cfg->name); + if (!wq) + return -ENOMEM; /* <1> timer */ timer_setup(&rtlpriv->works.watchdog_timer, @@ -451,7 +456,8 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw) rtl_easy_concurrent_retrytimer_callback, 0); /* <2> work queue */ rtlpriv->works.hw = hw; - rtlpriv->works.rtl_wq = alloc_workqueue("%s", 0, 0, rtlpriv->cfg->name); + rtlpriv->works.rtl_wq = wq; + INIT_DELAYED_WORK(&rtlpriv->works.watchdog_wq, rtl_watchdog_wq_callback); INIT_DELAYED_WORK(&rtlpriv->works.ips_nic_off_wq, @@ -461,6 +467,7 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw) rtl_swlps_rfon_wq_callback); INIT_DELAYED_WORK(&rtlpriv->works.fwevt_wq, rtl_fwevt_wq_callback); INIT_DELAYED_WORK(&rtlpriv->works.c2hcmd_wq, rtl_c2hcmd_wq_callback); + return 0; } void rtl_deinit_deferred_work(struct ieee80211_hw *hw, bool ips_wq) @@ -559,9 +566,7 @@ int rtl_init_core(struct ieee80211_hw *hw) rtlmac->link_state = MAC80211_NOLINK; /* <6> init deferred work */ - _rtl_init_deferred_work(hw); - - return 0; + return _rtl_init_deferred_work(hw); } EXPORT_SYMBOL_GPL(rtl_init_core); -- 2.31.1