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

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

Sat, 20 Feb 2016 12:06:17 +0200 =D0=B1=D1=83=D0=BB=D0=BE =D0=BD=D0=B0=D0=
=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=BE Andriy Voskoboinyk  =

<s3erios@gmail.com>:

>> hi,
>>
>> andriy has a few reviews out that tidy up some things, which I'd repl=
y
>> 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 anothe=
r
>> 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!

Newer patch includes fix for  =

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D197498#c7
(D5482) - so, scanning for adhoc/hostap mode should work now.
------------HpTmAUBujhjyaoMMYhGG9X
Content-Disposition: attachment; filename=patch-net80211-scan.diff
Content-Type: application/octet-stream; name="patch-net80211-scan.diff"
Content-Transfer-Encoding: Base64

SW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfb3V0cHV0LmMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRwdXQuYwko
cmV2aXNpb24gMjk2MTA4KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9vdXRw
dXQuYwkod29ya2luZyBjb3B5KQpAQCAtODQ5LDYgKzg0OSwxNSBAQAogCXJldHVy
biAocmV0KTsKIH0KIAorc3RhdGljIHZvaWQKK2llZWU4MDIxMV9udWxsZGF0YV90
cmFuc21pdHRlZChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCB2b2lkICphcmcs
CisgICAgaW50IHN0YXR1cykKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAg
PSBuaS0+bmlfdmFwOworCisJd2FrZXVwKHZhcCk7Cit9CisKIC8qCiAgKiBTZW5k
IGEgbnVsbCBkYXRhIGZyYW1lIHRvIHRoZSBzcGVjaWZpZWQgbm9kZS4gIElmIHRo
ZSBzdGF0aW9uCiAgKiBpcyBzZXR1cCBmb3IgUW9TIHRoZW4gYSBRb1MgTnVsbCBE
YXRhIGZyYW1lIGlzIGNvbnN0cnVjdGVkLgpAQCAtOTM3LDYgKzk0NiwxMSBAQAog
CQkgICAgdmFwLT5pdl9vcG1vZGUgIT0gSUVFRTgwMjExX01fSE9TVEFQKQogCQkJ
d2gtPmlfZmNbMV0gfD0gSUVFRTgwMjExX0ZDMV9QV1JfTUdUOwogCX0KKwlpZiAo
KGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pICYmCisJICAgIChuaS0+
bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9QV1JfTUdUKSkgeworCQlpZWVlODAy
MTFfYWRkX2NhbGxiYWNrKG0sIGllZWU4MDIxMV9udWxsZGF0YV90cmFuc21pdHRl
ZCwKKwkJICAgIE5VTEwpOworCX0KIAltLT5tX2xlbiA9IG0tPm1fcGt0aGRyLmxl
biA9IGhkcmxlbjsKIAltLT5tX2ZsYWdzIHw9IE1fRU5DQVA7CQkvKiBtYXJrIGVu
Y2Fwc3VsYXRlZCAqLwogCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3By
b3RvLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4
MDIxMV9wcm90by5jCShyZXZpc2lvbiAyOTYxMDgpCisrKyBzeXMvbmV0ODAyMTEv
aWVlZTgwMjExX3Byb3RvLmMJKHdvcmtpbmcgY29weSkKQEAgLTE4MDAsMTMgKzE4
MDAsMTkgQEAKIAkJICogV2UgaGF2ZSBiZWVuIHJlcXVlc3RlZCB0byBkcm9wIGJh
Y2sgdG8gdGhlIElOSVQgYmVmb3JlCiAJCSAqIHByb2NlZWRpbmcgdG8gdGhlIG5l
dyBzdGF0ZS4KIAkJICovCisJCS8qIFN1cHByZXNzICdwZW5kaW5nIHN0YXRlIHRy
YW5zaXRpb24gbG9zdCcgd2FybmluZyAqLworCQl2YXAtPml2X25zdGF0ZSA9IElF
RUU4MDIxMV9TX0lOSVQ7CiAJCUlFRUU4MDIxMV9EUFJJTlRGKHZhcCwgSUVFRTgw
MjExX01TR19TVEFURSwKIAkJICAgICIlczogJXMgLT4gJXMgYXJnICVkXG4iLCBf
X2Z1bmNfXywKIAkJICAgIGllZWU4MDIxMV9zdGF0ZV9uYW1lW3ZhcC0+aXZfc3Rh
dGVdLAotCQkgICAgaWVlZTgwMjExX3N0YXRlX25hbWVbSUVFRTgwMjExX1NfSU5J
VF0sIGFyZyk7Ci0JCXZhcC0+aXZfbmV3c3RhdGUodmFwLCBJRUVFODAyMTFfU19J
TklULCBhcmcpOworCQkgICAgaWVlZTgwMjExX3N0YXRlX25hbWVbdmFwLT5pdl9u
c3RhdGVdLCBhcmcpOworCQl2YXAtPml2X25ld3N0YXRlKHZhcCwgdmFwLT5pdl9u
c3RhdGUsIDApOwogCQlJRUVFODAyMTFfTE9DS19BU1NFUlQoaWMpOwotCQl2YXAt
Pml2X2ZsYWdzX2V4dCAmPSB+SUVFRTgwMjExX0ZFWFRfUkVJTklUOworCQl2YXAt
Pml2X2ZsYWdzX2V4dCAmPSB+KElFRUU4MDIxMV9GRVhUX1JFSU5JVCB8CisJCSAg
ICBJRUVFODAyMTFfRkVYVF9TVEFURVdBSVQpOworCQkvKiBlbnF1ZXVlIG5ldyBz
dGF0ZSB0cmFuc2l0aW9uIGFmdGVyIGNhbmNlbF9zY2FuKCkgdGFzayAqLworCQlp
ZWVlODAyMTFfbmV3X3N0YXRlX2xvY2tlZCh2YXAsIG5zdGF0ZSwgYXJnKTsKKwkJ
Z290byBkb25lOwogCX0KIAogCW9zdGF0ZSA9IHZhcC0+aXZfc3RhdGU7CkluZGV4
OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3NjYW4uYwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3NjYW4uYwkocmV2aXNpb24g
Mjk2MTA4KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9zY2FuLmMJKHdvcmtp
bmcgY29weSkKQEAgLTQ1Myw4ICs0NTMsOSBAQAogfQogCiAvKgotICogUHVibGlj
IGFjY2VzcyB0byBzY2FuX25leHQgZm9yIGRyaXZlcnMgdGhhdCBtYW5hZ2UKLSAq
IHNjYW5uaW5nIHRoZW1zZWx2ZXMgKGUuZy4gZm9yIGZpcm13YXJlLWJhc2VkIGRl
dmljZXMpLgorICogTWFudWFsbHkgc3dpdGNoIHRvIHRoZSBuZXh0IGNoYW5uZWwg
aW4gdGhlIGNoYW5uZWwgbGlzdC4KKyAqIFByb3ZpZGVkIGZvciBkcml2ZXJzIHRo
YXQgbWFuYWdlIHNjYW5uaW5nIHRoZW1zZWx2ZXMKKyAqIChlLmcuIGZvciBmaXJt
d2FyZS1iYXNlZCBkZXZpY2VzKS4KICAqLwogdm9pZAogaWVlZTgwMjExX3NjYW5f
bmV4dChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXApCkBAIC00NjUsOCArNDY2LDkg
QEAKIH0KIAogLyoKLSAqIFB1YmxpYyBhY2Nlc3MgdG8gc2Nhbl9uZXh0IGZvciBk
cml2ZXJzIHRoYXQgYXJlIG5vdCBhYmxlIHRvIHNjYW4gc2luZ2xlCi0gKiBjaGFu
bmVscyAoZS5nLiBmb3IgZmlybXdhcmUtYmFzZWQgZGV2aWNlcykuCisgKiBNYW51
YWxseSBzdG9wIGEgc2NhbiB0aGF0IGlzIGN1cnJlbnRseSBydW5uaW5nLgorICog
UHJvdmlkZWQgZm9yIGRyaXZlcnMgdGhhdCBhcmUgbm90IGFibGUgdG8gc2NhbiBz
aW5nbGUgY2hhbm5lbHMKKyAqIChlLmcuIGZvciBmaXJtd2FyZS1iYXNlZCBkZXZp
Y2VzKS4KICAqLwogdm9pZAogaWVlZTgwMjExX3NjYW5fZG9uZShzdHJ1Y3QgaWVl
ZTgwMjExdmFwICp2YXApCkBAIC00ODYsNyArNDg4LDcgQEAKIH0KIAogLyoKLSAq
IFByb2JlIHRoZSBjdXJlbnQgY2hhbm5lbCwgaWYgYWxsb3dlZCwgd2hpbGUgc2Nh
bm5pbmcuCisgKiBQcm9iZSB0aGUgY3VycmVudCBjaGFubmVsLCBpZiBhbGxvd2Vk
LCB3aGlsZSBzY2FubmluZy4KICAqIElmIHRoZSBjaGFubmVsIGlzIG5vdCBtYXJr
ZWQgcGFzc2l2ZS1vbmx5IHRoZW4gc2VuZAogICogYSBwcm9iZSByZXF1ZXN0IGlt
bWVkaWF0ZWx5LiAgT3RoZXJ3aXNlIG1hcmsgc3RhdGUgYW5kCiAgKiBsaXN0ZW4g
Zm9yIGJlYWNvbnMgb24gdGhlIGNoYW5uZWw7IGlmIHdlIHJlY2VpdmUgc29tZXRo
aW5nCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3NjYW5fc3cuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3NjYW5f
c3cuYwkocmV2aXNpb24gMjk2MTA4KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIx
MV9zY2FuX3N3LmMJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE3ICs1NCwxOCBAQAog
c3RydWN0IHNjYW5fc3RhdGUgewogCXN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0
ZSBiYXNlOwkvKiBwdWJsaWMgc3RhdGUgKi8KIAotCXVfaW50CQlzc19pZmxhZ3M7
CQkvKiBmbGFncyB1c2VkIGludGVybmFsbHkgKi8KLSNkZWZpbmUJSVNDQU5fTUlO
RFdFTEwgCTB4MDAwMQkJLyogbWluIGR3ZWxsIHRpbWUgcmVhY2hlZCAqLwotI2Rl
ZmluZQlJU0NBTl9ESVNDQVJECTB4MDAwMgkJLyogZGlzY2FyZCByeCdkIGZyYW1l
cyAqLwotI2RlZmluZQlJU0NBTl9DQU5DRUwJMHgwMDA0CQkvKiBjYW5jZWwgY3Vy
cmVudCBzY2FuICovCi0jZGVmaW5lCUlTQ0FOX0FCT1JUCTB4MDAwOAkJLyogZW5k
IHRoZSBzY2FuIGltbWVkaWF0ZWx5ICovCi0JdW5zaWduZWQgbG9uZwlzc19jaGFu
bWluZHdlbGw7CS8qIG1pbiBkd2VsbCBvbiBjdXJjaGFuICovCi0JdW5zaWduZWQg
bG9uZwlzc19zY2FuZW5kOwkJLyogdGltZSBzY2FuIG11c3Qgc3RvcCAqLwotCXVf
aW50CQlzc19kdXJhdGlvbjsJCS8qIGR1cmF0aW9uIGZvciBuZXh0IHNjYW4gKi8K
LQlzdHJ1Y3QgdGFzawlzc19zY2FuX3Rhc2s7CQkvKiBzY2FuIGV4ZWN1dGlvbiAq
LwotCXN0cnVjdCBjdglzc19zY2FuX2N2OwkJLyogc2NhbiBzaWduYWwgKi8KLQlz
dHJ1Y3QgY2FsbG91dAlzc19zY2FuX3RpbWVyOwkJLyogc2NhbiB0aW1lciAqLwor
CXVfaW50CQkJc3NfaWZsYWdzOwkvKiBmbGFncyB1c2VkIGludGVybmFsbHkgKi8K
KyNkZWZpbmUJSVNDQU5fTUlORFdFTEwgCQkweDAwMDEJCS8qIG1pbiBkd2VsbCB0
aW1lIHJlYWNoZWQgKi8KKyNkZWZpbmUJSVNDQU5fRElTQ0FSRAkJMHgwMDAyCQkv
KiBkaXNjYXJkIHJ4J2QgZnJhbWVzICovCisjZGVmaW5lCUlTQ0FOX0NBTkNFTAkJ
MHgwMDA0CQkvKiBjYW5jZWwgY3VycmVudCBzY2FuICovCisjZGVmaW5lCUlTQ0FO
X0FCT1JUCQkweDAwMDgJCS8qIGVuZCB0aGUgc2NhbiBpbW1lZGlhdGVseSAqLwor
I2RlZmluZQlJU0NBTl9SVU5OSU5HCQkweDAwMTAJCS8qIHNjYW4gd2FzIHN0YXJ0
ZWQgKi8KKworCXVuc2lnbmVkIGxvbmcJCXNzX2NoYW5taW5kd2VsbDsgIC8qIG1p
biBkd2VsbCBvbiBjdXJjaGFuICovCisJdW5zaWduZWQgbG9uZwkJc3Nfc2NhbmVu
ZDsJLyogdGltZSBzY2FuIG11c3Qgc3RvcCAqLworCXVfaW50CQkJc3NfZHVyYXRp
b247CS8qIGR1cmF0aW9uIGZvciBuZXh0IHNjYW4gKi8KKwlzdHJ1Y3QgdGFzawkJ
c3Nfc2Nhbl9zdGFydDsJLyogc2NhbiBzdGFydCAqLworCXN0cnVjdCB0aW1lb3V0
X3Rhc2sJc3Nfc2Nhbl9jdXJjaGFuOyAgLyogc2NhbiBleGVjdXRpb24gKi8KIH07
CiAjZGVmaW5lCVNDQU5fUFJJVkFURShzcykJKChzdHJ1Y3Qgc2Nhbl9zdGF0ZSAq
KSBzcykKIApAQCAtOTgsOCArOTksMTIgQEAKIAogc3RhdGljCXZvaWQgc2Nhbl9j
dXJjaGFuKHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSAqLCB1bnNpZ25lZCBs
b25nKTsKIHN0YXRpYwl2b2lkIHNjYW5fbWluZHdlbGwoc3RydWN0IGllZWU4MDIx
MV9zY2FuX3N0YXRlICopOwotc3RhdGljCXZvaWQgc2Nhbl9zaWduYWwodm9pZCAq
KTsKLXN0YXRpYwl2b2lkIHNjYW5fdGFzayh2b2lkICosIGludCk7CitzdGF0aWMJ
dm9pZCBzY2FuX3NpZ25hbChzdHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKiwg
aW50KTsKK3N0YXRpYwl2b2lkIHNjYW5fc2lnbmFsX2xvY2tlZChzdHJ1Y3QgaWVl
ZTgwMjExX3NjYW5fc3RhdGUgKiwgaW50KTsKK3N0YXRpYwl2b2lkIHNjYW5fc3Rh
cnQodm9pZCAqLCBpbnQpOworc3RhdGljCXZvaWQgc2Nhbl9jdXJjaGFuX3Rhc2so
dm9pZCAqLCBpbnQpOworc3RhdGljCXZvaWQgc2Nhbl9lbmQoc3RydWN0IGllZWU4
MDIxMV9zY2FuX3N0YXRlICosIGludCk7CitzdGF0aWMJdm9pZCBzY2FuX2RvbmUo
c3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICosIGludCk7CiAKIE1BTExPQ19E
RUZJTkUoTV84MDIxMV9TQ0FOLCAiODAyMTFzY2FuIiwgIjgwMi4xMSBzY2FuIHN0
YXRlIik7CiAKQEAgLTEwOSwxMiArMTE0LDEwIEBACiAJc3RydWN0IGllZWU4MDIx
MV9zY2FuX3N0YXRlICpzcyA9IGljLT5pY19zY2FuOwogCiAJaWYgKHNzICE9IE5V
TEwpIHsKLQkJSUVFRTgwMjExX0xPQ0soaWMpOwotCQlTQ0FOX1BSSVZBVEUoc3Mp
LT5zc19pZmxhZ3MgfD0gSVNDQU5fQUJPUlQ7Ci0JCXNjYW5fc2lnbmFsKHNzKTsK
LQkJSUVFRTgwMjExX1VOTE9DSyhpYyk7Ci0JCWllZWU4MDIxMV9kcmFpbnRhc2so
aWMsICZTQ0FOX1BSSVZBVEUoc3MpLT5zc19zY2FuX3Rhc2spOwotCQljYWxsb3V0
X2RyYWluKCZTQ0FOX1BSSVZBVEUoc3MpLT5zc19zY2FuX3RpbWVyKTsKKwkJc2Nh
bl9zaWduYWwoc3MsIElTQ0FOX0FCT1JUKTsKKwkJaWVlZTgwMjExX2RyYWludGFz
ayhpYywgJlNDQU5fUFJJVkFURShzcyktPnNzX3NjYW5fc3RhcnQpOworCQl0YXNr
cXVldWVfZHJhaW5fdGltZW91dChpYy0+aWNfdHEsCisJCSAgICAmU0NBTl9QUklW
QVRFKHNzKS0+c3Nfc2Nhbl9jdXJjaGFuKTsKIAkJS0FTU0VSVCgoaWMtPmljX2Zs
YWdzICYgSUVFRTgwMjExX0ZfU0NBTikgPT0gMCwKIAkJICAgICgic2NhbiBzdGls
bCBydW5uaW5nIikpOwogCkBAIC0xNDgsMTYgKzE1MSwxMyBAQAogaWVlZTgwMjEx
X3N3c2Nhbl92ZGV0YWNoKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKIHsKIAlz
dHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZfaWM7Ci0Jc3RydWN0IGll
ZWU4MDIxMV9zY2FuX3N0YXRlICpzczsKKwlzdHJ1Y3QgaWVlZTgwMjExX3NjYW5f
c3RhdGUgKnNzID0gaWMtPmljX3NjYW47CiAKIAlJRUVFODAyMTFfTE9DS19BU1NF
UlQoaWMpOwotCXNzID0gaWMtPmljX3NjYW47Ci0JaWYgKHNzICE9IE5VTEwgJiYg
c3MtPnNzX3ZhcCA9PSB2YXApIHsKLQkJaWYgKGljLT5pY19mbGFncyAmIElFRUU4
MDIxMV9GX1NDQU4pIHsKLQkJCVNDQU5fUFJJVkFURShzcyktPnNzX2lmbGFncyB8
PSBJU0NBTl9BQk9SVDsKLQkJCXNjYW5fc2lnbmFsKHNzKTsKLQkJfQotCX0KKwor
CWlmIChzcyAhPSBOVUxMICYmIHNzLT5zc192YXAgPT0gdmFwICYmCisJICAgIChp
Yy0+aWNfZmxhZ3MgJiBJRUVFODAyMTFfRl9TQ0FOKSkKKwkJc2Nhbl9zaWduYWxf
bG9ja2VkKHNzLCBJU0NBTl9BQk9SVCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0y
MzYsNyArMjM2LDcgQEAKIAkJCWljLT5pY19mbGFncyB8PSBJRUVFODAyMTFfRl9T
Q0FOOwogCiAJCQkvKiBTdGFydCBzY2FuIHRhc2sgKi8KLQkJCWllZWU4MDIxMV9y
dW50YXNrKGljLCAmU0NBTl9QUklWQVRFKHNzKS0+c3Nfc2Nhbl90YXNrKTsKKwkJ
CWllZWU4MDIxMV9ydW50YXNrKGljLCAmU0NBTl9QUklWQVRFKHNzKS0+c3Nfc2Nh
bl9zdGFydCk7CiAJCX0KIAkJcmV0dXJuIDE7CiAJfSBlbHNlIHsKQEAgLTQxMSw3
ICs0MTEsOCBAQAogCQkJc3MtPnNzX21heGR3ZWxsID0gZHVyYXRpb247CiAJCQlp
Yy0+aWNfZmxhZ3MgfD0gSUVFRTgwMjExX0ZfU0NBTjsKIAkJCWljLT5pY19mbGFn
c19leHQgfD0gSUVFRTgwMjExX0ZFWFRfQkdTQ0FOOwotCQkJaWVlZTgwMjExX3J1
bnRhc2soaWMsICZTQ0FOX1BSSVZBVEUoc3MpLT5zc19zY2FuX3Rhc2spOworCQkJ
aWVlZTgwMjExX3J1bnRhc2soaWMsCisJCQkgICAgJlNDQU5fUFJJVkFURShzcykt
PnNzX3NjYW5fc3RhcnQpOwogCQl9IGVsc2UgewogCQkJLyogWFhYIG1zZytzdGF0
ICovCiAJCX0KQEAgLTQyNiwxMSArNDI3LDggQEAKIAlyZXR1cm4gKGljLT5pY19m
bGFncyAmIElFRUU4MDIxMV9GX1NDQU4pOwogfQogCi0vKgotICogQ2FuY2VsIGFu
eSBzY2FuIGN1cnJlbnRseSBnb2luZyBvbiBmb3IgdGhlIHNwZWNpZmllZCB2YXAu
Ci0gKi8KIHN0YXRpYyB2b2lkCi1pZWVlODAyMTFfc3dzY2FuX2NhbmNlbF9zY2Fu
KHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKK2NhbmNlbF9zY2FuKHN0cnVjdCBp
ZWVlODAyMTF2YXAgKnZhcCwgaW50IGFueSwgY29uc3QgY2hhciAqZnVuYykKIHsK
IAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZfaWM7CiAJc3RydWN0
IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9IGljLT5pY19zY2FuOwpAQCAtNDM3
LDIyICs0MzUsMjEgQEAKIAogCUlFRUU4MDIxMV9MT0NLKGljKTsKIAlpZiAoKGlj
LT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pICYmCi0JICAgIHNzLT5zc192
YXAgPT0gdmFwICYmCisJICAgIChhbnkgfHwgc3MtPnNzX3ZhcCA9PSB2YXApICYm
CiAJICAgIChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgJiBJU0NBTl9DQU5D
RUwpID09IDApIHsKIAkJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVFODAyMTFf
TVNHX1NDQU4sCi0JCSAgICAiJXM6IGNhbmNlbCAlcyBzY2FuXG4iLCBfX2Z1bmNf
XywKKwkJICAgICIlczogY2FuY2VsICVzIHNjYW5cbiIsIGZ1bmMsCiAJCSAgICBz
cy0+c3NfZmxhZ3MgJiBJRUVFODAyMTFfU0NBTl9BQ1RJVkUgPwogCQkJImFjdGl2
ZSIgOiAicGFzc2l2ZSIpOwogCi0JCS8qIGNsZWFyIGJnIHNjYW4gTk9QSUNLIGFu
ZCBtYXJrIGNhbmNlbCByZXF1ZXN0ICovCisJCS8qIGNsZWFyIGJnIHNjYW4gTk9Q
SUNLICovCiAJCXNzLT5zc19mbGFncyAmPSB+SUVFRTgwMjExX1NDQU5fTk9QSUNL
OwotCQlTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgfD0gSVNDQU5fQ0FOQ0VM
OwotCQkvKiB3YWtlIHVwIHRoZSBzY2FuIHRhc2sgKi8KLQkJc2Nhbl9zaWduYWwo
c3MpOworCQkvKiBtYXJrIGNhbmNlbCByZXF1ZXN0IGFuZCB3YWtlIHVwIHRoZSBz
Y2FuIHRhc2sgKi8KKwkJc2Nhbl9zaWduYWxfbG9ja2VkKHNzLCBJU0NBTl9DQU5D
RUwpOwogCX0gZWxzZSB7CiAJCUlFRUU4MDIxMV9EUFJJTlRGKHZhcCwgSUVFRTgw
MjExX01TR19TQ0FOLAogCQkgICAgIiVzOiBjYWxsZWQ7IEZfU0NBTj0lZCwgdmFw
PSVzLCBDQU5DRUw9JWRcbiIsCi0JCSAgICAgICAgX19mdW5jX18sCisJCQlmdW5j
LAogCQkJISEgKGljLT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NDQU4pLAogCQkJ
KHNzLT5zc192YXAgPT0gdmFwID8gIm1hdGNoIiA6ICJub21hdGNoIiksCiAJCQkh
ISAoU0NBTl9QUklWQVRFKHNzKS0+c3NfaWZsYWdzICYgSVNDQU5fQ0FOQ0VMKSk7
CkBAIC00NjEsNzQgKzQ1OCw1NyBAQAogfQogCiAvKgorICogQ2FuY2VsIGFueSBz
Y2FuIGN1cnJlbnRseSBnb2luZyBvbiBmb3IgdGhlIHNwZWNpZmllZCB2YXAuCisg
Ki8KK3N0YXRpYyB2b2lkCitpZWVlODAyMTFfc3dzY2FuX2NhbmNlbF9zY2FuKHN0
cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKK3sKKwljYW5jZWxfc2Nhbih2YXAsIDAs
IF9fZnVuY19fKTsKK30KKworLyoKICAqIENhbmNlbCBhbnkgc2NhbiBjdXJyZW50
bHkgZ29pbmcgb24uCiAgKi8KIHN0YXRpYyB2b2lkCiBpZWVlODAyMTFfc3dzY2Fu
X2NhbmNlbF9hbnlzY2FuKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKIHsKLQlz
dHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZfaWM7Ci0Jc3RydWN0IGll
ZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9IGljLT5pY19zY2FuOwotCi0JSUVFRTgw
MjExX0xPQ0soaWMpOwotCWlmICgoaWMtPmljX2ZsYWdzICYgSUVFRTgwMjExX0Zf
U0NBTikgJiYKLQkgICAgKFNDQU5fUFJJVkFURShzcyktPnNzX2lmbGFncyAmIElT
Q0FOX0NBTkNFTCkgPT0gMCkgewotCQlJRUVFODAyMTFfRFBSSU5URih2YXAsIElF
RUU4MDIxMV9NU0dfU0NBTiwKLQkJICAgICIlczogY2FuY2VsICVzIHNjYW5cbiIs
IF9fZnVuY19fLAotCQkgICAgc3MtPnNzX2ZsYWdzICYgSUVFRTgwMjExX1NDQU5f
QUNUSVZFID8KLQkJCSJhY3RpdmUiIDogInBhc3NpdmUiKTsKLQotCQkvKiBjbGVh
ciBiZyBzY2FuIE5PUElDSyBhbmQgbWFyayBjYW5jZWwgcmVxdWVzdCAqLwotCQlz
cy0+c3NfZmxhZ3MgJj0gfklFRUU4MDIxMV9TQ0FOX05PUElDSzsKLQkJU0NBTl9Q
UklWQVRFKHNzKS0+c3NfaWZsYWdzIHw9IElTQ0FOX0NBTkNFTDsKLQkJLyogd2Fr
ZSB1cCB0aGUgc2NhbiB0YXNrICovCi0JCXNjYW5fc2lnbmFsKHNzKTsKLQl9IGVs
c2UgewotCQlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NB
TiwKLQkJICAgICIlczogY2FsbGVkOyBGX1NDQU49JWQsIHZhcD0lcywgQ0FOQ0VM
PSVkXG4iLAotCQkgICAgICAgIF9fZnVuY19fLAotCQkJISEgKGljLT5pY19mbGFn
cyAmIElFRUU4MDIxMV9GX1NDQU4pLAotCQkJKHNzLT5zc192YXAgPT0gdmFwID8g
Im1hdGNoIiA6ICJub21hdGNoIiksCi0JCQkhISAoU0NBTl9QUklWQVRFKHNzKS0+
c3NfaWZsYWdzICYgSVNDQU5fQ0FOQ0VMKSk7Ci0JfQotCUlFRUU4MDIxMV9VTkxP
Q0soaWMpOworCWNhbmNlbF9zY2FuKHZhcCwgMSwgX19mdW5jX18pOwogfQogCiAv
KgotICogUHVibGljIGFjY2VzcyB0byBzY2FuX25leHQgZm9yIGRyaXZlcnMgdGhh
dCBtYW5hZ2UKLSAqIHNjYW5uaW5nIHRoZW1zZWx2ZXMgKGUuZy4gZm9yIGZpcm13
YXJlLWJhc2VkIGRldmljZXMpLgorICogTWFudWFsbHkgc3dpdGNoIHRvIHRoZSBu
ZXh0IGNoYW5uZWwgaW4gdGhlIGNoYW5uZWwgbGlzdC4KKyAqIFByb3ZpZGVkIGZv
ciBkcml2ZXJzIHRoYXQgbWFuYWdlIHNjYW5uaW5nIHRoZW1zZWx2ZXMKKyAqIChl
LmcuIGZvciBmaXJtd2FyZS1iYXNlZCBkZXZpY2VzKS4KICAqLwogc3RhdGljIHZv
aWQKIGllZWU4MDIxMV9zd3NjYW5fc2Nhbl9uZXh0KHN0cnVjdCBpZWVlODAyMTF2
YXAgKnZhcCkKIHsKLQlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZf
aWM7Ci0Jc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcyA9IGljLT5pY19z
Y2FuOworCXN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSAqc3MgPSB2YXAtPml2
X2ljLT5pY19zY2FuOwogCiAJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVFODAy
MTFfTVNHX1NDQU4sICIlczogY2FsbGVkXG4iLCBfX2Z1bmNfXyk7CiAKIAkvKiB3
YWtlIHVwIHRoZSBzY2FuIHRhc2sgKi8KLQlJRUVFODAyMTFfTE9DSyhpYyk7Ci0J
c2Nhbl9zaWduYWwoc3MpOwotCUlFRUU4MDIxMV9VTkxPQ0soaWMpOworCXNjYW5f
c2lnbmFsKHNzLCAwKTsKIH0KIAogLyoKLSAqIFB1YmxpYyBhY2Nlc3MgdG8gc2Nh
bl9uZXh0IGZvciBkcml2ZXJzIHRoYXQgYXJlIG5vdCBhYmxlIHRvIHNjYW4gc2lu
Z2xlCi0gKiBjaGFubmVscyAoZS5nLiBmb3IgZmlybXdhcmUtYmFzZWQgZGV2aWNl
cykuCisgKiBNYW51YWxseSBzdG9wIGEgc2NhbiB0aGF0IGlzIGN1cnJlbnRseSBy
dW5uaW5nLgorICogUHJvdmlkZWQgZm9yIGRyaXZlcnMgdGhhdCBhcmUgbm90IGFi
bGUgdG8gc2NhbiBzaW5nbGUgY2hhbm5lbHMKKyAqIChlLmcuIGZvciBmaXJtd2Fy
ZS1iYXNlZCBkZXZpY2VzKS4KICAqLwogc3RhdGljIHZvaWQKIGllZWU4MDIxMV9z
d3NjYW5fc2Nhbl9kb25lKHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKIHsKIAlz
dHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHZhcC0+aXZfaWM7Ci0Jc3RydWN0IGll
ZWU4MDIxMV9zY2FuX3N0YXRlICpzczsKKwlzdHJ1Y3QgaWVlZTgwMjExX3NjYW5f
c3RhdGUgKnNzID0gaWMtPmljX3NjYW47CiAKIAlJRUVFODAyMTFfTE9DS19BU1NF
UlQoaWMpOwogCi0Jc3MgPSBpYy0+aWNfc2NhbjsKLQlzY2FuX3NpZ25hbChzcyk7
CisJc2Nhbl9zaWduYWxfbG9ja2VkKHNzLCAwKTsKIH0KIAogLyoKLSAqIFByb2Jl
IHRoZSBjdXJlbnQgY2hhbm5lbCwgaWYgYWxsb3dlZCwgd2hpbGUgc2Nhbm5pbmcu
CisgKiBQcm9iZSB0aGUgY3VycmVudCBjaGFubmVsLCBpZiBhbGxvd2VkLCB3aGls
ZSBzY2FubmluZy4KICAqIElmIHRoZSBjaGFubmVsIGlzIG5vdCBtYXJrZWQgcGFz
c2l2ZS1vbmx5IHRoZW4gc2VuZAogICogYSBwcm9iZSByZXF1ZXN0IGltbWVkaWF0
ZWx5LiAgT3RoZXJ3aXNlIG1hcmsgc3RhdGUgYW5kCiAgKiBsaXN0ZW4gZm9yIGJl
YWNvbnMgb24gdGhlIGNoYW5uZWw7IGlmIHdlIHJlY2VpdmUgc29tZXRoaW5nCkBA
IC01NjgsMjggKzU0OCw0OCBAQAogc2Nhbl9jdXJjaGFuKHN0cnVjdCBpZWVlODAy
MTFfc2Nhbl9zdGF0ZSAqc3MsIHVuc2lnbmVkIGxvbmcgbWF4ZHdlbGwpCiB7CiAJ
c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwICA9IHNzLT5zc192YXA7CisJc3RydWN0
IGllZWU4MDIxMWNvbSAqaWMgPSBzcy0+c3NfaWM7CiAKIAlJRUVFODAyMTFfRFBS
SU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwKIAkgICAgIiVzOiBjYWxsaW5n
OyBtYXhkd2VsbD0lbHVcbiIsCiAJICAgIF9fZnVuY19fLAogCSAgICBtYXhkd2Vs
bCk7Ci0JSUVFRTgwMjExX0xPQ0sodmFwLT5pdl9pYyk7CisJSUVFRTgwMjExX0xP
Q0soaWMpOwogCWlmIChzcy0+c3NfZmxhZ3MgJiBJRUVFODAyMTFfU0NBTl9BQ1RJ
VkUpCiAJCWllZWU4MDIxMV9wcm9iZV9jdXJjaGFuKHZhcCwgMCk7Ci0JY2FsbG91
dF9yZXNldCgmU0NBTl9QUklWQVRFKHNzKS0+c3Nfc2Nhbl90aW1lciwKLQkgICAg
bWF4ZHdlbGwsIHNjYW5fc2lnbmFsLCBzcyk7Ci0JSUVFRTgwMjExX1VOTE9DSyh2
YXAtPml2X2ljKTsKKwl0YXNrcXVldWVfZW5xdWV1ZV90aW1lb3V0KGljLT5pY190
cSwKKwkgICAgJlNDQU5fUFJJVkFURShzcyktPnNzX3NjYW5fY3VyY2hhbiwgbWF4
ZHdlbGwpOworCUlFRUU4MDIxMV9VTkxPQ0soaWMpOwogfQogCiBzdGF0aWMgdm9p
ZAotc2Nhbl9zaWduYWwodm9pZCAqYXJnKQorc2Nhbl9zaWduYWwoc3RydWN0IGll
ZWU4MDIxMV9zY2FuX3N0YXRlICpzcywgaW50IGlmbGFncykKIHsKLQlzdHJ1Y3Qg
aWVlZTgwMjExX3NjYW5fc3RhdGUgKnNzID0gKHN0cnVjdCBpZWVlODAyMTFfc2Nh
bl9zdGF0ZSAqKSBhcmc7CisJc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSBzcy0+
c3NfaWM7CiAKLQlJRUVFODAyMTFfTE9DS19BU1NFUlQoc3MtPnNzX2ljKTsKLQlj
dl9zaWduYWwoJlNDQU5fUFJJVkFURShzcyktPnNzX3NjYW5fY3YpOworCUlFRUU4
MDIxMV9VTkxPQ0tfQVNTRVJUKGljKTsKKworCUlFRUU4MDIxMV9MT0NLKGljKTsK
KwlzY2FuX3NpZ25hbF9sb2NrZWQoc3MsIGlmbGFncyk7CisJSUVFRTgwMjExX1VO
TE9DSyhpYyk7CiB9CiAKK3N0YXRpYyB2b2lkCitzY2FuX3NpZ25hbF9sb2NrZWQo
c3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpzcywgaW50IGlmbGFncykKK3sK
KwlzdHJ1Y3Qgc2Nhbl9zdGF0ZSAqc3NfcHJpdiA9IFNDQU5fUFJJVkFURShzcyk7
CisJc3RydWN0IHRpbWVvdXRfdGFzayAqc2Nhbl90YXNrID0gJnNzX3ByaXYtPnNz
X3NjYW5fY3VyY2hhbjsKKwlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHNzLT5z
c19pYzsKKworCUlFRUU4MDIxMV9MT0NLX0FTU0VSVChpYyk7CisKKwlzc19wcml2
LT5zc19pZmxhZ3MgfD0gaWZsYWdzOworCWlmIChzc19wcml2LT5zc19pZmxhZ3Mg
JiBJU0NBTl9SVU5OSU5HKSB7CisJCWlmICh0YXNrcXVldWVfY2FuY2VsX3RpbWVv
dXQoaWMtPmljX3RxLCBzY2FuX3Rhc2ssIE5VTEwpID09IDApCisJCQl0YXNrcXVl
dWVfZW5xdWV1ZV90aW1lb3V0KGljLT5pY190cSwgc2Nhbl90YXNrLCAwKTsKKwl9
Cit9CisKIC8qCiAgKiBIYW5kbGUgbWluZHdlbGwgcmVxdWlyZW1lbnRzIGNvbXBs
ZXRlZDsgaW5pdGlhdGUgYSBjaGFubmVsCiAgKiBjaGFuZ2UgdG8gdGhlIG5leHQg
Y2hhbm5lbCBhc2FwLgpAQCAtNTk3LDM4ICs1OTcsMzUgQEAKIHN0YXRpYyB2b2lk
CiBzY2FuX21pbmR3ZWxsKHN0cnVjdCBpZWVlODAyMTFfc2Nhbl9zdGF0ZSAqc3Mp
CiB7Ci0Jc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSBzcy0+c3NfaWM7CisJc3Ry
dWN0IGllZWU4MDIxMXZhcCAqdmFwID0gc3MtPnNzX3ZhcDsKIAotCUlFRUU4MDIx
MV9EUFJJTlRGKHNzLT5zc192YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwgIiVzOiBj
YWxsZWRcbiIsIF9fZnVuY19fKTsKKwlJRUVFODAyMTFfRFBSSU5URih2YXAsIElF
RUU4MDIxMV9NU0dfU0NBTiwgIiVzOiBjYWxsZWRcbiIsIF9fZnVuY19fKTsKIAot
CUlFRUU4MDIxMV9MT0NLKGljKTsKLQlzY2FuX3NpZ25hbChzcyk7Ci0JSUVFRTgw
MjExX1VOTE9DSyhpYyk7CisJc2Nhbl9zaWduYWwoc3MsIDApOwogfQogCiBzdGF0
aWMgdm9pZAotc2Nhbl90YXNrKHZvaWQgKmFyZywgaW50IHBlbmRpbmcpCitzY2Fu
X3N0YXJ0KHZvaWQgKmFyZywgaW50IHBlbmRpbmcpCiB7CiAjZGVmaW5lCUlTQ0FO
X1JFUAkoSVNDQU5fTUlORFdFTEwgfCBJU0NBTl9ESVNDQVJEKQogCXN0cnVjdCBp
ZWVlODAyMTFfc2Nhbl9zdGF0ZSAqc3MgPSAoc3RydWN0IGllZWU4MDIxMV9zY2Fu
X3N0YXRlICopIGFyZzsKKwlzdHJ1Y3Qgc2Nhbl9zdGF0ZSAqc3NfcHJpdiA9IFND
QU5fUFJJVkFURShzcyk7CiAJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gc3Mt
PnNzX3ZhcDsKIAlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHNzLT5zc19pYzsK
LQlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW47Ci0JdW5zaWduZWQgbG9u
ZyBtYXhkd2VsbCwgc2NhbmVuZDsKLQlpbnQgc2NhbmRvbmUgPSAwOwogCiAJSUVF
RTgwMjExX0xPQ0soaWMpOwogCWlmICh2YXAgPT0gTlVMTCB8fCAoaWMtPmljX2Zs
YWdzICYgSUVFRTgwMjExX0ZfU0NBTikgPT0gMCB8fAotCSAgICAoU0NBTl9QUklW
QVRFKHNzKS0+c3NfaWZsYWdzICYgSVNDQU5fQUJPUlQpKSB7CisJICAgIChzc19w
cml2LT5zc19pZmxhZ3MgJiBJU0NBTl9BQk9SVCkpIHsKIAkJLyogQ2FuY2VsbGVk
IGJlZm9yZSB3ZSBzdGFydGVkICovCi0JCWdvdG8gZG9uZTsKKwkJc2Nhbl9kb25l
KHNzLCAwKTsKKwkJcmV0dXJuOwogCX0KIAogCWlmIChzcy0+c3NfbmV4dCA9PSBz
cy0+c3NfbGFzdCkgewogCQlJRUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIx
MV9NU0dfU0NBTiwKIAkJCSIlczogbm8gY2hhbm5lbHMgdG8gc2NhblxuIiwgX19m
dW5jX18pOwotCQlzY2FuZG9uZSA9IDE7Ci0JCWdvdG8gZG9uZTsKKwkJc2Nhbl9k
b25lKHNzLCAxKTsKKwkJcmV0dXJuOwogCX0KIAogCWlmICh2YXAtPml2X29wbW9k
ZSA9PSBJRUVFODAyMTFfTV9TVEEgJiYKQEAgLTYzNiwxMTAgKzYzMywxMzQgQEAK
IAkJaWYgKCh2YXAtPml2X2Jzcy0+bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9Q
V1JfTUdUKSA9PSAwKSB7CiAJCQkvKiBFbmFibGUgc3RhdGlvbiBwb3dlciBzYXZl
IG1vZGUgKi8KIAkJCXZhcC0+aXZfc3RhX3BzKHZhcCwgMSk7Ci0JCQkvKgotCQkJ
ICogVXNlIGFuIDFtcyBkZWxheSBzbyB0aGUgbnVsbCBkYXRhIGZyYW1lIGhhcyBh
IGNoYW5jZQotCQkJICogdG8gZ28gb3V0LgotCQkJICogWFhYIFNob3VsZCB1c2Ug
TV9UWENCIG1lY2hhbmlzbSB0byBlbGltaW5hdGUgdGhpcy4KLQkJCSAqLwotCQkJ
Y3ZfdGltZWR3YWl0KCZTQ0FOX1BSSVZBVEUoc3MpLT5zc19zY2FuX2N2LAotCQkJ
ICAgIElFRUU4MDIxMV9MT0NLX09CSihpYyksIG1zZWNzX3RvX3RpY2tzKDEpKTsK
LQkJCWlmIChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgJiBJU0NBTl9BQk9S
VCkKLQkJCQlnb3RvIGRvbmU7CisJCQkvKiBXYWl0IHVudGlsIG51bGwgZGF0YSBm
cmFtZSB3aWxsIGJlIEFDSydlZCAqLworCQkJbXR4X3NsZWVwKHZhcCwgSUVFRTgw
MjExX0xPQ0tfT0JKKGljKSwgUENBVENILAorCQkJICAgICJzdGFfcHMiLCBtc2Vj
c190b190aWNrcygxMCkpOworCQkJaWYgKHNzX3ByaXYtPnNzX2lmbGFncyAmIElT
Q0FOX0FCT1JUKSB7CisJCQkJc2Nhbl9kb25lKHNzLCAwKTsKKwkJCQlyZXR1cm47
CisJCQl9CiAJCX0KIAl9CiAKLQlzY2FuZW5kID0gdGlja3MgKyBTQ0FOX1BSSVZB
VEUoc3MpLT5zc19kdXJhdGlvbjsKKwlzc19wcml2LT5zc19zY2FuZW5kID0gdGlj
a3MgKyBzc19wcml2LT5zc19kdXJhdGlvbjsKIAogCS8qIFhYWCBzY2FuIHN0YXRl
IGNhbiBjaGFuZ2UhIFJlLXZhbGlkYXRlIHNjYW4gc3RhdGUhICovCiAKIAlJRUVF
ODAyMTFfVU5MT0NLKGljKTsKKwogCWljLT5pY19zY2FuX3N0YXJ0KGljKTsJCS8q
IG5vdGlmeSBkcml2ZXIgKi8KKworCXNjYW5fY3VyY2hhbl90YXNrKHNzLCAwKTsK
K30KKworc3RhdGljIHZvaWQKK3NjYW5fY3VyY2hhbl90YXNrKHZvaWQgKmFyZywg
aW50IHBlbmRpbmcpCit7CisJc3RydWN0IGllZWU4MDIxMV9zY2FuX3N0YXRlICpz
cyA9IGFyZzsKKwlzdHJ1Y3Qgc2Nhbl9zdGF0ZSAqc3NfcHJpdiA9IFNDQU5fUFJJ
VkFURShzcyk7CisJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gc3MtPnNzX3Zh
cDsKKwlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9IHNzLT5zc19pYzsKKwlzdHJ1
Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW47CisJdW5zaWduZWQgbG9uZyBtYXhk
d2VsbDsKKwlpbnQgc2NhbmRvbmU7CisKIAlJRUVFODAyMTFfTE9DSyhpYyk7Citl
bmQ6CisJc2NhbmRvbmUgPSAoc3MtPnNzX25leHQgPj0gc3MtPnNzX2xhc3QpIHx8
CisJICAgIChzc19wcml2LT5zc19pZmxhZ3MgJiBJU0NBTl9DQU5DRUwpICE9IDA7
CiAKLQlmb3IgKDs7KSB7CisJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVFODAy
MTFfTVNHX1NDQU4sCisJICAgICIlczogbG9vcCBzdGFydDsgc2NhbmRvbmU9JWRc
biIsCisJICAgIF9fZnVuY19fLAorCSAgICBzY2FuZG9uZSk7CiAKLQkJc2NhbmRv
bmUgPSAoc3MtPnNzX25leHQgPj0gc3MtPnNzX2xhc3QpIHx8Ci0JCSAgICAoU0NB
Tl9QUklWQVRFKHNzKS0+c3NfaWZsYWdzICYgSVNDQU5fQ0FOQ0VMKSAhPSAwOwor
CWlmIChzY2FuZG9uZSB8fCAoc3MtPnNzX2ZsYWdzICYgSUVFRTgwMjExX1NDQU5f
R09UUElDSykgfHwKKwkgICAgKHNzX3ByaXYtPnNzX2lmbGFncyAmIElTQ0FOX0FC
T1JUKSB8fAorCSAgICAgdGltZV9hZnRlcih0aWNrcyArIHNzLT5zc19taW5kd2Vs
bCwgc3NfcHJpdi0+c3Nfc2NhbmVuZCkpIHsKKwkJc3NfcHJpdi0+c3NfaWZsYWdz
ICY9IH5JU0NBTl9SVU5OSU5HOworCQlzY2FuX2VuZChzcywgc2NhbmRvbmUpOwor
CQlyZXR1cm47CisJfSBlbHNlCisJCXNzX3ByaXYtPnNzX2lmbGFncyB8PSBJU0NB
Tl9SVU5OSU5HOwogCi0JCUlFRUU4MDIxMV9EUFJJTlRGKHZhcCwgSUVFRTgwMjEx
X01TR19TQ0FOLAotCQkgICAgIiVzOiBsb29wIHN0YXJ0OyBzY2FuZG9uZT0lZFxu
IiwKLQkJICAgIF9fZnVuY19fLAotCQkgICAgc2NhbmRvbmUpOworCWNoYW4gPSBz
cy0+c3NfY2hhbnNbc3MtPnNzX25leHQrK107CiAKLQkJaWYgKHNjYW5kb25lIHx8
IChzcy0+c3NfZmxhZ3MgJiBJRUVFODAyMTFfU0NBTl9HT1RQSUNLKSB8fAotCQkg
ICAgKFNDQU5fUFJJVkFURShzcyktPnNzX2lmbGFncyAmIElTQ0FOX0FCT1JUKSB8
fAotCQkgICAgIHRpbWVfYWZ0ZXIodGlja3MgKyBzcy0+c3NfbWluZHdlbGwsIHNj
YW5lbmQpKQotCQkJYnJlYWs7CisJLyoKKwkgKiBXYXRjaCBmb3IgdHJ1bmNhdGlv
biBkdWUgdG8gdGhlIHNjYW4gZW5kIHRpbWUuCisJICovCisJaWYgKHRpbWVfYWZ0
ZXIodGlja3MgKyBzcy0+c3NfbWF4ZHdlbGwsIHNzX3ByaXYtPnNzX3NjYW5lbmQp
KQorCQltYXhkd2VsbCA9IHNzX3ByaXYtPnNzX3NjYW5lbmQgLSB0aWNrczsKKwll
bHNlCisJCW1heGR3ZWxsID0gc3MtPnNzX21heGR3ZWxsOwogCi0JCWNoYW4gPSBz
cy0+c3NfY2hhbnNbc3MtPnNzX25leHQrK107CisJSUVFRTgwMjExX0RQUklOVEYo
dmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sCisJICAgICIlczogY2hhbiAlM2QlYyAt
PiAlM2QlYyBbJXMsIGR3ZWxsIG1pbiAlbHVtcyBtYXggJWx1bXNdXG4iLAorCSAg
ICBfX2Z1bmNfXywKKwkgICAgaWVlZTgwMjExX2NoYW4yaWVlZShpYywgaWMtPmlj
X2N1cmNoYW4pLAorCSAgICBpZWVlODAyMTFfY2hhbm5lbF90eXBlX2NoYXIoaWMt
PmljX2N1cmNoYW4pLAorCSAgICBpZWVlODAyMTFfY2hhbjJpZWVlKGljLCBjaGFu
KSwKKwkgICAgaWVlZTgwMjExX2NoYW5uZWxfdHlwZV9jaGFyKGNoYW4pLAorCSAg
ICAoc3MtPnNzX2ZsYWdzICYgSUVFRTgwMjExX1NDQU5fQUNUSVZFKSAmJgorCQko
Y2hhbi0+aWNfZmxhZ3MgJiBJRUVFODAyMTFfQ0hBTl9QQVNTSVZFKSA9PSAwID8K
KwkJImFjdGl2ZSIgOiAicGFzc2l2ZSIsCisJICAgIHRpY2tzX3RvX21zZWNzKHNz
LT5zc19taW5kd2VsbCksIHRpY2tzX3RvX21zZWNzKG1heGR3ZWxsKSk7CiAKLQkJ
LyoKLQkJICogV2F0Y2ggZm9yIHRydW5jYXRpb24gZHVlIHRvIHRoZSBzY2FuIGVu
ZCB0aW1lLgotCQkgKi8KLQkJaWYgKHRpbWVfYWZ0ZXIodGlja3MgKyBzcy0+c3Nf
bWF4ZHdlbGwsIHNjYW5lbmQpKQotCQkJbWF4ZHdlbGwgPSBzY2FuZW5kIC0gdGlj
a3M7Ci0JCWVsc2UKLQkJCW1heGR3ZWxsID0gc3MtPnNzX21heGR3ZWxsOworCS8q
CisJICogUG90ZW50aWFsbHkgY2hhbmdlIGNoYW5uZWwgYW5kIHBoeSBtb2RlLgor
CSAqLworCWljLT5pY19jdXJjaGFuID0gY2hhbjsKKwlpYy0+aWNfcnQgPSBpZWVl
ODAyMTFfZ2V0X3JhdGV0YWJsZShjaGFuKTsKKwlJRUVFODAyMTFfVU5MT0NLKGlj
KTsKKwkvKgorCSAqIFBlcmZvcm0gdGhlIGNoYW5uZWwgY2hhbmdlIGFuZCBzY2Fu
IHVubG9ja2VkIHNvIHRoZSBkcml2ZXIKKwkgKiBtYXkgc2xlZXAuIE9uY2Ugc2V0
X2NoYW5uZWwgcmV0dXJucyB0aGUgaGFyZHdhcmUgaGFzCisJICogY29tcGxldGVk
IHRoZSBjaGFubmVsIGNoYW5nZS4KKwkgKi8KKwlpYy0+aWNfc2V0X2NoYW5uZWwo
aWMpOworCWllZWU4MDIxMV9yYWRpb3RhcF9jaGFuX2NoYW5nZShpYyk7CiAKLQkJ
SUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sCi0JCSAg
ICAiJXM6IGNoYW4gJTNkJWMgLT4gJTNkJWMgWyVzLCBkd2VsbCBtaW4gJWx1bXMg
bWF4ICVsdW1zXVxuIiwKLQkJICAgIF9fZnVuY19fLAotCQkgICAgaWVlZTgwMjEx
X2NoYW4yaWVlZShpYywgaWMtPmljX2N1cmNoYW4pLAotCQkgICAgaWVlZTgwMjEx
X2NoYW5uZWxfdHlwZV9jaGFyKGljLT5pY19jdXJjaGFuKSwKLQkJICAgIGllZWU4
MDIxMV9jaGFuMmllZWUoaWMsIGNoYW4pLAotCQkgICAgaWVlZTgwMjExX2NoYW5u
ZWxfdHlwZV9jaGFyKGNoYW4pLAotCQkgICAgKHNzLT5zc19mbGFncyAmIElFRUU4
MDIxMV9TQ0FOX0FDVElWRSkgJiYKLQkJCShjaGFuLT5pY19mbGFncyAmIElFRUU4
MDIxMV9DSEFOX1BBU1NJVkUpID09IDAgPwotCQkJImFjdGl2ZSIgOiAicGFzc2l2
ZSIsCi0JCSAgICB0aWNrc190b19tc2Vjcyhzcy0+c3NfbWluZHdlbGwpLCB0aWNr
c190b19tc2VjcyhtYXhkd2VsbCkpOworCS8qCisJICogU2NhbiBjdXJjaGFuLiAg
RHJpdmVycyBmb3IgImludGVsbGlnZW50IGhhcmR3YXJlIgorCSAqIG92ZXJyaWRl
IGljX3NjYW5fY3VyY2hhbiB0byB0ZWxsIHRoZSBkZXZpY2UgdG8gZG8KKwkgKiB0
aGUgd29yay4gIE90aGVyd2lzZSB3ZSBtYW5hZ2UgdGhlIHdvcmsgb3Vyc2VsdmVz
OworCSAqIHNlbmRpbmcgYSBwcm9iZSByZXF1ZXN0IChhcyBuZWVkZWQpLCBhbmQg
YXJtaW5nIHRoZQorCSAqIHRpbWVvdXQgdG8gc3dpdGNoIGNoYW5uZWxzIGFmdGVy
IG1heGR3ZWxsIHRpY2tzLgorCSAqCisJICogc2Nhbl9jdXJjaGFuIHNob3VsZCBv
bmx5IHBhdXNlIGZvciB0aGUgdGltZSByZXF1aXJlZCB0bworCSAqIHByZXBhcmUv
aW5pdGlhdGUgdGhlIGhhcmR3YXJlIGZvciB0aGUgc2NhbiAoaWYgYXQgYWxsKS4K
KwkgKi8KKwlpYy0+aWNfc2Nhbl9jdXJjaGFuKHNzLCBtYXhkd2VsbCk7CisJSUVF
RTgwMjExX0xPQ0soaWMpOwogCi0JCS8qCi0JCSAqIFBvdGVudGlhbGx5IGNoYW5n
ZSBjaGFubmVsIGFuZCBwaHkgbW9kZS4KLQkJICovCi0JCWljLT5pY19jdXJjaGFu
ID0gY2hhbjsKLQkJaWMtPmljX3J0ID0gaWVlZTgwMjExX2dldF9yYXRldGFibGUo
Y2hhbik7Ci0JCUlFRUU4MDIxMV9VTkxPQ0soaWMpOwotCQkvKgotCQkgKiBQZXJm
b3JtIHRoZSBjaGFubmVsIGNoYW5nZSBhbmQgc2NhbiB1bmxvY2tlZCBzbyB0aGUg
ZHJpdmVyCi0JCSAqIG1heSBzbGVlcC4gT25jZSBzZXRfY2hhbm5lbCByZXR1cm5z
IHRoZSBoYXJkd2FyZSBoYXMKLQkJICogY29tcGxldGVkIHRoZSBjaGFubmVsIGNo
YW5nZS4KLQkJICovCi0JCWljLT5pY19zZXRfY2hhbm5lbChpYyk7Ci0JCWllZWU4
MDIxMV9yYWRpb3RhcF9jaGFuX2NoYW5nZShpYyk7CisJLyogWFhYIHNjYW4gc3Rh
dGUgY2FuIGNoYW5nZSEgUmUtdmFsaWRhdGUgc2NhbiBzdGF0ZSEgKi8KIAotCQkv
KgotCQkgKiBTY2FuIGN1cmNoYW4uICBEcml2ZXJzIGZvciAiaW50ZWxsaWdlbnQg
aGFyZHdhcmUiCi0JCSAqIG92ZXJyaWRlIGljX3NjYW5fY3VyY2hhbiB0byB0ZWxs
IHRoZSBkZXZpY2UgdG8gZG8KLQkJICogdGhlIHdvcmsuICBPdGhlcndpc2Ugd2Ug
bWFuYWdlIHRoZSB3b3JrIG91dHNlbHZlczsKLQkJICogc2VuZGluZyBhIHByb2Jl
IHJlcXVlc3QgKGFzIG5lZWRlZCksIGFuZCBhcm1pbmcgdGhlCi0JCSAqIHRpbWVv
dXQgdG8gc3dpdGNoIGNoYW5uZWxzIGFmdGVyIG1heGR3ZWxsIHRpY2tzLgotCQkg
KgotCQkgKiBzY2FuX2N1cmNoYW4gc2hvdWxkIG9ubHkgcGF1c2UgZm9yIHRoZSB0
aW1lIHJlcXVpcmVkIHRvCi0JCSAqIHByZXBhcmUvaW5pdGlhdGUgdGhlIGhhcmR3
YXJlIGZvciB0aGUgc2NhbiAoaWYgYXQgYWxsKSwgdGhlCi0JCSAqIGJlbG93IGNv
bmR2YXIgaXMgdXNlZCB0byBzbGVlcCBmb3IgdGhlIGNoYW5uZWxzIGR3ZWxsIHRp
bWUKLQkJICogYW5kIGFsbG93cyBpdCB0byBiZSBzaWduYWxsZWQgZm9yIGFib3J0
LgotCQkgKi8KLQkJaWMtPmljX3NjYW5fY3VyY2hhbihzcywgbWF4ZHdlbGwpOwot
CQlJRUVFODAyMTFfTE9DSyhpYyk7CisJc3NfcHJpdi0+c3NfY2hhbm1pbmR3ZWxs
ID0gdGlja3MgKyBzcy0+c3NfbWluZHdlbGw7CisJLyogY2xlYXIgbWluZHdlbGwg
bG9jayBhbmQgaW5pdGlhbCBjaGFubmVsIGNoYW5nZSBmbHVzaCAqLworCXNzX3By
aXYtPnNzX2lmbGFncyAmPSB+SVNDQU5fUkVQOwogCi0JCS8qIFhYWCBzY2FuIHN0
YXRlIGNhbiBjaGFuZ2UhIFJlLXZhbGlkYXRlIHNjYW4gc3RhdGUhICovCisJaWYg
KHNzX3ByaXYtPnNzX2lmbGFncyAmIChJU0NBTl9DQU5DRUx8SVNDQU5fQUJPUlQp
KQorCQlnb3RvIGVuZDsKIAotCQlTQ0FOX1BSSVZBVEUoc3MpLT5zc19jaGFubWlu
ZHdlbGwgPSB0aWNrcyArIHNzLT5zc19taW5kd2VsbDsKLQkJLyogY2xlYXIgbWlu
ZHdlbGwgbG9jayBhbmQgaW5pdGlhbCBjaGFubmVsIGNoYW5nZSBmbHVzaCAqLwot
CQlTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgJj0gfklTQ0FOX1JFUDsKKwlJ
RUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwgIiVzOiB3
YWl0aW5nXG4iLCBfX2Z1bmNfXyk7CisJSUVFRTgwMjExX1VOTE9DSyhpYyk7Cit9
CiAKLQkJaWYgKChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgJiAoSVNDQU5f
Q0FOQ0VMfElTQ0FOX0FCT1JUKSkpCi0JCQljb250aW51ZTsKK3N0YXRpYyB2b2lk
CitzY2FuX2VuZChzdHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKnNzLCBpbnQg
c2NhbmRvbmUpCit7CisJc3RydWN0IHNjYW5fc3RhdGUgKnNzX3ByaXYgPSBTQ0FO
X1BSSVZBVEUoc3MpOworCXN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9IHNzLT5z
c192YXA7CisJc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSBzcy0+c3NfaWM7CiAK
LQkJSUVFRTgwMjExX0RQUklOVEYodmFwLCBJRUVFODAyMTFfTVNHX1NDQU4sICIl
czogd2FpdGluZ1xuIiwgX19mdW5jX18pOwotCQkvKiBXYWl0IHRvIGJlIHNpZ25h
bGxlZCB0byBzY2FuIHRoZSBuZXh0IGNoYW5uZWwgKi8KLQkJY3Zfd2FpdCgmU0NB
Tl9QUklWQVRFKHNzKS0+c3Nfc2Nhbl9jdiwgSUVFRTgwMjExX0xPQ0tfT0JKKGlj
KSk7Ci0JfQorCUlFRUU4MDIxMV9MT0NLX0FTU0VSVChpYyk7CiAKIAlJRUVFODAy
MTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwgIiVzOiBvdXRcbiIs
IF9fZnVuY19fKTsKIAotCWlmIChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3Mg
JiBJU0NBTl9BQk9SVCkKLQkJZ290byBkb25lOworCWlmIChzc19wcml2LT5zc19p
ZmxhZ3MgJiBJU0NBTl9BQk9SVCkgeworCQlzY2FuX2RvbmUoc3MsIHNjYW5kb25l
KTsKKwkJcmV0dXJuOworCX0KIAogCUlFRUU4MDIxMV9VTkxPQ0soaWMpOwogCWlj
LT5pY19zY2FuX2VuZChpYyk7CQkvKiBub3RpZnkgZHJpdmVyICovCkBAIC03NTAs
OCArNzcxLDcgQEAKIAkgKiBTaW5jZSBhIGNhbmNlbGxhdGlvbiBtYXkgaGF2ZSBv
Y2N1cmVkIGR1cmluZyBvbmUgb2YgdGhlCiAJICogZHJpdmVyIGNhbGxzICh3aGls
c3QgdW5sb2NrZWQpLCB1cGRhdGUgc2NhbmRvbmUuCiAJICovCi0JaWYgKHNjYW5k
b25lID09IDAgJiYKLQkgICAgKChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3Mg
JiBJU0NBTl9DQU5DRUwpICE9IDApKSB7CisJaWYgKHNjYW5kb25lID09IDAgJiYg
KHNzX3ByaXYtPnNzX2lmbGFncyAmIElTQ0FOX0NBTkNFTCkgIT0gMCkgewogCQkv
KiBYWFggcHJpbnRmPyAqLwogCQlpZl9wcmludGYodmFwLT5pdl9pZnAsCiAJCSAg
ICAiJXM6IE9PUFMhIHNjYW4gY2FuY2VsbGVkIGR1cmluZyBkcml2ZXIgY2FsbCAo
MSkhXG4iLApAQCAtNzc2LDcgKzc5Niw3IEBACiAJCUlFRUU4MDIxMV9MT0NLKGlj
KTsKIAl9CiAJLyogY2xlYXIgaW50ZXJuYWwgZmxhZ3MgYW5kIGFueSBpbmRpY2F0
aW9uIG9mIGEgcGljayAqLwotCVNDQU5fUFJJVkFURShzcyktPnNzX2lmbGFncyAm
PSB+SVNDQU5fUkVQOworCXNzX3ByaXYtPnNzX2lmbGFncyAmPSB+SVNDQU5fUkVQ
OwogCXNzLT5zc19mbGFncyAmPSB+SUVFRTgwMjExX1NDQU5fR09UUElDSzsKIAog
CS8qCkBAIC03ODYsMTUgKzgwNiwxNSBAQAogCSAqIG5vdGlmeSB0aGUgZHJpdmVy
IHRvIGVuZCB0aGUgc2NhbiBhYm92ZSB0byBhdm9pZCBoYXZpbmcKIAkgKiByeCBm
cmFtZXMgYWx0ZXIgdGhlIHNjYW4gY2FuZGlkYXRlIGxpc3QuCiAJICovCi0JaWYg
KChTQ0FOX1BSSVZBVEUoc3MpLT5zc19pZmxhZ3MgJiBJU0NBTl9DQU5DRUwpID09
IDAgJiYKKwlpZiAoKHNzX3ByaXYtPnNzX2lmbGFncyAmIElTQ0FOX0NBTkNFTCkg
PT0gMCAmJgogCSAgICAhc3MtPnNzX29wcy0+c2Nhbl9lbmQoc3MsIHZhcCkgJiYK
IAkgICAgKHNzLT5zc19mbGFncyAmIElFRUU4MDIxMV9TQ0FOX09OQ0UpID09IDAg
JiYKLQkgICAgdGltZV9iZWZvcmUodGlja3MgKyBzcy0+c3NfbWluZHdlbGwsIHNj
YW5lbmQpKSB7CisJICAgIHRpbWVfYmVmb3JlKHRpY2tzICsgc3MtPnNzX21pbmR3
ZWxsLCBzc19wcml2LT5zc19zY2FuZW5kKSkgewogCQlJRUVFODAyMTFfRFBSSU5U
Rih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwKIAkJICAgICIlczogZG9uZSwgcmVz
dGFydCAiCiAJCSAgICAiW3RpY2tzICV1LCBkd2VsbCBtaW4gJWx1IHNjYW5lbmQg
JWx1XVxuIiwKIAkJICAgIF9fZnVuY19fLAotCQkgICAgdGlja3MsIHNzLT5zc19t
aW5kd2VsbCwgc2NhbmVuZCk7CisJCSAgICB0aWNrcywgc3MtPnNzX21pbmR3ZWxs
LCBzc19wcml2LT5zc19zY2FuZW5kKTsKIAkJc3MtPnNzX25leHQgPSAwOwkvKiBy
ZXNldCB0byBiZWdpbmluZyAqLwogCQlpZiAoc3MtPnNzX2ZsYWdzICYgSUVFRTgw
MjExX1NDQU5fQUNUSVZFKQogCQkJdmFwLT5pdl9zdGF0cy5pc19zY2FuX2FjdGl2
ZSsrOwpAQCAtODAyLDcgKzgyMiw3IEBACiAJCQl2YXAtPml2X3N0YXRzLmlzX3Nj
YW5fcGFzc2l2ZSsrOwogCiAJCXNzLT5zc19vcHMtPnNjYW5fcmVzdGFydChzcywg
dmFwKTsJLyogWFhYPyAqLwotCQlpZWVlODAyMTFfcnVudGFzayhpYywgJlNDQU5f
UFJJVkFURShzcyktPnNzX3NjYW5fdGFzayk7CisJCWllZWU4MDIxMV9ydW50YXNr
KGljLCAmc3NfcHJpdi0+c3Nfc2Nhbl9zdGFydCk7CiAJCUlFRUU4MDIxMV9VTkxP
Q0soaWMpOwogCQlyZXR1cm47CiAJfQpAQCAtODE0LDE0ICs4MzQsMTMgQEAKIAlJ
RUVFODAyMTFfRFBSSU5URih2YXAsIElFRUU4MDIxMV9NU0dfU0NBTiwKIAkgICAg
IiVzOiAlcywgW3RpY2tzICV1LCBkd2VsbCBtaW4gJWx1IHNjYW5lbmQgJWx1XVxu
IiwKIAkgICAgX19mdW5jX18sIHNjYW5kb25lID8gImRvbmUiIDogInN0b3BwZWQi
LAotCSAgICB0aWNrcywgc3MtPnNzX21pbmR3ZWxsLCBzY2FuZW5kKTsKKwkgICAg
dGlja3MsIHNzLT5zc19taW5kd2VsbCwgc3NfcHJpdi0+c3Nfc2NhbmVuZCk7CiAK
IAkvKgogCSAqIFNpbmNlIGEgY2FuY2VsbGF0aW9uIG1heSBoYXZlIG9jY3VyZWQg
ZHVyaW5nIG9uZSBvZiB0aGUKIAkgKiBkcml2ZXIgY2FsbHMgKHdoaWxzdCB1bmxv
Y2tlZCksIHVwZGF0ZSBzY2FuZG9uZS4KIAkgKi8KLQlpZiAoc2NhbmRvbmUgPT0g
MCAmJgotCSAgICAoKFNDQU5fUFJJVkFURShzcyktPnNzX2lmbGFncyAmIElTQ0FO
X0NBTkNFTCkgIT0gMCkpIHsKKwlpZiAoc2NhbmRvbmUgPT0gMCAmJiAoc3NfcHJp
di0+c3NfaWZsYWdzICYgSVNDQU5fQ0FOQ0VMKSAhPSAwKSB7CiAJCS8qIFhYWCBw
cmludGY/ICovCiAJCWlmX3ByaW50Zih2YXAtPml2X2lmcCwKIAkJICAgICIlczog
T09QUyEgc2NhbiBjYW5jZWxsZWQgZHVyaW5nIGRyaXZlciBjYWxsICgyKSFcbiIs
CkBAIC04MjksNiArODQ4LDE4IEBACiAJCXNjYW5kb25lID0gMTsKIAl9CiAKKwlz
Y2FuX2RvbmUoc3MsIHNjYW5kb25lKTsKK30KKworc3RhdGljIHZvaWQKK3NjYW5f
ZG9uZShzdHJ1Y3QgaWVlZTgwMjExX3NjYW5fc3RhdGUgKnNzLCBpbnQgc2NhbmRv
bmUpCit7CisJc3RydWN0IHNjYW5fc3RhdGUgKnNzX3ByaXYgPSBTQ0FOX1BSSVZB
VEUoc3MpOworCXN0cnVjdCBpZWVlODAyMTFjb20gKmljID0gc3MtPnNzX2ljOwor
CXN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9IHNzLT5zc192YXA7CisKKwlJRUVF
ODAyMTFfTE9DS19BU1NFUlQoaWMpOworCiAJLyoKIAkgKiBDbGVhciB0aGUgU0NB
TiBiaXQgZmlyc3QgaW4gY2FzZSBmcmFtZXMgYXJlCiAJICogcGVuZGluZyBvbiB0
aGUgc3RhdGlvbiBwb3dlciBzYXZlIHF1ZXVlLiAgSWYKQEAgLTgzNSw4ICs4NjYs
OCBAQAogCSAqIHdlIGRlZmVyIHRoaXMgdGhlbiB0aGUgZGlzcGF0Y2ggb2YgdGhl
IGZyYW1lcwogCSAqIG1heSBnZW5lcmF0ZSBhIHJlcXVlc3QgdG8gY2FuY2VsIHNj
YW5uaW5nLgogCSAqLwotZG9uZToKIAlpYy0+aWNfZmxhZ3MgJj0gfklFRUU4MDIx
MV9GX1NDQU47CisKIAkvKgogCSAqIERyb3Agb3V0IG9mIHBvd2VyIHNhdmUgbW9k
ZSB3aGVuIGEgc2NhbiBoYXMKIAkgKiBjb21wbGV0ZWQuICBJZiB0aGlzIHNjYW4g
d2FzIHByZW1hdHVyZWx5IHRlcm1pbmF0ZWQKQEAgLTg1Myw3ICs4ODQsOCBAQAog
CQkJaWMtPmljX2ZsYWdzX2V4dCAmPSB+SUVFRTgwMjExX0ZFWFRfQkdTQ0FOOwog
CQl9CiAJfQotCVNDQU5fUFJJVkFURShzcyktPnNzX2lmbGFncyAmPSB+KElTQ0FO
X0NBTkNFTHxJU0NBTl9BQk9SVCk7CisJc3NfcHJpdi0+c3NfaWZsYWdzICY9IH4o
SVNDQU5fQ0FOQ0VMfElTQ0FOX0FCT1JUKTsKKwlzc19wcml2LT5zc19zY2FuZW5k
ID0gMDsKIAlzcy0+c3NfZmxhZ3MgJj0gfihJRUVFODAyMTFfU0NBTl9PTkNFIHwg
SUVFRTgwMjExX1NDQU5fUElDSzFTVCk7CiAJSUVFRTgwMjExX1VOTE9DSyhpYyk7
CiAjdW5kZWYgSVNDQU5fUkVQCkBAIC05NDcsOSArOTc5LDkgQEAKIAkJaWMtPmlj
X3NjYW4gPSBOVUxMOwogCQlyZXR1cm47CiAJfQotCWNhbGxvdXRfaW5pdF9tdHgo
JnNzLT5zc19zY2FuX3RpbWVyLCBJRUVFODAyMTFfTE9DS19PQkooaWMpLCAwKTsK
LQljdl9pbml0KCZzcy0+c3Nfc2Nhbl9jdiwgInNjYW4iKTsKLQlUQVNLX0lOSVQo
JnNzLT5zc19zY2FuX3Rhc2ssIDAsIHNjYW5fdGFzaywgc3MpOworCVRBU0tfSU5J
VCgmc3MtPnNzX3NjYW5fc3RhcnQsIDAsIHNjYW5fc3RhcnQsIHNzKTsKKwlUSU1F
T1VUX1RBU0tfSU5JVChpYy0+aWNfdHEsICZzcy0+c3Nfc2Nhbl9jdXJjaGFuLCAw
LAorCSAgICBzY2FuX2N1cmNoYW5fdGFzaywgc3MpOwogCiAJaWMtPmljX3NjYW4g
PSAmc3MtPmJhc2U7CiAJc3MtPmJhc2Uuc3NfaWMgPSBpYzsK

------------HpTmAUBujhjyaoMMYhGG9X--




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