Public bug reported:
On an 18.04 amd64 system dm-verity reports:
device-mapper: table: 253:20: verity: Invalid number of feature args
device-mapper: ioctl: error adding target to table
when trying to use "veritysetup" to create a previously formatted verity
device that uses FEC. Without FEC it succeeds.
$ uname -r
4.15.0-56-lowlatency
$ sudo dmsetup targets | grep verity
verity v1.3.0
$ lsmod | grep verity
dm_verity 20480 0
dm_bufio 28672 1 dm_verity
$ modinfo dm-verity
filename: /lib/modules/4.15.0-56-lowlatency/kernel/drivers/md/dm-verity.ko
...
depends: dm-bufio
retpoline: Y
intree: Y
name: dm_verity
vermagic: 4.15.0-56-lowlatency SMP preempt mod_unload
signat: PKCS#7
...
sig_hashalgo: md4
parm: prefetch_cluster:uint
$ sudo losetup /dev/loop3 Downloads/lubuntu-desktop-amd64.1910.iso
$ sudo mkdir -p /mnt/live/verity
$ sudo veritysetup format --fec-device=/mnt/live/verity/iso-fec.verity
/dev/loop3 /mnt/live/verity/iso-hash.verity
VERITY header information for /mnt/live/verity/iso-hash.verity
UUID: fa07efe8-e4a6-4968-abce-779f2d5674ce
Hash type: 1
Data blocks: 412080
Data block size: 4096
Hash block size: 4096
Hash algorithm:
sha256
Salt:
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b
Root hash:
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
$ ls -la /mnt/live/verity/
total 26136
drwxr-xr-x 2 root root 4096 Aug 3 13:21 .
drwxr-xr-x 5 root root 4096 Aug 3 13:19 ..
-rw------- 1 root root 13451264 Aug 3 13:23 iso-fec.verity
-rw------- 1 root root 13303808 Aug 3 13:23 iso-hash.verity
Using strace I'm able to capture the table definition veritysetup is
trying to use:
$ sudo strace -v -s 256 -f -o /tmp/veritysetup.strace veritysetup -v
--fec-device=/mnt/live/verity/iso-fec.verity create live-iso /
dev/loop3 /mnt/live/verity/iso-hash.verity
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
device-mapper: reload ioctl on failed: Invalid argument
Command failed with code -1 (wrong or missing parameters).
28809 ioctl(5, DM_DEV_CREATE, {version=4.0.0, data_size=16384, name="live-iso",
uuid="CRYPT-VERITY-fa07efe8e4a64968abce779f2d5674ce-live-iso
", flags=DM_EXISTS_FLAG} => {version=4.37.0, data_size=305, dev=makedev(253,
20), name="live-iso", uuid="CRYPT-VERITY-fa07efe8e4a64968abce77
9f2d5674ce-live-iso", target_count=0, open_count=0, event_nr=0,
flags=DM_EXISTS_FLAG}) = 0
28809 ioctl(5, DM_TABLE_LOAD, {version=4.0.0, data_size=16384, data_start=312,
name="live-iso", target_count=1, flags=DM_READONLY_FLAG|DM_EX
ISTS_FLAG|DM_SECURE_DATA_FLAG, {sector_start=0, length=3296640,
target_type="verity", string="1 /dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots 2"}},
0x560977ffe210) = -1 EINVAL (Invalid argument)
So the table is:
1 /dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots 2
Manually attempting the command also fails (/dev/loop3 remains):
$ SIZE=$(blockdev --getsz /dev/loop3)
$ sudo losetup /dev/loop4 /mnt/live/verity/iso-hash.verity
$ sudo losetup /dev/loop5 /mnt/live/verity/iso-fec.verity
$ sudo dmsetup -vv create live-iso -r --table "0 $SIZE verity 1
/dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots
2"
dm version [ opencount flush ] [16384] (*1)
Udev cookie 0xd4d119f (semid 819203) created
Udev cookie 0xd4d119f (semid 819203) incremented to 1
Udev cookie 0xd4d119f (semid 819203) incremented to 2
Udev cookie 0xd4d119f (semid 819203) assigned to CREATE task(0) with flags
DISABLE_LIBRARY_FALLBACK (0x20)
dm create live-iso [ opencount flush ] [16384] (*1)
dm reload live-iso [ opencount flush readonly ] [16384] (*1)
device-mapper: reload ioctl on live-iso failed: Invalid argument
<backtrace>
Udev cookie 0xd4d119f (semid 819203) decremented to 1
Udev cookie 0xd4d119f (semid 819203) incremented to 2
Udev cookie 0xd4d119f (semid 819203) assigned to REMOVE task(2) with flags
DISABLE_LIBRARY_FALLBACK (0x20)
dm remove live-iso [ opencount flush readonly ] [16384] (*1)
<backtrace>
Udev cookie 0xd4d119f (semid 819203) decremented to 1
Udev cookie 0xd4d119f (semid 819203) waiting for zero
Udev cookie 0xd4d119f (semid 819203) destroyed
Command failed
<backtrace>
** Affects: linux (Ubuntu)
Importance: Undecided
Status: New
** Description changed:
On an 18.04 amd64 system dm-verity reports:
device-mapper: table: 253:20: verity: Invalid number of feature args
device-mapper: ioctl: error adding target to table
when trying to use "veritysetup" to create a previously formatted verity
device that uses FEC. Without FEC it succeeds.
$ uname -r
4.15.0-56-lowlatency
$ sudo dmsetup targets | grep verity
verity v1.3.0
$ lsmod | grep verity
dm_verity 20480 0
dm_bufio 28672 1 dm_verity
$ modinfo dm-verity
filename:
/lib/modules/4.15.0-56-lowlatency/kernel/drivers/md/dm-verity.ko
...
depends: dm-bufio
retpoline: Y
intree: Y
name: dm_verity
vermagic: 4.15.0-56-lowlatency SMP preempt mod_unload
signat: PKCS#7
...
sig_hashalgo: md4
parm: prefetch_cluster:uint
$ sudo losetup /dev/loop3 Downloads/lubuntu-desktop-amd64.1910.iso
- $ sudo veritysetup format --fec-device=/mnt/live/verity/iso-fec.verity
/dev/loop3 /mnt/live/verity/iso-hash.verity
- VERITY header information for /mnt/live/verity/iso-hash.verity
- UUID: fa07efe8-e4a6-4968-abce-779f2d5674ce
- Hash type: 1
- Data blocks: 412080
- Data block size: 4096
- Hash block size: 4096
Hash algorithm:
sha256
- Salt:
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b
- Root hash:
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
+ $ sudo mkdir -p /mnt/live/verity
+ $ sudo veritysetup format --fec-device=/mnt/live/verity/iso-fec.verity
/dev/loop3 /mnt/live/verity/iso-hash.verity
+ VERITY header information for /mnt/live/verity/iso-hash.verity
+ UUID: fa07efe8-e4a6-4968-abce-779f2d5674ce
+ Hash type: 1
+ Data blocks: 412080
+ Data block size: 4096
+ Hash block size: 4096
Hash algorithm:
sha256
+ Salt:
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b
+ Root hash:
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
$ ls -la /mnt/live/verity/
total 26136
drwxr-xr-x 2 root root 4096 Aug 3 13:21 .
drwxr-xr-x 5 root root 4096 Aug 3 13:19 ..
-rw------- 1 root root 13451264 Aug 3 13:23 iso-fec.verity
-rw------- 1 root root 13303808 Aug 3 13:23 iso-hash.verity
-
- Using strace I'm able to capture the table definition veritysetup is trying
to use:
+ Using strace I'm able to capture the table definition veritysetup is
+ trying to use:
$ sudo strace -v -s 256 -f -o /tmp/veritysetup.strace veritysetup -v
--fec-device=/mnt/live/verity/iso-fec.verity create live-iso /
dev/loop3 /mnt/live/verity/iso-hash.verity
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
device-mapper: reload ioctl on failed: Invalid argument
Command failed with code -1 (wrong or missing parameters).
-
28809 ioctl(5, DM_DEV_CREATE, {version=4.0.0, data_size=16384,
name="live-iso", uuid="CRYPT-VERITY-fa07efe8e4a64968abce779f2d5674ce-live-iso
", flags=DM_EXISTS_FLAG} => {version=4.37.0, data_size=305, dev=makedev(253,
20), name="live-iso", uuid="CRYPT-VERITY-fa07efe8e4a64968abce77
9f2d5674ce-live-iso", target_count=0, open_count=0, event_nr=0,
flags=DM_EXISTS_FLAG}) = 0
28809 ioctl(5, DM_TABLE_LOAD, {version=4.0.0, data_size=16384,
data_start=312, name="live-iso", target_count=1, flags=DM_READONLY_FLAG|DM_EX
ISTS_FLAG|DM_SECURE_DATA_FLAG, {sector_start=0, length=3296640,
target_type="verity", string="1 /dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots 2"}},
0x560977ffe210) = -1 EINVAL (Invalid argument)
So the table is:
1 /dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots 2
Manually attempting the command also fails (/dev/loop3 remains):
$ SIZE=$(blockdev --getsz /dev/loop3)
$ sudo losetup /dev/loop4 /mnt/live/verity/iso-hash.verity
$ sudo losetup /dev/loop5 /mnt/live/verity/iso-fec.verity
$ sudo dmsetup -vv create live-iso -r --table "0 $SIZE verity 1
/dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots
2"
dm version [ opencount flush ] [16384] (*1)
Udev cookie 0xd4d119f (semid 819203) created
Udev cookie 0xd4d119f (semid 819203) incremented to 1
Udev cookie 0xd4d119f (semid 819203) incremented to 2
Udev cookie 0xd4d119f (semid 819203) assigned to CREATE task(0) with flags
DISABLE_LIBRARY_FALLBACK (0x20)
dm create live-iso [ opencount flush ] [16384] (*1)
dm reload live-iso [ opencount flush readonly ] [16384] (*1)
device-mapper: reload ioctl on live-iso failed: Invalid argument
<backtrace>
Udev cookie 0xd4d119f (semid 819203) decremented to 1
Udev cookie 0xd4d119f (semid 819203) incremented to 2
Udev cookie 0xd4d119f (semid 819203) assigned to REMOVE task(2) with flags
DISABLE_LIBRARY_FALLBACK (0x20)
dm remove live-iso [ opencount flush readonly ] [16384] (*1)
<backtrace>
Udev cookie 0xd4d119f (semid 819203) decremented to 1
Udev cookie 0xd4d119f (semid 819203) waiting for zero
Udev cookie 0xd4d119f (semid 819203) destroyed
Command failed
<backtrace>
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1838844
Title:
dm-verity: Invalid number of feature args
Status in linux package in Ubuntu:
New
Bug description:
On an 18.04 amd64 system dm-verity reports:
device-mapper: table: 253:20: verity: Invalid number of feature args
device-mapper: ioctl: error adding target to table
when trying to use "veritysetup" to create a previously formatted
verity device that uses FEC. Without FEC it succeeds.
$ uname -r
4.15.0-56-lowlatency
$ sudo dmsetup targets | grep verity
verity v1.3.0
$ lsmod | grep verity
dm_verity 20480 0
dm_bufio 28672 1 dm_verity
$ modinfo dm-verity
filename:
/lib/modules/4.15.0-56-lowlatency/kernel/drivers/md/dm-verity.ko
...
depends: dm-bufio
retpoline: Y
intree: Y
name: dm_verity
vermagic: 4.15.0-56-lowlatency SMP preempt mod_unload
signat: PKCS#7
...
sig_hashalgo: md4
parm: prefetch_cluster:uint
$ sudo losetup /dev/loop3 Downloads/lubuntu-desktop-amd64.1910.iso
$ sudo mkdir -p /mnt/live/verity
$ sudo veritysetup format --fec-device=/mnt/live/verity/iso-fec.verity
/dev/loop3 /mnt/live/verity/iso-hash.verity
VERITY header information for /mnt/live/verity/iso-hash.verity
UUID: fa07efe8-e4a6-4968-abce-779f2d5674ce
Hash type: 1
Data blocks: 412080
Data block size: 4096
Hash block size: 4096
Hash algorithm:
sha256
Salt:
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b
Root hash:
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
$ ls -la /mnt/live/verity/
total 26136
drwxr-xr-x 2 root root 4096 Aug 3 13:21 .
drwxr-xr-x 5 root root 4096 Aug 3 13:19 ..
-rw------- 1 root root 13451264 Aug 3 13:23 iso-fec.verity
-rw------- 1 root root 13303808 Aug 3 13:23 iso-hash.verity
Using strace I'm able to capture the table definition veritysetup is
trying to use:
$ sudo strace -v -s 256 -f -o /tmp/veritysetup.strace veritysetup -v
--fec-device=/mnt/live/verity/iso-fec.verity create live-iso /
dev/loop3 /mnt/live/verity/iso-hash.verity
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
device-mapper: reload ioctl on failed: Invalid argument
Command failed with code -1 (wrong or missing parameters).
28809 ioctl(5, DM_DEV_CREATE, {version=4.0.0, data_size=16384,
name="live-iso", uuid="CRYPT-VERITY-fa07efe8e4a64968abce779f2d5674ce-live-iso
", flags=DM_EXISTS_FLAG} => {version=4.37.0, data_size=305, dev=makedev(253,
20), name="live-iso", uuid="CRYPT-VERITY-fa07efe8e4a64968abce77
9f2d5674ce-live-iso", target_count=0, open_count=0, event_nr=0,
flags=DM_EXISTS_FLAG}) = 0
28809 ioctl(5, DM_TABLE_LOAD, {version=4.0.0, data_size=16384,
data_start=312, name="live-iso", target_count=1, flags=DM_READONLY_FLAG|DM_EX
ISTS_FLAG|DM_SECURE_DATA_FLAG, {sector_start=0, length=3296640,
target_type="verity", string="1 /dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots 2"}},
0x560977ffe210) = -1 EINVAL (Invalid argument)
So the table is:
1 /dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots
2
Manually attempting the command also fails (/dev/loop3 remains):
$ SIZE=$(blockdev --getsz /dev/loop3)
$ sudo losetup /dev/loop4 /mnt/live/verity/iso-hash.verity
$ sudo losetup /dev/loop5 /mnt/live/verity/iso-fec.verity
$ sudo dmsetup -vv create live-iso -r --table "0 $SIZE verity 1
/dev/loop3 /dev/loop4 4096 4096 412080 1 sha256
500f659e52b62e0efabe1eae2b2fac34c12522acc372e80e5d375be252c51931
fa93e8fdeb55acf548adf8812d6748c789b620c22338579def0bc01e65726a7b 8
use_fec_from_device /dev/loop5 fec_start 0 fec_blocks 415327 fec_roots
2"
dm version [ opencount flush ] [16384] (*1)
Udev cookie 0xd4d119f (semid 819203) created
Udev cookie 0xd4d119f (semid 819203) incremented to 1
Udev cookie 0xd4d119f (semid 819203) incremented to 2
Udev cookie 0xd4d119f (semid 819203) assigned to CREATE task(0) with flags
DISABLE_LIBRARY_FALLBACK (0x20)
dm create live-iso [ opencount flush ] [16384] (*1)
dm reload live-iso [ opencount flush readonly ] [16384] (*1)
device-mapper: reload ioctl on live-iso failed: Invalid argument
<backtrace>
Udev cookie 0xd4d119f (semid 819203) decremented to 1
Udev cookie 0xd4d119f (semid 819203) incremented to 2
Udev cookie 0xd4d119f (semid 819203) assigned to REMOVE task(2) with flags
DISABLE_LIBRARY_FALLBACK (0x20)
dm remove live-iso [ opencount flush readonly ] [16384] (*1)
<backtrace>
Udev cookie 0xd4d119f (semid 819203) decremented to 1
Udev cookie 0xd4d119f (semid 819203) waiting for zero
Udev cookie 0xd4d119f (semid 819203) destroyed
Command failed
<backtrace>
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1838844/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp