Date: Thu, 28 Jun 2007 00:34:26 +0800 From: "Howard Su" <howard0su@gmail.com> To: current@freebsd.org Subject: concept prove patch for ktrace output to all file types Message-ID: <f126fae00706270934h3e39e33avaa686aa2c12b72c6@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
------=_Part_19119_25214203.1182962066882 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline This is a concept prove patch for ktrace. In order to make ktrace write to stdout, /dev/xxx, fifo file, pipe, I changed ktrace syscall to accepting a file handler instead of a file name. I just get a workable kernel patch. And i make as small as possible changes to userland code. Now you can do something like: #mkfifo foo in session A: #kdump -f foo in session B: #ktrace -f foo ls Then, you can see a real time output like truss did. Before moving forward (hacking userland), i want to get some feedback if my changes in kernel part is the right direction to do. Appreciate your time. PS: The patch can be clearly apply to today's current. -- -Howard ------=_Part_19119_25214203.1182962066882 Content-Type: text/plain; name=ktrace.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f3g0wgy8 Content-Disposition: attachment; filename="ktrace.patch" LS0tICBzeXMva2Vybi9rZXJuX2V4ZWMuYy5vcmlnCisrKyAgc3lzL2tlcm4va2Vybl9leGVjLmMK QEAgLTI5MCw3ICsyOTAsNyBAQAogCXN0cnVjdCBwYXJncyAqb2xkYXJncyA9IE5VTEwsICpuZXdh cmdzID0gTlVMTDsKIAlzdHJ1Y3Qgc2lnYWN0cyAqb2xkc2lnYWN0cywgKm5ld3NpZ2FjdHM7CiAj aWZkZWYgS1RSQUNFCi0Jc3RydWN0IHZub2RlICp0cmFjZXZwID0gTlVMTDsKKwlzdHJ1Y3QgZmls ZSAqdHJhY2VmcCA9IE5VTEw7CiAJc3RydWN0IHVjcmVkICp0cmFjZWNyZWQgPSBOVUxMOwogI2Vu ZGlmCiAJc3RydWN0IHZub2RlICp0ZXh0dnAgPSBOVUxMOwpAQCAtNTY2LDEyICs1NjYsMTIgQEAK IAkJc2V0c3VnaWQocCk7CiAKICNpZmRlZiBLVFJBQ0UKLQkJaWYgKHAtPnBfdHJhY2V2cCAhPSBO VUxMICYmCisJCWlmIChwLT5wX3RyYWNlZnAgIT0gTlVMTCAmJgogCQkgICAgcHJpdl9jaGVja19j cmVkKG9sZGNyZWQsIFBSSVZfREVCVUdfRElGRkNSRUQsIDApKSB7CiAJCQltdHhfbG9jaygma3Ry YWNlX210eCk7CiAJCQlwLT5wX3RyYWNlZmxhZyA9IDA7Ci0JCQl0cmFjZXZwID0gcC0+cF90cmFj ZXZwOwotCQkJcC0+cF90cmFjZXZwID0gTlVMTDsKKwkJCXRyYWNlZnAgPSBwLT5wX3RyYWNlZnA7 CisJCQlwLT5wX3RyYWNlZnAgPSBOVUxMOwogCQkJdHJhY2VjcmVkID0gcC0+cF90cmFjZWNyZWQ7 CiAJCQlwLT5wX3RyYWNlY3JlZCA9IE5VTEw7CiAJCQltdHhfdW5sb2NrKCZrdHJhY2VfbXR4KTsK QEAgLTczNiwxMiArNzM2LDggQEAKIAlpZiAobmRwLT5uaV92cCAmJiBlcnJvciAhPSAwKQogCQl2 cmVsZShuZHAtPm5pX3ZwKTsKICNpZmRlZiBLVFJBQ0UKLQlpZiAodHJhY2V2cCAhPSBOVUxMKSB7 Ci0JCWludCB0dmZzbG9ja2VkOwotCi0JCXR2ZnNsb2NrZWQgPSBWRlNfTE9DS19HSUFOVCh0cmFj ZXZwLT52X21vdW50KTsKLQkJdnJlbGUodHJhY2V2cCk7Ci0JCVZGU19VTkxPQ0tfR0lBTlQodHZm c2xvY2tlZCk7CisJaWYgKHRyYWNlZnAgIT0gTlVMTCkgeworCQlmZHJvcCh0cmFjZWZwLCB0ZCk7 CiAJfQogCWlmICh0cmFjZWNyZWQgIT0gTlVMTCkKIAkJY3JmcmVlKHRyYWNlY3JlZCk7Ci0tLSAg c3lzL2tlcm4va2Vybl9leGl0LmMub3JpZworKysgIHN5cy9rZXJuL2tlcm5fZXhpdC5jCkBAIC0x MTIsNyArMTEyLDcgQEAKIAlzdHJ1Y3Qgdm5vZGUgKnR0eXZwOwogCXN0cnVjdCB2bm9kZSAqdnRt cDsKICNpZmRlZiBLVFJBQ0UKLQlzdHJ1Y3Qgdm5vZGUgKnRyYWNldnA7CisJc3RydWN0IGZpbGUg KnRyYWNlZnA7CiAJc3RydWN0IHVjcmVkICp0cmFjZWNyZWQ7CiAjZW5kaWYKIAlzdHJ1Y3QgcGxp bWl0ICpwbGltOwpAQCAtMzY4LDE2ICszNjgsMTQgQEAKIAkJa3RycHJvY2V4aXQodGQpOwogCQlQ Uk9DX0xPQ0socCk7CiAJCW10eF9sb2NrKCZrdHJhY2VfbXR4KTsKLQkJdHJhY2V2cCA9IHAtPnBf dHJhY2V2cDsKLQkJcC0+cF90cmFjZXZwID0gTlVMTDsKKwkJdHJhY2VmcCA9IHAtPnBfdHJhY2Vm cDsKKwkJcC0+cF90cmFjZWZwID0gTlVMTDsKIAkJdHJhY2VjcmVkID0gcC0+cF90cmFjZWNyZWQ7 CiAJCXAtPnBfdHJhY2VjcmVkID0gTlVMTDsKIAkJbXR4X3VubG9jaygma3RyYWNlX210eCk7CiAJ CVBST0NfVU5MT0NLKHApOwotCQlpZiAodHJhY2V2cCAhPSBOVUxMKSB7Ci0JCQlsb2NrZWQgPSBW RlNfTE9DS19HSUFOVCh0cmFjZXZwLT52X21vdW50KTsKLQkJCXZyZWxlKHRyYWNldnApOwotCQkJ VkZTX1VOTE9DS19HSUFOVChsb2NrZWQpOworCQlpZiAodHJhY2VmcCAhPSBOVUxMKSB7CisJCQlm ZHJvcCh0cmFjZWZwLCB0ZCk7CiAJCX0KIAkJaWYgKHRyYWNlY3JlZCAhPSBOVUxMKQogCQkJY3Jm cmVlKHRyYWNlY3JlZCk7Ci0tLSAgc3lzL2tlcm4va2Vybl9mb3JrLmMub3JpZworKysgIHN5cy9r ZXJuL2tlcm5fZm9yay5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8c3lzL3N5c3RtLmg+ CiAjaW5jbHVkZSA8c3lzL3N5c3Byb3RvLmg+CiAjaW5jbHVkZSA8c3lzL2V2ZW50aGFuZGxlci5o PgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CiAjaW5jbHVkZSA8c3lzL2ZpbGVkZXNjLmg+CiAjaW5j bHVkZSA8c3lzL2tlcm5lbC5oPgogI2luY2x1ZGUgPHN5cy9rdGhyZWFkLmg+CkBAIC02MDEsMTEg KzYwMiwxMSBAQAogCSAqIENvcHkgdHJhY2VmbGFnIGFuZCB0cmFjZWZpbGUgaWYgZW5hYmxlZC4K IAkgKi8KIAltdHhfbG9jaygma3RyYWNlX210eCk7Ci0JS0FTU0VSVChwMi0+cF90cmFjZXZwID09 IE5VTEwsICgibmV3IHByb2Nlc3MgaGFzIGEga3RyYWNlIHZub2RlIikpOworCUtBU1NFUlQocDIt PnBfdHJhY2VmcCA9PSBOVUxMLCAoIm5ldyBwcm9jZXNzIGhhcyBhIGt0cmFjZSBmcCIpKTsKIAlp ZiAocDEtPnBfdHJhY2VmbGFnICYgS1RSRkFDX0lOSEVSSVQpIHsKIAkJcDItPnBfdHJhY2VmbGFn ID0gcDEtPnBfdHJhY2VmbGFnOwotCQlpZiAoKHAyLT5wX3RyYWNldnAgPSBwMS0+cF90cmFjZXZw KSAhPSBOVUxMKSB7Ci0JCQlWUkVGKHAyLT5wX3RyYWNldnApOworCQlpZiAoKHAyLT5wX3RyYWNl ZnAgPSBwMS0+cF90cmFjZWZwKSAhPSBOVUxMKSB7CisJCQlmaG9sZChwMi0+cF90cmFjZWZwKTsK IAkJCUtBU1NFUlQocDEtPnBfdHJhY2VjcmVkICE9IE5VTEwsCiAJCQkgICAgKCJrdHJhY2Ugdm5v ZGUgd2l0aCBubyBjcmVkIikpOwogCQkJcDItPnBfdHJhY2VjcmVkID0gY3Job2xkKHAxLT5wX3Ry YWNlY3JlZCk7Ci0tLSAgc3lzL2tlcm4va2Vybl9rdHJhY2UuYy5vcmlnCisrKyAgc3lzL2tlcm4v a2Vybl9rdHJhY2UuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgog I2luY2x1ZGUgPHN5cy9zeXN0bS5oPgogI2luY2x1ZGUgPHN5cy9mY250bC5oPgorI2luY2x1ZGUg PHN5cy9maWxlLmg+CiAjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgogI2luY2x1ZGUgPHN5cy9rdGhy ZWFkLmg+CiAjaW5jbHVkZSA8c3lzL2xvY2suaD4KQEAgLTEzNCw4ICsxMzUsOCBAQAogc3RhdGlj IHZvaWQga3RyX2ZyZWVyZXF1ZXN0KHN0cnVjdCBrdHJfcmVxdWVzdCAqcmVxKTsKIHN0YXRpYyB2 b2lkIGt0cl93cml0ZXJlcXVlc3Qoc3RydWN0IHRocmVhZCAqdGQsIHN0cnVjdCBrdHJfcmVxdWVz dCAqcmVxKTsKIHN0YXRpYyBpbnQga3RyY2Fuc2V0KHN0cnVjdCB0aHJlYWQgKixzdHJ1Y3QgcHJv YyAqKTsKLXN0YXRpYyBpbnQga3Ryc2V0Y2hpbGRyZW4oc3RydWN0IHRocmVhZCAqLHN0cnVjdCBw cm9jICosaW50LGludCxzdHJ1Y3Qgdm5vZGUgKik7Ci1zdGF0aWMgaW50IGt0cm9wcyhzdHJ1Y3Qg dGhyZWFkICosc3RydWN0IHByb2MgKixpbnQsaW50LHN0cnVjdCB2bm9kZSAqKTsKK3N0YXRpYyBp bnQga3Ryc2V0Y2hpbGRyZW4oc3RydWN0IHRocmVhZCAqLHN0cnVjdCBwcm9jICosaW50LGludCxz dHJ1Y3QgZmlsZSAqKTsKK3N0YXRpYyBpbnQga3Ryb3BzKHN0cnVjdCB0aHJlYWQgKixzdHJ1Y3Qg cHJvYyAqLGludCxpbnQsc3RydWN0IGZpbGUgKik7CiAKIC8qCiAgKiBrdHJhY2UgaXRzZWxmIGdl bmVyYXRlcyBldmVudHMsIHN1Y2ggYXMgY29udGV4dCBzd2l0Y2hlcywgd2hpY2ggd2UgZG8gbm90 CkBAIC01NzMsMTUgKzU3NCwxNCBAQAogCXJlZ2lzdGVyIHN0cnVjdCBrdHJhY2VfYXJncyAqdWFw OwogewogI2lmZGVmIEtUUkFDRQotCXJlZ2lzdGVyIHN0cnVjdCB2bm9kZSAqdnAgPSBOVUxMOwog CXJlZ2lzdGVyIHN0cnVjdCBwcm9jICpwOworCXN0cnVjdCBmaWxlICpmcCA9IE5VTEw7CiAJc3Ry dWN0IHBncnAgKnBnOwogCWludCBmYWNzID0gdWFwLT5mYWNzICYgfktUUkZBQ19ST09UOwogCWlu dCBvcHMgPSBLVFJPUCh1YXAtPm9wcyk7CiAJaW50IGRlc2NlbmQgPSB1YXAtPm9wcyAmIEtUUkZM QUdfREVTQ0VORDsKIAlpbnQgbmZvdW5kLCByZXQgPSAwOwotCWludCBmbGFncywgZXJyb3IgPSAw LCB2ZnNsb2NrZWQ7Ci0Jc3RydWN0IG5hbWVpZGF0YSBuZDsKKwlpbnQgZXJyb3IgPSAwOwogCXN0 cnVjdCB1Y3JlZCAqY3JlZDsKIAogCS8qCkBAIC01OTIsMjggKzU5MiwxMSBAQAogCiAJa3RyYWNl X2VudGVyKHRkKTsKIAlpZiAob3BzICE9IEtUUk9QX0NMRUFSKSB7Ci0JCS8qCi0JCSAqIGFuIG9w ZXJhdGlvbiB3aGljaCByZXF1aXJlcyBhIGZpbGUgYXJndW1lbnQuCi0JCSAqLwotCQlORElOSVQo Jm5kLCBMT09LVVAsIE5PRk9MTE9XIHwgTVBTQUZFLCBVSU9fVVNFUlNQQUNFLAotCQkgICAgdWFw LT5mbmFtZSwgdGQpOwotCQlmbGFncyA9IEZSRUFEIHwgRldSSVRFIHwgT19OT0ZPTExPVzsKLQkJ ZXJyb3IgPSB2bl9vcGVuKCZuZCwgJmZsYWdzLCAwLCBOVUxMKTsKKwkJZXJyb3IgPSBmZ2V0KHRk LCB1YXAtPmZkLCAmZnApOwogCQlpZiAoZXJyb3IpIHsKIAkJCWt0cmFjZV9leGl0KHRkKTsKIAkJ CXJldHVybiAoZXJyb3IpOwogCQl9Ci0JCXZmc2xvY2tlZCA9IE5ESEFTR0lBTlQoJm5kKTsKLQkJ TkRGUkVFKCZuZCwgTkRGX09OTFlfUE5CVUYpOwotCQl2cCA9IG5kLm5pX3ZwOwotCQlWT1BfVU5M T0NLKHZwLCAwLCB0ZCk7Ci0JCWlmICh2cC0+dl90eXBlICE9IFZSRUcpIHsKLQkJCSh2b2lkKSB2 bl9jbG9zZSh2cCwgRlJFQUR8RldSSVRFLCB0ZC0+dGRfdWNyZWQsIHRkKTsKLQkJCVZGU19VTkxP Q0tfR0lBTlQodmZzbG9ja2VkKTsKLQkJCWt0cmFjZV9leGl0KHRkKTsKLQkJCXJldHVybiAoRUFD Q0VTKTsKLQkJfQotCQlWRlNfVU5MT0NLX0dJQU5UKHZmc2xvY2tlZCk7CiAJfQogCS8qCiAJICog Q2xlYXIgYWxsIHVzZXMgb2YgdGhlIHRyYWNlZmlsZS4KQEAgLTYyNSwxMiArNjA4LDEyIEBACiAJ CXN4X3Nsb2NrKCZhbGxwcm9jX2xvY2spOwogCQlGT1JFQUNIX1BST0NfSU5fU1lTVEVNKHApIHsK IAkJCVBST0NfTE9DSyhwKTsKLQkJCWlmIChwLT5wX3RyYWNldnAgPT0gdnApIHsKKwkJCWlmIChw LT5wX3RyYWNlZnAgPT0gZnApIHsKIAkJCQlpZiAoa3RyY2Fuc2V0KHRkLCBwKSkgewogCQkJCQlt dHhfbG9jaygma3RyYWNlX210eCk7CiAJCQkJCWNyZWQgPSBwLT5wX3RyYWNlY3JlZDsKIAkJCQkJ cC0+cF90cmFjZWNyZWQgPSBOVUxMOwotCQkJCQlwLT5wX3RyYWNldnAgPSBOVUxMOworCQkJCQlw LT5wX3RyYWNlZnAgPSBOVUxMOwogCQkJCQlwLT5wX3RyYWNlZmxhZyA9IDA7CiAJCQkJCW10eF91 bmxvY2soJmt0cmFjZV9tdHgpOwogCQkJCQl2cmVsZV9jb3VudCsrOwpAQCAtNjQyLDEwICs2MjUs OCBAQAogCQl9CiAJCXN4X3N1bmxvY2soJmFsbHByb2NfbG9jayk7CiAJCWlmICh2cmVsZV9jb3Vu dCA+IDApIHsKLQkJCXZmc2xvY2tlZCA9IFZGU19MT0NLX0dJQU5UKHZwLT52X21vdW50KTsKIAkJ CXdoaWxlICh2cmVsZV9jb3VudC0tID4gMCkKLQkJCQl2cmVsZSh2cCk7Ci0JCQlWRlNfVU5MT0NL X0dJQU5UKHZmc2xvY2tlZCk7CisJCQkJZmRyb3AoZnAsIHRkKTsKIAkJfQogCQlnb3RvIGRvbmU7 CiAJfQpAQCAtNjc4LDkgKzY1OSw5IEBACiAJCQlQUk9DX1VOTE9DSyhwKTsgCiAJCQluZm91bmQr KzsKIAkJCWlmIChkZXNjZW5kKQotCQkJCXJldCB8PSBrdHJzZXRjaGlsZHJlbih0ZCwgcCwgb3Bz LCBmYWNzLCB2cCk7CisJCQkJcmV0IHw9IGt0cnNldGNoaWxkcmVuKHRkLCBwLCBvcHMsIGZhY3Ms IGZwKTsKIAkJCWVsc2UKLQkJCQlyZXQgfD0ga3Ryb3BzKHRkLCBwLCBvcHMsIGZhY3MsIHZwKTsK KwkJCQlyZXQgfD0ga3Ryb3BzKHRkLCBwLCBvcHMsIGZhY3MsIGZwKTsKIAkJfQogCQlpZiAobmZv dW5kID09IDApIHsKIAkJCXN4X3N1bmxvY2soJnByb2N0cmVlX2xvY2spOwpAQCAtNzA4LDE5ICs2 ODksMTQgQEAKIAkJCWdvdG8gZG9uZTsKIAkJfQogCQlpZiAoZGVzY2VuZCkKLQkJCXJldCB8PSBr dHJzZXRjaGlsZHJlbih0ZCwgcCwgb3BzLCBmYWNzLCB2cCk7CisJCQlyZXQgfD0ga3Ryc2V0Y2hp bGRyZW4odGQsIHAsIG9wcywgZmFjcywgZnApOwogCQllbHNlCi0JCQlyZXQgfD0ga3Ryb3BzKHRk LCBwLCBvcHMsIGZhY3MsIHZwKTsKKwkJCXJldCB8PSBrdHJvcHModGQsIHAsIG9wcywgZmFjcywg ZnApOwogCX0KIAlzeF9zdW5sb2NrKCZwcm9jdHJlZV9sb2NrKTsKIAlpZiAoIXJldCkKIAkJZXJy b3IgPSBFUEVSTTsKIGRvbmU6Ci0JaWYgKHZwICE9IE5VTEwpIHsKLQkJdmZzbG9ja2VkID0gVkZT X0xPQ0tfR0lBTlQodnAtPnZfbW91bnQpOwotCQkodm9pZCkgdm5fY2xvc2UodnAsIEZXUklURSwg dGQtPnRkX3VjcmVkLCB0ZCk7Ci0JCVZGU19VTkxPQ0tfR0lBTlQodmZzbG9ja2VkKTsKLQl9CiAJ a3RyYWNlX2V4aXQodGQpOwogCXJldHVybiAoZXJyb3IpOwogI2Vsc2UgLyogIUtUUkFDRSAqLwpA QCAtNzY2LDEzICs3NDIsMTMgQEAKIAogI2lmZGVmIEtUUkFDRQogc3RhdGljIGludAota3Ryb3Bz KHRkLCBwLCBvcHMsIGZhY3MsIHZwKQora3Ryb3BzKHRkLCBwLCBvcHMsIGZhY3MsIGZwKQogCXN0 cnVjdCB0aHJlYWQgKnRkOwogCXN0cnVjdCBwcm9jICpwOwogCWludCBvcHMsIGZhY3M7Ci0Jc3Ry dWN0IHZub2RlICp2cDsKKwlzdHJ1Y3QgZmlsZSAqZnA7CiB7Ci0Jc3RydWN0IHZub2RlICp0cmFj ZXZwID0gTlVMTDsKKwlzdHJ1Y3QgZmlsZSAqdHJhY2VmcCA9IE5VTEw7CiAJc3RydWN0IHVjcmVk ICp0cmFjZWNyZWQgPSBOVUxMOwogCiAJUFJPQ19MT0NLKHApOwpAQCAtNzgyLDEzICs3NTgsMTMg QEAKIAl9CiAJbXR4X2xvY2soJmt0cmFjZV9tdHgpOwogCWlmIChvcHMgPT0gS1RST1BfU0VUKSB7 Ci0JCWlmIChwLT5wX3RyYWNldnAgIT0gdnApIHsKKwkJaWYgKHAtPnBfdHJhY2VmcCAhPSBmcCkg ewogCQkJLyoKIAkJCSAqIGlmIHRyYWNlIGZpbGUgYWxyZWFkeSBpbiB1c2UsIHJlbGlucXVpc2gg YmVsb3cKIAkJCSAqLwotCQkJdHJhY2V2cCA9IHAtPnBfdHJhY2V2cDsKLQkJCVZSRUYodnApOwot CQkJcC0+cF90cmFjZXZwID0gdnA7CisJCQl0cmFjZWZwID0gcC0+cF90cmFjZWZwOworCQkJZmhv bGQoZnApOworCQkJcC0+cF90cmFjZWZwID0gZnA7CiAJCX0KIAkJaWYgKHAtPnBfdHJhY2VjcmVk ICE9IHRkLT50ZF91Y3JlZCkgewogCQkJdHJhY2VjcmVkID0gcC0+cF90cmFjZWNyZWQ7CkBAIC04 MDIsMjAgKzc3OCwxNiBAQAogCQlpZiAoKChwLT5wX3RyYWNlZmxhZyAmPSB+ZmFjcykgJiBLVFJG QUNfTUFTSykgPT0gMCkgewogCQkJLyogbm8gbW9yZSB0cmFjaW5nICovCiAJCQlwLT5wX3RyYWNl ZmxhZyA9IDA7Ci0JCQl0cmFjZXZwID0gcC0+cF90cmFjZXZwOwotCQkJcC0+cF90cmFjZXZwID0g TlVMTDsKKwkJCXRyYWNlZnAgPSBwLT5wX3RyYWNlZnA7CisJCQlwLT5wX3RyYWNlZnAgPSBOVUxM OwogCQkJdHJhY2VjcmVkID0gcC0+cF90cmFjZWNyZWQ7CiAJCQlwLT5wX3RyYWNlY3JlZCA9IE5V TEw7CiAJCX0KIAl9CiAJbXR4X3VubG9jaygma3RyYWNlX210eCk7CiAJUFJPQ19VTkxPQ0socCk7 Ci0JaWYgKHRyYWNldnAgIT0gTlVMTCkgewotCQlpbnQgdmZzbG9ja2VkOwotCi0JCXZmc2xvY2tl ZCA9IFZGU19MT0NLX0dJQU5UKHRyYWNldnAtPnZfbW91bnQpOwotCQl2cmVsZSh0cmFjZXZwKTsK LQkJVkZTX1VOTE9DS19HSUFOVCh2ZnNsb2NrZWQpOworCWlmICh0cmFjZWZwICE9IE5VTEwpIHsK KwkJZmRyb3AodHJhY2VmcCwgdGQpOwogCX0KIAlpZiAodHJhY2VjcmVkICE9IE5VTEwpCiAJCWNy ZnJlZSh0cmFjZWNyZWQpOwpAQCAtODI0LDExICs3OTYsMTEgQEAKIH0KIAogc3RhdGljIGludAot a3Ryc2V0Y2hpbGRyZW4odGQsIHRvcCwgb3BzLCBmYWNzLCB2cCkKK2t0cnNldGNoaWxkcmVuKHRk LCB0b3AsIG9wcywgZmFjcywgZnApCiAJc3RydWN0IHRocmVhZCAqdGQ7CiAJc3RydWN0IHByb2Mg KnRvcDsKIAlpbnQgb3BzLCBmYWNzOwotCXN0cnVjdCB2bm9kZSAqdnA7CisJc3RydWN0IGZpbGUg KmZwOwogewogCXJlZ2lzdGVyIHN0cnVjdCBwcm9jICpwOwogCXJlZ2lzdGVyIGludCByZXQgPSAw OwpAQCAtODM2LDcgKzgwOCw3IEBACiAJcCA9IHRvcDsKIAlzeF9hc3NlcnQoJnByb2N0cmVlX2xv Y2ssIFNYX0xPQ0tFRCk7CiAJZm9yICg7OykgewotCQlyZXQgfD0ga3Ryb3BzKHRkLCBwLCBvcHMs IGZhY3MsIHZwKTsKKwkJcmV0IHw9IGt0cm9wcyh0ZCwgcCwgb3BzLCBmYWNzLCBmcCk7CiAJCS8q CiAJCSAqIElmIHRoaXMgcHJvY2VzcyBoYXMgY2hpbGRyZW4sIGRlc2NlbmQgdG8gdGhlbSBuZXh0 LAogCQkgKiBvdGhlcndpc2UgZG8gYW55IHNpYmxpbmdzLCBhbmQgaWYgZG9uZSB3aXRoIHRoaXMg bGV2ZWwsCkBAIC04NjEsMTQgKzgzMywxMyBAQAoga3RyX3dyaXRlcmVxdWVzdChzdHJ1Y3QgdGhy ZWFkICp0ZCwgc3RydWN0IGt0cl9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGt0cl9oZWFkZXIg Kmt0aDsKLQlzdHJ1Y3Qgdm5vZGUgKnZwOworCXN0cnVjdCBmaWxlICpmcDsKIAlzdHJ1Y3QgcHJv YyAqcDsKIAlzdHJ1Y3QgdWNyZWQgKmNyZWQ7CiAJc3RydWN0IHVpbyBhdWlvOwogCXN0cnVjdCBp b3ZlYyBhaW92WzNdOwotCXN0cnVjdCBtb3VudCAqbXA7CiAJaW50IGRhdGFsZW4sIGJ1Zmxlbiwg dnJlbGVfY291bnQ7Ci0JaW50IGVycm9yLCB2ZnNsb2NrZWQ7CisJaW50IGVycm9yOwogCiAJLyoK IAkgKiBXZSBob2xkIHRoZSB2bm9kZSBhbmQgY3JlZGVudGlhbCBmb3IgdXNlIGluIEkvTyBpbiBj YXNlIGt0cmFjZSBpcwpAQCAtODc4LDIwICs4NDksMjAgQEAKIAkgKiB0aGUgdm5vZGUgaGFzIGJl ZW4gY2xvc2VkLgogCSAqLwogCW10eF9sb2NrKCZrdHJhY2VfbXR4KTsKLQl2cCA9IHRkLT50ZF9w cm9jLT5wX3RyYWNldnA7Ci0JaWYgKHZwICE9IE5VTEwpCi0JCVZSRUYodnApOworCWZwID0gdGQt PnRkX3Byb2MtPnBfdHJhY2VmcDsKKwlpZiAoZnAgIT0gTlVMTCkKKwkJZmhvbGQoZnApOwogCWNy ZWQgPSB0ZC0+dGRfcHJvYy0+cF90cmFjZWNyZWQ7CiAJaWYgKGNyZWQgIT0gTlVMTCkKIAkJY3Jo b2xkKGNyZWQpOwogCW10eF91bmxvY2soJmt0cmFjZV9tdHgpOwogCiAJLyoKLQkgKiBJZiB2cCBp cyBOVUxMLCB0aGUgdnAgaGFzIGJlZW4gY2xlYXJlZCBvdXQgZnJvbSB1bmRlciB0aGlzCisJICog SWYgZnAgaXMgTlVMTCwgdGhlIGZwIGhhcyBiZWVuIGNsZWFyZWQgb3V0IGZyb20gdW5kZXIgdGhp cwogCSAqIHJlcXVlc3QsIHNvIGp1c3QgZHJvcCBpdC4gIE1ha2Ugc3VyZSB0aGUgY3JlZGVudGlh bCBhbmQgdm5vZGUgYXJlCiAJICogaW4gc3luYzogd2Ugc2hvdWxkIGhhdmUgYm90aCBvciBuZWl0 aGVyLgogCSAqLwotCWlmICh2cCA9PSBOVUxMKSB7CisJaWYgKGZwID09IE5VTEwpIHsKIAkJS0FT U0VSVChjcmVkID09IE5VTEwsICgia3RyX3dyaXRlcmVxdWVzdDogY3JlZCAhPSBOVUxMIikpOwog CQlyZXR1cm47CiAJfQpAQCAtOTI0LDE5ICs4OTUsMTEgQEAKIAkJYXVpby51aW9faW92Y250Kys7 CiAJfQogCi0JdmZzbG9ja2VkID0gVkZTX0xPQ0tfR0lBTlQodnAtPnZfbW91bnQpOwotCXZuX3N0 YXJ0X3dyaXRlKHZwLCAmbXAsIFZfV0FJVCk7Ci0Jdm5fbG9jayh2cCwgTEtfRVhDTFVTSVZFIHwg TEtfUkVUUlksIHRkKTsKLQkodm9pZClWT1BfTEVBU0UodnAsIHRkLCBjcmVkLCBMRUFTRV9XUklU RSk7CiAjaWZkZWYgTUFDCi0JZXJyb3IgPSBtYWNfY2hlY2tfdm5vZGVfd3JpdGUoY3JlZCwgTk9D UkVELCB2cCk7CisJZXJyb3IgPSBtYWNfY2hlY2tfdm5vZGVfd3JpdGUoY3JlZCwgTk9DUkVELCBm cC0+dl9ub2RlKTsKIAlpZiAoZXJyb3IgPT0gMCkKICNlbmRpZgotCQllcnJvciA9IFZPUF9XUklU RSh2cCwgJmF1aW8sIElPX1VOSVQgfCBJT19BUFBFTkQsIGNyZWQpOwotCVZPUF9VTkxPQ0sodnAs IDAsIHRkKTsKLQl2bl9maW5pc2hlZF93cml0ZShtcCk7Ci0JdnJlbGUodnApOwotCVZGU19VTkxP Q0tfR0lBTlQodmZzbG9ja2VkKTsKKwkJZXJyb3IgPSBmb193cml0ZShmcCwgJmF1aW8sIGNyZWQs IDAsIHRkKTsKIAlpZiAoIWVycm9yKQogCQlyZXR1cm47CiAJLyoKQEAgLTk1OCw5ICs5MjEsOSBA QAogCXN4X3Nsb2NrKCZhbGxwcm9jX2xvY2spOwogCUZPUkVBQ0hfUFJPQ19JTl9TWVNURU0ocCkg ewogCQlQUk9DX0xPQ0socCk7Ci0JCWlmIChwLT5wX3RyYWNldnAgPT0gdnApIHsKKwkJaWYgKHAt PnBfdHJhY2VmcCA9PSBmcCkgewogCQkJbXR4X2xvY2soJmt0cmFjZV9tdHgpOwotCQkJcC0+cF90 cmFjZXZwID0gTlVMTDsKKwkJCXAtPnBfdHJhY2VmcCA9IE5VTEw7CiAJCQlwLT5wX3RyYWNlZmxh ZyA9IDA7CiAJCQljcmVkID0gcC0+cF90cmFjZWNyZWQ7CiAJCQlwLT5wX3RyYWNlY3JlZCA9IE5V TEw7CkBAIC05ODAsMTAgKzk0Myw4IEBACiAJICogdGhlbSBidXQgbm90IHlldCBjb21taXR0ZWQg dGhlbSwgYXMgdGhvc2UgYXJlIHBlci10aHJlYWQuICBUaGUKIAkgKiB0aHJlYWQgd2lsbCBoYXZl IHRvIGNsZWFyIGl0IGl0c2VsZiBvbiBzeXN0ZW0gY2FsbCByZXR1cm4uCiAJICovCi0JdmZzbG9j a2VkID0gVkZTX0xPQ0tfR0lBTlQodnAtPnZfbW91bnQpOwogCXdoaWxlICh2cmVsZV9jb3VudC0t ID4gMCkKLQkJdnJlbGUodnApOwotCVZGU19VTkxPQ0tfR0lBTlQodmZzbG9ja2VkKTsKKwkJZmRy b3AoZnAsIHRkKTsKIH0KIAogLyoKLS0tICBzeXMva2Vybi9rZXJuX3Byb2MuYy5vcmlnCisrKyAg c3lzL2tlcm4va2Vybl9wcm9jLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxzeXMvc2No ZWQuaD4KICNpbmNsdWRlIDxzeXMvc21wLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2lu Y2x1ZGUgPHN5cy9maWxlLmg+CiAjaW5jbHVkZSA8c3lzL2ZpbGVkZXNjLmg+CiAjaW5jbHVkZSA8 c3lzL3R0eS5oPgogI2luY2x1ZGUgPHN5cy9zaWduYWx2YXIuaD4KQEAgLTYzNiw3ICs2MzcsOCBA QAogCWtwLT5raV9hcmdzID0gcC0+cF9hcmdzOwogCWtwLT5raV90ZXh0dnAgPSBwLT5wX3RleHR2 cDsKICNpZmRlZiBLVFJBQ0UKLQlrcC0+a2lfdHJhY2VwID0gcC0+cF90cmFjZXZwOworCWlmIChw LT5wX3RyYWNlZnAgIT0gTlVMTCkKKwkJa3AtPmtpX3RyYWNlcCA9IHAtPnBfdHJhY2VmcC0+Zl92 bm9kZTsKIAltdHhfbG9jaygma3RyYWNlX210eCk7CiAJa3AtPmtpX3RyYWNlZmxhZyA9IHAtPnBf dHJhY2VmbGFnOwogCW10eF91bmxvY2soJmt0cmFjZV9tdHgpOwotLS0gIHN5cy9rZXJuL3N5c2Nh bGxzLm1hc3Rlci5vcmlnCisrKyAgc3lzL2tlcm4vc3lzY2FsbHMubWFzdGVyCkBAIC0xMTcsNyAr MTE3LDcgQEAKIDQzCUFVRV9HRVRFR0lECVNURAl7IGdpZF90IGdldGVnaWQodm9pZCk7IH0KIDQ0 CUFVRV9QUk9GSUxFCVNURAl7IGludCBwcm9maWwoY2FkZHJfdCBzYW1wbGVzLCBzaXplX3Qgc2l6 ZSwgXAogCQkJCSAgICBzaXplX3Qgb2Zmc2V0LCB1X2ludCBzY2FsZSk7IH0KLTQ1CUFVRV9LVFJB Q0UJU1RECXsgaW50IGt0cmFjZShjb25zdCBjaGFyICpmbmFtZSwgaW50IG9wcywgXAorNDUJQVVF X0tUUkFDRQlTVEQJeyBpbnQga3RyYWNlKGludCBmZCwgaW50IG9wcywgXAogCQkJCSAgICBpbnQg ZmFjcywgaW50IHBpZCk7IH0KIDQ2CUFVRV9TSUdBQ1RJT04JQ09NUEFUCXsgaW50IHNpZ2FjdGlv bihpbnQgc2lnbnVtLCBcCiAJCQkJICAgIHN0cnVjdCBvc2lnYWN0aW9uICpuc2EsIFwKLS0tICBz eXMva2Vybi9zeXN0cmFjZV9hcmdzLmMub3JpZworKysgIHN5cy9rZXJuL3N5c3RyYWNlX2FyZ3Mu YwpAQCAtMiw3ICsyLDcgQEAKICAqIFN5c3RlbSBjYWxsIGFyZ3VtZW50IHRvIERUcmFjZSByZWdp c3RlciBhcnJheSBjb252ZXJzdGlvbi4KICAqCiAgKiBETyBOT1QgRURJVC0tIHRoaXMgZmlsZSBp cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KLSAqICRGcmVlQlNEOiBzcmMvc3lzL2tlcm4vc3lz dHJhY2VfYXJncy5jLHYgMS4xMiAyMDA2LzExLzExIDIyOjAxOjI1IHJ1IEV4cCAkCisgKiAkRnJl ZUJTRCQKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBEVHJhY2Ugc3lzY2FsbCBwcm92aWRl ci4KICAqLwogCkBAIC0zMTMsNyArMzEzLDcgQEAKIAkvKiBrdHJhY2UgKi8KIAljYXNlIDQ1OiB7 CiAJCXN0cnVjdCBrdHJhY2VfYXJncyAqcCA9IHBhcmFtczsKLQkJdWFyZ1swXSA9IChpbnRwdHJf dCkgcC0+Zm5hbWU7IC8qIGNvbnN0IGNoYXIgKiAqLworCQlpYXJnWzBdID0gcC0+ZmQ7IC8qIGlu dCAqLwogCQlpYXJnWzFdID0gcC0+b3BzOyAvKiBpbnQgKi8KIAkJaWFyZ1syXSA9IHAtPmZhY3M7 IC8qIGludCAqLwogCQlpYXJnWzNdID0gcC0+cGlkOyAvKiBpbnQgKi8KLS0tICBzeXMvc3lzL3By b2MuaC5vcmlnCisrKyAgc3lzL3N5cy9wcm9jLmgKQEAgLTUzMSw3ICs1MzEsNyBAQAogCWludAkJ cF9wcm9mdGhyZWFkczsJLyogKGMpIE51bSB0aHJlYWRzIGluIGFkZHVwY190YXNrLiAqLwogCXZv bGF0aWxlIGludAlwX2V4aXR0aHJlYWRzOwkvKiAoaikgTnVtYmVyIG9mIHRocmVhZHMgZXhpdGlu ZyAqLwogCWludAkJcF90cmFjZWZsYWc7CS8qIChvKSBLZXJuZWwgdHJhY2UgcG9pbnRzLiAqLwot CXN0cnVjdCB2bm9kZQkqcF90cmFjZXZwOwkvKiAoYyArIG8pIFRyYWNlIHRvIHZub2RlLiAqLwor CXN0cnVjdCBmaWxlCSpwX3RyYWNlZnA7CS8qIChjICsgbykgVHJhY2UgdG8gdm5vZGUuICovCiAJ c3RydWN0IHVjcmVkCSpwX3RyYWNlY3JlZDsJLyogKG8pIENyZWRlbnRpYWxzIHRvIHRyYWNlIHdp dGguICovCiAJc3RydWN0IHZub2RlCSpwX3RleHR2cDsJLyogKGIpIFZub2RlIG9mIGV4ZWN1dGFi bGUuICovCiAJY2hhcgkJcF9sb2NrOwkJLyogKGMpIFByb2Nsb2NrIChwcmV2ZW50IHN3YXApIGNv dW50LiAqLwotLS0gIHN5cy9zeXMvc3lzcHJvdG8uaC5vcmlnCisrKyAgc3lzL3N5cy9zeXNwcm90 by5oCkBAIC0yLDcgKzIsNyBAQAogICogU3lzdGVtIGNhbGwgcHJvdG90eXBlcy4KICAqCiAgKiBE TyBOT1QgRURJVC0tIHRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4KLSAqICRG cmVlQlNEOiBzcmMvc3lzL3N5cy9zeXNwcm90by5oLHYgMS4yMTMgMjAwNi8xMS8xMSAyMjowMToy NCBydSBFeHAgJAorICogJEZyZWVCU0QkCiAgKiBjcmVhdGVkIGZyb20gRnJlZUJTRDogc3JjL3N5 cy9rZXJuL3N5c2NhbGxzLm1hc3Rlcix2IDEuMjMxIDIwMDYvMTEvMDMgMTU6MjM6MTQgcnJzIEV4 cCAKICAqLwogCkBAIC0xOTMsNyArMTkzLDcgQEAKIAljaGFyIHNjYWxlX2xfW1BBRExfKHVfaW50 KV07IHVfaW50IHNjYWxlOyBjaGFyIHNjYWxlX3JfW1BBRFJfKHVfaW50KV07CiB9Owogc3RydWN0 IGt0cmFjZV9hcmdzIHsKLQljaGFyIGZuYW1lX2xfW1BBRExfKGNvbnN0IGNoYXIgKildOyBjb25z dCBjaGFyICogZm5hbWU7IGNoYXIgZm5hbWVfcl9bUEFEUl8oY29uc3QgY2hhciAqKV07CisJY2hh ciBmZF9sX1tQQURMXyhpbnQpXTsgaW50IGZkOyBjaGFyIGZkX3JfW1BBRFJfKGludCldOwogCWNo YXIgb3BzX2xfW1BBRExfKGludCldOyBpbnQgb3BzOyBjaGFyIG9wc19yX1tQQURSXyhpbnQpXTsK IAljaGFyIGZhY3NfbF9bUEFETF8oaW50KV07IGludCBmYWNzOyBjaGFyIGZhY3Nfcl9bUEFEUl8o aW50KV07CiAJY2hhciBwaWRfbF9bUEFETF8oaW50KV07IGludCBwaWQ7IGNoYXIgcGlkX3JfW1BB RFJfKGludCldOwotLS0gIHVzci5iaW4va3RyYWNlL2t0cmFjZS5jLm9yaWcKKysrICB1c3IuYmlu L2t0cmFjZS9rdHJhY2UuYwpAQCAtMTM3LDkgKzEzNywxMyBAQAogCQkJcGlkID0gMTsKIAkJfSBl bHNlCiAJCQlvcHMgfD0gcGlkc2V0ID8gS1RST1BfQ0xFQVIgOiBLVFJPUF9DTEVBUkZJTEU7Ci0K LQkJaWYgKGt0cmFjZSh0cmFjZWZpbGUsIG9wcywgdHJwb2ludHMsIHBpZCkgPCAwKQorCQlpZiAo KGZkID0gb3Blbih0cmFjZWZpbGUsIE9fUkRXUiwgCisgICAgICAgICAgICAgICAgICAgIERFRkZJ TEVNT0RFKSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDEsICIlcyIsIHRyYWNl ZmlsZSk7CisJCQorCQlpZiAoa3RyYWNlKGZkLCBvcHMsIHRycG9pbnRzLCBwaWQpIDwgMCkKIAkJ CWVycigxLCAiJXMiLCB0cmFjZWZpbGUpOworCQljbG9zZShmZCk7CiAJCWV4aXQoMCk7CiAJfQog CkBAIC0xNTQsMjMgKzE1OCwyMSBAQAogCQlpZiAoIShTX0lTUkVHKHNiLnN0X21vZGUpKSkKIAkJ CWVycngoMSwgIiVzIG5vdCByZWd1bGFyIGZpbGUiLCB0cmFjZWZpbGUpOwogCX0gZWxzZSB7Ci0J CWlmICh1bmxpbmsodHJhY2VmaWxlKSA9PSAtMSAmJiBlcnJubyAhPSBFTk9FTlQpCi0JCQllcnIo MSwgInVubGluayAlcyIsIHRyYWNlZmlsZSk7Ci0JCWlmICgoZmQgPSBvcGVuKHRyYWNlZmlsZSwg T19DUkVBVCB8IE9fRVhDTCB8IE9fV1JPTkxZLAorCQlpZiAoKGZkID0gb3Blbih0cmFjZWZpbGUs IE9fQ1JFQVQgfCBPX1dST05MWSB8IE9fQVBQRU5ELAogCQkgICAgREVGRklMRU1PREUpKSA8IDAp CiAJCQllcnIoMSwgIiVzIiwgdHJhY2VmaWxlKTsKIAl9CiAJKHZvaWQpdW1hc2sob21hc2spOwot CSh2b2lkKWNsb3NlKGZkKTsKIAotCWlmICgqYXJndikgeyAKLQkJaWYgKGt0cmFjZSh0cmFjZWZp bGUsIG9wcywgdHJwb2ludHMsIGdldHBpZCgpKSA8IDApCisJaWYgKCphcmd2KSB7CisJCWlmIChr dHJhY2UoZmQsIG9wcywgdHJwb2ludHMsIGdldHBpZCgpKSA8IDApCiAJCQllcnIoMSwgIiVzIiwg dHJhY2VmaWxlKTsKIAkJZXhlY3ZwKGFyZ3ZbMF0sICZhcmd2WzBdKTsKIAkJZXJyKDEsICJleGVj IG9mICclcycgZmFpbGVkIiwgYXJndlswXSk7CiAJfQotCWVsc2UgaWYgKGt0cmFjZSh0cmFjZWZp bGUsIG9wcywgdHJwb2ludHMsIHBpZCkgPCAwKQorCWVsc2UgaWYgKGt0cmFjZShmZCwgb3BzLCB0 cnBvaW50cywgcGlkKSA8IDApCiAJCWVycigxLCAiJXMiLCB0cmFjZWZpbGUpOworCWNsb3NlKGZk KTsKIAlleGl0KDApOwogfQogCg== ------=_Part_19119_25214203.1182962066882--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f126fae00706270934h3e39e33avaa686aa2c12b72c6>