block: bio-integrity: fix kcalloc() arguments order
authorDmitry Antipov <dmantipov@yandex.ru>
Tue, 16 Jan 2024 14:34:31 +0000 (17:34 +0300)
committerJens Axboe <axboe@kernel.dk>
Tue, 16 Jan 2024 16:51:22 +0000 (09:51 -0700)
When compiling with gcc version 14.0.1 20240116 (experimental)
and W=1, I've noticed the following warning:

block/bio-integrity.c: In function 'bio_integrity_map_user':
block/bio-integrity.c:339:38: warning: 'kcalloc' sizes specified with 'sizeof'
in the earlier argument and not in the later argument [-Wcalloc-transposed-args]
  339 |                 bvec = kcalloc(sizeof(*bvec), nr_vecs, GFP_KERNEL);
      |                                      ^
block/bio-integrity.c:339:38: note: earlier argument should specify number of
elements, later size of each element

Since 'n' and 'size' arguments of 'kcalloc()' are multiplied to
calculate the final size, their actual order doesn't affect the
result and so this is not a bug. But it's still worth to fix it.

Fixes: 492c5d455969 ("block: bio-integrity: directly map user buffers")
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Link: https://lore.kernel.org/r/20240116143437.89060-1-dmantipov@yandex.ru
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio-integrity.c

index feef615e2c9c8935e2cd11a4b1e09f115171d328..c9a16fba58b9c47f5424be9a8c7c6681d176b986 100644 (file)
@@ -336,7 +336,7 @@ int bio_integrity_map_user(struct bio *bio, void __user *ubuf, ssize_t bytes,
        if (nr_vecs > BIO_MAX_VECS)
                return -E2BIG;
        if (nr_vecs > UIO_FASTIOV) {
-               bvec = kcalloc(sizeof(*bvec), nr_vecs, GFP_KERNEL);
+               bvec = kcalloc(nr_vecs, sizeof(*bvec), GFP_KERNEL);
                if (!bvec)
                        return -ENOMEM;
                pages = NULL;