** Changed in: linux (Ubuntu) Status: Incomplete => Confirmed -- 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 arg" with FEC due to "# CONFIG_DM_VERITY_FEC is not set" Status in linux package in Ubuntu: Confirmed 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. After writing this report I thought to check the kernel compilation options and discovered the cause: $ sudo grep VERITY /boot/config-$(uname -r) CONFIG_DM_VERITY=m # CONFIG_DM_VERITY_FEC is not set It would be very useful to enable this unless there's a specific reason not to. I'm working (with the Lubuntu team) on introducing verity/FEC for the live-build tooling so that all Ubuntu ISO images can have integral verification with FEC available. --- additional data --- $ 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 : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp