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     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to