Am Freitag, 23. Juni 2017, 08:10:48 CEST schrieb Herbert Xu:
Hi Herbert,
On Wed, Jun 21, 2017 at 10:03:02PM +0200, Stephan Müller wrote:
quoted
+ /* convert iovecs of output buffers into RX SGL */
+ while (len < ctx->used && msg_data_left(msg)) {
How are we supposed to reach the wait path when ctx->used == 0?
Right.
May I ask whether that wait is correct to begin with? The recvmsg is protected
by a lock_sock. Thus, if the code is waiting, the lock is still held. So, how
can data be inserted into the socket by sendmsg/sendpage while recvmsg is
waiting? Don't we have a deadlock here?
quoted
+ /*
+ * This error covers -EIOCBQUEUED which implies that we can
+ * only handle one AIO request. If the caller wants to have
+ * multiple AIO requests in parallel, he must make multiple
+ * separate AIO calls.
+ */
+ if (err < 0) {
+ if (err == -EIOCBQUEUED)
+ ret = err;
+ goto out;
}
+ if (!err)
+ goto out;
You can combine the two now as err <= 0.
Fixed, thank you.
Thanks,
Ciao
Stephan