Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Feb 2016 12:06:17 +0200
From:      "Andriy Voskoboinyk" <s3erios@gmail.com>
To:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>, "Adrian Chadd" <adrian@freebsd.org>
Subject:   software scan fix - please test (Was: why we can't use the net80211 taskqueue for everything)
Message-ID:  <op.yc4mcrg5iew4ia@localhost>
In-Reply-To: <CAJ-VmoneUBz4Vt3hFj8S4G_o8ptd3Z-NL5%2B6HuG33C3C_x-2jQ@mail.gmail.com>
References:  <CAJ-VmoneUBz4Vt3hFj8S4G_o8ptd3Z-NL5%2B6HuG33C3C_x-2jQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
------------1UGEIeCxgQrQAMT13Qg4VX
Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes
Content-Transfer-Encoding: 7bit

> hi,
>
> andriy has a few reviews out that tidy up some things, which I'd reply
> to, but .. reviews is offline. So, here's the 30 second version:
>
> * the net80211 taskqueue runs the software scan engine, and the
> software scan engine currently sleeps whilst it's running.
>
> This means that if you put newstate, deferred transmit, etc into the
> net80211 taskqueue, then it just won't run during scan.
>
> The net80211 software scan thing should be modified to not sleep
> whilst it's waiting for scan results and instead just kick off another
> timer event to finish that part of the loop. Then yes, we can just
> migrate * to the net80211 task queue and use it for all serialisation
> of a wifi driver.
>
> (And yes, I'd like to see that done ASAP..)
>
> Thanks,
>
>
> -adrian

Hi,

I have replaced sleeping on conditional variable inside scan task
with scan_curchan task rescheduling (so this problem should be fixed now).

For everyone, who wishes to test: apply the attached patch
(merged from D5133, D5137, D5139, D5140, D5142, D5143, D5145, D5147, D5148  
and D5152)
and rebuild + install the kernel. Scan should work as before.

Thanks!
------------1UGEIeCxgQrQAMT13Qg4VX
Content-Disposition: attachment; filename=patch-net80211-scan-sw.diff
Content-Type: application/octet-stream; name="patch-net80211-scan-sw.diff"
Content-Transfer-Encoding: Base64

SW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfb3V0cHV0LmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRwdXQuYwko
cmV2aXNpb24gMjk1ODM0KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRw
dXQuYwkod29ya2luZyBjb3B5KQpAQCAtODQ5LDYgKzg0OSwxNSBAQAogCXJldHVy
biAocmV0KTsKIH0KIAorc3RhdGljIHZvaWQKK2llZWU4MDIxMV9udWxsZGF0YV90
cmFuc21pdHRlZChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCB2b2lkICphcmcs
CisgICAgaW50IHN0YXR1cykKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAg
PSBuaS0+bmlfdmFwOworCisJd2FrZXVwKHZhcCk7Cit9CisKIC8qCiAgKiBTZW5k
IGEgbnVsbCBkYXRhIGZyYW1lIHRvIHRoZSBzcGVjaWZpZWQgbm9kZS4gIElmIHRo
ZSBzdGF0aW9uCiAgKiBpcyBzZXR1cCBmb3IgUW9TIHRoZW4gYSBRb1MgTnVsbCBE
YXRhIGZyYW1lIGlzIGNvbnN0cnVjdGVkLgpAQCAtOTM3LDYgKzk0NiwxMSBAQAog
CQkgICAgdmFwLT5pdl9vcG1vZGUgIT0gSUVFRTgwMjExX01fSE9TVEFQKQogCQkJ
d2gtPmlfZmNbMV0gfD0gSUVFRTgwMjExX0ZDMV9QV1JfTUdUOwogCX0KKwlpZiAo
KGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pICYmCisJICAgIChuaS0+
bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9QV1JfTUdUKSkgeworCQlpZWVlODAy
MTFfYWRkX2NhbGxiYWNrKG0sIGllZWU4MDIxMV9udWxsZGF0YV90cmFuc21pdHRl
ZCwKKwkJICAgIE5VTEwpOworCX0KIAltLT5tX2xlbiA9IG0tPm1fcGt0aGRyLmxl
biA9IGhkcmxlbjsKIAltLT5tX2ZsYWdzIHw9IE1fRU5DQVA7CQkvKiBtYXJrIGVu
Y2Fwc3VsYXRlZCAqLwogCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3Nj
YW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgw
MjExX3NjYW4uYwkocmV2aXNpb24gMjk1ODM0KQorKysgc3lzL25ldDgwMjExL2ll
ZWU4MDIxMV9zY2FuLmMJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw4ICs0NTMsOSBA
QAogfQogCiAvKgotICogUHVibGljIGFjY2VzcyB0byBzY2FuX25leHQgZm9yIGRy
aXZlcnMgdGhhdCBtYW5hZ2UKLSAqIHNjYW5uaW5nIHRoZW1zZWx2ZXMgKGUuZy4g
Zm9yIGZpcm13YXJlLWJhc2VkIGRldmljZXMpLgorICogTWFudWFsbHkgc3dpdGNo
IHRvIHRoZSBuZXh0IGNoYW5uZWwgaW4gdGhlIGNoYW5uZWwgbGlzdC4KKyAqIFBy
b3ZpZGVkIGZvciBkcml2ZXJzIHRoYXQgbWFuYWdlIHNjYW5uaW5nIHRoZW1zZWx2
ZXMKKyAqIChlLmcuIGZvciBmaXJtd2FyZS1iYXNlZCBkZXZpY2VzKS4KICAqLwog
dm9pZAogaWVlZTgwMjExX3NjYW5fbmV4dChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2
YXApCkBAIC00NjUsOCArNDY2LDkgQEAKIH0KIAogLyoKLSAqIFB1YmxpYyBhY2Nl
c3MgdG8gc2Nhbl9uZXh0IGZvciBkcml2ZXJzIHRoYXQgYXJlIG5vdCBhYmxlIHRv
IHNjYW4gc2luZ2xlCi0gKiBjaGFubmVscyAoZS5nLiBmb3IgZmlybXdhcmUtYmFz
ZWQgZGV2aWNlcykuCisgKiBNYW51YWxseSBzdG9wIGEgc2NhbiB0aGF0IGlzIGN1
cnJlbnRseSBydW5uaW5nLgorICogUHJvdmlkZWQgZm9yIGRyaXZlcnMgdGhhdCBh
cmUgbm90IGFibGUgdG8gc2NhbiBzaW5nbGUgY2hhbm5lbHMKKyAqIChlLmcuIGZv
ciBmaXJtd2FyZS1iYXNlZCBkZXZpY2VzKS4KICAqLwogdm9pZAogaWVlZTgwMjEx
X3NjYW5fZG9uZShzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXApCkBAIC00ODYsNyAr
NDg4LDcgQEAKIH0KIAogLyoKLSAqIFByb2JlIHRoZSBjdXJlbnQgY2hhbm5lbCwg
aWYgYWxsb3dlZCwgd2hpbGUgc2Nhbm5pbmcuCisgKiBQcm9iZSB0aGUgY3VycmVu
dCBjaGFubmVsLCBpZiBhbGxvd2VkLCB3aGlsZSBzY2FubmluZy4KICAqIElmIHRo
ZSBjaGFubmVsIGlzIG5vdCBtYXJrZWQgcGFzc2l2ZS1vbmx5IHRoZW4gc2VuZAog
ICogYSBwcm9iZSByZXF1ZXN0IGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlIG1hcmsg
c3RhdGUgYW5kCiAgKiBsaXN0ZW4gZm9yIGJlYWNvbnMgb24gdGhlIGNoYW5uZWw7
IGlmIHdlIHJlY2VpdmUgc29tZXRoaW5nCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVl
ZTgwMjExX3NjYW5fc3cuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0
ODAyMTEvaWVlZTgwMjExX3NjYW5fc3cuYwkocmV2aXNpb24gMjk1ODM0KQorKysg
c3lzL25ldDgwMjExL2llZWU4MDIxMV9zY2FuX3N3LmMJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDE3ICs1NCwxOCBAQAogc3RydWN0IHNjYW5fc3RhdGUgewogCXN0cnVj
dCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSBiYXNlOwkvKiBwdWJsaWMgc3RhdGUgKi8K
IAotCXVfaW50CQlzc19pZmxhZ3M7CQkvKiBmbGFncyB1c2VkIGludGVybmFsbHkg
Ki8KLSNkZWZpbmUJSVNDQU5fTUlORFdFTEwgCTB4MDAwMQkJLyogbWluIGR3ZWxs
IHRpbWUgcmVhY2hlZCAqLwotI2RlZmluZQlJU0NBTl9ESVNDQVJECTB4MDAwMgkJ
LyogZGlzY2FyZCByeCdkIGZyYW1lcyAqLwotI2RlZmluZQlJU0NBTl9DQU5DRUwJ
MHgwMDA0CQkvKiBjYW5jZWwgY3VycmVudCBzY2FuICovCi0jZGVmaW5lCUlTQ0FO
X0FCT1JUCTB4MDAwOAkJLyogZW5kIHRoZSBzY2FuIGltbWVkaWF0ZWx5ICovCi0J
dW5zaWduZWQgbG9uZwlzc19jaGFubWluZHdlbGw7CS8qIG1pbiBkd2VsbCBvbiBj
dXJjaGFuICovCi0JdW5zaWduZWQgbG9uZwlzc19zY2FuZW5kOwkJLyogdGltZSBz
Y2FuIG11c3Qgc3RvcCAqLwotCXVfaW50CQlzc19kdXJhdGlvbjsJCS8qIGR1cmF0
aW9uIGZvciBuZXh0IHNjYW4gKi8KLQlzdHJ1Y3QgdGFzawlzc19zY2FuX3Rhc2s7
CQkvKiBzY2FuIGV4ZWN1dGlvbiAqLwotCXN0cnVjdCBjdglzc19zY2FuX2N2OwkJ
Lyogc2NhbiBzaWduYWwgKi8KLQlzdHJ1Y3QgY2FsbG91dAlzc19zY2FuX3RpbWVy
OwkJLyogc2NhbiB0aW1lciAqLworCXVfaW50CQkJc3NfaWZsYWdzOwkvKiBmbGFn
cyB1c2VkIGludGVybmFsbHkgKi8KKyNkZWZpbmUJSVNDQU5fTUlORFdFTEwgCQkw
eDAwMDEJCS8qIG1pbiBkd2VsbCB0aW1lIHJlYWNoZWQgKi8KKyNkZWZpbmUJSVND
QU5fRElTQ0FSRAkJMHgwMDAyCQkvKiBkaXNjYXJkIHJ4J2QgZnJhbWVzICovCisj
ZGVmaW5lCUlTQ0FOX0NBTkNFTAkJMHgwMDA0CQkvKiBjYW5jZWwgY3VycmVudCBz
Y2FuICovCisjZGVmaW5lCUlTQ0FOX0FCT1JUCQkweDAwMDgJCS8qIGVuZCB0aGUg
c2NhbiBpbW1lZGlhdGVseSAqLworI2RlZmluZQlJU0NBTl9SVU5OSU5HCQkweDAw
MTAJCS8qIHNjYW4gd2FzIHN0YXJ0ZWQgKi8KKworCXVuc2lnbmVkIGxvbmcJCXNz
X2NoYW5taW5kd2VsbDsgIC8qIG1pbiBkd2VsbCBvbiBjdXJjaGFuICovCisJdW5z
aWduZWQgbG9uZwkJc3Nfc2NhbmVuZDsJLyogdGltZSBzY2FuIG11c3Qgc3RvcCAq
LworCXVfaW50CQkJc3NfZHVyYXRpb247CS8qIGR1cmF0aW9uIGZvciBuZXh0IHNj
YW4gKi8KKwlzdHJ1Y3QgdGFzawkJc3Nfc2Nhbl9zdGFydDsJLyogc2NhbiBzdGFy
dCAqLworCXN0cnVjdCB0aW1lb3V0X3Rhc2sJc3Nfc2Nhbl9jdXJjaGFuOyAgLyog
c2NhbiBleGVjdXRpb24gKi8KIH07CiAjZGVmaW5lCVNDQU5fUFJJVkFURShzcykJ
KChzdHJ1Y3Qgc2Nhbl9zdGF0ZSAqKSBzcykKIApAQCAtOTgsOCArOTksMTIgQEAK
IAogc3RhdGljCXZvaWQgc2Nhbl9jdXJjaGFuKHN0cnVjdCBpZWVlODAyMTFfc2Nh
bl9zdGF0ZSAqLCB1bnNpZ25lZCBsb25nKTsKIHN0YXRpYwl2b2lkIHNjYW5fbWlu
ZHdlbGwoc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICopOwotc3RhdGljCXZv
aWQgc2Nhbl9zaWduYWwodm9pZCAqKTsKLXN0YXRpYwl2b2lkIHNjYW5fdGFzayh2
b2lkICosIGludCk7CitzdGF0aWMJdm9pZCBzY2FuX3NpZ25hbChzdHJ1Y3QgaWVl
ZTgwMjExX3NjYW5fc3RhdGUgKiwgaW50KTsKK3N0YXRpYwl2b2lkIHNjYW5fc2ln
bmFsX2xvY2tlZChzdHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKiwgaW50KTsK
K3N0YXRpYwl2b2lkIHNjYW5fc3RhcnQodm9pZCAqLCBpbnQpOworc3RhdGljCXZv
aWQgc2Nhbl9jdXJjaGFuX3Rhc2sodm9pZCAqLCBpbnQpOworc3RhdGljCXZvaWQg
c2Nhbl9lbmQoc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICosIGludCk7Citz
dGF0aWMJdm9pZCBzY2FuX2RvbmUoc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRl
ICosIGludCk7CiAKIE1BTExPQ19ERUZJTkUoTV84MDIxMV9TQ0FOLCAiODAyMTFz
Y2FuIiwgIjgwMi4xMSBzY2FuIHN0YXRlIik7CiAKQEAgLTEwOSwxMiArMTE0LDEw
IEBACiAJc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9IGljLT5pY19z
Y2FuOwogCiAJaWYgKHNzICE9IE5VTEwpIHsKLQkJSUVFRTgwMjExX0xPQ0soaWMp
OwotCQlTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgfD0gSVNDQU5fQUJPUlQ7
Ci0JCXNjYW5fc2lnbmFsKHNzKTsKLQkJSUVFRTgwMjExX1VOTE9DSyhpYyk7Ci0J
CWllZWU4MDIxMV9kcmFpbnRhc2soaWMsICZTQ0FOX1BSSVZBVEUoc3MpLT5zc19z
Y2FuX3Rhc2spOwotCQljYWxsb3V0X2RyYWluKCZTQ0FOX1BSSVZBVEUoc3MpLT5z
c19zY2FuX3RpbWVyKTsKKwkJc2Nhbl9zaWduYWwoc3MsIElTQ0FOX0FCT1JUKTsK
KwkJaWVlZTgwMjExX2RyYWludGFzayhpYywgJlNDQU5fUFJJVkFURShzcyktPnNz
X3NjYW5fc3RhcnQpOworCQl0YXNrcXVldWVfZHJhaW5fdGltZW91dChpYy0+aWNf
dHEsCisJCSAgICAmU0NBTl9QUklWQVRFKHNzKS0+c3Nfc2Nhbl9jdXJjaGFuKTsK
IAkJS0FTU0VSVCgoaWMtPmljX2ZsYWdzICYgSUVFRTgwMjExX0ZfU0NBTikgPT0g
MCwKIAkJICAgICgic2NhbiBzdGlsbCBydW5uaW5nIikpOwogCkBAIC0xNDgsMTYg
KzE1MSwxMyBAQAogaWVlZTgwMjExX3N3c2Nhbl92ZGV0YWNoKHN0cnVjdCBpZWVl
ODAyMTF2YXAgKnZhcCkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZh
cC0+aXZfaWM7Ci0Jc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzczsKKwlz
dHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKnNzID0gaWMtPmljX3NjYW47CiAK
IAlJRUVFODAyMTFfTE9DS19BU1NFUlQoaWMpOwotCXNzID0gaWMtPmljX3NjYW47
Ci0JaWYgKHNzICE9IE5VTEwgJiYgc3MtPnNzX3ZhcCA9PSB2YXApIHsKLQkJaWYg
KGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pIHsKLQkJCVNDQU5fUFJJ
VkFURShzcyktPnNzX2lmbGFncyB8PSBJU0NBTl9BQk9SVDsKLQkJCXNjYW5fc2ln
bmFsKHNzKTsKLQkJfQotCX0KKworCWlmIChzcyAhPSBOVUxMICYmIHNzLT5zc192
YXAgPT0gdmFwICYmCisJICAgIChpYy0+aWNfZmxhZ3MgJiBJRUVFODAyMTFfRl9T
Q0FOKSkKKwkJc2Nhbl9zaWduYWxfbG9ja2VkKHNzLCBJU0NBTl9BQk9SVCk7CiB9
CiAKIHN0YXRpYyB2b2lkCkBAIC0yMzYsNyArMjM2LDcgQEAKIAkJCWljLT5pY19m
bGFncyB8PSBJRUVFODAyMTFfRl9TQ0FOOwogCiAJCQkvKiBTdGFydCBzY2FuIHRh
c2sgKi8KLQkJCWllZWU4MDIxMV9ydW50YXNrKGljLCAmU0NBTl9QUklWQVRFKHNz
KS0+c3Nfc2Nhbl90YXNrKTsKKwkJCWllZWU4MDIxMV9ydW50YXNrKGljLCAmU0NB
Tl9QUklWQVRFKHNzKS0+c3Nfc2Nhbl9zdGFydCk7CiAJCX0KIAkJcmV0dXJuIDE7
CiAJfSBlbHNlIHsKQEAgLTQxMSw3ICs0MTEsOCBAQAogCQkJc3MtPnNzX21heGR3
ZWxsID0gZHVyYXRpb247CiAJCQlpYy0+aWNfZmxhZ3MgfD0gSUVFRTgwMjExX0Zf
U0NBTjsKIAkJCWljLT5pY19mbGFnc19leHQgfD0gSUVFRTgwMjExX0ZFWFRfQkdT
Q0FOOwotCQkJaWVlZTgwMjExX3J1bnRhc2soaWMsICZTQ0FOX1BSSVZBVEUoc3Mp
LT5zc19zY2FuX3Rhc2spOworCQkJaWVlZTgwMjExX3J1bnRhc2soaWMsCisJCQkg
ICAgJlNDQU5fUFJJVkFURShzcyktPnNzX3NjYW5fc3RhcnQpOwogCQl9IGVsc2Ug
ewogCQkJLyogWFhYIG1zZytzdGF0ICovCiAJCX0KQEAgLTQyNiwxMSArNDI3LDgg
QEAKIAlyZXR1cm4gKGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pOwog
fQogCi0vKgotICogQ2FuY2VsIGFueSBzY2FuIGN1cnJlbnRseSBnb2luZyBvbiBm
b3IgdGhlIHNwZWNpZmllZCB2YXAuCi0gKi8KIHN0YXRpYyB2b2lkCi1pZWVlODAy
MTFfc3dzY2FuX2NhbmNlbF9zY2FuKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkK
K2NhbmNlbF9zY2FuKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgaW50IGFueSwg
Y29uc3QgY2hhciAqZnVuYykKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9
IHZhcC0+aXZfaWM7CiAJc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9
IGljLT5pY19zY2FuOwpAQCAtNDM3LDIyICs0MzUsMjEgQEAKIAogCUlFRUU4MDIx
MV9MT0NLKGljKTsKIAlpZiAoKGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1ND
QU4pICYmCi0JICAgIHNzLT5zc192YXAgPT0gdmFwICYmCisJICAgIChhbnkgfHwg
c3MtPnNzX3ZhcCA9PSB2YXApICYmCiAJICAgIChTQ0FOX1BSSVZBVEUoc3MpLT5z
c19pZmxhZ3MgJiBJU0NBTl9DQU5DRUwpID09IDApIHsKIAkJSUVFRTgwMjExX0RQ
UklOVEYodmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sCi0JCSAgICAiJXM6IGNhbmNl
bCAlcyBzY2FuXG4iLCBfX2Z1bmNfXywKKwkJICAgICIlczogY2FuY2VsICVzIHNj
YW5cbiIsIGZ1bmMsCiAJCSAgICBzcy0+c3NfZmxhZ3MgJiBJRUVFODAyMTFfU0NB
Tl9BQ1RJVkUgPwogCQkJImFjdGl2ZSIgOiAicGFzc2l2ZSIpOwogCi0JCS8qIGNs
ZWFyIGJnIHNjYW4gTk9QSUNLIGFuZCBtYXJrIGNhbmNlbCByZXF1ZXN0ICovCisJ
CS8qIGNsZWFyIGJnIHNjYW4gTk9QSUNLICovCiAJCXNzLT5zc19mbGFncyAmPSB+
SUVFRTgwMjExX1NDQU5fTk9QSUNLOwotCQlTQ0FOX1BSSVZBVEUoc3MpLT5zc19p
ZmxhZ3MgfD0gSVNDQU5fQ0FOQ0VMOwotCQkvKiB3YWtlIHVwIHRoZSBzY2FuIHRh
c2sgKi8KLQkJc2Nhbl9zaWduYWwoc3MpOworCQkvKiBtYXJrIGNhbmNlbCByZXF1
ZXN0IGFuZCB3YWtlIHVwIHRoZSBzY2FuIHRhc2sgKi8KKwkJc2Nhbl9zaWduYWxf
bG9ja2VkKHNzLCBJU0NBTl9DQU5DRUwpOwogCX0gZWxzZSB7CiAJCUlFRUU4MDIx
MV9EUFJJTlRGKHZhcCwgSUVFRTgwMjExX01TR19TQ0FOLAogCQkgICAgIiVzOiBj
YWxsZWQ7IEZfU0NBTj0lZCwgdmFwPSVzLCBDQU5DRUw9JWRcbiIsCi0JCSAgICAg
ICAgX19mdW5jX18sCisJCQlmdW5jLAogCQkJISEgKGljLT5pY19mbGFncyAmIElF
RUU4MDIxMV9GX1NDQU4pLAogCQkJKHNzLT5zc192YXAgPT0gdmFwID8gIm1hdGNo
IiA6ICJub21hdGNoIiksCiAJCQkhISAoU0NBTl9QUklWQVRFKHNzKS0+c3NfaWZs
YWdzICYgSVNDQU5fQ0FOQ0VMKSk7CkBAIC00NjEsNzQgKzQ1OCw1NyBAQAogfQog
CiAvKgorICogQ2FuY2VsIGFueSBzY2FuIGN1cnJlbnRseSBnb2luZyBvbiBmb3Ig
dGhlIHNwZWNpZmllZCB2YXAuCisgKi8KK3N0YXRpYyB2b2lkCitpZWVlODAyMTFf
c3dzY2FuX2NhbmNlbF9zY2FuKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKK3sK
KwljYW5jZWxfc2Nhbih2YXAsIDAsIF9fZnVuY19fKTsKK30KKworLyoKICAqIENh
bmNlbCBhbnkgc2NhbiBjdXJyZW50bHkgZ29pbmcgb24uCiAgKi8KIHN0YXRpYyB2
b2lkCiBpZWVlODAyMTFfc3dzY2FuX2NhbmNlbF9hbnlzY2FuKHN0cnVjdCBpZWVl
ODAyMTF2YXAgKnZhcCkKIHsKLQlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZh
cC0+aXZfaWM7Ci0Jc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9IGlj
LT5pY19zY2FuOwotCi0JSUVFRTgwMjExX0xPQ0soaWMpOwotCWlmICgoaWMtPmlj
X2ZsYWdzICYgSUVFRTgwMjExX0ZfU0NBTikgJiYKLQkgICAgKFNDQU5fUFJJVkFU
RShzcyktPnNzX2lmbGFncyAmIElTQ0FOX0NBTkNFTCkgPT0gMCkgewotCQlJRUVF
ODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwKLQkJICAgICIl
czogY2FuY2VsICVzIHNjYW5cbiIsIF9fZnVuY19fLAotCQkgICAgc3MtPnNzX2Zs
YWdzICYgSUVFRTgwMjExX1NDQU5fQUNUSVZFID8KLQkJCSJhY3RpdmUiIDogInBh
c3NpdmUiKTsKLQotCQkvKiBjbGVhciBiZyBzY2FuIE5PUElDSyBhbmQgbWFyayBj
YW5jZWwgcmVxdWVzdCAqLwotCQlzcy0+c3NfZmxhZ3MgJj0gfklFRUU4MDIxMV9T
Q0FOX05PUElDSzsKLQkJU0NBTl9QUklWQVRFKHNzKS0+c3NfaWZsYWdzIHw9IElT
Q0FOX0NBTkNFTDsKLQkJLyogd2FrZSB1cCB0aGUgc2NhbiB0YXNrICovCi0JCXNj
YW5fc2lnbmFsKHNzKTsKLQl9IGVsc2UgewotCQlJRUVFODAyMTFfRFBSSU5URih2
YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwKLQkJICAgICIlczogY2FsbGVkOyBGX1ND
QU49JWQsIHZhcD0lcywgQ0FOQ0VMPSVkXG4iLAotCQkgICAgICAgIF9fZnVuY19f
LAotCQkJISEgKGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pLAotCQkJ
KHNzLT5zc192YXAgPT0gdmFwID8gIm1hdGNoIiA6ICJub21hdGNoIiksCi0JCQkh
ISAoU0NBTl9QUklWQVRFKHNzKS0+c3NfaWZsYWdzICYgSVNDQU5fQ0FOQ0VMKSk7
Ci0JfQotCUlFRUU4MDIxMV9VTkxPQ0soaWMpOworCWNhbmNlbF9zY2FuKHZhcCwg
MSwgX19mdW5jX18pOwogfQogCiAvKgotICogUHVibGljIGFjY2VzcyB0byBzY2Fu
X25leHQgZm9yIGRyaXZlcnMgdGhhdCBtYW5hZ2UKLSAqIHNjYW5uaW5nIHRoZW1z
ZWx2ZXMgKGUuZy4gZm9yIGZpcm13YXJlLWJhc2VkIGRldmljZXMpLgorICogTWFu
dWFsbHkgc3dpdGNoIHRvIHRoZSBuZXh0IGNoYW5uZWwgaW4gdGhlIGNoYW5uZWwg
bGlzdC4KKyAqIFByb3ZpZGVkIGZvciBkcml2ZXJzIHRoYXQgbWFuYWdlIHNjYW5u
aW5nIHRoZW1zZWx2ZXMKKyAqIChlLmcuIGZvciBmaXJtd2FyZS1iYXNlZCBkZXZp
Y2VzKS4KICAqLwogc3RhdGljIHZvaWQKIGllZWU4MDIxMV9zd3NjYW5fc2Nhbl9u
ZXh0KHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKIHsKLQlzdHJ1Y3QgaWVlZTgw
MjExY29tICppYyA9IHZhcC0+aXZfaWM7Ci0Jc3RydWN0IGllZWU4MDIxMV9zY2Fu
X3N0YXRlICpzcyA9IGljLT5pY19zY2FuOworCXN0cnVjdCBpZWVlODAyMTFfc2Nh
bl9zdGF0ZSAqc3MgPSB2YXAtPml2X2ljLT5pY19zY2FuOwogCiAJSUVFRTgwMjEx
X0RQUklOVEYodmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sICIlczogY2FsbGVkXG4i
LCBfX2Z1bmNfXyk7CiAKIAkvKiB3YWtlIHVwIHRoZSBzY2FuIHRhc2sgKi8KLQlJ
RUVFODAyMTFfTE9DSyhpYyk7Ci0Jc2Nhbl9zaWduYWwoc3MpOwotCUlFRUU4MDIx
MV9VTkxPQ0soaWMpOworCXNjYW5fc2lnbmFsKHNzLCAwKTsKIH0KIAogLyoKLSAq
IFB1YmxpYyBhY2Nlc3MgdG8gc2Nhbl9uZXh0IGZvciBkcml2ZXJzIHRoYXQgYXJl
IG5vdCBhYmxlIHRvIHNjYW4gc2luZ2xlCi0gKiBjaGFubmVscyAoZS5nLiBmb3Ig
ZmlybXdhcmUtYmFzZWQgZGV2aWNlcykuCisgKiBNYW51YWxseSBzdG9wIGEgc2Nh
biB0aGF0IGlzIGN1cnJlbnRseSBydW5uaW5nLgorICogUHJvdmlkZWQgZm9yIGRy
aXZlcnMgdGhhdCBhcmUgbm90IGFibGUgdG8gc2NhbiBzaW5nbGUgY2hhbm5lbHMK
KyAqIChlLmcuIGZvciBmaXJtd2FyZS1iYXNlZCBkZXZpY2VzKS4KICAqLwogc3Rh
dGljIHZvaWQKIGllZWU4MDIxMV9zd3NjYW5fc2Nhbl9kb25lKHN0cnVjdCBpZWVl
ODAyMTF2YXAgKnZhcCkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZh
cC0+aXZfaWM7Ci0Jc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzczsKKwlz
dHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKnNzID0gaWMtPmljX3NjYW47CiAK
IAlJRUVFODAyMTFfTE9DS19BU1NFUlQoaWMpOwogCi0Jc3MgPSBpYy0+aWNfc2Nh
bjsKLQlzY2FuX3NpZ25hbChzcyk7CisJc2Nhbl9zaWduYWxfbG9ja2VkKHNzLCAw
KTsKIH0KIAogLyoKLSAqIFByb2JlIHRoZSBjdXJlbnQgY2hhbm5lbCwgaWYgYWxs
b3dlZCwgd2hpbGUgc2Nhbm5pbmcuCisgKiBQcm9iZSB0aGUgY3VycmVudCBjaGFu
bmVsLCBpZiBhbGxvd2VkLCB3aGlsZSBzY2FubmluZy4KICAqIElmIHRoZSBjaGFu
bmVsIGlzIG5vdCBtYXJrZWQgcGFzc2l2ZS1vbmx5IHRoZW4gc2VuZAogICogYSBw
cm9iZSByZXF1ZXN0IGltbWVkaWF0ZWx5LiAgT3RoZXJ3aXNlIG1hcmsgc3RhdGUg
YW5kCiAgKiBsaXN0ZW4gZm9yIGJlYWNvbnMgb24gdGhlIGNoYW5uZWw7IGlmIHdl
IHJlY2VpdmUgc29tZXRoaW5nCkBAIC01NjgsMjggKzU0OCw0OCBAQAogc2Nhbl9j
dXJjaGFuKHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSAqc3MsIHVuc2lnbmVk
IGxvbmcgbWF4ZHdlbGwpCiB7CiAJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwICA9
IHNzLT5zc192YXA7CisJc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSBzcy0+c3Nf
aWM7CiAKIAlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NB
TiwKIAkgICAgIiVzOiBjYWxsaW5nOyBtYXhkd2VsbD0lbHVcbiIsCiAJICAgIF9f
ZnVuY19fLAogCSAgICBtYXhkd2VsbCk7Ci0JSUVFRTgwMjExX0xPQ0sodmFwLT5p
dl9pYyk7CisJSUVFRTgwMjExX0xPQ0soaWMpOwogCWlmIChzcy0+c3NfZmxhZ3Mg
JiBJRUVFODAyMTFfU0NBTl9BQ1RJVkUpCiAJCWllZWU4MDIxMV9wcm9iZV9jdXJj
aGFuKHZhcCwgMCk7Ci0JY2FsbG91dF9yZXNldCgmU0NBTl9QUklWQVRFKHNzKS0+
c3Nfc2Nhbl90aW1lciwKLQkgICAgbWF4ZHdlbGwsIHNjYW5fc2lnbmFsLCBzcyk7
Ci0JSUVFRTgwMjExX1VOTE9DSyh2YXAtPml2X2ljKTsKKwl0YXNrcXVldWVfZW5x
dWV1ZV90aW1lb3V0KGljLT5pY190cSwKKwkgICAgJlNDQU5fUFJJVkFURShzcykt
PnNzX3NjYW5fY3VyY2hhbiwgbWF4ZHdlbGwpOworCUlFRUU4MDIxMV9VTkxPQ0so
aWMpOwogfQogCiBzdGF0aWMgdm9pZAotc2Nhbl9zaWduYWwodm9pZCAqYXJnKQor
c2Nhbl9zaWduYWwoc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcywgaW50
IGlmbGFncykKIHsKLQlzdHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKnNzID0g
KHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSAqKSBhcmc7CisJc3RydWN0IGll
ZWU4MDIxMWNvbSAqaWMgPSBzcy0+c3NfaWM7CiAKLQlJRUVFODAyMTFfTE9DS19B
U1NFUlQoc3MtPnNzX2ljKTsKLQljdl9zaWduYWwoJlNDQU5fUFJJVkFURShzcykt
PnNzX3NjYW5fY3YpOworCUlFRUU4MDIxMV9VTkxPQ0tfQVNTRVJUKGljKTsKKwor
CUlFRUU4MDIxMV9MT0NLKGljKTsKKwlzY2FuX3NpZ25hbF9sb2NrZWQoc3MsIGlm
bGFncyk7CisJSUVFRTgwMjExX1VOTE9DSyhpYyk7CiB9CiAKK3N0YXRpYyB2b2lk
CitzY2FuX3NpZ25hbF9sb2NrZWQoc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRl
ICpzcywgaW50IGlmbGFncykKK3sKKwlzdHJ1Y3Qgc2Nhbl9zdGF0ZSAqc3NfcHJp
diA9IFNDQU5fUFJJVkFURShzcyk7CisJc3RydWN0IHRpbWVvdXRfdGFzayAqc2Nh
bl90YXNrID0gJnNzX3ByaXYtPnNzX3NjYW5fY3VyY2hhbjsKKwlzdHJ1Y3QgaWVl
ZTgwMjExY29tICppYyA9IHNzLT5zc19pYzsKKworCUlFRUU4MDIxMV9MT0NLX0FT
U0VSVChpYyk7CisKKwlzc19wcml2LT5zc19pZmxhZ3MgfD0gaWZsYWdzOworCWlm
IChzc19wcml2LT5zc19pZmxhZ3MgJiBJU0NBTl9SVU5OSU5HKSB7CisJCWlmICh0
YXNrcXVldWVfY2FuY2VsX3RpbWVvdXQoaWMtPmljX3RxLCBzY2FuX3Rhc2ssIE5V
TEwpID09IDApCisJCQl0YXNrcXVldWVfZW5xdWV1ZV90aW1lb3V0KGljLT5pY190
cSwgc2Nhbl90YXNrLCAwKTsKKwl9Cit9CisKIC8qCiAgKiBIYW5kbGUgbWluZHdl
bGwgcmVxdWlyZW1lbnRzIGNvbXBsZXRlZDsgaW5pdGlhdGUgYSBjaGFubmVsCiAg
KiBjaGFuZ2UgdG8gdGhlIG5leHQgY2hhbm5lbCBhc2FwLgpAQCAtNTk3LDM4ICs1
OTcsMzUgQEAKIHN0YXRpYyB2b2lkCiBzY2FuX21pbmR3ZWxsKHN0cnVjdCBpZWVl
ODAyMTFfc2Nhbl9zdGF0ZSAqc3MpCiB7Ci0Jc3RydWN0IGllZWU4MDIxMWNvbSAq
aWMgPSBzcy0+c3NfaWM7CisJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gc3Mt
PnNzX3ZhcDsKIAotCUlFRUU4MDIxMV9EUFJJTlRGKHNzLT5zc192YXAsIElFRUU4
MDIxMV9NU0dfU0NBTiwgIiVzOiBjYWxsZWRcbiIsIF9fZnVuY19fKTsKKwlJRUVF
ODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwgIiVzOiBjYWxs
ZWRcbiIsIF9fZnVuY19fKTsKIAotCUlFRUU4MDIxMV9MT0NLKGljKTsKLQlzY2Fu
X3NpZ25hbChzcyk7Ci0JSUVFRTgwMjExX1VOTE9DSyhpYyk7CisJc2Nhbl9zaWdu
YWwoc3MsIDApOwogfQogCiBzdGF0aWMgdm9pZAotc2Nhbl90YXNrKHZvaWQgKmFy
ZywgaW50IHBlbmRpbmcpCitzY2FuX3N0YXJ0KHZvaWQgKmFyZywgaW50IHBlbmRp
bmcpCiB7CiAjZGVmaW5lCUlTQ0FOX1JFUAkoSVNDQU5fTUlORFdFTEwgfCBJU0NB
Tl9ESVNDQVJEKQogCXN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSAqc3MgPSAo
c3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICopIGFyZzsKKwlzdHJ1Y3Qgc2Nh
bl9zdGF0ZSAqc3NfcHJpdiA9IFNDQU5fUFJJVkFURShzcyk7CiAJc3RydWN0IGll
ZWU4MDIxMXZhcCAqdmFwID0gc3MtPnNzX3ZhcDsKIAlzdHJ1Y3QgaWVlZTgwMjEx
Y29tICppYyA9IHNzLT5zc19pYzsKLQlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwg
KmNoYW47Ci0JdW5zaWduZWQgbG9uZyBtYXhkd2VsbCwgc2NhbmVuZDsKLQlpbnQg
c2NhbmRvbmUgPSAwOwogCiAJSUVFRTgwMjExX0xPQ0soaWMpOwogCWlmICh2YXAg
PT0gTlVMTCB8fCAoaWMtPmljX2ZsYWdzICYgSUVFRTgwMjExX0ZfU0NBTikgPT0g
MCB8fAotCSAgICAoU0NBTl9QUklWQVRFKHNzKS0+c3NfaWZsYWdzICYgSVNDQU5f
QUJPUlQpKSB7CisJICAgIChzc19wcml2LT5zc19pZmxhZ3MgJiBJU0NBTl9BQk9S
VCkpIHsKIAkJLyogQ2FuY2VsbGVkIGJlZm9yZSB3ZSBzdGFydGVkICovCi0JCWdv
dG8gZG9uZTsKKwkJc2Nhbl9kb25lKHNzLCAwKTsKKwkJcmV0dXJuOwogCX0KIAog
CWlmIChzcy0+c3NfbmV4dCA9PSBzcy0+c3NfbGFzdCkgewogCQlJRUVFODAyMTFf
RFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwKIAkJCSIlczogbm8gY2hh
bm5lbHMgdG8gc2NhblxuIiwgX19mdW5jX18pOwotCQlzY2FuZG9uZSA9IDE7Ci0J
CWdvdG8gZG9uZTsKKwkJc2Nhbl9kb25lKHNzLCAxKTsKKwkJcmV0dXJuOwogCX0K
IAogCWlmICh2YXAtPml2X29wbW9kZSA9PSBJRUVFODAyMTFfTV9TVEEgJiYKQEAg
LTYzNiwxMTAgKzYzMywxMzQgQEAKIAkJaWYgKCh2YXAtPml2X2Jzcy0+bmlfZmxh
Z3MgJiBJRUVFODAyMTFfTk9ERV9QV1JfTUdUKSA9PSAwKSB7CiAJCQkvKiBFbmFi
bGUgc3RhdGlvbiBwb3dlciBzYXZlIG1vZGUgKi8KIAkJCXZhcC0+aXZfc3RhX3Bz
KHZhcCwgMSk7Ci0JCQkvKgotCQkJICogVXNlIGFuIDFtcyBkZWxheSBzbyB0aGUg
bnVsbCBkYXRhIGZyYW1lIGhhcyBhIGNoYW5jZQotCQkJICogdG8gZ28gb3V0Lgot
CQkJICogWFhYIFNob3VsZCB1c2UgTV9UWENCIG1lY2hhbmlzbSB0byBlbGltaW5h
dGUgdGhpcy4KLQkJCSAqLwotCQkJY3ZfdGltZWR3YWl0KCZTQ0FOX1BSSVZBVEUo
c3MpLT5zc19zY2FuX2N2LAotCQkJICAgIElFRUU4MDIxMV9MT0NLX09CSihpYyks
IG1zZWNzX3RvX3RpY2tzKDEpKTsKLQkJCWlmIChTQ0FOX1BSSVZBVEUoc3MpLT5z
c19pZmxhZ3MgJiBJU0NBTl9BQk9SVCkKLQkJCQlnb3RvIGRvbmU7CisJCQkvKiBX
YWl0IHVudGlsIG51bGwgZGF0YSBmcmFtZSB3aWxsIGJlIEFDSydlZCAqLworCQkJ
bXR4X3NsZWVwKHZhcCwgSUVFRTgwMjExX0xPQ0tfT0JKKGljKSwgUENBVENILAor
CQkJICAgICJzdGFfcHMiLCBtc2Vjc190b190aWNrcygxMCkpOworCQkJaWYgKHNz
X3ByaXYtPnNzX2lmbGFncyAmIElTQ0FOX0FCT1JUKSB7CisJCQkJc2Nhbl9kb25l
KHNzLCAwKTsKKwkJCQlyZXR1cm47CisJCQl9CiAJCX0KIAl9CiAKLQlzY2FuZW5k
ID0gdGlja3MgKyBTQ0FOX1BSSVZBVEUoc3MpLT5zc19kdXJhdGlvbjsKKwlzc19w
cml2LT5zc19zY2FuZW5kID0gdGlja3MgKyBzc19wcml2LT5zc19kdXJhdGlvbjsK
IAogCS8qIFhYWCBzY2FuIHN0YXRlIGNhbiBjaGFuZ2UhIFJlLXZhbGlkYXRlIHNj
YW4gc3RhdGUhICovCiAKIAlJRUVFODAyMTFfVU5MT0NLKGljKTsKKwogCWljLT5p
Y19zY2FuX3N0YXJ0KGljKTsJCS8qIG5vdGlmeSBkcml2ZXIgKi8KKworCXNjYW5f
Y3VyY2hhbl90YXNrKHNzLCAwKTsKK30KKworc3RhdGljIHZvaWQKK3NjYW5fY3Vy
Y2hhbl90YXNrKHZvaWQgKmFyZywgaW50IHBlbmRpbmcpCit7CisJc3RydWN0IGll
ZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9IGFyZzsKKwlzdHJ1Y3Qgc2Nhbl9zdGF0
ZSAqc3NfcHJpdiA9IFNDQU5fUFJJVkFURShzcyk7CisJc3RydWN0IGllZWU4MDIx
MXZhcCAqdmFwID0gc3MtPnNzX3ZhcDsKKwlzdHJ1Y3QgaWVlZTgwMjExY29tICpp
YyA9IHNzLT5zc19pYzsKKwlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW47
CisJdW5zaWduZWQgbG9uZyBtYXhkd2VsbDsKKwlpbnQgc2NhbmRvbmU7CisKIAlJ
RUVFODAyMTFfTE9DSyhpYyk7CitlbmQ6CisJc2NhbmRvbmUgPSAoc3MtPnNzX25l
eHQgPj0gc3MtPnNzX2xhc3QpIHx8CisJICAgIChzc19wcml2LT5zc19pZmxhZ3Mg
JiBJU0NBTl9DQU5DRUwpICE9IDA7CiAKLQlmb3IgKDs7KSB7CisJSUVFRTgwMjEx
X0RQUklOVEYodmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sCisJICAgICIlczogbG9v
cCBzdGFydDsgc2NhbmRvbmU9JWRcbiIsCisJICAgIF9fZnVuY19fLAorCSAgICBz
Y2FuZG9uZSk7CiAKLQkJc2NhbmRvbmUgPSAoc3MtPnNzX25leHQgPj0gc3MtPnNz
X2xhc3QpIHx8Ci0JCSAgICAoU0NBTl9QUklWQVRFKHNzKS0+c3NfaWZsYWdzICYg
SVNDQU5fQ0FOQ0VMKSAhPSAwOworCWlmIChzY2FuZG9uZSB8fCAoc3MtPnNzX2Zs
YWdzICYgSUVFRTgwMjExX1NDQU5fR09UUElDSykgfHwKKwkgICAgKHNzX3ByaXYt
PnNzX2lmbGFncyAmIElTQ0FOX0FCT1JUKSB8fAorCSAgICAgdGltZV9hZnRlcih0
aWNrcyArIHNzLT5zc19taW5kd2VsbCwgc3NfcHJpdi0+c3Nfc2NhbmVuZCkpIHsK
KwkJc3NfcHJpdi0+c3NfaWZsYWdzICY9IH5JU0NBTl9SVU5OSU5HOworCQlzY2Fu
X2VuZChzcywgc2NhbmRvbmUpOworCQlyZXR1cm47CisJfSBlbHNlCisJCXNzX3By
aXYtPnNzX2lmbGFncyB8PSBJU0NBTl9SVU5OSU5HOwogCi0JCUlFRUU4MDIxMV9E
UFJJTlRGKHZhcCwgSUVFRTgwMjExX01TR19TQ0FOLAotCQkgICAgIiVzOiBsb29w
IHN0YXJ0OyBzY2FuZG9uZT0lZFxuIiwKLQkJICAgIF9fZnVuY19fLAotCQkgICAg
c2NhbmRvbmUpOworCWNoYW4gPSBzcy0+c3NfY2hhbnNbc3MtPnNzX25leHQrK107
CiAKLQkJaWYgKHNjYW5kb25lIHx8IChzcy0+c3NfZmxhZ3MgJiBJRUVFODAyMTFf
U0NBTl9HT1RQSUNLKSB8fAotCQkgICAgKFNDQU5fUFJJVkFURShzcyktPnNzX2lm
bGFncyAmIElTQ0FOX0FCT1JUKSB8fAotCQkgICAgIHRpbWVfYWZ0ZXIodGlja3Mg
KyBzcy0+c3NfbWluZHdlbGwsIHNjYW5lbmQpKQotCQkJYnJlYWs7CisJLyoKKwkg
KiBXYXRjaCBmb3IgdHJ1bmNhdGlvbiBkdWUgdG8gdGhlIHNjYW4gZW5kIHRpbWUu
CisJICovCisJaWYgKHRpbWVfYWZ0ZXIodGlja3MgKyBzcy0+c3NfbWF4ZHdlbGws
IHNzX3ByaXYtPnNzX3NjYW5lbmQpKQorCQltYXhkd2VsbCA9IHNzX3ByaXYtPnNz
X3NjYW5lbmQgLSB0aWNrczsKKwllbHNlCisJCW1heGR3ZWxsID0gc3MtPnNzX21h
eGR3ZWxsOwogCi0JCWNoYW4gPSBzcy0+c3NfY2hhbnNbc3MtPnNzX25leHQrK107
CisJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sCisJ
ICAgICIlczogY2hhbiAlM2QlYyAtPiAlM2QlYyBbJXMsIGR3ZWxsIG1pbiAlbHVt
cyBtYXggJWx1bXNdXG4iLAorCSAgICBfX2Z1bmNfXywKKwkgICAgaWVlZTgwMjEx
X2NoYW4yaWVlZShpYywgaWMtPmljX2N1cmNoYW4pLAorCSAgICBpZWVlODAyMTFf
Y2hhbm5lbF90eXBlX2NoYXIoaWMtPmljX2N1cmNoYW4pLAorCSAgICBpZWVlODAy
MTFfY2hhbjJpZWVlKGljLCBjaGFuKSwKKwkgICAgaWVlZTgwMjExX2NoYW5uZWxf
dHlwZV9jaGFyKGNoYW4pLAorCSAgICAoc3MtPnNzX2ZsYWdzICYgSUVFRTgwMjEx
X1NDQU5fQUNUSVZFKSAmJgorCQkoY2hhbi0+aWNfZmxhZ3MgJiBJRUVFODAyMTFf
Q0hBTl9QQVNTSVZFKSA9PSAwID8KKwkJImFjdGl2ZSIgOiAicGFzc2l2ZSIsCisJ
ICAgIHRpY2tzX3RvX21zZWNzKHNzLT5zc19taW5kd2VsbCksIHRpY2tzX3RvX21z
ZWNzKG1heGR3ZWxsKSk7CiAKLQkJLyoKLQkJICogV2F0Y2ggZm9yIHRydW5jYXRp
b24gZHVlIHRvIHRoZSBzY2FuIGVuZCB0aW1lLgotCQkgKi8KLQkJaWYgKHRpbWVf
YWZ0ZXIodGlja3MgKyBzcy0+c3NfbWF4ZHdlbGwsIHNjYW5lbmQpKQotCQkJbWF4
ZHdlbGwgPSBzY2FuZW5kIC0gdGlja3M7Ci0JCWVsc2UKLQkJCW1heGR3ZWxsID0g
c3MtPnNzX21heGR3ZWxsOworCS8qCisJICogUG90ZW50aWFsbHkgY2hhbmdlIGNo
YW5uZWwgYW5kIHBoeSBtb2RlLgorCSAqLworCWljLT5pY19jdXJjaGFuID0gY2hh
bjsKKwlpYy0+aWNfcnQgPSBpZWVlODAyMTFfZ2V0X3JhdGV0YWJsZShjaGFuKTsK
KwlJRUVFODAyMTFfVU5MT0NLKGljKTsKKwkvKgorCSAqIFBlcmZvcm0gdGhlIGNo
YW5uZWwgY2hhbmdlIGFuZCBzY2FuIHVubG9ja2VkIHNvIHRoZSBkcml2ZXIKKwkg
KiBtYXkgc2xlZXAuIE9uY2Ugc2V0X2NoYW5uZWwgcmV0dXJucyB0aGUgaGFyZHdh
cmUgaGFzCisJICogY29tcGxldGVkIHRoZSBjaGFubmVsIGNoYW5nZS4KKwkgKi8K
KwlpYy0+aWNfc2V0X2NoYW5uZWwoaWMpOworCWllZWU4MDIxMV9yYWRpb3RhcF9j
aGFuX2NoYW5nZShpYyk7CiAKLQkJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVF
ODAyMTFfTVNHX1NDQU4sCi0JCSAgICAiJXM6IGNoYW4gJTNkJWMgLT4gJTNkJWMg
WyVzLCBkd2VsbCBtaW4gJWx1bXMgbWF4ICVsdW1zXVxuIiwKLQkJICAgIF9fZnVu
Y19fLAotCQkgICAgaWVlZTgwMjExX2NoYW4yaWVlZShpYywgaWMtPmljX2N1cmNo
YW4pLAotCQkgICAgaWVlZTgwMjExX2NoYW5uZWxfdHlwZV9jaGFyKGljLT5pY19j
dXJjaGFuKSwKLQkJICAgIGllZWU4MDIxMV9jaGFuMmllZWUoaWMsIGNoYW4pLAot
CQkgICAgaWVlZTgwMjExX2NoYW5uZWxfdHlwZV9jaGFyKGNoYW4pLAotCQkgICAg
KHNzLT5zc19mbGFncyAmIElFRUU4MDIxMV9TQ0FOX0FDVElWRSkgJiYKLQkJCShj
aGFuLT5pY19mbGFncyAmIElFRUU4MDIxMV9DSEFOX1BBU1NJVkUpID09IDAgPwot
CQkJImFjdGl2ZSIgOiAicGFzc2l2ZSIsCi0JCSAgICB0aWNrc190b19tc2Vjcyhz
cy0+c3NfbWluZHdlbGwpLCB0aWNrc190b19tc2VjcyhtYXhkd2VsbCkpOworCS8q
CisJICogU2NhbiBjdXJjaGFuLiAgRHJpdmVycyBmb3IgImludGVsbGlnZW50IGhh
cmR3YXJlIgorCSAqIG92ZXJyaWRlIGljX3NjYW5fY3VyY2hhbiB0byB0ZWxsIHRo
ZSBkZXZpY2UgdG8gZG8KKwkgKiB0aGUgd29yay4gIE90aGVyd2lzZSB3ZSBtYW5h
Z2UgdGhlIHdvcmsgb3Vyc2VsdmVzOworCSAqIHNlbmRpbmcgYSBwcm9iZSByZXF1
ZXN0IChhcyBuZWVkZWQpLCBhbmQgYXJtaW5nIHRoZQorCSAqIHRpbWVvdXQgdG8g
c3dpdGNoIGNoYW5uZWxzIGFmdGVyIG1heGR3ZWxsIHRpY2tzLgorCSAqCisJICog
c2Nhbl9jdXJjaGFuIHNob3VsZCBvbmx5IHBhdXNlIGZvciB0aGUgdGltZSByZXF1
aXJlZCB0bworCSAqIHByZXBhcmUvaW5pdGlhdGUgdGhlIGhhcmR3YXJlIGZvciB0
aGUgc2NhbiAoaWYgYXQgYWxsKS4KKwkgKi8KKwlpYy0+aWNfc2Nhbl9jdXJjaGFu
KHNzLCBtYXhkd2VsbCk7CisJSUVFRTgwMjExX0xPQ0soaWMpOwogCi0JCS8qCi0J
CSAqIFBvdGVudGlhbGx5IGNoYW5nZSBjaGFubmVsIGFuZCBwaHkgbW9kZS4KLQkJ
ICovCi0JCWljLT5pY19jdXJjaGFuID0gY2hhbjsKLQkJaWMtPmljX3J0ID0gaWVl
ZTgwMjExX2dldF9yYXRldGFibGUoY2hhbik7Ci0JCUlFRUU4MDIxMV9VTkxPQ0so
aWMpOwotCQkvKgotCQkgKiBQZXJmb3JtIHRoZSBjaGFubmVsIGNoYW5nZSBhbmQg
c2NhbiB1bmxvY2tlZCBzbyB0aGUgZHJpdmVyCi0JCSAqIG1heSBzbGVlcC4gT25j
ZSBzZXRfY2hhbm5lbCByZXR1cm5zIHRoZSBoYXJkd2FyZSBoYXMKLQkJICogY29t
cGxldGVkIHRoZSBjaGFubmVsIGNoYW5nZS4KLQkJICovCi0JCWljLT5pY19zZXRf
Y2hhbm5lbChpYyk7Ci0JCWllZWU4MDIxMV9yYWRpb3RhcF9jaGFuX2NoYW5nZShp
Yyk7CisJLyogWFhYIHNjYW4gc3RhdGUgY2FuIGNoYW5nZSEgUmUtdmFsaWRhdGUg
c2NhbiBzdGF0ZSEgKi8KIAotCQkvKgotCQkgKiBTY2FuIGN1cmNoYW4uICBEcml2
ZXJzIGZvciAiaW50ZWxsaWdlbnQgaGFyZHdhcmUiCi0JCSAqIG92ZXJyaWRlIGlj
X3NjYW5fY3VyY2hhbiB0byB0ZWxsIHRoZSBkZXZpY2UgdG8gZG8KLQkJICogdGhl
IHdvcmsuICBPdGhlcndpc2Ugd2UgbWFuYWdlIHRoZSB3b3JrIG91dHNlbHZlczsK
LQkJICogc2VuZGluZyBhIHByb2JlIHJlcXVlc3QgKGFzIG5lZWRlZCksIGFuZCBh
cm1pbmcgdGhlCi0JCSAqIHRpbWVvdXQgdG8gc3dpdGNoIGNoYW5uZWxzIGFmdGVy
IG1heGR3ZWxsIHRpY2tzLgotCQkgKgotCQkgKiBzY2FuX2N1cmNoYW4gc2hvdWxk
IG9ubHkgcGF1c2UgZm9yIHRoZSB0aW1lIHJlcXVpcmVkIHRvCi0JCSAqIHByZXBh
cmUvaW5pdGlhdGUgdGhlIGhhcmR3YXJlIGZvciB0aGUgc2NhbiAoaWYgYXQgYWxs
KSwgdGhlCi0JCSAqIGJlbG93IGNvbmR2YXIgaXMgdXNlZCB0byBzbGVlcCBmb3Ig
dGhlIGNoYW5uZWxzIGR3ZWxsIHRpbWUKLQkJICogYW5kIGFsbG93cyBpdCB0byBi
ZSBzaWduYWxsZWQgZm9yIGFib3J0LgotCQkgKi8KLQkJaWMtPmljX3NjYW5fY3Vy
Y2hhbihzcywgbWF4ZHdlbGwpOwotCQlJRUVFODAyMTFfTE9DSyhpYyk7CisJc3Nf
cHJpdi0+c3NfY2hhbm1pbmR3ZWxsID0gdGlja3MgKyBzcy0+c3NfbWluZHdlbGw7
CisJLyogY2xlYXIgbWluZHdlbGwgbG9jayBhbmQgaW5pdGlhbCBjaGFubmVsIGNo
YW5nZSBmbHVzaCAqLworCXNzX3ByaXYtPnNzX2lmbGFncyAmPSB+SVNDQU5fUkVQ
OwogCi0JCS8qIFhYWCBzY2FuIHN0YXRlIGNhbiBjaGFuZ2UhIFJlLXZhbGlkYXRl
IHNjYW4gc3RhdGUhICovCisJaWYgKHNzX3ByaXYtPnNzX2lmbGFncyAmIChJU0NB
Tl9DQU5DRUx8SVNDQU5fQUJPUlQpKQorCQlnb3RvIGVuZDsKIAotCQlTQ0FOX1BS
SVZBVEUoc3MpLT5zc19jaGFubWluZHdlbGwgPSB0aWNrcyArIHNzLT5zc19taW5k
d2VsbDsKLQkJLyogY2xlYXIgbWluZHdlbGwgbG9jayBhbmQgaW5pdGlhbCBjaGFu
bmVsIGNoYW5nZSBmbHVzaCAqLwotCQlTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxh
Z3MgJj0gfklTQ0FOX1JFUDsKKwlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4
MDIxMV9NU0dfU0NBTiwgIiVzOiB3YWl0aW5nXG4iLCBfX2Z1bmNfXyk7CisJSUVF
RTgwMjExX1VOTE9DSyhpYyk7Cit9CiAKLQkJaWYgKChTQ0FOX1BSSVZBVEUoc3Mp
LT5zc19pZmxhZ3MgJiAoSVNDQU5fQ0FOQ0VMfElTQ0FOX0FCT1JUKSkpCi0JCQlj
b250aW51ZTsKK3N0YXRpYyB2b2lkCitzY2FuX2VuZChzdHJ1Y3QgaWVlZTgwMjEx
X3NjYW5fc3RhdGUgKnNzLCBpbnQgc2NhbmRvbmUpCit7CisJc3RydWN0IHNjYW5f
c3RhdGUgKnNzX3ByaXYgPSBTQ0FOX1BSSVZBVEUoc3MpOworCXN0cnVjdCBpZWVl
ODAyMTF2YXAgKnZhcCA9IHNzLT5zc192YXA7CisJc3RydWN0IGllZWU4MDIxMWNv
bSAqaWMgPSBzcy0+c3NfaWM7CiAKLQkJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJ
RUVFODAyMTFfTVNHX1NDQU4sICIlczogd2FpdGluZ1xuIiwgX19mdW5jX18pOwot
CQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZCB0byBzY2FuIHRoZSBuZXh0IGNoYW5u
ZWwgKi8KLQkJY3Zfd2FpdCgmU0NBTl9QUklWQVRFKHNzKS0+c3Nfc2Nhbl9jdiwg
SUVFRTgwMjExX0xPQ0tfT0JKKGljKSk7Ci0JfQorCUlFRUU4MDIxMV9MT0NLX0FT
U0VSVChpYyk7CiAKIAlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9N
U0dfU0NBTiwgIiVzOiBvdXRcbiIsIF9fZnVuY19fKTsKIAotCWlmIChTQ0FOX1BS
SVZBVEUoc3MpLT5zc19pZmxhZ3MgJiBJU0NBTl9BQk9SVCkKLQkJZ290byBkb25l
OworCWlmIChzc19wcml2LT5zc19pZmxhZ3MgJiBJU0NBTl9BQk9SVCkgeworCQlz
Y2FuX2RvbmUoc3MsIHNjYW5kb25lKTsKKwkJcmV0dXJuOworCX0KIAogCUlFRUU4
MDIxMV9VTkxPQ0soaWMpOwogCWljLT5pY19zY2FuX2VuZChpYyk7CQkvKiBub3Rp
ZnkgZHJpdmVyICovCkBAIC03NTAsOCArNzcxLDcgQEAKIAkgKiBTaW5jZSBhIGNh
bmNlbGxhdGlvbiBtYXkgaGF2ZSBvY2N1cmVkIGR1cmluZyBvbmUgb2YgdGhlCiAJ
ICogZHJpdmVyIGNhbGxzICh3aGlsc3QgdW5sb2NrZWQpLCB1cGRhdGUgc2NhbmRv
bmUuCiAJICovCi0JaWYgKHNjYW5kb25lID09IDAgJiYKLQkgICAgKChTQ0FOX1BS
SVZBVEUoc3MpLT5zc19pZmxhZ3MgJiBJU0NBTl9DQU5DRUwpICE9IDApKSB7CisJ
aWYgKHNjYW5kb25lID09IDAgJiYgKHNzX3ByaXYtPnNzX2lmbGFncyAmIElTQ0FO
X0NBTkNFTCkgIT0gMCkgewogCQkvKiBYWFggcHJpbnRmPyAqLwogCQlpZl9wcmlu
dGYodmFwLT5pdl9pZnAsCiAJCSAgICAiJXM6IE9PUFMhIHNjYW4gY2FuY2VsbGVk
IGR1cmluZyBkcml2ZXIgY2FsbCAoMSkhXG4iLApAQCAtNzc2LDcgKzc5Niw3IEBA
CiAJCUlFRUU4MDIxMV9MT0NLKGljKTsKIAl9CiAJLyogY2xlYXIgaW50ZXJuYWwg
ZmxhZ3MgYW5kIGFueSBpbmRpY2F0aW9uIG9mIGEgcGljayAqLwotCVNDQU5fUFJJ
VkFURShzcyktPnNzX2lmbGFncyAmPSB+SVNDQU5fUkVQOworCXNzX3ByaXYtPnNz
X2lmbGFncyAmPSB+SVNDQU5fUkVQOwogCXNzLT5zc19mbGFncyAmPSB+SUVFRTgw
MjExX1NDQU5fR09UUElDSzsKIAogCS8qCkBAIC03ODYsMTUgKzgwNiwxNSBAQAog
CSAqIG5vdGlmeSB0aGUgZHJpdmVyIHRvIGVuZCB0aGUgc2NhbiBhYm92ZSB0byBh
dm9pZCBoYXZpbmcKIAkgKiByeCBmcmFtZXMgYWx0ZXIgdGhlIHNjYW4gY2FuZGlk
YXRlIGxpc3QuCiAJICovCi0JaWYgKChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxh
Z3MgJiBJU0NBTl9DQU5DRUwpID09IDAgJiYKKwlpZiAoKHNzX3ByaXYtPnNzX2lm
bGFncyAmIElTQ0FOX0NBTkNFTCkgPT0gMCAmJgogCSAgICAhc3MtPnNzX29wcy0+
c2Nhbl9lbmQoc3MsIHZhcCkgJiYKIAkgICAgKHNzLT5zc19mbGFncyAmIElFRUU4
MDIxMV9TQ0FOX09OQ0UpID09IDAgJiYKLQkgICAgdGltZV9iZWZvcmUodGlja3Mg
KyBzcy0+c3NfbWluZHdlbGwsIHNjYW5lbmQpKSB7CisJICAgIHRpbWVfYmVmb3Jl
KHRpY2tzICsgc3MtPnNzX21pbmR3ZWxsLCBzc19wcml2LT5zc19zY2FuZW5kKSkg
ewogCQlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwK
IAkJICAgICIlczogZG9uZSwgcmVzdGFydCAiCiAJCSAgICAiW3RpY2tzICV1LCBk
d2VsbCBtaW4gJWx1IHNjYW5lbmQgJWx1XVxuIiwKIAkJICAgIF9fZnVuY19fLAot
CQkgICAgdGlja3MsIHNzLT5zc19taW5kd2VsbCwgc2NhbmVuZCk7CisJCSAgICB0
aWNrcywgc3MtPnNzX21pbmR3ZWxsLCBzc19wcml2LT5zc19zY2FuZW5kKTsKIAkJ
c3MtPnNzX25leHQgPSAwOwkvKiByZXNldCB0byBiZWdpbmluZyAqLwogCQlpZiAo
c3MtPnNzX2ZsYWdzICYgSUVFRTgwMjExX1NDQU5fQUNUSVZFKQogCQkJdmFwLT5p
dl9zdGF0cy5pc19zY2FuX2FjdGl2ZSsrOwpAQCAtODAyLDcgKzgyMiw3IEBACiAJ
CQl2YXAtPml2X3N0YXRzLmlzX3NjYW5fcGFzc2l2ZSsrOwogCiAJCXNzLT5zc19v
cHMtPnNjYW5fcmVzdGFydChzcywgdmFwKTsJLyogWFhYPyAqLwotCQlpZWVlODAy
MTFfcnVudGFzayhpYywgJlNDQU5fUFJJVkFURShzcyktPnNzX3NjYW5fdGFzayk7
CisJCWllZWU4MDIxMV9ydW50YXNrKGljLCAmc3NfcHJpdi0+c3Nfc2Nhbl9zdGFy
dCk7CiAJCUlFRUU4MDIxMV9VTkxPQ0soaWMpOwogCQlyZXR1cm47CiAJfQpAQCAt
ODE0LDE0ICs4MzQsMTMgQEAKIAlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4
MDIxMV9NU0dfU0NBTiwKIAkgICAgIiVzOiAlcywgW3RpY2tzICV1LCBkd2VsbCBt
aW4gJWx1IHNjYW5lbmQgJWx1XVxuIiwKIAkgICAgX19mdW5jX18sIHNjYW5kb25l
ID8gImRvbmUiIDogInN0b3BwZWQiLAotCSAgICB0aWNrcywgc3MtPnNzX21pbmR3
ZWxsLCBzY2FuZW5kKTsKKwkgICAgdGlja3MsIHNzLT5zc19taW5kd2VsbCwgc3Nf
cHJpdi0+c3Nfc2NhbmVuZCk7CiAKIAkvKgogCSAqIFNpbmNlIGEgY2FuY2VsbGF0
aW9uIG1heSBoYXZlIG9jY3VyZWQgZHVyaW5nIG9uZSBvZiB0aGUKIAkgKiBkcml2
ZXIgY2FsbHMgKHdoaWxzdCB1bmxvY2tlZCksIHVwZGF0ZSBzY2FuZG9uZS4KIAkg
Ki8KLQlpZiAoc2NhbmRvbmUgPT0gMCAmJgotCSAgICAoKFNDQU5fUFJJVkFURShz
cyktPnNzX2lmbGFncyAmIElTQ0FOX0NBTkNFTCkgIT0gMCkpIHsKKwlpZiAoc2Nh
bmRvbmUgPT0gMCAmJiAoc3NfcHJpdi0+c3NfaWZsYWdzICYgSVNDQU5fQ0FOQ0VM
KSAhPSAwKSB7CiAJCS8qIFhYWCBwcmludGY/ICovCiAJCWlmX3ByaW50Zih2YXAt
Pml2X2lmcCwKIAkJICAgICIlczogT09QUyEgc2NhbiBjYW5jZWxsZWQgZHVyaW5n
IGRyaXZlciBjYWxsICgyKSFcbiIsCkBAIC04MjksNiArODQ4LDE4IEBACiAJCXNj
YW5kb25lID0gMTsKIAl9CiAKKwlzY2FuX2RvbmUoc3MsIHNjYW5kb25lKTsKK30K
Kworc3RhdGljIHZvaWQKK3NjYW5fZG9uZShzdHJ1Y3QgaWVlZTgwMjExX3NjYW5f
c3RhdGUgKnNzLCBpbnQgc2NhbmRvbmUpCit7CisJc3RydWN0IHNjYW5fc3RhdGUg
KnNzX3ByaXYgPSBTQ0FOX1BSSVZBVEUoc3MpOworCXN0cnVjdCBpZWVlODAyMTFj
b20gKmljID0gc3MtPnNzX2ljOworCXN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9
IHNzLT5zc192YXA7CisKKwlJRUVFODAyMTFfTE9DS19BU1NFUlQoaWMpOworCiAJ
LyoKIAkgKiBDbGVhciB0aGUgU0NBTiBiaXQgZmlyc3QgaW4gY2FzZSBmcmFtZXMg
YXJlCiAJICogcGVuZGluZyBvbiB0aGUgc3RhdGlvbiBwb3dlciBzYXZlIHF1ZXVl
LiAgSWYKQEAgLTgzNSw4ICs4NjYsOCBAQAogCSAqIHdlIGRlZmVyIHRoaXMgdGhl
biB0aGUgZGlzcGF0Y2ggb2YgdGhlIGZyYW1lcwogCSAqIG1heSBnZW5lcmF0ZSBh
IHJlcXVlc3QgdG8gY2FuY2VsIHNjYW5uaW5nLgogCSAqLwotZG9uZToKIAlpYy0+
aWNfZmxhZ3MgJj0gfklFRUU4MDIxMV9GX1NDQU47CisKIAkvKgogCSAqIERyb3Ag
b3V0IG9mIHBvd2VyIHNhdmUgbW9kZSB3aGVuIGEgc2NhbiBoYXMKIAkgKiBjb21w
bGV0ZWQuICBJZiB0aGlzIHNjYW4gd2FzIHByZW1hdHVyZWx5IHRlcm1pbmF0ZWQK
QEAgLTg1Myw3ICs4ODQsOCBAQAogCQkJaWMtPmljX2ZsYWdzX2V4dCAmPSB+SUVF
RTgwMjExX0ZFWFRfQkdTQ0FOOwogCQl9CiAJfQotCVNDQU5fUFJJVkFURShzcykt
PnNzX2lmbGFncyAmPSB+KElTQ0FOX0NBTkNFTHxJU0NBTl9BQk9SVCk7CisJc3Nf
cHJpdi0+c3NfaWZsYWdzICY9IH4oSVNDQU5fQ0FOQ0VMfElTQ0FOX0FCT1JUKTsK
Kwlzc19wcml2LT5zc19zY2FuZW5kID0gMDsKIAlzcy0+c3NfZmxhZ3MgJj0gfihJ
RUVFODAyMTFfU0NBTl9PTkNFIHwgSUVFRTgwMjExX1NDQU5fUElDSzFTVCk7CiAJ
SUVFRTgwMjExX1VOTE9DSyhpYyk7CiAjdW5kZWYgSVNDQU5fUkVQCkBAIC05NDcs
OSArOTc5LDkgQEAKIAkJaWMtPmljX3NjYW4gPSBOVUxMOwogCQlyZXR1cm47CiAJ
fQotCWNhbGxvdXRfaW5pdF9tdHgoJnNzLT5zc19zY2FuX3RpbWVyLCBJRUVFODAy
MTFfTE9DS19PQkooaWMpLCAwKTsKLQljdl9pbml0KCZzcy0+c3Nfc2Nhbl9jdiwg
InNjYW4iKTsKLQlUQVNLX0lOSVQoJnNzLT5zc19zY2FuX3Rhc2ssIDAsIHNjYW5f
dGFzaywgc3MpOworCVRBU0tfSU5JVCgmc3MtPnNzX3NjYW5fc3RhcnQsIDAsIHNj
YW5fc3RhcnQsIHNzKTsKKwlUSU1FT1VUX1RBU0tfSU5JVChpYy0+aWNfdHEsICZz
cy0+c3Nfc2Nhbl9jdXJjaGFuLCAwLAorCSAgICBzY2FuX2N1cmNoYW5fdGFzaywg
c3MpOwogCiAJaWMtPmljX3NjYW4gPSAmc3MtPmJhc2U7CiAJc3MtPmJhc2Uuc3Nf
aWMgPSBpYzsK

------------1UGEIeCxgQrQAMT13Qg4VX--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?op.yc4mcrg5iew4ia>