mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
Qualcomm driver fixes for v6.14
Fixes a locking issue in the PDR implementation, which manifest itself as transaction timeouts during the startup procedure for some remoteprocs. A registration race is fixed in the custom efivars implementation, resolving reported NULL pointer dereferences. Error handling related to tzmem allocation is corrected, to ensure that the allocation error is propagated. Lastly a trivial merge mistake in pmic_glink is addressed. -----BEGIN PGP SIGNATURE----- iQJJBAABCAAzFiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmfPntcVHGFuZGVyc3Nv bkBrZXJuZWwub3JnAAoJEAsfOT8Nma3FpaAQALArEyFsJ+YpCL6zu89Hc0CAzpdi cRscXIvR7elGIV5c+/XiSRhsF7nLHJ3NoqI0EC9mLZpG60VRKV3rEtbRAhJUpx9E SFuFeeq1YYoBwlt4MTIua3cZJB4d0zxrqBMT/EdqmwY7saFCL7S6ElLunClGejwv Pf/KxnP0eQtwufhyycvlhpKnX5HeynNiI0Nv7fdRlUizWXkiZitH34ZB3rwMrjM8 E264qMz3H8+nc1ZY1Nout6uURDgHXs/kNaUY5KMTP1ntv3a8Xgck6Po91y8jQ52Q UdE5IcyWG+obI2XBFjZVtCuLNC1E833Si0eIErrFQjePUnv647FEXQwiuxdgyMS+ ky7abqighG8oK8926dB8WHVc8pQ44+I1JT/nylbG6U/wSpoh5NKNSW41b0fjzfmJ VERTU2muF2KZoI034uXlnx6OH7OSxBUdO3ZeMlGscGA/yzpU8OTuLcHy6miHhKxL LRaW5nMOm7+yBhGzGVRaxzKeOOo96mx6Vd86ymTbpFOlMxNtVmYP8aldfy9GI6Qx 5cgGqKD4Pn4VTO4qhvxZrLVVO9MHxcN/GTPf3oCeLmhnh4oNpvi9qg77KsfHJJGP 2BHhXN/8dQdagZTMFDlS7z1E9fWTTHIzMMc9YLt11UmpBoOImdDldezxpah7Nu/1 NucMfUBufouasN92 =QoB8 -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmfUYLkACgkQYKtH/8kJ UifNQRAAxWwmLr5aNWQpzHyQ/fc3oDX9gCV7alxdQvYeTjMhotcFXPgwA8WX9U0+ 1hEUbFcrCk56xX14enHnI+NJAWWvKFT4Z1aLCqSXiU5K2RnaG7AGhLaJbdDLTFX6 9+wYCljK5orFIUMTLuc+G7ZqOFcnhhUq9qbEGL5vKTYuuFWjrBadyadYz+wAWg/8 tbzk9P4QLvfEkCQR4Xpgh5OOR3TYY34LgS8U79nKP/ClrzeVI1CGCNFlV5/hvdxA ORdB1azumlh1/fXEGfw9rm9hy6VcGEN7zGugqu78Ol+DO2OsVNwBZGMKO6oJeDlO jNQLfl69eHYkCsNCQ6gHTqVEuI3MGfjSZofmeG/K1FiYmWDNu3hVXp3pVYMi09yc pJNFAjGEib4HDlmJiX32eGOJrRYBdukFEMxZWVHTcRm1HVs+f5MwZ/rExD9yRzbE VJ+uq7+7Xd0y4pByFxbJ4LdMXvEU2oeG9DAnA70xYaAWST3Fq8R9q6i72R/+8rdz JvCSbngh52eG14hvCClfZLgsef7557DhBJvcbVmb3KJjIYeOw9GI12RpR2fz3rOk 6bArIYdVglbL3Anpugxrf5vdcWDsjI0bEGSimjV3wIeqVp65XsscGAG9SyMPZCTo 9lntpPrrw2fSFKBDjxO8j8MmUl3ClguiTfUqNUtC75cubUS0Ce8= =mQFt -----END PGP SIGNATURE----- Merge tag 'qcom-drivers-fixes-for-6.14' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/fixes Qualcomm driver fixes for v6.14 Fixes a locking issue in the PDR implementation, which manifest itself as transaction timeouts during the startup procedure for some remoteprocs. A registration race is fixed in the custom efivars implementation, resolving reported NULL pointer dereferences. Error handling related to tzmem allocation is corrected, to ensure that the allocation error is propagated. Lastly a trivial merge mistake in pmic_glink is addressed. * tag 'qcom-drivers-fixes-for-6.14' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: soc: qcom: pdr: Fix the potential deadlock firmware: qcom: uefisecapp: fix efivars registration race firmware: qcom: scm: Fix error code in probe() soc: qcom: pmic_glink: Drop redundant pg assignment before taking lock Link: https://lore.kernel.org/r/20250311022509.1232678-1-andersson@kernel.org Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
c221dcc769
|
|
@ -814,15 +814,6 @@ static int qcom_uefisecapp_probe(struct auxiliary_device *aux_dev,
|
|||
|
||||
qcuefi->client = container_of(aux_dev, struct qseecom_client, aux_dev);
|
||||
|
||||
auxiliary_set_drvdata(aux_dev, qcuefi);
|
||||
status = qcuefi_set_reference(qcuefi);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = efivars_register(&qcuefi->efivars, &qcom_efivar_ops);
|
||||
if (status)
|
||||
qcuefi_set_reference(NULL);
|
||||
|
||||
memset(&pool_config, 0, sizeof(pool_config));
|
||||
pool_config.initial_size = SZ_4K;
|
||||
pool_config.policy = QCOM_TZMEM_POLICY_MULTIPLIER;
|
||||
|
|
@ -833,6 +824,15 @@ static int qcom_uefisecapp_probe(struct auxiliary_device *aux_dev,
|
|||
if (IS_ERR(qcuefi->mempool))
|
||||
return PTR_ERR(qcuefi->mempool);
|
||||
|
||||
auxiliary_set_drvdata(aux_dev, qcuefi);
|
||||
status = qcuefi_set_reference(qcuefi);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = efivars_register(&qcuefi->efivars, &qcom_efivar_ops);
|
||||
if (status)
|
||||
qcuefi_set_reference(NULL);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2301,8 +2301,8 @@ static int qcom_scm_probe(struct platform_device *pdev)
|
|||
|
||||
__scm->mempool = devm_qcom_tzmem_pool_new(__scm->dev, &pool_config);
|
||||
if (IS_ERR(__scm->mempool)) {
|
||||
dev_err_probe(__scm->dev, PTR_ERR(__scm->mempool),
|
||||
"Failed to create the SCM memory pool\n");
|
||||
ret = dev_err_probe(__scm->dev, PTR_ERR(__scm->mempool),
|
||||
"Failed to create the SCM memory pool\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@ static int pdr_locator_new_server(struct qmi_handle *qmi,
|
|||
{
|
||||
struct pdr_handle *pdr = container_of(qmi, struct pdr_handle,
|
||||
locator_hdl);
|
||||
struct pdr_service *pds;
|
||||
|
||||
mutex_lock(&pdr->lock);
|
||||
/* Create a local client port for QMI communication */
|
||||
|
|
@ -87,12 +86,7 @@ static int pdr_locator_new_server(struct qmi_handle *qmi,
|
|||
mutex_unlock(&pdr->lock);
|
||||
|
||||
/* Service pending lookup requests */
|
||||
mutex_lock(&pdr->list_lock);
|
||||
list_for_each_entry(pds, &pdr->lookups, node) {
|
||||
if (pds->need_locator_lookup)
|
||||
schedule_work(&pdr->locator_work);
|
||||
}
|
||||
mutex_unlock(&pdr->list_lock);
|
||||
schedule_work(&pdr->locator_work);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ static void pmic_glink_pdr_callback(int state, char *svc_path, void *priv)
|
|||
|
||||
static int pmic_glink_rpmsg_probe(struct rpmsg_device *rpdev)
|
||||
{
|
||||
struct pmic_glink *pg = __pmic_glink;
|
||||
struct pmic_glink *pg;
|
||||
|
||||
guard(mutex)(&__pmic_glink_lock);
|
||||
pg = __pmic_glink;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user