Received: by 10.223.185.111 with SMTP id b44csp1454411wrg; Sat, 10 Mar 2018 06:20:15 -0800 (PST) X-Google-Smtp-Source: AG47ELvpO62+UJfVk6Hvd3igIo/yBgGfnjJ0j+bVIcwlAxUKAvJtkszI/zu9uTTlKjZtQAFrEtHB X-Received: by 2002:a17:902:7c84:: with SMTP id y4-v6mr2217617pll.305.1520691615591; Sat, 10 Mar 2018 06:20:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520691615; cv=none; d=google.com; s=arc-20160816; b=TCsS+TK/jUSSREs0gTpE/ICc1QSt6kwaW1Rx5veQ4Vpxt/jIZ0dWUVJE0eran1ij+2 jurhLRksjsHfcVWg/PWtaVzbGz4h/+tF0Pwb1hH0djVfikSGPlM49haoVihNJG6GN2qb 1ax/6n+8aAeh3o0CvPo6QNWBSY6zns3GAw5WTsnmr66JmOS9sIrOlfWZgUnbWq5z3lAN Gx461EgVzUMZsKZ2OImJZtj3PM1a/vKPtYHM2VwRO4QzwYtqrWISfRnI1BJ6t/o+wA3/ 9VIWq7jX4oTBxZ/fC7AGMvLYsj0LFdOU0o7HfZPFqSikrJuiURBEWe9508VuToaurW29 gDcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:arc-authentication-results; bh=p8CzU3aXR/7JQOAH6soyg6ngWaHvDyonrP4tBTBJBT8=; b=Pa0DdorAUH5UlqtQsUAaYXSD254NhWfkwZ7Mu+DlOlkrEvtRXmHrvz0y6rpwRrydPI MfhWGQsqMONDoLDztkijjk/D53ZudM+eG/KlC1+NYzywDOD3iS5ibik+gF0ZAK2eZ5Mz TCwNLmD2eYZfnF4L+IwtP6Hi9Z/C5amqOClGuX1H72kIZK7wJlGXC7/60l8Kjf871POl In2OKmQEJ8fLLZx30/tpYGTwBEwUcxSHWRMxOKHgfSbsAz8WMVLOAQyt0dj/GFK3IqO/ yJ/BMqYnPhjNPve5b3X2F4AZJJwR9rQ71Y2zFst+wcuG8iRtjrUmtQRKbtJsLaGBooFu 8GFQ== ARC-Authentication-Results: i=1; mx.google.com; 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 e6si2356717pgt.442.2018.03.10.06.20.00; Sat, 10 Mar 2018 06:20:15 -0800 (PST) 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; 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 S933255AbeCJORg (ORCPT + 99 others); Sat, 10 Mar 2018 09:17:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:50774 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933128AbeCJOPc (ORCPT ); Sat, 10 Mar 2018 09:15:32 -0500 Received: from garbanzo.do-not-panic.com (c-73-15-241-2.hsd1.ca.comcast.net [73.15.241.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8E18A217CA; Sat, 10 Mar 2018 14:15:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8E18A217CA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=mcgrof@kernel.org From: "Luis R. Rodriguez" To: gregkh@linuxfoundation.org Cc: akpm@linux-foundation.org, cantabile.desu@gmail.com, kubakici@wp.pl, linux-wireless@vger.kernel.org, keescook@chromium.org, shuah@kernel.org, mfuzzey@parkeon.com, zohar@linux.vnet.ibm.com, dhowells@redhat.com, pali.rohar@gmail.com, tiwai@suse.de, arend.vanspriel@broadcom.com, zajec5@gmail.com, nbroeking@me.com, markivx@codeaurora.org, broonie@kernel.org, dmitry.torokhov@gmail.com, dwmw2@infradead.org, torvalds@linux-foundation.org, Abhay_Salunke@dell.com, bjorn.andersson@linaro.org, jewalt@lgsinnovations.com, oneukum@suse.com, ast@fb.com, andresx7@gmail.com, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, "Luis R. Rodriguez" Subject: [PATCH v3 15/20] firmware: fix checking for return values for fw_add_devm_name() Date: Sat, 10 Mar 2018 06:14:56 -0800 Message-Id: <20180310141501.2214-16-mcgrof@kernel.org> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20180310141501.2214-1-mcgrof@kernel.org> References: <20180310141501.2214-1-mcgrof@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- drivers/base/firmware_loader/main.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c index c8966c84bd44..f5046887e362 100644 --- a/drivers/base/firmware_loader/main.c +++ b/drivers/base/firmware_loader/main.c @@ -403,7 +403,7 @@ static int fw_add_devm_name(struct device *dev, const char *name) 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); @@ -431,6 +431,7 @@ int assign_fw(struct firmware *fw, struct device *device, 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)) { @@ -447,8 +448,13 @@ int assign_fw(struct firmware *fw, struct device *device, */ /* 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 -- 2.16.2