Skip to contentSkip to conversation

Patch "NFC: nfcmrvl: fix firmware-management initialisation" has been added to the 4.12-stable tree

PATCH [email protected] 1 participant 1 message Jul 22, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

NFC: nfcmrvl: fix firmware-management initialisation

to the 4.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
nfc-nfcmrvl-fix-firmware-management-initialisation.patch
and it can be found in the queue-4.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 45dd39b974f6632222dd5cdcbea7358a077ab0b0 Mon Sep 17 00:00:00 2001

From: Johan Hovold <[email protected]>
Date: Thu, 30 Mar 2017 12:15:39 +0200
Subject: NFC: nfcmrvl: fix firmware-management initialisation

From: Johan Hovold <[email protected]>

commit 45dd39b974f6632222dd5cdcbea7358a077ab0b0 upstream.

The nci-device was never deregistered in the event that fw-initialisation failed.

Fix this by moving the firmware initialisation before device registration since the firmware work queue should be available before registering.

Note that this depends on a recent fix that moved device-name initialisation back to to nci_allocate_device() as the firmware-workqueue name is now derived from the nfc-device name.

Fixes 3194c6870158 ("NFC: nfcmrvl: add firmware download support")
Cc Vincent Cuissard <[email protected]>
---
 drivers/nfc/nfcmrvl/main.c |   16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
drivers/nfc/nfcmrvl/main.c +9 -7
@@ -158,26 +158,28 @@ struct nfcmrvl_private *nfcmrvl_nci_regi
 		goto error_free_gpio;
 	}
 
+	rc = nfcmrvl_fw_dnld_init(priv);
+	if (rc) {
+		nfc_err(dev, "failed to initialize FW download %d\n", rc);
+		goto error_free_dev;
+	}
+
 	nci_set_drvdata(priv->ndev, priv);
 
 	rc = nci_register_device(priv->ndev);
 	if (rc) {
 		nfc_err(dev, "nci_register_device failed %d\n", rc);
-		goto error_free_dev;
+		goto error_fw_dnld_deinit;
 	}
 
 	/* Ensure that controller is powered off */
 	nfcmrvl_chip_halt(priv);
 
-	rc = nfcmrvl_fw_dnld_init(priv);
-	if (rc) {
-		nfc_err(dev, "failed to initialize FW download %d\n", rc);
-		goto error_free_dev;
-	}
-
 	nfc_info(dev, "registered with nci successfully\n");
 	return priv;
 
+error_fw_dnld_deinit:
+	nfcmrvl_fw_dnld_deinit(priv);
 error_free_dev:
 	nci_free_device(priv->ndev);
 error_free_gpio:

Patches currently in stable-queue which might be from [email protected] are

queue-4.12/nfc-nfcmrvl-use-nfc-device-for-firmware-download.patch queue-4.12/nfc-nfcmrvl-fix-firmware-management-initialisation.patch queue-4.12/nfc-nfcmrvl-do-not-use-device-managed-resources.patch queue-4.12/thermal-max77620-fix-device-node-reference-imbalance.patch queue-4.12/nfc-nfcmrvl_uart-add-missing-tty-device-sanity-check.patch queue-4.12/nfc-fix-broken-device-allocation.patch