Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2251848imm; Mon, 28 May 2018 04:48:46 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrV2RQUh6REc2yU1/d5kylNQ4AwMxz+Hi+gJqn9UE/BoX7vghbcfSPvDWJ/pd01/aSK8P94 X-Received: by 2002:a62:e801:: with SMTP id c1-v6mr13256524pfi.184.1527508126049; Mon, 28 May 2018 04:48:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527508126; cv=none; d=google.com; s=arc-20160816; b=oxHH20r2mdcKwOr0LpoVcj6jjUpm5hYgrZA9ML9/etuyzkSzU1sA0km5S6PHSJPNcM hPape1nGe49LEXcfNJ/pJPD5o9eGXBBxR23W+8e5M3G8OodwqSsvRVpYESNycwFe9EkX OuIg++Ats3rCpnTs1UJth2ixW4xNk8KI250X/INVgHzqnOug4kD0+ssd0k8rFlkGMVTq bhQC+mS9PtITvUf1ikyjCMcK4DaMD25pOpETB/porXSUtQvaeef5Tk3JLl/oahCl9qn8 BQjLbHOooybGWoGpxwFT7WiBAWheeZedQKQ7e7ejp0SaXQDtVxg6/mzZXtW2XjiHaiBJ ymjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=0fFWNV9fhDZzbDW06y1Rn/4Y9hPw4NLBHvBBJnJHsSY=; b=FxDVKMd+d7p+wfC7ST+3otcS4B+qZFKjIa7SnQJ7aJGv1gjjt9P0N0h/fezheORr2o QChUybl+fqw70Hl88K8JHj0RPmPEysG+wwkh4QivCzlMsIA4wETTSQXR1DXVBz6/4xeY B1m6RLsPFeNE4cHeKcgIZXOGobflV+auAUwVcqJsACX0HVXhS1X8cRGNTMe18d9O4oHV 31c/Sn+TIatj4WJDh+6qV2mNBVzljyOhzybbweJDNV5j4QHembonZgg2sqg4NsMYOIan kRoBQiKoRsYa5FXUbAdjQaRqTr+Wy6eZuESqX0IcFtqHeO3fC4B8Ygcvpn+/Zrka2EyX uelA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=IWU5zzai; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k22-v6si9865768pgn.257.2018.05.28.04.48.31; Mon, 28 May 2018 04:48:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=IWU5zzai; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1424857AbeE1Lrq (ORCPT + 99 others); Mon, 28 May 2018 07:47:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:58596 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423149AbeE1LKg (ORCPT ); Mon, 28 May 2018 07:10:36 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A4E722089E; Mon, 28 May 2018 11:10:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527505836; bh=8dxAWx/Qo/5W5uMFrM3Cko1Z0leOhU3BHebUW56qPEo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IWU5zzaiNlZB0rhhV5wk/xjkapwZi/6JugZ4Ehr+HPipB6gsp+K25Z2hKw6cn79SC YsaLJ1ZLUGBHi7ZtbpeTXZ1sYF4CaPTVkGK3gosCAej52eahCAL7MPUyMRo+0/G1ue yDrBbXcndwgV2+TtuZn74rIOxX7kxTsqbc587+uM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "Luis R. Rodriguez" , Sasha Levin Subject: [PATCH 4.16 144/272] firmware: fix checking for return values for fw_add_devm_name() Date: Mon, 28 May 2018 12:02:57 +0200 Message-Id: <20180528100253.130106800@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100240.256525891@linuxfoundation.org> References: <20180528100240.256525891@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: "Luis R. Rodriguez" [ Upstream commit d15d7311550983be97dca44ad68cbc2ca001297b ] Currently fw_add_devm_name() returns 1 if the firmware cache was already set. This makes it complicated for us to check for correctness. It is actually non-fatal if the firmware cache is already setup, so just return 0, and simplify the checkers. fw_add_devm_name() adds device's name onto the devres for the device so that prior to suspend we cache the firmware onto memory, so that on resume the firmware is reliably available. We never were checking for success for this call though, meaning in some really rare cases we my have never setup the firmware cache for a device, which could in turn make resume fail. This is all theoretical, no known issues have been reported. This small issue has been present way since the addition of the devres firmware cache names on v3.7. Fixes: f531f05ae9437 ("firmware loader: store firmware name into devres list") Signed-off-by: Luis R. Rodriguez Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/base/firmware_class.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -524,7 +524,7 @@ static int fw_add_devm_name(struct devic fwn = fw_find_devm_name(dev, name); if (fwn) - return 1; + return 0; fwn = devres_alloc(fw_name_devm_release, sizeof(struct fw_name_devm), GFP_KERNEL); @@ -552,6 +552,7 @@ static int assign_fw(struct firmware *fw unsigned int opt_flags) { struct fw_priv *fw_priv = fw->priv; + int ret; mutex_lock(&fw_lock); if (!fw_priv->size || fw_state_is_aborted(fw_priv)) { @@ -568,8 +569,13 @@ static int assign_fw(struct firmware *fw */ /* don't cache firmware handled without uevent */ if (device && (opt_flags & FW_OPT_UEVENT) && - !(opt_flags & FW_OPT_NOCACHE)) - fw_add_devm_name(device, fw_priv->fw_name); + !(opt_flags & FW_OPT_NOCACHE)) { + ret = fw_add_devm_name(device, fw_priv->fw_name); + if (ret) { + mutex_unlock(&fw_lock); + return ret; + } + } /* * After caching firmware image is started, let it piggyback