Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Nov 2012 22:18:31 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        Marko Zec <zec@fer.hr>
Cc:        freebsd-net@freebsd.org, Hans Petter Selasky <hselasky@freebsd.org>, freebsd-hackers@freebsd.org
Subject:   Re: VIMAGE crashes on 9.x with hotplug net80211 devices
Message-ID:  <CAJ-Vmom-kuqXwwTOpZLRFQNrRsdYw9aCOE-KndQH9hoWErhZmg@mail.gmail.com>
In-Reply-To: <201210291115.23845.zec@fer.hr>
References:  <CAJ-VmomchJZ7GUKrAjmmyBXDw-6H6O5fAxT_tfAFfhU=HknG1g@mail.gmail.com> <CAJ-VmomnCFhwzs%2B6FVkFmHscnGop7NHxK3pzddStjD3QSMb%2B2g@mail.gmail.com> <CAJ-VmokdwGQGYG4pN6gL=C90VAL2rETgzRH%2B0diiD9w=_HVLoQ@mail.gmail.com> <201210291115.23845.zec@fer.hr>

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

Hi,

Here's what I have thus far. Please ignore the device_printf() change.

This works for me, both for hotplug cardbus wireless devices as well
as (inadvertently!) a USB bluetooth device.

What do you think?



Adrian

--e89a8fb202eaccab6a04ce829ea2
Content-Type: application/octet-stream; name="20121114-vimage-1.diff"
Content-Disposition: attachment; filename="20121114-vimage-1.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h9jhpwt20

