Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Nov 2012 22:15:46 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        freebsd-arch@freebsd.org
Subject:   [RFQ] make witness panic an option
Message-ID:  <CAJ-Vmo=i=Amo_QqHi4GnGie0Gc0YnK3XaRKjvBO-=SFboFYPmA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--14dae93b5780f1b3ca04ce8294f5
Content-Type: text/plain; charset=ISO-8859-1

Hi all,

When debugging and writing wireless drivers/stack code, I like to
sprinkle lots of locking assertions everywhere. However, this does
cause things to panic quite often during active development.

This patch (against stable/9) makes the actual panic itself
configurable. It still prints the message regardless.

This has allowed me to sprinkle more locking assertions everywhere to
investigate whether particular paths have been hit or not. I don't
necessarily want those to panic the kernel.

I'd like everyone to consider this for FreeBSD-HEAD.

Thanks!




Adrian

--14dae93b5780f1b3ca04ce8294f5
Content-Type: application/octet-stream; name="20121114-witness-1.diff"
Content-Disposition: attachment; filename="20121114-witness-1.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h9jhl24w0

SW5kZXg6IHN5cy9rZXJuL3N1YnJfd2l0bmVzcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9rZXJuL3N1
YnJfd2l0bmVzcy5jCShyZXZpc2lvbiAyNDE0OTEpCisrKyBzeXMva2Vybi9zdWJyX3dpdG5lc3Mu
Ywkod29ya2luZyBjb3B5KQpAQCAtMzE5LDYgKzMxOSwyOCBAQAogCXJldHVybiAoYS0+ZnJvbSA9
PSBiLT5mcm9tICYmIGEtPnRvID09IGItPnRvKTsKIH0KIAorLyoKKyAqIFdoZXRoZXIgdG8gcGFu
aWMgb3Igbm90IHdoZW4gYSB3aXRuZXNzIGNvbmRpdGlvbiBvY2N1cnMuCisgKi8KK3N0YXRpYyBp
bnQgd2l0bmVzc19kb3BhbmljID0gMTsKKworLyoKKyAqIEhhbmRsZSB3aGV0aGVyIHRvIHBhbmlj
IG9yIG1lcmVseSBwcmludCBhbiBpbmZvcm1hdGl2ZSBtZXNzYWdlLgorICovCitzdGF0aWMgdm9p
ZAord2l0bmVzc19wYW5pYyhjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IGFwOwor
CisJdmFfc3RhcnQoYXAsIGZtdCk7CisJdnByaW50ZihmbXQsIGFwKTsKKwl2YV9lbmQoYXApOwor
CisJLyogWFhYIGl0J2QgYmUgbmljZSB0byBtYWludGFpbiB0aGUgY29ycmVjdCBwYW5pY3N0ciAq
LworCWlmICh3aXRuZXNzX2RvcGFuaWMpCisJCXBhbmljKCJ3aXRuZXNzXG4iKTsKK30KKwogc3Rh
dGljIGludAlfaXNpdG15eChzdHJ1Y3Qgd2l0bmVzcyAqdzEsIHN0cnVjdCB3aXRuZXNzICp3Miwg
aW50IHJtYXNrLAogCQkgICAgY29uc3QgY2hhciAqZm5hbWUpOwogI2lmZGVmIEtEQgpAQCAtNDA1
LDYgKzQyNyw5IEBACiBUVU5BQkxFX0lOVCgiZGVidWcud2l0bmVzcy5rZGIiLCAmd2l0bmVzc19r
ZGIpOwogU1lTQ1RMX0lOVChfZGVidWdfd2l0bmVzcywgT0lEX0FVVE8sIGtkYiwgQ1RMRkxBR19S
VywgJndpdG5lc3Nfa2RiLCAwLCAiIik7CiAKK1RVTkFCTEVfSU5UKCJkZWJ1Zy53aXRuZXNzLnBh
bmljIiwgJndpdG5lc3NfZG9wYW5pYyk7CitTWVNDVExfSU5UKF9kZWJ1Z193aXRuZXNzLCBPSURf
QVVUTywgcGFuaWMsIENUTEZMQUdfUlcsICZ3aXRuZXNzX2RvcGFuaWMsIDAsICIiKTsKKwogLyoK
ICAqIFdoZW4gS0RCIGlzIGVuYWJsZWQgYW5kIHdpdG5lc3NfdHJhY2UgaXMgMSwgaXQgd2lsbCBj
YXVzZSB0aGUgc3lzdGVtCiAgKiB0byBwcmludCBhIHN0YWNrIHRyYWNlOgpAQCAtNzIyLDE4ICs3
NDcsNiBAQAogICovCiBzdGF0aWMgaW50IHdpdG5lc3Nfc3Bpbl93YXJuID0gMDsKIAotLyogVHJp
bSB1c2VsZXNzIGdhcmJhZ2UgZnJvbSBmaWxlbmFtZXMuICovCi1zdGF0aWMgY29uc3QgY2hhciAq
Ci1maXh1cF9maWxlbmFtZShjb25zdCBjaGFyICpmaWxlKQotewotCi0JaWYgKGZpbGUgPT0gTlVM
TCkKLQkJcmV0dXJuIChOVUxMKTsKLQl3aGlsZSAoc3RybmNtcChmaWxlLCAiLi4vIiwgMykgPT0g
MCkKLQkJZmlsZSArPSAzOwotCXJldHVybiAoZmlsZSk7Ci19Ci0KIC8qCiAgKiBUaGUgV0lUTkVT
Uy1lbmFibGVkIGRpYWdub3N0aWMgY29kZS4gIE5vdGUgdGhhdCB0aGUgd2l0bmVzcyBjb2RlIGRv
ZXMKICAqIGFzc3VtZSB0aGF0IHRoZSBlYXJseSBib290IGlzIHNpbmdsZS10aHJlYWRlZCBhdCBs
ZWFzdCB1bnRpbCBhZnRlciB0aGlzCkBAIC04MjQsMTUgKzgzNywxNSBAQAogCWNsYXNzID0gTE9D
S19DTEFTUyhsb2NrKTsKIAlpZiAoKGxvY2stPmxvX2ZsYWdzICYgTE9fUkVDVVJTQUJMRSkgIT0g
MCAmJgogCSAgICAoY2xhc3MtPmxjX2ZsYWdzICYgTENfUkVDVVJTQUJMRSkgPT0gMCkKLQkJcGFu
aWMoIiVzOiBsb2NrICglcykgJXMgY2FuIG5vdCBiZSByZWN1cnNhYmxlIiwgX19mdW5jX18sCisJ
CXdpdG5lc3NfcGFuaWMoIiVzOiBsb2NrICglcykgJXMgY2FuIG5vdCBiZSByZWN1cnNhYmxlIiwg
X19mdW5jX18sCiAJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSk7CiAJaWYgKChs
b2NrLT5sb19mbGFncyAmIExPX1NMRUVQQUJMRSkgIT0gMCAmJgogCSAgICAoY2xhc3MtPmxjX2Zs
YWdzICYgTENfU0xFRVBBQkxFKSA9PSAwKQotCQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBjYW4g
bm90IGJlIHNsZWVwYWJsZSIsIF9fZnVuY19fLAorCQl3aXRuZXNzX3BhbmljKCIlczogbG9jayAo
JXMpICVzIGNhbiBub3QgYmUgc2xlZXBhYmxlIiwgX19mdW5jX18sCiAJCSAgICBjbGFzcy0+bGNf
bmFtZSwgbG9jay0+bG9fbmFtZSk7CiAJaWYgKChsb2NrLT5sb19mbGFncyAmIExPX1VQR1JBREFC
TEUpICE9IDAgJiYKIAkgICAgKGNsYXNzLT5sY19mbGFncyAmIExDX1VQR1JBREFCTEUpID09IDAp
Ci0JCXBhbmljKCIlczogbG9jayAoJXMpICVzIGNhbiBub3QgYmUgdXBncmFkYWJsZSIsIF9fZnVu
Y19fLAorCQl3aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIGNhbiBub3QgYmUgdXBncmFk
YWJsZSIsIF9fZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUpOwog
CiAJLyoKQEAgLTg0OSw3ICs4NjIsNyBAQAogCQlwZW5kaW5nX2xvY2tzW3BlbmRpbmdfY250XS53
aF9sb2NrID0gbG9jazsKIAkJcGVuZGluZ19sb2Nrc1twZW5kaW5nX2NudCsrXS53aF90eXBlID0g
dHlwZTsKIAkJaWYgKHBlbmRpbmdfY250ID4gV0lUTkVTU19QRU5ETElTVCkKLQkJCXBhbmljKCIl
czogcGVuZGluZyBsb2NrcyBsaXN0IGlzIHRvbyBzbWFsbCwgYnVtcCBpdFxuIiwKKwkJCXdpdG5l
c3NfcGFuaWMoIiVzOiBwZW5kaW5nIGxvY2tzIGxpc3QgaXMgdG9vIHNtYWxsLCBidW1wIGl0XG4i
LAogCQkJICAgIF9fZnVuY19fKTsKIAl9IGVsc2UKIAkJbG9jay0+bG9fd2l0bmVzcyA9IGVucm9s
bCh0eXBlLCBjbGFzcyk7CkBAIC04NjQsNyArODc3LDcgQEAKIAljbGFzcyA9IExPQ0tfQ0xBU1Mo
bG9jayk7CiAKIAlpZiAod2l0bmVzc19jb2xkKQotCQlwYW5pYygibG9jayAoJXMpICVzIGRlc3Ry
b3llZCB3aGlsZSB3aXRuZXNzX2NvbGQiLAorCQl3aXRuZXNzX3BhbmljKCJsb2NrICglcykgJXMg
ZGVzdHJveWVkIHdoaWxlIHdpdG5lc3NfY29sZCIsCiAJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9j
ay0+bG9fbmFtZSk7CiAKIAkvKiBYWFg6IG5lZWQgdG8gdmVyaWZ5IHRoYXQgbm8gb25lIGhvbGRz
IHRoZSBsb2NrICovCkBAIC05MzksNyArOTUyLDcgQEAKICAJfQogIAl3LT53X2Rpc3BsYXllZCA9
IDE7CiAJaWYgKHctPndfZmlsZSAhPSBOVUxMICYmIHctPndfbGluZSAhPSAwKQotCQlwcm50KCIg
LS0gbGFzdCBhY3F1aXJlZCBAICVzOiVkXG4iLCBmaXh1cF9maWxlbmFtZSh3LT53X2ZpbGUpLAor
CQlwcm50KCIgLS0gbGFzdCBhY3F1aXJlZCBAICVzOiVkXG4iLCB3LT53X2ZpbGUsCiAJCSAgICB3
LT53X2xpbmUpOwogCWVsc2UKIAkJcHJudCgiIC0tIG5ldmVyIGFjcXVpcmVkXG4iKTsKQEAgLTEw
MTUsNiArMTAyOCwxOCBAQAogfQogI2VuZGlmIC8qIEREQiAqLwogCisvKiBUcmltIHVzZWxlc3Mg
Z2FyYmFnZSBmcm9tIGZpbGVuYW1lcy4gKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2ZpeHVwX2Zp
bGVuYW1lKGNvbnN0IGNoYXIgKmZpbGUpCit7CisKKwlpZiAoZmlsZSA9PSBOVUxMKQorCQlyZXR1
cm4gKE5VTEwpOworCXdoaWxlIChzdHJuY21wKGZpbGUsICIuLi8iLCAzKSA9PSAwKQorCQlmaWxl
ICs9IDM7CisJcmV0dXJuIChmaWxlKTsKK30KKwogaW50CiB3aXRuZXNzX2RlZmluZW9yZGVyKHN0
cnVjdCBsb2NrX29iamVjdCAqbG9jazEsIHN0cnVjdCBsb2NrX29iamVjdCAqbG9jazIpCiB7CkBA
IC0xMDc1LDkgKzExMDAsOCBAQAogCQkgKiBhbGwgc3BpbiBsb2Nrcy4KIAkJICovCiAJCWlmICh0
ZC0+dGRfY3JpdG5lc3QgIT0gMCAmJiAha2RiX2FjdGl2ZSkKLQkJCXBhbmljKCJibG9ja2FibGUg
c2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2Nr
LT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5l
c3NfcGFuaWMoImJsb2NrYWJsZSBzbGVlcCBsb2NrICglcykgJXMgQCAlczolZCIsCisJCQkgICAg
Y2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5l
KTsKIAogCQkvKgogCQkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBsb2NrIGFjcXVpcmVkIHRoZW4g
anVzdCByZXR1cm4gYXMKQEAgLTExMTUsMjAgKzExMzksMTggQEAKIAkJaWYgKChsb2NrMS0+bGlf
ZmxhZ3MgJiBMSV9FWENMVVNJVkUpICE9IDAgJiYKIAkJICAgIChmbGFncyAmIExPUF9FWENMVVNJ
VkUpID09IDApIHsKIAkJCXByaW50Zigic2hhcmVkIGxvY2sgb2YgKCVzKSAlcyBAICVzOiVkXG4i
LAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2Zp
bGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFt
ZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJcHJpbnRmKCJ3aGlsZSBleGNsdXNp
dmVseSBsb2NrZWQgZnJvbSAlczolZFxuIiwKIAkJCSAgICBmaXh1cF9maWxlbmFtZShsb2NrMS0+
bGlfZmlsZSksIGxvY2sxLT5saV9saW5lKTsKLQkJCXBhbmljKCJzaGFyZS0+ZXhjbCIpOworCQkJ
d2l0bmVzc19wYW5pYygic2hhcmUtPmV4Y2wiKTsKIAkJfQogCQlpZiAoKGxvY2sxLT5saV9mbGFn
cyAmIExJX0VYQ0xVU0lWRSkgPT0gMCAmJgogCQkgICAgKGZsYWdzICYgTE9QX0VYQ0xVU0lWRSkg
IT0gMCkgewogCQkJcHJpbnRmKCJleGNsdXNpdmUgbG9jayBvZiAoJXMpICVzIEAgJXM6JWRcbiIs
Ci0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmls
ZW5hbWUoZmlsZSksIGxpbmUpOworCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1l
LCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCQlwcmludGYoIndoaWxlIHNoYXJlIGxv
Y2tlZCBmcm9tICVzOiVkXG4iLAogCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGxvY2sxLT5saV9maWxl
KSwgbG9jazEtPmxpX2xpbmUpOwotCQkJcGFuaWMoImV4Y2wtPnNoYXJlIik7CisJCQl3aXRuZXNz
X3BhbmljKCJleGNsLT5zaGFyZSIpOwogCQl9CiAJCXJldHVybjsKIAl9CkBAIC0xMTgwLDEyICsx
MjAyLDExIEBACiAJCQkgICAgImFjcXVpcmluZyBkdXBsaWNhdGUgbG9jayBvZiBzYW1lIHR5cGU6
IFwiJXNcIlxuIiwgCiAJCQkgICAgdy0+d19uYW1lKTsKIAkJCXByaW50ZigiIDFzdCAlcyBAICVz
OiVkXG4iLCBwbG9jay0+bGlfbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShw
bG9jay0+bGlfZmlsZSksIHBsb2NrLT5saV9saW5lKTsKLQkJCXByaW50ZigiIDJuZCAlcyBAICVz
OiVkXG4iLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5l
KTsKKwkJCSAgICAgICBmaXh1cF9maWxlbmFtZShwbG9jay0+bGlfZmlsZSksIHBsb2NrLT5saV9s
aW5lKTsKKwkJCXByaW50ZigiIDJuZCAlcyBAICVzOiVkXG4iLCBsb2NrLT5sb19uYW1lLCBmaXh1
cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCQl3aXRuZXNzX2RlYnVnZ2VyKDEpOwotCQl9IGVs
c2UKLQkJCW10eF91bmxvY2tfc3Bpbigmd19tdHgpOworCQkgICAgfSBlbHNlCisJCQkgICAgbXR4
X3VubG9ja19zcGluKCZ3X210eCk7CiAJCXJldHVybjsKIAl9CiAJbXR4X2Fzc2VydCgmd19tdHgs
IE1BX09XTkVEKTsKQEAgLTEzMjMsMjQgKzEzNDQsMTkgQEAKIAkJCWlmIChpIDwgMCkgewogCQkJ
CXByaW50ZigiIDFzdCAlcCAlcyAoJXMpIEAgJXM6JWRcbiIsCiAJCQkJICAgIGxvY2sxLT5saV9s
b2NrLCBsb2NrMS0+bGlfbG9jay0+bG9fbmFtZSwKLQkJCQkgICAgdzEtPndfbmFtZSwgZml4dXBf
ZmlsZW5hbWUobG9jazEtPmxpX2ZpbGUpLAotCQkJCSAgICBsb2NrMS0+bGlfbGluZSk7CisJCQkJ
ICAgIHcxLT53X25hbWUsIGZpeHVwX2ZpbGVuYW1lKGxvY2sxLT5saV9maWxlKSwgbG9jazEtPmxp
X2xpbmUpOwogCQkJCXByaW50ZigiIDJuZCAlcCAlcyAoJXMpIEAgJXM6JWRcbiIsIGxvY2ssCi0J
CQkJICAgIGxvY2stPmxvX25hbWUsIHctPndfbmFtZSwKLQkJCQkgICAgZml4dXBfZmlsZW5hbWUo
ZmlsZSksIGxpbmUpOworCQkJCSAgICBsb2NrLT5sb19uYW1lLCB3LT53X25hbWUsIGZpeHVwX2Zp
bGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJCX0gZWxzZSB7CiAJCQkJcHJpbnRmKCIgMXN0ICVwICVz
ICglcykgQCAlczolZFxuIiwKIAkJCQkgICAgbG9jazItPmxpX2xvY2ssIGxvY2syLT5saV9sb2Nr
LT5sb19uYW1lLAogCQkJCSAgICBsb2NrMi0+bGlfbG9jay0+bG9fd2l0bmVzcy0+d19uYW1lLAot
CQkJCSAgICBmaXh1cF9maWxlbmFtZShsb2NrMi0+bGlfZmlsZSksCi0JCQkJICAgIGxvY2syLT5s
aV9saW5lKTsKKwkJCQkgICAgZml4dXBfZmlsZW5hbWUobG9jazItPmxpX2ZpbGUpLCBsb2NrMi0+
bGlfbGluZSk7CiAJCQkJcHJpbnRmKCIgMm5kICVwICVzICglcykgQCAlczolZFxuIiwKIAkJCQkg
ICAgbG9jazEtPmxpX2xvY2ssIGxvY2sxLT5saV9sb2NrLT5sb19uYW1lLAotCQkJCSAgICB3MS0+
d19uYW1lLCBmaXh1cF9maWxlbmFtZShsb2NrMS0+bGlfZmlsZSksCi0JCQkJICAgIGxvY2sxLT5s
aV9saW5lKTsKKwkJCQkgICAgdzEtPndfbmFtZSwgZml4dXBfZmlsZW5hbWUobG9jazEtPmxpX2Zp
bGUpLCBsb2NrMS0+bGlfbGluZSk7CiAJCQkJcHJpbnRmKCIgM3JkICVwICVzICglcykgQCAlczol
ZFxuIiwgbG9jaywKLQkJCQkgICAgbG9jay0+bG9fbmFtZSwgdy0+d19uYW1lLAotCQkJCSAgICBm
aXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQkJICAgIGxvY2stPmxvX25hbWUsIHctPndf
bmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJfQogCQkJd2l0bmVzc19kZWJ1
Z2dlcigxKTsKIAkJCXJldHVybjsKQEAgLTE0MzUsMjkgKzE0NTEsMjQgQEAKIAljbGFzcyA9IExP
Q0tfQ0xBU1MobG9jayk7CiAJaWYgKHdpdG5lc3Nfd2F0Y2gpIHsKIAkJaWYgKChsb2NrLT5sb19m
bGFncyAmIExPX1VQR1JBREFCTEUpID09IDApCi0JCQlwYW5pYygidXBncmFkZSBvZiBub24tdXBn
cmFkYWJsZSBsb2NrICglcykgJXMgQCAlczolZCIsCi0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxv
Y2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJd2l0
bmVzc19wYW5pYygidXBncmFkZSBvZiBub24tdXBncmFkYWJsZSBsb2NrICglcykgJXMgQCAlczol
ZCIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1l
KGZpbGUpLCBsaW5lKTsKIAkJaWYgKChjbGFzcy0+bGNfZmxhZ3MgJiBMQ19TTEVFUExPQ0spID09
IDApCi0JCQlwYW5pYygidXBncmFkZSBvZiBub24tc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQi
LAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2Zp
bGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5lc3NfcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXNs
ZWVwIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+
bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCX0KIAlpbnN0YW5jZSA9IGZp
bmRfaW5zdGFuY2UoY3VydGhyZWFkLT50ZF9zbGVlcGxvY2tzLCBsb2NrKTsKIAlpZiAoaW5zdGFu
Y2UgPT0gTlVMTCkKLQkJcGFuaWMoInVwZ3JhZGUgb2YgdW5sb2NrZWQgbG9jayAoJXMpICVzIEAg
JXM6JWQiLAotCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCSAgICBmaXh1
cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCXdpdG5lc3NfcGFuaWMoInVwZ3JhZGUgb2YgdW5s
b2NrZWQgbG9jayAoJXMpICVzIEAgJXM6JWQiLAorCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2st
PmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAlpZiAod2l0bmVzc193YXRj
aCkgewogCQlpZiAoKGluc3RhbmNlLT5saV9mbGFncyAmIExJX0VYQ0xVU0lWRSkgIT0gMCkKLQkJ
CXBhbmljKCJ1cGdyYWRlIG9mIGV4Y2x1c2l2ZSBsb2NrICglcykgJXMgQCAlczolZCIsCi0JCQkg
ICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmlsZW5hbWUo
ZmlsZSksIGxpbmUpOworCQkJd2l0bmVzc19wYW5pYygidXBncmFkZSBvZiBleGNsdXNpdmUgbG9j
ayAoJXMpICVzIEAgJXM6JWQiLAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1l
LCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCWlmICgoaW5zdGFuY2UtPmxpX2ZsYWdz
ICYgTElfUkVDVVJTRU1BU0spICE9IDApCi0JCQlwYW5pYygidXBncmFkZSBvZiByZWN1cnNlZCBs
b2NrICglcykgJXMgcj0lZCBAICVzOiVkIiwKKwkJCXdpdG5lc3NfcGFuaWMoInVwZ3JhZGUgb2Yg
cmVjdXJzZWQgbG9jayAoJXMpICVzIHI9JWQgQCAlczolZCIsCiAJCQkgICAgY2xhc3MtPmxjX25h
bWUsIGxvY2stPmxvX25hbWUsCi0JCQkgICAgaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfUkVDVVJT
RU1BU0ssCi0JCQkgICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJICAgIGluc3Rh
bmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VNQVNLLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGlu
ZSk7CiAJfQogCWluc3RhbmNlLT5saV9mbGFncyB8PSBMSV9FWENMVVNJVkU7CiB9CkBAIC0xNDc1
LDI5ICsxNDg2LDI0IEBACiAJY2xhc3MgPSBMT0NLX0NMQVNTKGxvY2spOwogCWlmICh3aXRuZXNz
X3dhdGNoKSB7CiAJCWlmICgobG9jay0+bG9fZmxhZ3MgJiBMT19VUEdSQURBQkxFKSA9PSAwKQot
CQlwYW5pYygiZG93bmdyYWRlIG9mIG5vbi11cGdyYWRhYmxlIGxvY2sgKCVzKSAlcyBAICVzOiVk
IiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9m
aWxlbmFtZShmaWxlKSwgbGluZSk7CisJCXdpdG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiBub24t
dXBncmFkYWJsZSBsb2NrICglcykgJXMgQCAlczolZCIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUs
IGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChjbGFz
cy0+bGNfZmxhZ3MgJiBMQ19TTEVFUExPQ0spID09IDApCi0JCQlwYW5pYygiZG93bmdyYWRlIG9m
IG5vbi1zbGVlcCBsb2NrICglcykgJXMgQCAlczolZCIsCi0JCQkgICAgY2xhc3MtPmxjX25hbWUs
IGxvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJ
d2l0bmVzc19wYW5pYygiZG93bmdyYWRlIG9mIG5vbi1zbGVlcCBsb2NrICglcykgJXMgQCAlczol
ZCIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1l
KGZpbGUpLCBsaW5lKTsKIAl9CiAJaW5zdGFuY2UgPSBmaW5kX2luc3RhbmNlKGN1cnRocmVhZC0+
dGRfc2xlZXBsb2NrcywgbG9jayk7CiAJaWYgKGluc3RhbmNlID09IE5VTEwpCi0JCXBhbmljKCJk
b3duZ3JhZGUgb2YgdW5sb2NrZWQgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkgICAgY2xhc3Mt
PmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGlu
ZSk7CisJCXdpdG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiB1bmxvY2tlZCBsb2NrICglcykgJXMg
QCAlczolZCIsCisJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmls
ZW5hbWUoZmlsZSksIGxpbmUpOwogCWlmICh3aXRuZXNzX3dhdGNoKSB7CiAJCWlmICgoaW5zdGFu
Y2UtPmxpX2ZsYWdzICYgTElfRVhDTFVTSVZFKSA9PSAwKQotCQkJcGFuaWMoImRvd25ncmFkZSBv
ZiBzaGFyZWQgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBs
b2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdp
dG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiBzaGFyZWQgbG9jayAoJXMpICVzIEAgJXM6JWQiLAor
CQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxl
KSwgbGluZSk7CiAJCWlmICgoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfUkVDVVJTRU1BU0spICE9
IDApCi0JCQlwYW5pYygiZG93bmdyYWRlIG9mIHJlY3Vyc2VkIGxvY2sgKCVzKSAlcyByPSVkIEAg
JXM6JWQiLAorCQkJd2l0bmVzc19wYW5pYygiZG93bmdyYWRlIG9mIHJlY3Vyc2VkIGxvY2sgKCVz
KSAlcyByPSVkIEAgJXM6JWQiLAogCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1l
LAotCQkJICAgIGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VNQVNLLAotCQkJICAgIGZp
eHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCSAgICBpbnN0YW5jZS0+bGlfZmxhZ3MgJiBM
SV9SRUNVUlNFTUFTSywgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCX0KIAlpbnN0YW5j
ZS0+bGlfZmxhZ3MgJj0gfkxJX0VYQ0xVU0lWRTsKIH0KQEAgLTE1MDYsMTEgKzE1MTIsMTEgQEAK
IHdpdG5lc3NfdW5sb2NrKHN0cnVjdCBsb2NrX29iamVjdCAqbG9jaywgaW50IGZsYWdzLCBjb25z
dCBjaGFyICpmaWxlLCBpbnQgbGluZSkKIHsKIAlzdHJ1Y3QgbG9ja19saXN0X2VudHJ5ICoqbG9j
a19saXN0LCAqbGxlOwotCXN0cnVjdCBsb2NrX2luc3RhbmNlICppbnN0YW5jZTsKKwlzdHJ1Y3Qg
bG9ja19pbnN0YW5jZSAqaW5zdGFuY2UgPSBOVUxMOwogCXN0cnVjdCBsb2NrX2NsYXNzICpjbGFz
czsKIAlzdHJ1Y3QgdGhyZWFkICp0ZDsKIAlyZWdpc3Rlcl90IHM7Ci0JaW50IGksIGo7CisJaW50
IGkgPSAwLCBqOwogCiAJaWYgKHdpdG5lc3NfY29sZCB8fCBsb2NrLT5sb193aXRuZXNzID09IE5V
TEwgfHwgcGFuaWNzdHIgIT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAtMTUzNyw3ICsxNTQzLDcgQEAK
IAkgKiBldmVudHVhbCByZWdpc3RlciBsb2NrcyBhbmQgcmVtb3ZlIHRoZW0uCiAJICovCiAJaWYg
KHdpdG5lc3Nfd2F0Y2ggPiAwKQotCQlwYW5pYygibG9jayAoJXMpICVzIG5vdCBsb2NrZWQgQCAl
czolZCIsIGNsYXNzLT5sY19uYW1lLAorCQl3aXRuZXNzX3BhbmljKCJsb2NrICglcykgJXMgbm90
IGxvY2tlZCBAICVzOiVkIiwgY2xhc3MtPmxjX25hbWUsCiAJCSAgICBsb2NrLT5sb19uYW1lLCBm
aXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJZWxzZQogCQlyZXR1cm47CkBAIC0xNTUwLDE2
ICsxNTU2LDE1IEBACiAJCSAgICBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwg
bGluZSk7CiAJCXByaW50Zigid2hpbGUgZXhjbHVzaXZlbHkgbG9ja2VkIGZyb20gJXM6JWRcbiIs
CiAJCSAgICBmaXh1cF9maWxlbmFtZShpbnN0YW5jZS0+bGlfZmlsZSksIGluc3RhbmNlLT5saV9s
aW5lKTsKLQkJcGFuaWMoImV4Y2wtPnVzaGFyZSIpOworCQl3aXRuZXNzX3BhbmljKCJleGNsLT51
c2hhcmUiKTsKIAl9CiAJaWYgKChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9FWENMVVNJVkUpID09
IDAgJiYgd2l0bmVzc193YXRjaCA+IDAgJiYKIAkgICAgKGZsYWdzICYgTE9QX0VYQ0xVU0lWRSkg
IT0gMCkgewogCQlwcmludGYoImV4Y2x1c2l2ZSB1bmxvY2sgb2YgKCVzKSAlcyBAICVzOiVkXG4i
LCBjbGFzcy0+bGNfbmFtZSwKIAkJICAgIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZp
bGUpLCBsaW5lKTsKLQkJcHJpbnRmKCJ3aGlsZSBzaGFyZSBsb2NrZWQgZnJvbSAlczolZFxuIiwK
LQkJICAgIGZpeHVwX2ZpbGVuYW1lKGluc3RhbmNlLT5saV9maWxlKSwKKwkJcHJpbnRmKCJ3aGls
ZSBzaGFyZSBsb2NrZWQgZnJvbSAlczolZFxuIiwgZml4dXBfZmlsZW5hbWUoaW5zdGFuY2UtPmxp
X2ZpbGUpLAogCQkgICAgaW5zdGFuY2UtPmxpX2xpbmUpOwotCQlwYW5pYygic2hhcmUtPnVleGNs
Iik7CisJCXdpdG5lc3NfcGFuaWMoInNoYXJlLT51ZXhjbCIpOwogCX0KIAkvKiBJZiB3ZSBhcmUg
cmVjdXJzZWQsIHVucmVjdXJzZS4gKi8KIAlpZiAoKGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JF
Q1VSU0VNQVNLKSA+IDApIHsKQEAgLTE1NzMsNyArMTU3OCw3IEBACiAJaWYgKChpbnN0YW5jZS0+
bGlfZmxhZ3MgJiBMSV9OT1JFTEVBU0UpICE9IDAgJiYgd2l0bmVzc193YXRjaCA+IDApIHsKIAkJ
cHJpbnRmKCJmb3JiaWRkZW4gdW5sb2NrIG9mICglcykgJXMgQCAlczolZFxuIiwgY2xhc3MtPmxj
X25hbWUsCiAJCSAgICBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7
Ci0JCXBhbmljKCJsb2NrIG1hcmtlZCBub3JlbGVhc2UiKTsKKwkJd2l0bmVzc19wYW5pYygibG9j
ayBtYXJrZWQgbm9yZWxlYXNlIik7CiAJfQogCiAJLyogT3RoZXJ3aXNlLCByZW1vdmUgdGhpcyBp
dGVtIGZyb20gdGhlIGxpc3QuICovCkBAIC0xNjI4LDcgKzE2MzMsNyBAQAogCQkJCXdpdG5lc3Nf
bGlzdF9sb2NrKCZsbGUtPmxsX2NoaWxkcmVuW2ldLCBwcmludGYpOwogCQkJCQogCQkJfQotCQlw
YW5pYygiVGhyZWFkICVwIGNhbm5vdCBleGl0IHdoaWxlIGhvbGRpbmcgc2xlZXBsb2Nrc1xuIiwg
dGQpOworCQl3aXRuZXNzX3BhbmljKCJUaHJlYWQgJXAgY2Fubm90IGV4aXQgd2hpbGUgaG9sZGlu
ZyBzbGVlcGxvY2tzXG4iLCB0ZCk7CiAJfQogCXdpdG5lc3NfbG9ja19saXN0X2ZyZWUobGxlKTsK
IH0KQEAgLTE3MDksNyArMTcxNCw3IEBACiAJfSBlbHNlCiAJCXNjaGVkX3VucGluKCk7CiAJaWYg
KGZsYWdzICYgV0FSTl9QQU5JQyAmJiBuKQotCQlwYW5pYygiJXMiLCBfX2Z1bmNfXyk7CisJCXdp
dG5lc3NfcGFuaWMoIiVzIiwgX19mdW5jX18pOwogCWVsc2UKIAkJd2l0bmVzc19kZWJ1Z2dlcihu
KTsKIAlyZXR1cm4gKG4pOwpAQCAtMTc1NSw3ICsxNzYwLDcgQEAKIAl9IGVsc2UgaWYgKChsb2Nr
X2NsYXNzLT5sY19mbGFncyAmIExDX1NMRUVQTE9DSykpCiAJCXR5cGVsaXN0ID0gJndfc2xlZXA7
CiAJZWxzZQotCQlwYW5pYygibG9jayBjbGFzcyAlcyBpcyBub3Qgc2xlZXAgb3Igc3BpbiIsCisJ
CXdpdG5lc3NfcGFuaWMoImxvY2sgY2xhc3MgJXMgaXMgbm90IHNsZWVwIG9yIHNwaW4iLAogCQkg
ICAgbG9ja19jbGFzcy0+bGNfbmFtZSk7CiAKIAltdHhfbG9ja19zcGluKCZ3X210eCk7CkBAIC0x
Nzg2LDcgKzE3OTEsNyBAQAogCXctPndfcmVmY291bnQrKzsKIAltdHhfdW5sb2NrX3NwaW4oJndf
bXR4KTsKIAlpZiAobG9ja19jbGFzcyAhPSB3LT53X2NsYXNzKQotCQlwYW5pYygKKwkJd2l0bmVz
c19wYW5pYygKIAkJCSJsb2NrICglcykgJXMgZG9lcyBub3QgbWF0Y2ggZWFybGllciAoJXMpIGxv
Y2siLAogCQkJZGVzY3JpcHRpb24sIGxvY2tfY2xhc3MtPmxjX25hbWUsCiAJCQl3LT53X2NsYXNz
LT5sY19uYW1lKTsKQEAgLTE5MjAsNyArMTkyNSw3IEBACiAJaWYgKCF3aXRuZXNzX2xvY2tfdHlw
ZV9lcXVhbChwYXJlbnQsIGNoaWxkKSkgewogCQlpZiAod2l0bmVzc19jb2xkID09IDApCiAJCQlt
dHhfdW5sb2NrX3NwaW4oJndfbXR4KTsKLQkJcGFuaWMoIiVzOiBwYXJlbnQgXCIlc1wiICglcykg
YW5kIGNoaWxkIFwiJXNcIiAoJXMpIGFyZSBub3QgIgorCQl3aXRuZXNzX3BhbmljKCIlczogcGFy
ZW50IFwiJXNcIiAoJXMpIGFuZCBjaGlsZCBcIiVzXCIgKCVzKSBhcmUgbm90ICIKIAkJICAgICJ0
aGUgc2FtZSBsb2NrIHR5cGUiLCBfX2Z1bmNfXywgcGFyZW50LT53X25hbWUsCiAJCSAgICBwYXJl
bnQtPndfY2xhc3MtPmxjX25hbWUsIGNoaWxkLT53X25hbWUsCiAJCSAgICBjaGlsZC0+d19jbGFz
cy0+bGNfbmFtZSk7CkBAIC0yMTAyLDggKzIxMDcsOCBAQAogCWlmIChsb2NrLT5sb193aXRuZXNz
LT53X25hbWUgIT0gbG9jay0+bG9fbmFtZSkKIAkJcHJudCgiICglcykiLCBsb2NrLT5sb193aXRu
ZXNzLT53X25hbWUpOwogCXBybnQoIiByID0gJWQgKCVwKSBsb2NrZWQgQCAlczolZFxuIiwKLQkg
ICAgaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfUkVDVVJTRU1BU0ssIGxvY2ssCi0JICAgIGZpeHVw
X2ZpbGVuYW1lKGluc3RhbmNlLT5saV9maWxlKSwgaW5zdGFuY2UtPmxpX2xpbmUpOworCSAgICBp
bnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9SRUNVUlNFTUFTSywgbG9jaywgZml4dXBfZmlsZW5hbWUo
aW5zdGFuY2UtPmxpX2ZpbGUpLAorCSAgICBpbnN0YW5jZS0+bGlfbGluZSk7CiB9CiAKICNpZmRl
ZiBEREIKQEAgLTIxNzQsMTMgKzIxNzksNiBAQAogCXN0cnVjdCBsb2NrX2luc3RhbmNlICppbnN0
YW5jZTsKIAlzdHJ1Y3QgbG9ja19jbGFzcyAqY2xhc3M7CiAKLQkvKgotCSAqIFRoaXMgZnVuY3Rp
b24gaXMgdXNlZCBpbmRlcGVuZGVudGx5IGluIGxvY2tpbmcgY29kZSB0byBkZWFsIHdpdGgKLQkg
KiBHaWFudCwgU0NIRURVTEVSX1NUT1BQRUQoKSBjaGVjayBjYW4gYmUgcmVtb3ZlZCBoZXJlIGFm
dGVyIEdpYW50Ci0JICogaXMgZ29uZS4KLQkgKi8KLQlpZiAoU0NIRURVTEVSX1NUT1BQRUQoKSkK
LQkJcmV0dXJuOwogCUtBU1NFUlQod2l0bmVzc19jb2xkID09IDAsICgiJXM6IHdpdG5lc3NfY29s
ZCIsIF9fZnVuY19fKSk7CiAJaWYgKGxvY2stPmxvX3dpdG5lc3MgPT0gTlVMTCB8fCB3aXRuZXNz
X3dhdGNoID09IC0xIHx8IHBhbmljc3RyICE9IE5VTEwpCiAJCXJldHVybjsKQEAgLTIxOTQsNyAr
MjE5Miw3IEBACiAJfQogCWluc3RhbmNlID0gZmluZF9pbnN0YW5jZShsb2NrX2xpc3QsIGxvY2sp
OwogCWlmIChpbnN0YW5jZSA9PSBOVUxMKQotCQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBub3Qg
bG9ja2VkIiwgX19mdW5jX18sCisJCXdpdG5lc3NfcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90
IGxvY2tlZCIsIF9fZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUp
OwogCSpmaWxlcCA9IGluc3RhbmNlLT5saV9maWxlOwogCSpsaW5lcCA9IGluc3RhbmNlLT5saV9s
aW5lOwpAQCAtMjIwNywxMyArMjIwNSw2IEBACiAJc3RydWN0IGxvY2tfaW5zdGFuY2UgKmluc3Rh
bmNlOwogCXN0cnVjdCBsb2NrX2NsYXNzICpjbGFzczsKIAotCS8qCi0JICogVGhpcyBmdW5jdGlv
biBpcyB1c2VkIGluZGVwZW5kZW50bHkgaW4gbG9ja2luZyBjb2RlIHRvIGRlYWwgd2l0aAotCSAq
IEdpYW50LCBTQ0hFRFVMRVJfU1RPUFBFRCgpIGNoZWNrIGNhbiBiZSByZW1vdmVkIGhlcmUgYWZ0
ZXIgR2lhbnQKLQkgKiBpcyBnb25lLgotCSAqLwotCWlmIChTQ0hFRFVMRVJfU1RPUFBFRCgpKQot
CQlyZXR1cm47CiAJS0FTU0VSVCh3aXRuZXNzX2NvbGQgPT0gMCwgKCIlczogd2l0bmVzc19jb2xk
IiwgX19mdW5jX18pKTsKIAlpZiAobG9jay0+bG9fd2l0bmVzcyA9PSBOVUxMIHx8IHdpdG5lc3Nf
d2F0Y2ggPT0gLTEgfHwgcGFuaWNzdHIgIT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAtMjIyNyw3ICsy
MjE4LDcgQEAKIAl9CiAJaW5zdGFuY2UgPSBmaW5kX2luc3RhbmNlKGxvY2tfbGlzdCwgbG9jayk7
CiAJaWYgKGluc3RhbmNlID09IE5VTEwpCi0JCXBhbmljKCIlczogbG9jayAoJXMpICVzIG5vdCBs
b2NrZWQiLCBfX2Z1bmNfXywKKwkJd2l0bmVzc19wYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBub3Qg
bG9ja2VkIiwgX19mdW5jX18sCiAJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSk7
CiAJbG9jay0+bG9fd2l0bmVzcy0+d19maWxlID0gZmlsZTsKIAlsb2NrLT5sb193aXRuZXNzLT53
X2xpbmUgPSBsaW5lOwpAQCAtMjIzOSw3ICsyMjMwLDcgQEAKIHdpdG5lc3NfYXNzZXJ0KHN0cnVj
dCBsb2NrX29iamVjdCAqbG9jaywgaW50IGZsYWdzLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGlu
ZSkKIHsKICNpZmRlZiBJTlZBUklBTlRfU1VQUE9SVAotCXN0cnVjdCBsb2NrX2luc3RhbmNlICpp
bnN0YW5jZTsKKwlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5zdGFuY2UgPSBOVUxMOwogCXN0cnVj
dCBsb2NrX2NsYXNzICpjbGFzczsKIAogCWlmIChsb2NrLT5sb193aXRuZXNzID09IE5VTEwgfHwg
d2l0bmVzc193YXRjaCA8IDEgfHwgcGFuaWNzdHIgIT0gTlVMTCkKQEAgLTIyNTAsMTUgKzIyNDEs
MTQgQEAKIAllbHNlIGlmICgoY2xhc3MtPmxjX2ZsYWdzICYgTENfU1BJTkxPQ0spICE9IDApCiAJ
CWluc3RhbmNlID0gZmluZF9pbnN0YW5jZShQQ1BVX0dFVChzcGlubG9ja3MpLCBsb2NrKTsKIAll
bHNlIHsKLQkJcGFuaWMoIkxvY2sgKCVzKSAlcyBpcyBub3Qgc2xlZXAgb3Igc3BpbiEiLAorCQl3
aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMgaXMgbm90IHNsZWVwIG9yIHNwaW4hIiwKIAkJICAg
IGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsKIAl9CiAJc3dpdGNoIChmbGFncykgewog
CWNhc2UgTEFfVU5MT0NLRUQ6CiAJCWlmIChpbnN0YW5jZSAhPSBOVUxMKQotCQkJcGFuaWMoIkxv
Y2sgKCVzKSAlcyBsb2NrZWQgQCAlczolZC4iLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2Nr
LT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5l
c3NfcGFuaWMoIkxvY2sgKCVzKSAlcyBsb2NrZWQgQCAlczolZC4iLAorCQkJICAgIGNsYXNzLT5s
Y19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCWJy
ZWFrOwogCWNhc2UgTEFfTE9DS0VEOgogCWNhc2UgTEFfTE9DS0VEIHwgTEFfUkVDVVJTRUQ6CkBA
IC0yMjcwLDM1ICsyMjYwLDI5IEBACiAJY2FzZSBMQV9YTE9DS0VEIHwgTEFfUkVDVVJTRUQ6CiAJ
Y2FzZSBMQV9YTE9DS0VEIHwgTEFfTk9UUkVDVVJTRUQ6CiAJCWlmIChpbnN0YW5jZSA9PSBOVUxM
KSB7Ci0JCQlwYW5pYygiTG9jayAoJXMpICVzIG5vdCBsb2NrZWQgQCAlczolZC4iLAotCQkJICAg
IGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZp
bGUpLCBsaW5lKTsKKwkJCXdpdG5lc3NfcGFuaWMoIkxvY2sgKCVzKSAlcyBub3QgbG9ja2VkIEAg
JXM6JWQuIiwKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmls
ZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJYnJlYWs7CiAJCX0KIAkJaWYgKChmbGFncyAmIExBX1hM
T0NLRUQpICE9IDAgJiYKIAkJICAgIChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9FWENMVVNJVkUp
ID09IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIG5vdCBleGNsdXNpdmVseSBsb2NrZWQgQCAl
czolZC4iLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZp
eHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5lc3NfcGFuaWMoIkxvY2sgKCVzKSAl
cyBub3QgZXhjbHVzaXZlbHkgbG9ja2VkIEAgJXM6JWQuIiwKKwkJCSAgICBjbGFzcy0+bGNfbmFt
ZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlpZiAoKGZs
YWdzICYgTEFfU0xPQ0tFRCkgIT0gMCAmJgogCQkgICAgKGluc3RhbmNlLT5saV9mbGFncyAmIExJ
X0VYQ0xVU0lWRSkgIT0gMCkKLQkJCXBhbmljKCJMb2NrICglcykgJXMgZXhjbHVzaXZlbHkgbG9j
a2VkIEAgJXM6JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJ
CSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2Nr
ICglcykgJXMgZXhjbHVzaXZlbHkgbG9ja2VkIEAgJXM6JWQuIiwKKwkJCSAgICBjbGFzcy0+bGNf
bmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlpZiAo
KGZsYWdzICYgTEFfUkVDVVJTRUQpICE9IDAgJiYKIAkJICAgIChpbnN0YW5jZS0+bGlfZmxhZ3Mg
JiBMSV9SRUNVUlNFTUFTSykgPT0gMCkKLQkJCXBhbmljKCJMb2NrICglcykgJXMgbm90IHJlY3Vy
c2VkIEAgJXM6JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJ
CSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2Nr
ICglcykgJXMgbm90IHJlY3Vyc2VkIEAgJXM6JWQuIiwKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwg
bG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlpZiAoKGZsYWdz
ICYgTEFfTk9UUkVDVVJTRUQpICE9IDAgJiYKIAkJICAgIChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBM
SV9SRUNVUlNFTUFTSykgIT0gMCkKLQkJCXBhbmljKCJMb2NrICglcykgJXMgcmVjdXJzZWQgQCAl
czolZC4iLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZp
eHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5lc3NfcGFuaWMoIkxvY2sgKCVzKSAl
cyByZWN1cnNlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25h
bWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJ
cGFuaWMoIkludmFsaWQgbG9jayBhc3NlcnRpb24gYXQgJXM6JWQuIiwKLQkJICAgIGZpeHVwX2Zp
bGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJd2l0bmVzc19wYW5pYygiSW52YWxpZCBsb2NrIGFzc2Vy
dGlvbiBhdCAlczolZC4iLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAKIAl9CiAjZW5k
aWYJLyogSU5WQVJJQU5UX1NVUFBPUlQgKi8KQEAgLTIzMjMsNyArMjMwNyw3IEBACiAJfQogCWlu
c3RhbmNlID0gZmluZF9pbnN0YW5jZShsb2NrX2xpc3QsIGxvY2spOwogCWlmIChpbnN0YW5jZSA9
PSBOVUxMKQotCQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBub3QgbG9ja2VkIiwgX19mdW5jX18s
CisJCXdpdG5lc3NfcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxvY2tlZCIsIF9fZnVuY19f
LAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUpOwogCiAJaWYgKHNldCkK
--14dae93b5780f1b3ca04ce8294f5--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=i=Amo_QqHi4GnGie0Gc0YnK3XaRKjvBO-=SFboFYPmA>