DF-5151 / fix_run.log
+ 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 ---- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>command</key> <string>create</string> <key>flags</key> <integer>0x4</integer> <key>minor</key> <integer>0x1e110007</integer> <key>name</key> <string>dfa</string> <key>version</key> <array> <integer>0x4</integer> <integer>0x10</integer> <integer>0x0</integer> </array> </dict> </plist> ---- create response ---- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>command</key> <string>create</string> <key>flags</key> <integer>0x4</integer> <key>minor</key> <integer>0x1e11000f</integer> <key>name</key> <string>dfb</string> <key>version</key> <array> <integer>0x4</integer> <integer>0x10</integer> <integer>0x0</integer> </array> </dict> </plist> ---- create response ---- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>command</key> <string>create</string> <key>flags</key> <integer>0x4</integer> <key>minor</key> <integer>0x1e110017</integer> <key>name</key> <string>dfc</string> <key>version</key> <array> <integer>0x4</integer> <integer>0x10</integer> <integer>0x0</integer> </array> </dict> </plist> 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 ---- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>cmd_data</key> <array> <dict> <key>length</key> <integer>32</integer> <key>params</key> <string>/tmp/dmtr/aaaaaaaaaaaaaaaaaaaaa 0</string> <key>start</key> <integer>0</integer> <key>type</key> <string>linear</string> </dict> </array> <key>command</key> <string>reload</string> <key>flags</key> <integer>0x40</integer> <key>minor</key> <integer>0x1e11000f</integer> <key>name</key> <string>dfb</string> <key>version</key> <array> <integer>0x4</integer> <integer>0x10</integer> <integer>0x0</integer> </array> </dict> </plist> ==== 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 ---- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>command</key> <string>resume</string> <key>flags</key> <integer>0x4</integer> <key>minor</key> <integer>0x1e11000f</integer> <key>name</key> <string>dfb</string> <key>open_count</key> <integer>0x0</integer> <key>version</key> <array> <integer>0x4</integer> <integer>0x10</integer> <integer>0x0</integer> </array> </dict> </plist> ---- deps response ---- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>cmd_data</key> <array> <integer>504430599</integer> </array> <key>command</key> <string>deps</string> <key>flags</key> <integer>0</integer> <key>minor</key> <integer>0x1e11000f</integer> <key>name</key> <string>dfb</string> <key>uuid</key> <string/> <key>version</key> <array> <integer>0x4</integer> <integer>0x10</integer> <integer>0x0</integer> </array> </dict> </plist> ==== 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