SW5kZXg6IHN5cy9rZXJuL3N1YnJfYnVzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2tlcm4vc3Vicl9i
dXMuYwkocmV2aXNpb24gMjQxNDkxKQorKysgc3lzL2tlcm4vc3Vicl9idXMuYwkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KICNpbmNsdWRl
IDxzeXMvbW9kdWxlLmg+CiAjaW5jbHVkZSA8c3lzL211dGV4Lmg+CisjaW5jbHVkZSA8c3lzL3Bj
cHUuaD4KICNpbmNsdWRlIDxzeXMvcG9sbC5oPgogI2luY2x1ZGUgPHN5cy9wcm9jLmg+CiAjaW5j
bHVkZSA8c3lzL2NvbmR2YXIuaD4KQEAgLTUzLDYgKzU0LDggQEAKICNpbmNsdWRlIDxzeXMvYnVz
Lmg+CiAjaW5jbHVkZSA8c3lzL2ludGVycnVwdC5oPgogCisjaW5jbHVkZSA8bmV0L3ZuZXQuaD4K
KwogI2luY2x1ZGUgPG1hY2hpbmUvc3RkYXJnLmg+CiAKICNpbmNsdWRlIDx2bS91bWEuaD4KQEAg
LTIzMTAsNiArMjMxMyw3IEBACiAJdmFfbGlzdCBhcDsKIAlpbnQgcmV0dmFsOwogCisJcHJpbnRm
KCJbJWxsZF0gIiwgKGxvbmcgbG9uZyBpbnQpIGN1cnRocmVhZC0+dGRfdGlkKTsKIAlyZXR2YWwg
PSBkZXZpY2VfcHJpbnRfcHJldHR5bmFtZShkZXYpOwogCXZhX3N0YXJ0KGFwLCBmbXQpOwogCXJl
dHZhbCArPSB2cHJpbnRmKGZtdCwgYXApOwpAQCAtMjcxNiw3ICsyNzIwLDcgQEAKIGludAogZGV2
aWNlX3Byb2JlX2FuZF9hdHRhY2goZGV2aWNlX3QgZGV2KQogewotCWludCBlcnJvcjsKKwlpbnQg
ZXJyb3IsIGlzX2RlZmF1bHRfdm5ldDsKIAogCUdJQU5UX1JFUVVJUkVEOwogCkBAIC0yNzI1LDcg
KzI3MjksMTggQEAKIAkJcmV0dXJuICgwKTsKIAllbHNlIGlmIChlcnJvciAhPSAwKQogCQlyZXR1
cm4gKGVycm9yKTsKLQlyZXR1cm4gKGRldmljZV9hdHRhY2goZGV2KSk7CisKKwkvKgorCSAqIE9u
bHkgc2V0IHRoZSBkZWZhdWx0IHZuZXQgdG8gdm5ldDAgaWYgdGhlIGN1cnJlbnQKKwkgKiB2bmV0
IGlzbid0IHZuZXQwLgorCSAqLworCWlzX2RlZmF1bHRfdm5ldCA9ICEhIElTX0RFRkFVTFRfVk5F
VChjdXJ2bmV0KTsKKwlpZiAoISBpc19kZWZhdWx0X3ZuZXQpCisJCUNVUlZORVRfU0VUX1FVSUVU
KHZuZXQwKTsKKwllcnJvciA9IGRldmljZV9hdHRhY2goZGV2KTsKKwlpZiAoISBpc19kZWZhdWx0
X3ZuZXQpCisJCUNVUlZORVRfUkVTVE9SRSgpOworCXJldHVybiBlcnJvcjsKIH0KIAogLyoqCklu
ZGV4OiBzeXMva2Vybi9zdWJyX3dpdG5lc3MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMva2Vybi9zdWJy
X3dpdG5lc3MuYwkocmV2aXNpb24gMjQxNDkxKQorKysgc3lzL2tlcm4vc3Vicl93aXRuZXNzLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksMjggQEAKIAlyZXR1cm4gKGEtPmZyb20gPT0g
Yi0+ZnJvbSAmJiBhLT50byA9PSBiLT50byk7CiB9CiAKKy8qCisgKiBXaGV0aGVyIHRvIHBhbmlj
IG9yIG5vdCB3aGVuIGEgd2l0bmVzcyBjb25kaXRpb24gb2NjdXJzLgorICovCitzdGF0aWMgaW50
IHdpdG5lc3NfZG9wYW5pYyA9IDE7CisKKy8qCisgKiBIYW5kbGUgd2hldGhlciB0byBwYW5pYyBv
ciBtZXJlbHkgcHJpbnQgYW4gaW5mb3JtYXRpdmUgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQK
K3dpdG5lc3NfcGFuaWMoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcDsKKwor
CXZhX3N0YXJ0KGFwLCBmbXQpOworCXZwcmludGYoZm10LCBhcCk7CisJdmFfZW5kKGFwKTsKKwor
CS8qIFhYWCBpdCdkIGJlIG5pY2UgdG8gbWFpbnRhaW4gdGhlIGNvcnJlY3QgcGFuaWNzdHIgKi8K
KwlpZiAod2l0bmVzc19kb3BhbmljKQorCQlwYW5pYygid2l0bmVzc1xuIik7Cit9CisKIHN0YXRp
YyBpbnQJX2lzaXRteXgoc3RydWN0IHdpdG5lc3MgKncxLCBzdHJ1Y3Qgd2l0bmVzcyAqdzIsIGlu
dCBybWFzaywKIAkJICAgIGNvbnN0IGNoYXIgKmZuYW1lKTsKICNpZmRlZiBLREIKQEAgLTQwNSw2
ICs0MjcsOSBAQAogVFVOQUJMRV9JTlQoImRlYnVnLndpdG5lc3Mua2RiIiwgJndpdG5lc3Nfa2Ri
KTsKIFNZU0NUTF9JTlQoX2RlYnVnX3dpdG5lc3MsIE9JRF9BVVRPLCBrZGIsIENUTEZMQUdfUlcs
ICZ3aXRuZXNzX2tkYiwgMCwgIiIpOwogCitUVU5BQkxFX0lOVCgiZGVidWcud2l0bmVzcy5wYW5p
YyIsICZ3aXRuZXNzX2RvcGFuaWMpOworU1lTQ1RMX0lOVChfZGVidWdfd2l0bmVzcywgT0lEX0FV
VE8sIHBhbmljLCBDVExGTEFHX1JXLCAmd2l0bmVzc19kb3BhbmljLCAwLCAiIik7CisKIC8qCiAg
KiBXaGVuIEtEQiBpcyBlbmFibGVkIGFuZCB3aXRuZXNzX3RyYWNlIGlzIDEsIGl0IHdpbGwgY2F1
c2UgdGhlIHN5c3RlbQogICogdG8gcHJpbnQgYSBzdGFjayB0cmFjZToKQEAgLTcyMiwxOCArNzQ3
LDYgQEAKICAqLwogc3RhdGljIGludCB3aXRuZXNzX3NwaW5fd2FybiA9IDA7CiAKLS8qIFRyaW0g
dXNlbGVzcyBnYXJiYWdlIGZyb20gZmlsZW5hbWVzLiAqLwotc3RhdGljIGNvbnN0IGNoYXIgKgot
Zml4dXBfZmlsZW5hbWUoY29uc3QgY2hhciAqZmlsZSkKLXsKLQotCWlmIChmaWxlID09IE5VTEwp
Ci0JCXJldHVybiAoTlVMTCk7Ci0Jd2hpbGUgKHN0cm5jbXAoZmlsZSwgIi4uLyIsIDMpID09IDAp
Ci0JCWZpbGUgKz0gMzsKLQlyZXR1cm4gKGZpbGUpOwotfQotCiAvKgogICogVGhlIFdJVE5FU1Mt
ZW5hYmxlZCBkaWFnbm9zdGljIGNvZGUuICBOb3RlIHRoYXQgdGhlIHdpdG5lc3MgY29kZSBkb2Vz
CiAgKiBhc3N1bWUgdGhhdCB0aGUgZWFybHkgYm9vdCBpcyBzaW5nbGUtdGhyZWFkZWQgYXQgbGVh
c3QgdW50aWwgYWZ0ZXIgdGhpcwpAQCAtODI0LDE1ICs4MzcsMTUgQEAKIAljbGFzcyA9IExPQ0tf
Q0xBU1MobG9jayk7CiAJaWYgKChsb2NrLT5sb19mbGFncyAmIExPX1JFQ1VSU0FCTEUpICE9IDAg
JiYKIAkgICAgKGNsYXNzLT5sY19mbGFncyAmIExDX1JFQ1VSU0FCTEUpID09IDApCi0JCXBhbmlj
KCIlczogbG9jayAoJXMpICVzIGNhbiBub3QgYmUgcmVjdXJzYWJsZSIsIF9fZnVuY19fLAorCQl3
aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIGNhbiBub3QgYmUgcmVjdXJzYWJsZSIsIF9f
ZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUpOwogCWlmICgobG9j
ay0+bG9fZmxhZ3MgJiBMT19TTEVFUEFCTEUpICE9IDAgJiYKIAkgICAgKGNsYXNzLT5sY19mbGFn
cyAmIExDX1NMRUVQQUJMRSkgPT0gMCkKLQkJcGFuaWMoIiVzOiBsb2NrICglcykgJXMgY2FuIG5v
dCBiZSBzbGVlcGFibGUiLCBfX2Z1bmNfXywKKwkJd2l0bmVzc19wYW5pYygiJXM6IGxvY2sgKCVz
KSAlcyBjYW4gbm90IGJlIHNsZWVwYWJsZSIsIF9fZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25h
bWUsIGxvY2stPmxvX25hbWUpOwogCWlmICgobG9jay0+bG9fZmxhZ3MgJiBMT19VUEdSQURBQkxF
KSAhPSAwICYmCiAJICAgIChjbGFzcy0+bGNfZmxhZ3MgJiBMQ19VUEdSQURBQkxFKSA9PSAwKQot
CQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBjYW4gbm90IGJlIHVwZ3JhZGFibGUiLCBfX2Z1bmNf
XywKKwkJd2l0bmVzc19wYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBjYW4gbm90IGJlIHVwZ3JhZGFi
bGUiLCBfX2Z1bmNfXywKIAkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsKIAog
CS8qCkBAIC04NDksNyArODYyLDcgQEAKIAkJcGVuZGluZ19sb2Nrc1twZW5kaW5nX2NudF0ud2hf
bG9jayA9IGxvY2s7CiAJCXBlbmRpbmdfbG9ja3NbcGVuZGluZ19jbnQrK10ud2hfdHlwZSA9IHR5
cGU7CiAJCWlmIChwZW5kaW5nX2NudCA+IFdJVE5FU1NfUEVORExJU1QpCi0JCQlwYW5pYygiJXM6
IHBlbmRpbmcgbG9ja3MgbGlzdCBpcyB0b28gc21hbGwsIGJ1bXAgaXRcbiIsCisJCQl3aXRuZXNz
X3BhbmljKCIlczogcGVuZGluZyBsb2NrcyBsaXN0IGlzIHRvbyBzbWFsbCwgYnVtcCBpdFxuIiwK
IAkJCSAgICBfX2Z1bmNfXyk7CiAJfSBlbHNlCiAJCWxvY2stPmxvX3dpdG5lc3MgPSBlbnJvbGwo
dHlwZSwgY2xhc3MpOwpAQCAtODY0LDcgKzg3Nyw3IEBACiAJY2xhc3MgPSBMT0NLX0NMQVNTKGxv
Y2spOwogCiAJaWYgKHdpdG5lc3NfY29sZCkKLQkJcGFuaWMoImxvY2sgKCVzKSAlcyBkZXN0cm95
ZWQgd2hpbGUgd2l0bmVzc19jb2xkIiwKKwkJd2l0bmVzc19wYW5pYygibG9jayAoJXMpICVzIGRl
c3Ryb3llZCB3aGlsZSB3aXRuZXNzX2NvbGQiLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2st
PmxvX25hbWUpOwogCiAJLyogWFhYOiBuZWVkIHRvIHZlcmlmeSB0aGF0IG5vIG9uZSBob2xkcyB0
aGUgbG9jayAqLwpAQCAtOTM5LDcgKzk1Miw3IEBACiAgCX0KICAJdy0+d19kaXNwbGF5ZWQgPSAx
OwogCWlmICh3LT53X2ZpbGUgIT0gTlVMTCAmJiB3LT53X2xpbmUgIT0gMCkKLQkJcHJudCgiIC0t
IGxhc3QgYWNxdWlyZWQgQCAlczolZFxuIiwgZml4dXBfZmlsZW5hbWUody0+d19maWxlKSwKKwkJ
cHJudCgiIC0tIGxhc3QgYWNxdWlyZWQgQCAlczolZFxuIiwgdy0+d19maWxlLAogCQkgICAgdy0+
d19saW5lKTsKIAllbHNlCiAJCXBybnQoIiAtLSBuZXZlciBhY3F1aXJlZFxuIik7CkBAIC0xMDE1
LDYgKzEwMjgsMTggQEAKIH0KICNlbmRpZiAvKiBEREIgKi8KIAorLyogVHJpbSB1c2VsZXNzIGdh
cmJhZ2UgZnJvbSBmaWxlbmFtZXMuICovCitzdGF0aWMgY29uc3QgY2hhciAqCitmaXh1cF9maWxl
bmFtZShjb25zdCBjaGFyICpmaWxlKQoreworCisJaWYgKGZpbGUgPT0gTlVMTCkKKwkJcmV0dXJu
IChOVUxMKTsKKwl3aGlsZSAoc3RybmNtcChmaWxlLCAiLi4vIiwgMykgPT0gMCkKKwkJZmlsZSAr
PSAzOworCXJldHVybiAoZmlsZSk7Cit9CisKIGludAogd2l0bmVzc19kZWZpbmVvcmRlcihzdHJ1
Y3QgbG9ja19vYmplY3QgKmxvY2sxLCBzdHJ1Y3QgbG9ja19vYmplY3QgKmxvY2syKQogewpAQCAt
MTA3NSw5ICsxMTAwLDggQEAKIAkJICogYWxsIHNwaW4gbG9ja3MuCiAJCSAqLwogCQlpZiAodGQt
PnRkX2NyaXRuZXN0ICE9IDAgJiYgIWtkYl9hY3RpdmUpCi0JCQlwYW5pYygiYmxvY2thYmxlIHNs
ZWVwIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+
bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNz
X3BhbmljKCJibG9ja2FibGUgc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQiLAorCQkJICAgIGNs
YXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7
CiAKIAkJLyoKIAkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgbG9jayBhY3F1aXJlZCB0aGVuIGp1
c3QgcmV0dXJuIGFzCkBAIC0xMTE1LDIwICsxMTM5LDE4IEBACiAJCWlmICgobG9jazEtPmxpX2Zs
YWdzICYgTElfRVhDTFVTSVZFKSAhPSAwICYmCiAJCSAgICAoZmxhZ3MgJiBMT1BfRVhDTFVTSVZF
KSA9PSAwKSB7CiAJCQlwcmludGYoInNoYXJlZCBsb2NrIG9mICglcykgJXMgQCAlczolZFxuIiwK
LQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxl
bmFtZShmaWxlKSwgbGluZSk7CisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUs
IGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJCXByaW50Zigid2hpbGUgZXhjbHVzaXZl
bHkgbG9ja2VkIGZyb20gJXM6JWRcbiIsCiAJCQkgICAgZml4dXBfZmlsZW5hbWUobG9jazEtPmxp
X2ZpbGUpLCBsb2NrMS0+bGlfbGluZSk7Ci0JCQlwYW5pYygic2hhcmUtPmV4Y2wiKTsKKwkJCXdp
dG5lc3NfcGFuaWMoInNoYXJlLT5leGNsIik7CiAJCX0KIAkJaWYgKChsb2NrMS0+bGlfZmxhZ3Mg
JiBMSV9FWENMVVNJVkUpID09IDAgJiYKIAkJICAgIChmbGFncyAmIExPUF9FWENMVVNJVkUpICE9
IDApIHsKIAkJCXByaW50ZigiZXhjbHVzaXZlIGxvY2sgb2YgKCVzKSAlcyBAICVzOiVkXG4iLAot
CQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVu
YW1lKGZpbGUpLCBsaW5lKTsKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwg
Zml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJcHJpbnRmKCJ3aGlsZSBzaGFyZSBsb2Nr
ZWQgZnJvbSAlczolZFxuIiwKIAkJCSAgICBmaXh1cF9maWxlbmFtZShsb2NrMS0+bGlfZmlsZSks
IGxvY2sxLT5saV9saW5lKTsKLQkJCXBhbmljKCJleGNsLT5zaGFyZSIpOworCQkJd2l0bmVzc19w
YW5pYygiZXhjbC0+c2hhcmUiKTsKIAkJfQogCQlyZXR1cm47CiAJfQpAQCAtMTE4MCwxMiArMTIw
MiwxMSBAQAogCQkJICAgICJhY3F1aXJpbmcgZHVwbGljYXRlIGxvY2sgb2Ygc2FtZSB0eXBlOiBc
IiVzXCJcbiIsIAogCQkJICAgIHctPndfbmFtZSk7CiAJCQlwcmludGYoIiAxc3QgJXMgQCAlczol
ZFxuIiwgcGxvY2stPmxpX2xvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmlsZW5hbWUocGxv
Y2stPmxpX2ZpbGUpLCBwbG9jay0+bGlfbGluZSk7Ci0JCQlwcmludGYoIiAybmQgJXMgQCAlczol
ZFxuIiwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7
CisJCQkgICAgICAgZml4dXBfZmlsZW5hbWUocGxvY2stPmxpX2ZpbGUpLCBwbG9jay0+bGlfbGlu
ZSk7CisJCQlwcmludGYoIiAybmQgJXMgQCAlczolZFxuIiwgbG9jay0+bG9fbmFtZSwgZml4dXBf
ZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQkJd2l0bmVzc19kZWJ1Z2dlcigxKTsKLQkJfSBlbHNl
Ci0JCQltdHhfdW5sb2NrX3NwaW4oJndfbXR4KTsKKwkJICAgIH0gZWxzZQorCQkJICAgIG10eF91
bmxvY2tfc3Bpbigmd19tdHgpOwogCQlyZXR1cm47CiAJfQogCW10eF9hc3NlcnQoJndfbXR4LCBN
QV9PV05FRCk7CkBAIC0xMzIzLDI0ICsxMzQ0LDE5IEBACiAJCQlpZiAoaSA8IDApIHsKIAkJCQlw
cmludGYoIiAxc3QgJXAgJXMgKCVzKSBAICVzOiVkXG4iLAogCQkJCSAgICBsb2NrMS0+bGlfbG9j
aywgbG9jazEtPmxpX2xvY2stPmxvX25hbWUsCi0JCQkJICAgIHcxLT53X25hbWUsIGZpeHVwX2Zp
bGVuYW1lKGxvY2sxLT5saV9maWxlKSwKLQkJCQkgICAgbG9jazEtPmxpX2xpbmUpOworCQkJCSAg
ICB3MS0+d19uYW1lLCBmaXh1cF9maWxlbmFtZShsb2NrMS0+bGlfZmlsZSksIGxvY2sxLT5saV9s
aW5lKTsKIAkJCQlwcmludGYoIiAybmQgJXAgJXMgKCVzKSBAICVzOiVkXG4iLCBsb2NrLAotCQkJ
CSAgICBsb2NrLT5sb19uYW1lLCB3LT53X25hbWUsCi0JCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZp
bGUpLCBsaW5lKTsKKwkJCQkgICAgbG9jay0+bG9fbmFtZSwgdy0+d19uYW1lLCBmaXh1cF9maWxl
bmFtZShmaWxlKSwgbGluZSk7CiAJCQl9IGVsc2UgewogCQkJCXByaW50ZigiIDFzdCAlcCAlcyAo
JXMpIEAgJXM6JWRcbiIsCiAJCQkJICAgIGxvY2syLT5saV9sb2NrLCBsb2NrMi0+bGlfbG9jay0+
bG9fbmFtZSwKIAkJCQkgICAgbG9jazItPmxpX2xvY2stPmxvX3dpdG5lc3MtPndfbmFtZSwKLQkJ
CQkgICAgZml4dXBfZmlsZW5hbWUobG9jazItPmxpX2ZpbGUpLAotCQkJCSAgICBsb2NrMi0+bGlf
bGluZSk7CisJCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGxvY2syLT5saV9maWxlKSwgbG9jazItPmxp
X2xpbmUpOwogCQkJCXByaW50ZigiIDJuZCAlcCAlcyAoJXMpIEAgJXM6JWRcbiIsCiAJCQkJICAg
IGxvY2sxLT5saV9sb2NrLCBsb2NrMS0+bGlfbG9jay0+bG9fbmFtZSwKLQkJCQkgICAgdzEtPndf
bmFtZSwgZml4dXBfZmlsZW5hbWUobG9jazEtPmxpX2ZpbGUpLAotCQkJCSAgICBsb2NrMS0+bGlf
bGluZSk7CisJCQkJICAgIHcxLT53X25hbWUsIGZpeHVwX2ZpbGVuYW1lKGxvY2sxLT5saV9maWxl
KSwgbG9jazEtPmxpX2xpbmUpOwogCQkJCXByaW50ZigiIDNyZCAlcCAlcyAoJXMpIEAgJXM6JWRc
biIsIGxvY2ssCi0JCQkJICAgIGxvY2stPmxvX25hbWUsIHctPndfbmFtZSwKLQkJCQkgICAgZml4
dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJCSAgICBsb2NrLT5sb19uYW1lLCB3LT53X25h
bWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJCX0KIAkJCXdpdG5lc3NfZGVidWdn
ZXIoMSk7CiAJCQlyZXR1cm47CkBAIC0xNDM1LDI5ICsxNDUxLDI0IEBACiAJY2xhc3MgPSBMT0NL
X0NMQVNTKGxvY2spOwogCWlmICh3aXRuZXNzX3dhdGNoKSB7CiAJCWlmICgobG9jay0+bG9fZmxh
Z3MgJiBMT19VUEdSQURBQkxFKSA9PSAwKQotCQkJcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXVwZ3Jh
ZGFibGUgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2Nr
LT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdpdG5l
c3NfcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXVwZ3JhZGFibGUgbG9jayAoJXMpICVzIEAgJXM6JWQi
LAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShm
aWxlKSwgbGluZSk7CiAJCWlmICgoY2xhc3MtPmxjX2ZsYWdzICYgTENfU0xFRVBMT0NLKSA9PSAw
KQotCQkJcGFuaWMoInVwZ3JhZGUgb2Ygbm9uLXNsZWVwIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwK
LQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxl
bmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJ1cGdyYWRlIG9mIG5vbi1zbGVl
cCBsb2NrICglcykgJXMgQCAlczolZCIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxv
X25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAl9CiAJaW5zdGFuY2UgPSBmaW5k
X2luc3RhbmNlKGN1cnRocmVhZC0+dGRfc2xlZXBsb2NrcywgbG9jayk7CiAJaWYgKGluc3RhbmNl
ID09IE5VTEwpCi0JCXBhbmljKCJ1cGdyYWRlIG9mIHVubG9ja2VkIGxvY2sgKCVzKSAlcyBAICVz
OiVkIiwKLQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkgICAgZml4dXBf
ZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQl3aXRuZXNzX3BhbmljKCJ1cGdyYWRlIG9mIHVubG9j
a2VkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKKwkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5s
b19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJaWYgKHdpdG5lc3Nfd2F0Y2gp
IHsKIAkJaWYgKChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9FWENMVVNJVkUpICE9IDApCi0JCQlw
YW5pYygidXBncmFkZSBvZiBleGNsdXNpdmUgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAg
IGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZp
bGUpLCBsaW5lKTsKKwkJCXdpdG5lc3NfcGFuaWMoInVwZ3JhZGUgb2YgZXhjbHVzaXZlIGxvY2sg
KCVzKSAlcyBAICVzOiVkIiwKKwkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwg
Zml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlpZiAoKGluc3RhbmNlLT5saV9mbGFncyAm
IExJX1JFQ1VSU0VNQVNLKSAhPSAwKQotCQkJcGFuaWMoInVwZ3JhZGUgb2YgcmVjdXJzZWQgbG9j
ayAoJXMpICVzIHI9JWQgQCAlczolZCIsCisJCQl3aXRuZXNzX3BhbmljKCJ1cGdyYWRlIG9mIHJl
Y3Vyc2VkIGxvY2sgKCVzKSAlcyByPSVkIEAgJXM6JWQiLAogCQkJICAgIGNsYXNzLT5sY19uYW1l
LCBsb2NrLT5sb19uYW1lLAotCQkJICAgIGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VN
QVNLLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCSAgICBpbnN0YW5j
ZS0+bGlfZmxhZ3MgJiBMSV9SRUNVUlNFTUFTSywgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUp
OwogCX0KIAlpbnN0YW5jZS0+bGlfZmxhZ3MgfD0gTElfRVhDTFVTSVZFOwogfQpAQCAtMTQ3NSwy
OSArMTQ4NiwyNCBAQAogCWNsYXNzID0gTE9DS19DTEFTUyhsb2NrKTsKIAlpZiAod2l0bmVzc193
YXRjaCkgewogCQlpZiAoKGxvY2stPmxvX2ZsYWdzICYgTE9fVVBHUkFEQUJMRSkgPT0gMCkKLQkJ
cGFuaWMoImRvd25ncmFkZSBvZiBub24tdXBncmFkYWJsZSBsb2NrICglcykgJXMgQCAlczolZCIs
Ci0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkgICAgZml4dXBfZmls
ZW5hbWUoZmlsZSksIGxpbmUpOworCQl3aXRuZXNzX3BhbmljKCJkb3duZ3JhZGUgb2Ygbm9uLXVw
Z3JhZGFibGUgbG9jayAoJXMpICVzIEAgJXM6JWQiLAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBs
b2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCWlmICgoY2xhc3Mt
PmxjX2ZsYWdzICYgTENfU0xFRVBMT0NLKSA9PSAwKQotCQkJcGFuaWMoImRvd25ncmFkZSBvZiBu
b24tc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQiLAotCQkJICAgIGNsYXNzLT5sY19uYW1lLCBs
b2NrLT5sb19uYW1lLAotCQkJICAgIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKKwkJCXdp
dG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiBub24tc2xlZXAgbG9jayAoJXMpICVzIEAgJXM6JWQi
LAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShm
aWxlKSwgbGluZSk7CiAJfQogCWluc3RhbmNlID0gZmluZF9pbnN0YW5jZShjdXJ0aHJlYWQtPnRk
X3NsZWVwbG9ja3MsIGxvY2spOwogCWlmIChpbnN0YW5jZSA9PSBOVUxMKQotCQlwYW5pYygiZG93
bmdyYWRlIG9mIHVubG9ja2VkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKLQkJICAgIGNsYXNzLT5s
Y19uYW1lLCBsb2NrLT5sb19uYW1lLAotCQkgICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUp
OworCQl3aXRuZXNzX3BhbmljKCJkb3duZ3JhZGUgb2YgdW5sb2NrZWQgbG9jayAoJXMpICVzIEAg
JXM6JWQiLAorCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVu
YW1lKGZpbGUpLCBsaW5lKTsKIAlpZiAod2l0bmVzc193YXRjaCkgewogCQlpZiAoKGluc3RhbmNl
LT5saV9mbGFncyAmIExJX0VYQ0xVU0lWRSkgPT0gMCkKLQkJCXBhbmljKCJkb3duZ3JhZGUgb2Yg
c2hhcmVkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9j
ay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRu
ZXNzX3BhbmljKCJkb3duZ3JhZGUgb2Ygc2hhcmVkIGxvY2sgKCVzKSAlcyBAICVzOiVkIiwKKwkJ
CSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSks
IGxpbmUpOwogCQlpZiAoKGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VNQVNLKSAhPSAw
KQotCQkJcGFuaWMoImRvd25ncmFkZSBvZiByZWN1cnNlZCBsb2NrICglcykgJXMgcj0lZCBAICVz
OiVkIiwKKwkJCXdpdG5lc3NfcGFuaWMoImRvd25ncmFkZSBvZiByZWN1cnNlZCBsb2NrICglcykg
JXMgcj0lZCBAICVzOiVkIiwKIAkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwK
LQkJCSAgICBpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9SRUNVUlNFTUFTSywKLQkJCSAgICBmaXh1
cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQkgICAgaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElf
UkVDVVJTRU1BU0ssIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAl9CiAJaW5zdGFuY2Ut
PmxpX2ZsYWdzICY9IH5MSV9FWENMVVNJVkU7CiB9CkBAIC0xNTA2LDExICsxNTEyLDExIEBACiB3
aXRuZXNzX3VubG9jayhzdHJ1Y3QgbG9ja19vYmplY3QgKmxvY2ssIGludCBmbGFncywgY29uc3Qg
Y2hhciAqZmlsZSwgaW50IGxpbmUpCiB7CiAJc3RydWN0IGxvY2tfbGlzdF9lbnRyeSAqKmxvY2tf
bGlzdCwgKmxsZTsKLQlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5zdGFuY2U7CisJc3RydWN0IGxv
Y2tfaW5zdGFuY2UgKmluc3RhbmNlID0gTlVMTDsKIAlzdHJ1Y3QgbG9ja19jbGFzcyAqY2xhc3M7
CiAJc3RydWN0IHRocmVhZCAqdGQ7CiAJcmVnaXN0ZXJfdCBzOwotCWludCBpLCBqOworCWludCBp
ID0gMCwgajsKIAogCWlmICh3aXRuZXNzX2NvbGQgfHwgbG9jay0+bG9fd2l0bmVzcyA9PSBOVUxM
IHx8IHBhbmljc3RyICE9IE5VTEwpCiAJCXJldHVybjsKQEAgLTE1MzcsNyArMTU0Myw3IEBACiAJ
ICogZXZlbnR1YWwgcmVnaXN0ZXIgbG9ja3MgYW5kIHJlbW92ZSB0aGVtLgogCSAqLwogCWlmICh3
aXRuZXNzX3dhdGNoID4gMCkKLQkJcGFuaWMoImxvY2sgKCVzKSAlcyBub3QgbG9ja2VkIEAgJXM6
JWQiLCBjbGFzcy0+bGNfbmFtZSwKKwkJd2l0bmVzc19wYW5pYygibG9jayAoJXMpICVzIG5vdCBs
b2NrZWQgQCAlczolZCIsIGNsYXNzLT5sY19uYW1lLAogCQkgICAgbG9jay0+bG9fbmFtZSwgZml4
dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCWVsc2UKIAkJcmV0dXJuOwpAQCAtMTU1MCwxNiAr
MTU1NiwxNSBAQAogCQkgICAgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxp
bmUpOwogCQlwcmludGYoIndoaWxlIGV4Y2x1c2l2ZWx5IGxvY2tlZCBmcm9tICVzOiVkXG4iLAog
CQkgICAgZml4dXBfZmlsZW5hbWUoaW5zdGFuY2UtPmxpX2ZpbGUpLCBpbnN0YW5jZS0+bGlfbGlu
ZSk7Ci0JCXBhbmljKCJleGNsLT51c2hhcmUiKTsKKwkJd2l0bmVzc19wYW5pYygiZXhjbC0+dXNo
YXJlIik7CiAJfQogCWlmICgoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfRVhDTFVTSVZFKSA9PSAw
ICYmIHdpdG5lc3Nfd2F0Y2ggPiAwICYmCiAJICAgIChmbGFncyAmIExPUF9FWENMVVNJVkUpICE9
IDApIHsKIAkJcHJpbnRmKCJleGNsdXNpdmUgdW5sb2NrIG9mICglcykgJXMgQCAlczolZFxuIiwg
Y2xhc3MtPmxjX25hbWUsCiAJCSAgICBsb2NrLT5sb19uYW1lLCBmaXh1cF9maWxlbmFtZShmaWxl
KSwgbGluZSk7Ci0JCXByaW50Zigid2hpbGUgc2hhcmUgbG9ja2VkIGZyb20gJXM6JWRcbiIsCi0J
CSAgICBmaXh1cF9maWxlbmFtZShpbnN0YW5jZS0+bGlfZmlsZSksCisJCXByaW50Zigid2hpbGUg
c2hhcmUgbG9ja2VkIGZyb20gJXM6JWRcbiIsIGZpeHVwX2ZpbGVuYW1lKGluc3RhbmNlLT5saV9m
aWxlKSwKIAkJICAgIGluc3RhbmNlLT5saV9saW5lKTsKLQkJcGFuaWMoInNoYXJlLT51ZXhjbCIp
OworCQl3aXRuZXNzX3BhbmljKCJzaGFyZS0+dWV4Y2wiKTsKIAl9CiAJLyogSWYgd2UgYXJlIHJl
Y3Vyc2VkLCB1bnJlY3Vyc2UuICovCiAJaWYgKChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9SRUNV
UlNFTUFTSykgPiAwKSB7CkBAIC0xNTczLDcgKzE1NzgsNyBAQAogCWlmICgoaW5zdGFuY2UtPmxp
X2ZsYWdzICYgTElfTk9SRUxFQVNFKSAhPSAwICYmIHdpdG5lc3Nfd2F0Y2ggPiAwKSB7CiAJCXBy
aW50ZigiZm9yYmlkZGVuIHVubG9jayBvZiAoJXMpICVzIEAgJXM6JWRcbiIsIGNsYXNzLT5sY19u
YW1lLAogCQkgICAgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwot
CQlwYW5pYygibG9jayBtYXJrZWQgbm9yZWxlYXNlIik7CisJCXdpdG5lc3NfcGFuaWMoImxvY2sg
bWFya2VkIG5vcmVsZWFzZSIpOwogCX0KIAogCS8qIE90aGVyd2lzZSwgcmVtb3ZlIHRoaXMgaXRl
bSBmcm9tIHRoZSBsaXN0LiAqLwpAQCAtMTYyOCw3ICsxNjMzLDcgQEAKIAkJCQl3aXRuZXNzX2xp
c3RfbG9jaygmbGxlLT5sbF9jaGlsZHJlbltpXSwgcHJpbnRmKTsKIAkJCQkKIAkJCX0KLQkJcGFu
aWMoIlRocmVhZCAlcCBjYW5ub3QgZXhpdCB3aGlsZSBob2xkaW5nIHNsZWVwbG9ja3NcbiIsIHRk
KTsKKwkJd2l0bmVzc19wYW5pYygiVGhyZWFkICVwIGNhbm5vdCBleGl0IHdoaWxlIGhvbGRpbmcg
c2xlZXBsb2Nrc1xuIiwgdGQpOwogCX0KIAl3aXRuZXNzX2xvY2tfbGlzdF9mcmVlKGxsZSk7CiB9
CkBAIC0xNzA5LDcgKzE3MTQsNyBAQAogCX0gZWxzZQogCQlzY2hlZF91bnBpbigpOwogCWlmIChm
bGFncyAmIFdBUk5fUEFOSUMgJiYgbikKLQkJcGFuaWMoIiVzIiwgX19mdW5jX18pOworCQl3aXRu
ZXNzX3BhbmljKCIlcyIsIF9fZnVuY19fKTsKIAllbHNlCiAJCXdpdG5lc3NfZGVidWdnZXIobik7
CiAJcmV0dXJuIChuKTsKQEAgLTE3NTUsNyArMTc2MCw3IEBACiAJfSBlbHNlIGlmICgobG9ja19j
bGFzcy0+bGNfZmxhZ3MgJiBMQ19TTEVFUExPQ0spKQogCQl0eXBlbGlzdCA9ICZ3X3NsZWVwOwog
CWVsc2UKLQkJcGFuaWMoImxvY2sgY2xhc3MgJXMgaXMgbm90IHNsZWVwIG9yIHNwaW4iLAorCQl3
aXRuZXNzX3BhbmljKCJsb2NrIGNsYXNzICVzIGlzIG5vdCBzbGVlcCBvciBzcGluIiwKIAkJICAg
IGxvY2tfY2xhc3MtPmxjX25hbWUpOwogCiAJbXR4X2xvY2tfc3Bpbigmd19tdHgpOwpAQCAtMTc4
Niw3ICsxNzkxLDcgQEAKIAl3LT53X3JlZmNvdW50Kys7CiAJbXR4X3VubG9ja19zcGluKCZ3X210
eCk7CiAJaWYgKGxvY2tfY2xhc3MgIT0gdy0+d19jbGFzcykKLQkJcGFuaWMoCisJCXdpdG5lc3Nf
cGFuaWMoCiAJCQkibG9jayAoJXMpICVzIGRvZXMgbm90IG1hdGNoIGVhcmxpZXIgKCVzKSBsb2Nr
IiwKIAkJCWRlc2NyaXB0aW9uLCBsb2NrX2NsYXNzLT5sY19uYW1lLAogCQkJdy0+d19jbGFzcy0+
bGNfbmFtZSk7CkBAIC0xOTIwLDcgKzE5MjUsNyBAQAogCWlmICghd2l0bmVzc19sb2NrX3R5cGVf
ZXF1YWwocGFyZW50LCBjaGlsZCkpIHsKIAkJaWYgKHdpdG5lc3NfY29sZCA9PSAwKQogCQkJbXR4
X3VubG9ja19zcGluKCZ3X210eCk7Ci0JCXBhbmljKCIlczogcGFyZW50IFwiJXNcIiAoJXMpIGFu
ZCBjaGlsZCBcIiVzXCIgKCVzKSBhcmUgbm90ICIKKwkJd2l0bmVzc19wYW5pYygiJXM6IHBhcmVu
dCBcIiVzXCIgKCVzKSBhbmQgY2hpbGQgXCIlc1wiICglcykgYXJlIG5vdCAiCiAJCSAgICAidGhl
IHNhbWUgbG9jayB0eXBlIiwgX19mdW5jX18sIHBhcmVudC0+d19uYW1lLAogCQkgICAgcGFyZW50
LT53X2NsYXNzLT5sY19uYW1lLCBjaGlsZC0+d19uYW1lLAogCQkgICAgY2hpbGQtPndfY2xhc3Mt
PmxjX25hbWUpOwpAQCAtMjEwMiw4ICsyMTA3LDggQEAKIAlpZiAobG9jay0+bG9fd2l0bmVzcy0+
d19uYW1lICE9IGxvY2stPmxvX25hbWUpCiAJCXBybnQoIiAoJXMpIiwgbG9jay0+bG9fd2l0bmVz
cy0+d19uYW1lKTsKIAlwcm50KCIgciA9ICVkICglcCkgbG9ja2VkIEAgJXM6JWRcbiIsCi0JICAg
IGluc3RhbmNlLT5saV9mbGFncyAmIExJX1JFQ1VSU0VNQVNLLCBsb2NrLAotCSAgICBmaXh1cF9m
aWxlbmFtZShpbnN0YW5jZS0+bGlfZmlsZSksIGluc3RhbmNlLT5saV9saW5lKTsKKwkgICAgaW5z
dGFuY2UtPmxpX2ZsYWdzICYgTElfUkVDVVJTRU1BU0ssIGxvY2ssIGZpeHVwX2ZpbGVuYW1lKGlu
c3RhbmNlLT5saV9maWxlKSwKKwkgICAgaW5zdGFuY2UtPmxpX2xpbmUpOwogfQogCiAjaWZkZWYg
RERCCkBAIC0yMTc0LDEzICsyMTc5LDYgQEAKIAlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5zdGFu
Y2U7CiAJc3RydWN0IGxvY2tfY2xhc3MgKmNsYXNzOwogCi0JLyoKLQkgKiBUaGlzIGZ1bmN0aW9u
IGlzIHVzZWQgaW5kZXBlbmRlbnRseSBpbiBsb2NraW5nIGNvZGUgdG8gZGVhbCB3aXRoCi0JICog
R2lhbnQsIFNDSEVEVUxFUl9TVE9QUEVEKCkgY2hlY2sgY2FuIGJlIHJlbW92ZWQgaGVyZSBhZnRl
ciBHaWFudAotCSAqIGlzIGdvbmUuCi0JICovCi0JaWYgKFNDSEVEVUxFUl9TVE9QUEVEKCkpCi0J
CXJldHVybjsKIAlLQVNTRVJUKHdpdG5lc3NfY29sZCA9PSAwLCAoIiVzOiB3aXRuZXNzX2NvbGQi
LCBfX2Z1bmNfXykpOwogCWlmIChsb2NrLT5sb193aXRuZXNzID09IE5VTEwgfHwgd2l0bmVzc193
YXRjaCA9PSAtMSB8fCBwYW5pY3N0ciAhPSBOVUxMKQogCQlyZXR1cm47CkBAIC0yMTk0LDcgKzIx
OTIsNyBAQAogCX0KIAlpbnN0YW5jZSA9IGZpbmRfaW5zdGFuY2UobG9ja19saXN0LCBsb2NrKTsK
IAlpZiAoaW5zdGFuY2UgPT0gTlVMTCkKLQkJcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxv
Y2tlZCIsIF9fZnVuY19fLAorCQl3aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIG5vdCBs
b2NrZWQiLCBfX2Z1bmNfXywKIAkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsK
IAkqZmlsZXAgPSBpbnN0YW5jZS0+bGlfZmlsZTsKIAkqbGluZXAgPSBpbnN0YW5jZS0+bGlfbGlu
ZTsKQEAgLTIyMDcsMTMgKzIyMDUsNiBAQAogCXN0cnVjdCBsb2NrX2luc3RhbmNlICppbnN0YW5j
ZTsKIAlzdHJ1Y3QgbG9ja19jbGFzcyAqY2xhc3M7CiAKLQkvKgotCSAqIFRoaXMgZnVuY3Rpb24g
aXMgdXNlZCBpbmRlcGVuZGVudGx5IGluIGxvY2tpbmcgY29kZSB0byBkZWFsIHdpdGgKLQkgKiBH
aWFudCwgU0NIRURVTEVSX1NUT1BQRUQoKSBjaGVjayBjYW4gYmUgcmVtb3ZlZCBoZXJlIGFmdGVy
IEdpYW50Ci0JICogaXMgZ29uZS4KLQkgKi8KLQlpZiAoU0NIRURVTEVSX1NUT1BQRUQoKSkKLQkJ
cmV0dXJuOwogCUtBU1NFUlQod2l0bmVzc19jb2xkID09IDAsICgiJXM6IHdpdG5lc3NfY29sZCIs
IF9fZnVuY19fKSk7CiAJaWYgKGxvY2stPmxvX3dpdG5lc3MgPT0gTlVMTCB8fCB3aXRuZXNzX3dh
dGNoID09IC0xIHx8IHBhbmljc3RyICE9IE5VTEwpCiAJCXJldHVybjsKQEAgLTIyMjcsNyArMjIx
OCw3IEBACiAJfQogCWluc3RhbmNlID0gZmluZF9pbnN0YW5jZShsb2NrX2xpc3QsIGxvY2spOwog
CWlmIChpbnN0YW5jZSA9PSBOVUxMKQotCQlwYW5pYygiJXM6IGxvY2sgKCVzKSAlcyBub3QgbG9j
a2VkIiwgX19mdW5jX18sCisJCXdpdG5lc3NfcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxv
Y2tlZCIsIF9fZnVuY19fLAogCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUpOwog
CWxvY2stPmxvX3dpdG5lc3MtPndfZmlsZSA9IGZpbGU7CiAJbG9jay0+bG9fd2l0bmVzcy0+d19s
aW5lID0gbGluZTsKQEAgLTIyMzksNyArMjIzMCw3IEBACiB3aXRuZXNzX2Fzc2VydChzdHJ1Y3Qg
bG9ja19vYmplY3QgKmxvY2ssIGludCBmbGFncywgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUp
CiB7CiAjaWZkZWYgSU5WQVJJQU5UX1NVUFBPUlQKLQlzdHJ1Y3QgbG9ja19pbnN0YW5jZSAqaW5z
dGFuY2U7CisJc3RydWN0IGxvY2tfaW5zdGFuY2UgKmluc3RhbmNlID0gTlVMTDsKIAlzdHJ1Y3Qg
bG9ja19jbGFzcyAqY2xhc3M7CiAKIAlpZiAobG9jay0+bG9fd2l0bmVzcyA9PSBOVUxMIHx8IHdp
dG5lc3Nfd2F0Y2ggPCAxIHx8IHBhbmljc3RyICE9IE5VTEwpCkBAIC0yMjUwLDE1ICsyMjQxLDE0
IEBACiAJZWxzZSBpZiAoKGNsYXNzLT5sY19mbGFncyAmIExDX1NQSU5MT0NLKSAhPSAwKQogCQlp
bnN0YW5jZSA9IGZpbmRfaW5zdGFuY2UoUENQVV9HRVQoc3BpbmxvY2tzKSwgbG9jayk7CiAJZWxz
ZSB7Ci0JCXBhbmljKCJMb2NrICglcykgJXMgaXMgbm90IHNsZWVwIG9yIHNwaW4hIiwKKwkJd2l0
bmVzc19wYW5pYygiTG9jayAoJXMpICVzIGlzIG5vdCBzbGVlcCBvciBzcGluISIsCiAJCSAgICBj
bGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSk7CiAJfQogCXN3aXRjaCAoZmxhZ3MpIHsKIAlj
YXNlIExBX1VOTE9DS0VEOgogCQlpZiAoaW5zdGFuY2UgIT0gTlVMTCkKLQkJCXBhbmljKCJMb2Nr
ICglcykgJXMgbG9ja2VkIEAgJXM6JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+
bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNz
X3BhbmljKCJMb2NrICglcykgJXMgbG9ja2VkIEAgJXM6JWQuIiwKKwkJCSAgICBjbGFzcy0+bGNf
bmFtZSwgbG9jay0+bG9fbmFtZSwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCQlicmVh
azsKIAljYXNlIExBX0xPQ0tFRDoKIAljYXNlIExBX0xPQ0tFRCB8IExBX1JFQ1VSU0VEOgpAQCAt
MjI3MCwzNSArMjI2MCwyOSBAQAogCWNhc2UgTEFfWExPQ0tFRCB8IExBX1JFQ1VSU0VEOgogCWNh
c2UgTEFfWExPQ0tFRCB8IExBX05PVFJFQ1VSU0VEOgogCQlpZiAoaW5zdGFuY2UgPT0gTlVMTCkg
ewotCQkJcGFuaWMoIkxvY2sgKCVzKSAlcyBub3QgbG9ja2VkIEAgJXM6JWQuIiwKLQkJCSAgICBj
bGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1cF9maWxlbmFtZShmaWxl
KSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMgbm90IGxvY2tlZCBAICVz
OiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVu
YW1lKGZpbGUpLCBsaW5lKTsKIAkJCWJyZWFrOwogCQl9CiAJCWlmICgoZmxhZ3MgJiBMQV9YTE9D
S0VEKSAhPSAwICYmCiAJCSAgICAoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElfRVhDTFVTSVZFKSA9
PSAwKQotCQkJcGFuaWMoIkxvY2sgKCVzKSAlcyBub3QgZXhjbHVzaXZlbHkgbG9ja2VkIEAgJXM6
JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1
cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMg
bm90IGV4Y2x1c2l2ZWx5IGxvY2tlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUs
IGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChmbGFn
cyAmIExBX1NMT0NLRUQpICE9IDAgJiYKIAkJICAgIChpbnN0YW5jZS0+bGlfZmxhZ3MgJiBMSV9F
WENMVVNJVkUpICE9IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIGV4Y2x1c2l2ZWx5IGxvY2tl
ZCBAICVzOiVkLiIsCi0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkg
ICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJd2l0bmVzc19wYW5pYygiTG9jayAo
JXMpICVzIGV4Y2x1c2l2ZWx5IGxvY2tlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25h
bWUsIGxvY2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChm
bGFncyAmIExBX1JFQ1VSU0VEKSAhPSAwICYmCiAJCSAgICAoaW5zdGFuY2UtPmxpX2ZsYWdzICYg
TElfUkVDVVJTRU1BU0spID09IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIG5vdCByZWN1cnNl
ZCBAICVzOiVkLiIsCi0JCQkgICAgY2xhc3MtPmxjX25hbWUsIGxvY2stPmxvX25hbWUsCi0JCQkg
ICAgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOworCQkJd2l0bmVzc19wYW5pYygiTG9jayAo
JXMpICVzIG5vdCByZWN1cnNlZCBAICVzOiVkLiIsCisJCQkgICAgY2xhc3MtPmxjX25hbWUsIGxv
Y2stPmxvX25hbWUsIGZpeHVwX2ZpbGVuYW1lKGZpbGUpLCBsaW5lKTsKIAkJaWYgKChmbGFncyAm
IExBX05PVFJFQ1VSU0VEKSAhPSAwICYmCiAJCSAgICAoaW5zdGFuY2UtPmxpX2ZsYWdzICYgTElf
UkVDVVJTRU1BU0spICE9IDApCi0JCQlwYW5pYygiTG9jayAoJXMpICVzIHJlY3Vyc2VkIEAgJXM6
JWQuIiwKLQkJCSAgICBjbGFzcy0+bGNfbmFtZSwgbG9jay0+bG9fbmFtZSwKLQkJCSAgICBmaXh1
cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CisJCQl3aXRuZXNzX3BhbmljKCJMb2NrICglcykgJXMg
cmVjdXJzZWQgQCAlczolZC4iLAorCQkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1l
LCBmaXh1cF9maWxlbmFtZShmaWxlKSwgbGluZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXBh
bmljKCJJbnZhbGlkIGxvY2sgYXNzZXJ0aW9uIGF0ICVzOiVkLiIsCi0JCSAgICBmaXh1cF9maWxl
bmFtZShmaWxlKSwgbGluZSk7CisJCXdpdG5lc3NfcGFuaWMoIkludmFsaWQgbG9jayBhc3NlcnRp
b24gYXQgJXM6JWQuIiwgZml4dXBfZmlsZW5hbWUoZmlsZSksIGxpbmUpOwogCiAJfQogI2VuZGlm
CS8qIElOVkFSSUFOVF9TVVBQT1JUICovCkBAIC0yMzIzLDcgKzIzMDcsNyBAQAogCX0KIAlpbnN0
YW5jZSA9IGZpbmRfaW5zdGFuY2UobG9ja19saXN0LCBsb2NrKTsKIAlpZiAoaW5zdGFuY2UgPT0g
TlVMTCkKLQkJcGFuaWMoIiVzOiBsb2NrICglcykgJXMgbm90IGxvY2tlZCIsIF9fZnVuY19fLAor
CQl3aXRuZXNzX3BhbmljKCIlczogbG9jayAoJXMpICVzIG5vdCBsb2NrZWQiLCBfX2Z1bmNfXywK
IAkJICAgIGNsYXNzLT5sY19uYW1lLCBsb2NrLT5sb19uYW1lKTsKIAogCWlmIChzZXQpCkluZGV4
OiBzeXMvbmV0L2lmLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldC9pZi5jCShyZXZpc2lvbiAyNDE0
OTEpCisrKyBzeXMvbmV0L2lmLmMJKHdvcmtpbmcgY29weSkKQEAgLTgyMSw3ICs4MjEsOSBAQAog
aWZfZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQogewogCisJQ1VSVk5FVF9TRVRfUVVJRVQoaWZw
LT5pZl92bmV0KTsKIAlpZl9kZXRhY2hfaW50ZXJuYWwoaWZwLCAwKTsKKwlDVVJWTkVUX1JFU1RP
UkUoKTsKIH0KIAogc3RhdGljIHZvaWQK
--e89a8fb202eaccab6a04ce829ea2--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmom-kuqXwwTOpZLRFQNrRsdYw9aCOE-KndQH9hoWErhZmg>