Build tools/io_uring emits the following warnings. io_uring-cp.c: In function ‘copy_file’: io_uring-cp.c:158:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare] 158 | if (had_reads != reads) { | ^~ io_uring-cp.c:201:24: warning: comparison of integer expressions of different signedness: ‘__s32’ {aka ‘int’} and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare] 201 | } else if (cqe->res != data->iov.iov_len) { | ^~ Change the type of 'had_reads' to 'unsigned long' to fix the first compile warning. For the second warning, cast 'cqe->res' to '__kernel_size_t' before comparison to fix it. Signed-off-by: Xiongfeng Wang <wangxiongfeng2@xxxxxxxxxx> --- tools/io_uring/io_uring-cp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/io_uring/io_uring-cp.c b/tools/io_uring/io_uring-cp.c index d9bd6f5f8f46..643c226f91ac 100644 --- a/tools/io_uring/io_uring-cp.c +++ b/tools/io_uring/io_uring-cp.c @@ -131,7 +131,8 @@ static int copy_file(struct io_uring *ring, off_t insize) writes = reads = offset = 0; while (insize || write_left) { - int had_reads, got_comp; + unsigned long had_reads; + int got_comp; /* * Queue up as many reads as we can @@ -198,7 +199,7 @@ static int copy_file(struct io_uring *ring, off_t insize) fprintf(stderr, "cqe failed: %s\n", strerror(-cqe->res)); return 1; - } else if (cqe->res != data->iov.iov_len) { + } else if ((__kernel_size_t)cqe->res != data->iov.iov_len) { /* Short read/write, adjust and requeue */ data->iov.iov_base += cqe->res; data->iov.iov_len -= cqe->res; -- 2.20.1