hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/soc/qcom/qmi_interface.c
....@@ -318,7 +318,7 @@
318318 txn->dest = c_struct;
319319
320320 mutex_lock(&qmi->txn_lock);
321
- ret = idr_alloc_cyclic(&qmi->txns, txn, 0, INT_MAX, GFP_KERNEL);
321
+ ret = idr_alloc_cyclic(&qmi->txns, txn, 0, U16_MAX, GFP_KERNEL);
322322 if (ret < 0)
323323 pr_err("failed to allocate transaction id\n");
324324
....@@ -345,8 +345,7 @@
345345 struct qmi_handle *qmi = txn->qmi;
346346 int ret;
347347
348
- ret = wait_for_completion_interruptible_timeout(&txn->completion,
349
- timeout);
348
+ ret = wait_for_completion_timeout(&txn->completion, timeout);
350349
351350 mutex_lock(&qmi->txn_lock);
352351 mutex_lock(&txn->lock);
....@@ -354,9 +353,7 @@
354353 mutex_unlock(&txn->lock);
355354 mutex_unlock(&qmi->txn_lock);
356355
357
- if (ret < 0)
358
- return ret;
359
- else if (ret == 0)
356
+ if (ret == 0)
360357 return -ETIMEDOUT;
361358 else
362359 return txn->result;
....@@ -658,8 +655,12 @@
658655
659656 qmi->sock = qmi_sock_create(qmi, &qmi->sq);
660657 if (IS_ERR(qmi->sock)) {
661
- pr_err("failed to create QMI socket\n");
662
- ret = PTR_ERR(qmi->sock);
658
+ if (PTR_ERR(qmi->sock) == -EAFNOSUPPORT) {
659
+ ret = -EPROBE_DEFER;
660
+ } else {
661
+ pr_err("failed to create QMI socket\n");
662
+ ret = PTR_ERR(qmi->sock);
663
+ }
663664 goto err_destroy_wq;
664665 }
665666