diff --git a/smcinvoke/smcinvoke.c b/smcinvoke/smcinvoke.c index d29258e75f..0d83a29fcc 100644 --- a/smcinvoke/smcinvoke.c +++ b/smcinvoke/smcinvoke.c @@ -2197,14 +2197,13 @@ static long process_accept_req(struct file *filp, unsigned int cmd, * invoke thread died while server was processing cb req. * if invoke thread dies, it would remove req from Q. So * no matching cb_txn would be on Q and hence NULL cb_txn. - * In this case, we want this thread to come back and start - * waiting for new cb requests, hence return EAGAIN here + * In this case, we want this thread to start waiting + * new cb requests. */ if (!cb_txn) { pr_err("%s txn %d either invalid or removed from Q\n", __func__, user_args.txn_id); - ret = -EAGAIN; - goto out; + goto start_waiting_for_requests; } ret = marshal_out_tzcb_req(&user_args, cb_txn, cb_txn->filp_to_release); @@ -2228,6 +2227,7 @@ static long process_accept_req(struct file *filp, unsigned int cmd, if (ret && OBJECT_COUNTS_NUM_OO(user_args.counts)) goto out; } +start_waiting_for_requests: /* * Once response has been delivered, thread will wait for another * callback req to process.