+ DM_KO=/usr/obj/usr/src/sys/dev/disk/dm/dm.ko + kldload /usr/obj/usr/src/sys/dev/disk/dm/dm.ko + kldload dm_target_linear + ls -l /dev/mapper/control crw-r----- 1 root operator 32, 0x00000000 Sep 30 11:30 /dev/mapper/control + mkdir -p /tmp/dmtr + ln -sf /dev/md0 /tmp/dmtr/aaaaaaaaaaaaaaaaaaaaa + ln -sf /dev/md0s0 /tmp/dmtr/aaaaaaaaaaaaaaaaaaaaabb + ls -l /tmp/dmtr/ total 16 lrwxr-xr-x 1 root wheel 8 Sep 30 11:30 aaaaaaaaaaaaaaaaaaaaa -> /dev/md0 lrwxr-xr-x 1 root wheel 10 Sep 30 11:30 aaaaaaaaaaaaaaaaaaaaabb -> /dev/md0s0 + ls -l /dev/md0 /dev/md0s0 crw-r----- 1 root operator 4, 0x1e110007 Sep 30 11:29 /dev/md0 crw-r----- 1 root operator 4, 0x1e100007 Sep 30 11:29 /dev/md0s0 + ls -l /dev/md0 + sed -n 's/.*0x\([0-9a-f]*\).*/\1/p' + YDEV=1e110007 + ./poc_dm_pdev_trunc 0x1e110007 sizeof(plistref)=16 (kernel expects 16) strlen(T_PATH)=31 (must be 31) strlen(L_PATH)=33 (stored pdev name := first 31 chars of L) expected deps(dfb) if correct = 0x1e110007 ---- create response ---- command create flags 0x4 minor 0x1e110007 name dfa version 0x4 0x10 0x0 ---- create response ---- command create flags 0x4 minor 0x1e11000f name dfb version 0x4 0x10 0x0 ---- create response ---- command create flags 0x4 minor 0x1e110017 name dfc version 0x4 0x10 0x0 reload dfa (/tmp/dmtr/aaaaaaaaaaaaaaaaaaaaabb): ioctl FAILED with errno=2 (No such file or directory) dfa reload with 33-char path was REJECTED by kernel (expected behaviour with DF-5151 fix applied) ---- reload response ---- cmd_data length 32 params /tmp/dmtr/aaaaaaaaaaaaaaaaaaaaa 0 start 0 type linear command reload flags 0x40 minor 0x1e11000f name dfb version 0x4 0x10 0x0 ==== control: reload with nonexistent path (expect FAILURE) ==== reload dfc (/tmp/dmtr/no-such-device-node): ioctl FAILED with errno=2 (No such file or directory) ---- resume response ---- command resume flags 0x4 minor 0x1e11000f name dfb open_count 0x0 version 0x4 0x10 0x0 ---- deps response ---- cmd_data 504430599 command deps flags 0 minor 0x1e11000f name dfb uuid version 0x4 0x10 0x0 ==== RESULT ==== deps(dfb [path T -> /dev/md0 ]) = 0x1e110007 FIX CONFIRMED: long path rejected loudly, short path bound to its own device (deps == expected 0x1e110007). poc exit=1 + echo 'poc exit=1' + rm -f /tmp/dmtr/aaaaaaaaaaaaaaaaaaaaa /tmp/dmtr/aaaaaaaaaaaaaaaaaaaaabb + kldunload dm_target_linear + kldunload dm