]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
losetup: fix conflicting types for ‘loopcxt_set_blocksize’
authorKarel Zak <kzak@redhat.com>
Wed, 4 Oct 2017 08:08:08 +0000 (10:08 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 4 Oct 2017 08:08:08 +0000 (10:08 +0200)
Reported-by: Lars Wendler <polynomial-c@gentoo.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
lib/loopdev.c

index 66fa4f6694a8b7029c30bb7b962ab2e505f10f63..819aada3241917bb90b151bb788c960fd5b80921 100644 (file)
@@ -1430,7 +1430,11 @@ int loopcxt_set_dio(struct loopdev_cxt *lc, unsigned long use_dio)
        return 0;
 }
 
-int loopcxt_set_blocksize(struct loopdev_cxt *lc, unsigned long blocksize)
+/*
+ * Kernel uses "unsigned long" as ioctl arg, but we use u64 for all sizes to
+ * keep loopdev internal API simple.
+ */
+int loopcxt_set_blocksize(struct loopdev_cxt *lc, uint64_t blocksize)
 {
        int fd = loopcxt_get_fd(lc);
 
@@ -1438,7 +1442,7 @@ int loopcxt_set_blocksize(struct loopdev_cxt *lc, unsigned long blocksize)
                return -EINVAL;
 
        /* Kernels prior to v4.14 don't support this ioctl */
-       if (ioctl(fd, LOOP_SET_BLOCK_SIZE, blocksize) < 0) {
+       if (ioctl(fd, LOOP_SET_BLOCK_SIZE, (unsigned long) blocksize) < 0) {
                int rc = -errno;
                DBG(CXT, ul_debugobj(lc, "LOOP_SET_BLOCK_SIZE failed: %m"));
                return rc;