]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: topology/ioctl: fix uint64_t handling on 32bit systems
authorThomas Weißschuh <thomas@t-8ch.de>
Sun, 8 Jan 2023 03:09:37 +0000 (03:09 +0000)
committerThomas Weißschuh <thomas@t-8ch.de>
Sun, 8 Jan 2023 16:28:48 +0000 (16:28 +0000)
libblkid/src/topology/ioctl.c

index a7045055fc1b2861d9328b2136d7e63347351cc4..3560a2fb5375dd21907e713f87081ef115726c31 100644 (file)
@@ -28,13 +28,14 @@ static const struct topology_val {
        /* functions to set probing result */
        int (*set_ulong)(blkid_probe, unsigned long);
        int (*set_int)(blkid_probe, int);
+       int (*set_u64)(blkid_probe, uint64_t);
 
 } topology_vals[] = {
        { BLKALIGNOFF, NULL, blkid_topology_set_alignment_offset },
        { BLKIOMIN, blkid_topology_set_minimum_io_size },
        { BLKIOOPT, blkid_topology_set_optimal_io_size },
        { BLKPBSZGET, blkid_topology_set_physical_sector_size },
-       { BLKGETDISKSEQ, blkid_topology_set_diskseq },
+       { BLKGETDISKSEQ, .set_u64 = blkid_topology_set_diskseq },
        /* we read BLKSSZGET in topology.c */
 };
 
@@ -49,6 +50,7 @@ static int probe_ioctl_tp(blkid_probe pr,
                union {
                        unsigned long ul;
                        int i;
+                       uint64_t u64;
                } data;
 
                if (ioctl(pr->fd, val->ioc, &data) == -1)
@@ -56,8 +58,11 @@ static int probe_ioctl_tp(blkid_probe pr,
 
                if (val->set_int)
                        rc = val->set_int(pr, data.i);
-               else
+               else if (val->set_ulong)
                        rc = val->set_ulong(pr, data.ul);
+               else
+                       rc = val->set_u64(pr, data.u64);
+
                if (rc)
                        goto err;
        }