Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 737fd071 authored by Amir Samuelov's avatar Amir Samuelov Committed by Gerrit - the friendly Code Review server
Browse files

soc: qcom: spcom: return EINTR on wait interrupted



wait_for_completion_interruptible() returns ERESTARTSYS when
the device goes to low power mode.
The SPU subsystem is shutdown on deep low power mode,
so the interrupted operation is not recoverable.
return EINTR to user space to propagate the error to the user app.

Change-Id: I3b47b971d4411f977a0f68c1ce838fd92198c75d
Signed-off-by: default avatarAmir Samuelov <amirs@codeaurora.org>
parent 74879d9a
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -476,11 +476,9 @@ static int spcom_rx(struct spcom_channel *ch,
			spcom_pr_warn("rpmsg channel is closing\n");
			ret = -ERESTART;
			goto exit_err;
		} else if (ret < 0 || timeleft == -ERESTARTSYS) {
			spcom_pr_dbg("wait interrupted: ret=%d, timeleft=%ld\n",
				 ret, timeleft);
			if (timeleft == -ERESTARTSYS)
				ret = -ERESTARTSYS;
		} else if (ret < 0 || timeleft < 0) {
			spcom_pr_err("rx wait was interrupted!");
			ret = -EINTR; /* abort, not restartable */
			goto exit_err;
		} else if (ch->actual_rx_size) {
			spcom_pr_dbg("actual_rx_size is [%zu], txn_id %d\n",