Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Apr 2009 00:19:24 -0700
From:      Kip Macy <kmacy@freebsd.org>
To:        Ben Kelly <ben@wanderview.com>
Cc:        Lawrence Stewart <lstewart@freebsd.org>, current@freebsd.org
Subject:   Re: [patch] zfs livelock and thread priorities
Message-ID:  <3c1674c90904300019w63f31ac0n141c3d5116eadb97@mail.gmail.com>
In-Reply-To: <38E0E938-68DA-4D2E-8191-3CEC836A82E9@wanderview.com>
References:  <AC3C4C3F-40C6-4AF9-BAF3-2C4D1E444839@wanderview.com> <ed91d4a80904271839l49420c8rbcfd52dd6e72eb83@mail.gmail.com> <ed91d4a80904281111q3b9a3c45vc9fcf129dde8c10d@mail.gmail.com> <F86D3461-3ABD-4A56-B9A6-36857364DF4B@wanderview.com> <4D8E4457-89AA-4F19-9960-E090D3B8E319@wanderview.com> <20090429064303.GA2189@a91-153-125-115.elisa-laajakaista.fi> <A83EA714-1EB5-41C1-91E2-FD031FD0DE0E@wanderview.com> <DA5E47A7-8D3C-4D79-A36E-4460ADC9E3F3@wanderview.com> <49F8E71B.2020102@freebsd.org> <38E0E938-68DA-4D2E-8191-3CEC836A82E9@wanderview.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--0016e645b83cfeb9740468c083dd
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I have a system at work that I could lock up within minutes with
fsstress. With this patch the system is now stable with large numbers
of fsstress processes running.

Provided I get the heads up from pjd, I will commit it.

-Kip


On Wed, Apr 29, 2009 at 6:56 PM, Ben Kelly <ben@wanderview.com> wrote:
> On Apr 29, 2009, at 7:47 PM, Lawrence Stewart wrote:
>>
>> Ben Kelly wrote:
>>>
>>> On Apr 29, 2009, at 7:58 AM, Ben Kelly wrote:
>>>>
>>>> On Apr 29, 2009, at 2:43 AM, Jaakko Heinonen wrote:
>>>>>
>>>>> On 2009-04-28, Ben Kelly wrote:
>>>>>>>
>>>>>>>
>>>>>>> http://www.wanderview.com/svn/public/misc/zfs/zfs_zinactive_deadloc=
k.diff
>>>>>>
>>>>>> The patch is updated in the same location above.
>>>>>
>>>>> There's a fatal typo in the patch:
>>>>>
>>>>> - =A0 =A0ZFS_OBJ_HOLD_ENTER(zfsvfs, z_id);
>>>>> + =A0 =A0locked =3D=3D ZFS_OBJ_HOLD_TRYENTER(zfsvfs, z_id);
>>>>> =A0 =A0 =A0 =A0 =A0 ^^^^
>>>>
>>>> Yikes! =A0Thanks for catching this!
>>>>
>>>> The patch has been updated at the same URL. =A0If anyone has patched t=
heir
>>>> system please grab the new version. =A0Sorry for the confusion.
>>>
>>> Argh! =A0The patch was still broken even after this fix.
>>> Apparently when I tested my taskqueue solution I forgot to do a make
>>> installkernel. =A0For some reason the taskqueue approach deadlocks my s=
erver
>>> at home under normal conditions. =A0Therefore I have reverted the patch=
 to use
>>> the simple return. =A0I still don't think this is the right solution, b=
ut I
>>> don't have time to completely figure out what is going on right now.
>>> Again, sorry for the mess!
>>
>> As far as I can tell, one of the developers is working on a patch to
>> address the same issue you're discussing in this thread. He ran into it =
on
>> his SSD ZFS installation and the symptoms sound likely to be the same as
>> what you're discussing. I believe he's testing a patch which is inspired=
 by
>> the one the opensolaris guys used to fix the bug, which you can look at
>> here:
>>
>> http://people.freebsd.org/~pjd/patches/vn_rele_hang.patch
>>
>> The open solaris one has major incompatibilities with FreeBSD so can't b=
e
>> applied directly.
>>
>> As soon as it's ready I think he'll be making it available for wider
>> testing so stay tuned.
>>
>> Cheers,
>> Lawrence
>>
>> PS Apologies if the issue you're working on is not the same as the one
>> addressed by the opensolaris patch above.
>
>
> Thank you! =A0This does appear to be the same issue and I look forward to
> seeing the final fix.
>
> For now I've gone ahead and updated my patch with a naive adaptation of t=
he
> opensolaris diff. =A0It seems more correct than what I had and I was worr=
ied
> people would waste time testing my broken approach. =A0I've only been abl=
e to
> test it on my i386, non-SMP server however.
>
> Thanks again.
>
> - Ben
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org=
"
>



--=20
All that is necessary for the triumph of evil is that good men do nothing.
    Edmund Burke

--0016e645b83cfeb9740468c083dd
Content-Type: application/octet-stream; name="zfs_async_vrele.diff"
Content-Disposition: attachment; filename="zfs_async_vrele.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fu54iz0x0

SW5kZXg6IHN5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvemls
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9u
L2ZzL3pmcy96aWwuYwkocmV2aXNpb24gMTkxNjc5KQorKysgc3lzL2NkZGwvY29udHJpYi9vcGVu
c29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy96aWwuYwkod29ya2luZyBjb3B5KQpAQCAtMTA0MSw3
ICsxMDQxLDcgQEAKIAlpZiAoKGl0eCAhPSBOVUxMKSAmJgogCSAgICAoaXR4LT5pdHhfbHIubHJj
X3R4ZyA8PSBzcGFfbGFzdF9zeW5jZWRfdHhnKHppbG9nLT56bF9zcGEpKSkgewogCQkodm9pZCkg
dGFza3FfZGlzcGF0Y2goemlsb2ctPnpsX2NsZWFuX3Rhc2txLAotCQkgICAgKHZvaWQgKCopKHZv
aWQgKikpemlsX2l0eF9jbGVhbiwgemlsb2csIFRRX05PU0xFRVApOworCQkgICAgKHRhc2tfZnVu
Y190ICopemlsX2l0eF9jbGVhbiwgemlsb2csIFRRX1NMRUVQKTsKIAl9CiAJbXV0ZXhfZXhpdCgm
emlsb2ctPnpsX2xvY2spOwogfQpJbmRleDogc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91
dHMvY29tbW9uL2ZzL3pmcy9kc2xfcG9vbC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jZGRsL2NvbnRy
aWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9mcy96ZnMvZHNsX3Bvb2wuYwkocmV2aXNpb24gMTkx
Njc5KQorKysgc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9k
c2xfcG9vbC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKiBDRERMIEhFQURF
UiBFTkQKICAqLwogLyoKLSAqIENvcHlyaWdodCAyMDA4IFN1biBNaWNyb3N5c3RlbXMsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAwOSBTdW4gTWljcm9zeXN0ZW1z
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5z
ZSB0ZXJtcy4KICAqLwogCkBAIC00NSw3ICs0NSw2IEBACiB1aW50NjRfdCB6ZnNfd3JpdGVfbGlt
aXRfbWF4ID0gMDsJCS8qIG1heCBkYXRhIHBheWxvYWQgcGVyIHR4ZyAqLwogdWludDY0X3QgemZz
X3dyaXRlX2xpbWl0X2luZmxhdGVkID0gMDsKIHVpbnQ2NF90IHpmc193cml0ZV9saW1pdF9vdmVy
cmlkZSA9IDA7Ci1leHRlcm4gdWludDY0X3QgemZzX3dyaXRlX2xpbWl0X21pbjsKIAoga211dGV4
X3QgemZzX3dyaXRlX2xpbWl0X2xvY2s7CiAKQEAgLTkxLDYgKzkwLDkgQEAKIAltdXRleF9pbml0
KCZkcC0+ZHBfbG9jaywgTlVMTCwgTVVURVhfREVGQVVMVCwgTlVMTCk7CiAJbXV0ZXhfaW5pdCgm
ZHAtPmRwX3NjcnViX2NhbmNlbF9sb2NrLCBOVUxMLCBNVVRFWF9ERUZBVUxULCBOVUxMKTsKIAor
CWRwLT5kcF92bnJlbGVfdGFza3EgPSB0YXNrcV9jcmVhdGUoInpmc192bl9yZWxlX3Rhc2txIiwg
MSwgbWluY2xzeXNwcmksCisJICAgIDEsIDQsIDApOworCiAJcmV0dXJuIChkcCk7CiB9CiAKQEAg
LTEzMCwxNCArMTMyLDE1IEBACiAJCQlnb3RvIG91dDsKIAkJZXJyID0gZHNsX2RhdGFzZXRfaG9s
ZF9vYmooZHAsIGRkLT5kZF9waHlzLT5kZF9oZWFkX2RhdGFzZXRfb2JqLAogCQkgICAgRlRBRywg
JmRzKTsKKwkJaWYgKGVyciA9PSAwKSB7CisJCQllcnIgPSBkc2xfZGF0YXNldF9ob2xkX29iaihk
cCwKKwkJCSAgICBkcy0+ZHNfcGh5cy0+ZHNfcHJldl9zbmFwX29iaiwgZHAsCisJCQkgICAgJmRw
LT5kcF9vcmlnaW5fc25hcCk7CisJCQlkc2xfZGF0YXNldF9yZWxlKGRzLCBGVEFHKTsKKwkJfQor
CQlkc2xfZGlyX2Nsb3NlKGRkLCBkcCk7CiAJCWlmIChlcnIpCiAJCQlnb3RvIG91dDsKLQkJZXJy
ID0gZHNsX2RhdGFzZXRfaG9sZF9vYmooZHAsIGRzLT5kc19waHlzLT5kc19wcmV2X3NuYXBfb2Jq
LAotCQkgICAgZHAsICZkcC0+ZHBfb3JpZ2luX3NuYXApOwotCQlpZiAoZXJyKQotCQkJZ290byBv
dXQ7Ci0JCWRzbF9kYXRhc2V0X3JlbGUoZHMsIEZUQUcpOwotCQlkc2xfZGlyX2Nsb3NlKGRkLCBk
cCk7CiAJfQogCiAJLyogZ2V0IHNjcnViIHN0YXR1cyAqLwpAQCAtMjIwLDcgKzIyMyw2IEBACiAK
IAl0eGdfbGlzdF9kZXN0cm95KCZkcC0+ZHBfZGlydHlfZGF0YXNldHMpOwogCXR4Z19saXN0X2Rl
c3Ryb3koJmRwLT5kcF9kaXJ0eV9kaXJzKTsKLQl0eGdfbGlzdF9kZXN0cm95KCZkcC0+ZHBfc3lu
Y190YXNrcyk7CiAJbGlzdF9kZXN0cm95KCZkcC0+ZHBfc3luY2VkX2RhdGFzZXRzKTsKIAogCWFy
Y19mbHVzaChkcC0+ZHBfc3BhKTsKQEAgLTIyOCw2ICsyMzAsOSBAQAogCXJ3X2Rlc3Ryb3koJmRw
LT5kcF9jb25maWdfcndsb2NrKTsKIAltdXRleF9kZXN0cm95KCZkcC0+ZHBfbG9jayk7CiAJbXV0
ZXhfZGVzdHJveSgmZHAtPmRwX3NjcnViX2NhbmNlbF9sb2NrKTsKKwl0YXNrcV9kZXN0cm95KGRw
LT5kcF92bnJlbGVfdGFza3EpOworCWlmIChkcC0+ZHBfYmxrc3RhdHMpCisJCWttZW1fZnJlZShk
cC0+ZHBfYmxrc3RhdHMsIHNpemVvZiAoemZzX2FsbF9ibGtzdGF0c190KSk7CiAJa21lbV9mcmVl
KGRwLCBzaXplb2YgKGRzbF9wb29sX3QpKTsKIH0KIApAQCAtMjk2LDI0ICszMDEsNTcgQEAKIAl0
eCA9IGRtdV90eF9jcmVhdGVfYXNzaWduZWQoZHAsIHR4Zyk7CiAKIAlkcC0+ZHBfcmVhZF9vdmVy
aGVhZCA9IDA7CisJc3RhcnQgPSBnZXRocnRpbWUoKTsKKwogCXppbyA9IHppb19yb290KGRwLT5k
cF9zcGEsIE5VTEwsIE5VTEwsIFpJT19GTEFHX01VU1RTVUNDRUVEKTsKIAl3aGlsZSAoZHMgPSB0
eGdfbGlzdF9yZW1vdmUoJmRwLT5kcF9kaXJ0eV9kYXRhc2V0cywgdHhnKSkgewotCQlpZiAoIWxp
c3RfbGlua19hY3RpdmUoJmRzLT5kc19zeW5jZWRfbGluaykpCi0JCQlsaXN0X2luc2VydF90YWls
KCZkcC0+ZHBfc3luY2VkX2RhdGFzZXRzLCBkcyk7Ci0JCWVsc2UKLQkJCWRtdV9idWZfcmVsZShk
cy0+ZHNfZGJ1ZiwgZHMpOworCQkvKgorCQkgKiBXZSBtdXN0IG5vdCBzeW5jIGFueSBub24tTU9T
IGRhdGFzZXRzIHR3aWNlLCBiZWNhdXNlCisJCSAqIHdlIG1heSBoYXZlIHRha2VuIGEgc25hcHNo
b3Qgb2YgdGhlbS4gIEhvd2V2ZXIsIHdlCisJCSAqIG1heSBzeW5jIG5ld2x5LWNyZWF0ZWQgZGF0
YXNldHMgb24gcGFzcyAyLgorCQkgKi8KKwkJQVNTRVJUKCFsaXN0X2xpbmtfYWN0aXZlKCZkcy0+
ZHNfc3luY2VkX2xpbmspKTsKKwkJbGlzdF9pbnNlcnRfdGFpbCgmZHAtPmRwX3N5bmNlZF9kYXRh
c2V0cywgZHMpOwogCQlkc2xfZGF0YXNldF9zeW5jKGRzLCB6aW8sIHR4KTsKIAl9CiAJRFRSQUNF
X1BST0JFKHBvb2xfc3luY19fMXNldHVwKTsKKwllcnIgPSB6aW9fd2FpdCh6aW8pOwogCi0Jc3Rh
cnQgPSBnZXRocnRpbWUoKTsKLQllcnIgPSB6aW9fd2FpdCh6aW8pOwogCXdyaXRlX3RpbWUgPSBn
ZXRocnRpbWUoKSAtIHN0YXJ0OwogCUFTU0VSVChlcnIgPT0gMCk7CiAJRFRSQUNFX1BST0JFKHBv
b2xfc3luY19fMnJvb3R6aW8pOwogCi0Jd2hpbGUgKGRzdGcgPSB0eGdfbGlzdF9yZW1vdmUoJmRw
LT5kcF9zeW5jX3Rhc2tzLCB0eGcpKQorI2lmZGVmIG5vdHlldAorCS8qCisJICoKKwkgKiBYWFgg
cmVxdWlyZXMgbmV3ZXIgdmVyc2lvbiBvZiBkbXVfb2Jqc2V0LmMKKwkgKi8KKwlmb3IgKGRzID0g
bGlzdF9oZWFkKCZkcC0+ZHBfc3luY2VkX2RhdGFzZXRzKTsgZHM7CisJICAgIGRzID0gbGlzdF9u
ZXh0KCZkcC0+ZHBfc3luY2VkX2RhdGFzZXRzLCBkcykpCisJCWRtdV9vYmpzZXRfZG9fdXNlcnF1
b3RhX2NhbGxiYWNrcyhkcy0+ZHNfdXNlcl9wdHIsIHR4KTsKKyNlbmRpZgorCS8qCisJICogU3lu
YyB0aGUgZGF0YXNldHMgYWdhaW4gdG8gcHVzaCBvdXQgdGhlIGNoYW5nZXMgZHVlIHRvCisJICog
dXNlcnF1b3RhIHVwZGF0ZXMuICBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgd2UgcHJvY2VzcyB0
aGUKKwkgKiBzeW5jIHRhc2tzLCBiZWNhdXNlIHRoYXQgY291bGQgY2F1c2UgYSBzbmFwc2hvdCBv
ZiBhIGRhdGFzZXQKKwkgKiB3aG9zZSBkc19icCB3aWxsIGJlIHJld3JpdHRlbiB3aGVuIHdlIGRv
IHRoaXMgMm5kIHN5bmMuCisJICovCisJemlvID0gemlvX3Jvb3QoZHAtPmRwX3NwYSwgTlVMTCwg
TlVMTCwgWklPX0ZMQUdfTVVTVFNVQ0NFRUQpOworCXdoaWxlIChkcyA9IHR4Z19saXN0X3JlbW92
ZSgmZHAtPmRwX2RpcnR5X2RhdGFzZXRzLCB0eGcpKSB7CisJCUFTU0VSVChsaXN0X2xpbmtfYWN0
aXZlKCZkcy0+ZHNfc3luY2VkX2xpbmspKTsKKwkJZG11X2J1Zl9yZWxlKGRzLT5kc19kYnVmLCBk
cyk7CisJCWRzbF9kYXRhc2V0X3N5bmMoZHMsIHppbywgdHgpOworCX0KKwllcnIgPSB6aW9fd2Fp
dCh6aW8pOworCisJd2hpbGUgKGRzdGcgPSB0eGdfbGlzdF9yZW1vdmUoJmRwLT5kcF9zeW5jX3Rh
c2tzLCB0eGcpKSB7CisJCS8qCisJCSAqIE5vIG1vcmUgc3luYyB0YXNrcyBzaG91bGQgaGF2ZSBi
ZWVuIGFkZGVkIHdoaWxlIHdlCisJCSAqIHdlcmUgc3luY2luZy4KKwkJICovCisJCUFTU0VSVChz
cGFfc3luY19wYXNzKGRwLT5kcF9zcGEpID09IDEpOwogCQlkc2xfc3luY190YXNrX2dyb3VwX3N5
bmMoZHN0ZywgdHgpOworCX0KIAlEVFJBQ0VfUFJPQkUocG9vbF9zeW5jX18zdGFzayk7CiAKIAlz
dGFydCA9IGdldGhydGltZSgpOwpAQCAtNjExLDMgKzY0OSw5IEBACiAJZHNsX2RhdGFzZXRfcmVs
ZShkcywgRlRBRyk7CiAJcndfZXhpdCgmZHAtPmRwX2NvbmZpZ19yd2xvY2spOwogfQorCit0YXNr
cV90ICoKK2RzbF9wb29sX3ZucmVsZV90YXNrcShkc2xfcG9vbF90ICpkcCkKK3sKKwlyZXR1cm4g
KGRwLT5kcF92bnJlbGVfdGFza3EpOworfQpJbmRleDogc3lzL2NkZGwvY29udHJpYi9vcGVuc29s
YXJpcy91dHMvY29tbW9uL2ZzL3pmcy96ZnNfdm5vcHMuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvY2Rk
bC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvemZzL3pmc192bm9wcy5jCShyZXZp
c2lvbiAxOTE2NzkpCisrKyBzeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24v
ZnMvemZzL3pmc192bm9wcy5jCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBACiAgKglw
dXNoaW5nIGNhY2hlZCBwYWdlcyAod2hpY2ggYWNxdWlyZXMgcmFuZ2UgbG9ja3MpIGFuZCBzeW5j
aW5nIG91dAogICoJY2FjaGVkIGF0aW1lIGNoYW5nZXMuICBUaGlyZCwgemZzX3ppbmFjdGl2ZSgp
IG1heSByZXF1aXJlIGEgbmV3IHR4LAogICoJd2hpY2ggY291bGQgZGVhZGxvY2sgdGhlIHN5c3Rl
bSBpZiB5b3Ugd2VyZSBhbHJlYWR5IGhvbGRpbmcgb25lLgorICoJSWYgeW91IG11c3QgY2FsbCBW
Tl9SRUxFKCkgd2l0aGluIGEgdHggdGhlbiB1c2UgVk5fUkVMRV9BU1lOQygpLgogICoKICAqICAo
MykJQWxsIHJhbmdlIGxvY2tzIG11c3QgYmUgZ3JhYmJlZCBiZWZvcmUgY2FsbGluZyBkbXVfdHhf
YXNzaWduKCksCiAgKglhcyB0aGV5IGNhbiBzcGFuIGRtdV90eF9hc3NpZ24oKSBjYWxscy4KQEAg
LTkyNCwxMSArOTI1LDE2IEBACiAJcmxfdCAqcmwgPSB6Z2QtPnpnZF9ybDsKIAl2bm9kZV90ICp2
cCA9IFpUT1YocmwtPnJfenApOwogCWludCB2ZnNsb2NrZWQ7CisJb2Jqc2V0X3QgKm9zID0gcmwt
PnJfenAtPnpfemZzdmZzLT56X29zOwogCiAJdmZzbG9ja2VkID0gVkZTX0xPQ0tfR0lBTlQodnAt
PnZfdmZzcCk7CiAJZG11X2J1Zl9yZWxlKGRiLCB2emdkKTsKIAl6ZnNfcmFuZ2VfdW5sb2NrKHJs
KTsKLQlWTl9SRUxFKHZwKTsKKwkvKgorCSAqIFJlbGVhc2UgdGhlIHZub2RlIGFzeW5jaHJvbm91
c2x5IGFzIHdlIGN1cnJlbnRseSBoYXZlIHRoZQorCSAqIHR4ZyBzdG9wcGVkIGZyb20gc3luY2lu
Zy4KKwkgKi8KKwlWTl9SRUxFX0FTWU5DKHZwLCBkc2xfcG9vbF92bnJlbGVfdGFza3EoZG11X29i
anNldF9wb29sKG9zKSkpOwogCXppbF9hZGRfYmxvY2soemdkLT56Z2Rfemlsb2csIHpnZC0+emdk
X2JwKTsKIAlrbWVtX2ZyZWUoemdkLCBzaXplb2YgKHpnZF90KSk7CiAJVkZTX1VOTE9DS19HSUFO
VCh2ZnNsb2NrZWQpOwpAQCAtOTU5LDcgKzk2NSwxMiBAQAogCWlmICh6ZnNfemdldCh6ZnN2ZnMs
IGxyLT5scl9mb2lkLCAmenApICE9IDApCiAJCXJldHVybiAoRU5PRU5UKTsKIAlpZiAoenAtPnpf
dW5saW5rZWQpIHsKLQkJVk5fUkVMRShaVE9WKHpwKSk7CisJCS8qCisJCSAqIFJlbGVhc2UgdGhl
IHZub2RlIGFzeW5jaHJvbm91c2x5IGFzIHdlIGN1cnJlbnRseSBoYXZlIHRoZQorCQkgKiB0eGcg
c3RvcHBlZCBmcm9tIHN5bmNpbmcuCisJCSAqLworCQlWTl9SRUxFX0FTWU5DKFpUT1YoenApLAor
CQkgICAgZHNsX3Bvb2xfdm5yZWxlX3Rhc2txKGRtdV9vYmpzZXRfcG9vbChvcykpKTsKIAkJcmV0
dXJuIChFTk9FTlQpOwogCX0KIApAQCAtMTAzMSw3ICsxMDQyLDExIEBACiAJfQogb3V0OgogCXpm
c19yYW5nZV91bmxvY2socmwpOwotCVZOX1JFTEUoWlRPVih6cCkpOworCS8qCisJICogUmVsZWFz
ZSB0aGUgdm5vZGUgYXN5bmNocm9ub3VzbHkgYXMgd2UgY3VycmVudGx5IGhhdmUgdGhlCisJICog
dHhnIHN0b3BwZWQgZnJvbSBzeW5jaW5nLgorCSAqLworCVZOX1JFTEVfQVNZTkMoWlRPVih6cCks
IGRzbF9wb29sX3ZucmVsZV90YXNrcShkbXVfb2Jqc2V0X3Bvb2wob3MpKSk7CiAJcmV0dXJuIChl
cnJvcik7CiB9CiAKSW5kZXg6IHN5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1v
bi9mcy96ZnMvc3lzL2RzbF9wb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2NkZGwvY29udHJpYi9v
cGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9zeXMvZHNsX3Bvb2wuaAkocmV2aXNpb24gMTkx
Njc5KQorKysgc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMvY29tbW9uL2ZzL3pmcy9z
eXMvZHNsX3Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICogQ0RETCBI
RUFERVIgRU5ECiAgKi8KIC8qCi0gKiBDb3B5cmlnaHQgMjAwOCBTdW4gTWljcm9zeXN0ZW1zLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IDIwMDkgU3VuIE1pY3Jvc3lz
dGVtcywgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIFVzZSBpcyBzdWJqZWN0IHRvIGxp
Y2Vuc2UgdGVybXMuCiAgKi8KIApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHN5cy90eGdf
aW1wbC5oPgogI2luY2x1ZGUgPHN5cy96ZnNfY29udGV4dC5oPgogI2luY2x1ZGUgPHN5cy96aW8u
aD4KKyNpbmNsdWRlIDxzeXMvZG5vZGUuaD4KIAogI2lmZGVmCV9fY3BsdXNwbHVzCiBleHRlcm4g
IkMiIHsKQEAgLTQ4LDcgKzQ5LDI2IEBACiAJU0NSVUJfRlVOQ19OVU1GVU5DUwogfTsKIAorLyog
VGhlc2UgbWFjcm9zIGFyZSBmb3IgaW5kZXhpbmcgaW50byB0aGUgemZzX2FsbF9ibGtzdGF0c190
LiAqLworI2RlZmluZQlETVVfT1RfREVGRVJSRUQJRE1VX09UX05PTkUKKyNkZWZpbmUJRE1VX09U
X1RPVEFMCURNVV9PVF9OVU1UWVBFUwogCit0eXBlZGVmIHN0cnVjdCB6ZnNfYmxrc3RhdCB7CisJ
dWludDY0X3QJemJfY291bnQ7CisJdWludDY0X3QJemJfYXNpemU7CisJdWludDY0X3QJemJfbHNp
emU7CisJdWludDY0X3QJemJfcHNpemU7CisJdWludDY0X3QJemJfZ2FuZ3M7CisJdWludDY0X3QJ
emJfZGl0dG9fMl9vZl8yX3NhbWV2ZGV2OworCXVpbnQ2NF90CXpiX2RpdHRvXzJfb2ZfM19zYW1l
dmRldjsKKwl1aW50NjRfdAl6Yl9kaXR0b18zX29mXzNfc2FtZXZkZXY7Cit9IHpmc19ibGtzdGF0
X3Q7CisKK3R5cGVkZWYgc3RydWN0IHpmc19hbGxfYmxrc3RhdHMgeworCXpmc19ibGtzdGF0X3QJ
emFiX3R5cGVbRE5fTUFYX0xFVkVMUyArIDFdW0RNVV9PVF9UT1RBTCArIDFdOworfSB6ZnNfYWxs
X2Jsa3N0YXRzX3Q7CisKKwogdHlwZWRlZiBzdHJ1Y3QgZHNsX3Bvb2wgewogCS8qIEltbXV0YWJs
ZSAqLwogCXNwYV90ICpkcF9zcGE7CkBAIC01Nyw2ICs3Nyw3IEBACiAJc3RydWN0IGRzbF9kaXIg
KmRwX21vc19kaXI7CiAJc3RydWN0IGRzbF9kYXRhc2V0ICpkcF9vcmlnaW5fc25hcDsKIAl1aW50
NjRfdCBkcF9yb290X2Rpcl9vYmo7CisJc3RydWN0IHRhc2txICpkcF92bnJlbGVfdGFza3E7CiAK
IAkvKiBObyBsb2NrIG5lZWRlZCAtIHN5bmMgY29udGV4dCBvbmx5ICovCiAJYmxrcHRyX3QgZHBf
bWV0YV9yb290YnA7CkBAIC05NCw2ICsxMTUsOCBAQAogCSAqIG5vYm9keSBlbHNlIGNvdWxkIHBv
c3NpYmx5IGhhdmUgaXQgZm9yIHdyaXRlLgogCSAqLwogCWtyd2xvY2tfdCBkcF9jb25maWdfcnds
b2NrOworCisJemZzX2FsbF9ibGtzdGF0c190ICpkcF9ibGtzdGF0czsKIH0gZHNsX3Bvb2xfdDsK
IAogaW50IGRzbF9wb29sX29wZW4oc3BhX3QgKnNwYSwgdWludDY0X3QgdHhnLCBkc2xfcG9vbF90
ICoqZHBwKTsKQEAgLTExMSw2ICsxMzQsOCBAQAogICAgIHppb19kb25lX2Z1bmNfdCAqZG9uZSwg
dm9pZCAqcHJpdmF0ZSwgdWludDMyX3QgYXJjX2ZsYWdzKTsKIHZvaWQgZHNsX3Bvb2xfZHNfZGVz
dHJveWVkKHN0cnVjdCBkc2xfZGF0YXNldCAqZHMsIHN0cnVjdCBkbXVfdHggKnR4KTsKIHZvaWQg
ZHNsX3Bvb2xfZHNfc25hcHNob3R0ZWQoc3RydWN0IGRzbF9kYXRhc2V0ICpkcywgc3RydWN0IGRt
dV90eCAqdHgpOwordm9pZCBkc2xfcG9vbF9kc19jbG9uZV9zd2FwcGVkKHN0cnVjdCBkc2xfZGF0
YXNldCAqZHMxLCBzdHJ1Y3QgZHNsX2RhdGFzZXQgKmRzMiwKKyAgICBzdHJ1Y3QgZG11X3R4ICp0
eCk7CiB2b2lkIGRzbF9wb29sX2NyZWF0ZV9vcmlnaW4oZHNsX3Bvb2xfdCAqZHAsIGRtdV90eF90
ICp0eCk7CiB2b2lkIGRzbF9wb29sX3VwZ3JhZGVfY2xvbmVzKGRzbF9wb29sX3QgKmRwLCBkbXVf
dHhfdCAqdHgpOwogCkBAIC0xMTksNiArMTQ0LDggQEAKIHZvaWQgZHNsX3Bvb2xfc2NydWJfc3lu
Yyhkc2xfcG9vbF90ICpkcCwgZG11X3R4X3QgKnR4KTsKIHZvaWQgZHNsX3Bvb2xfc2NydWJfcmVz
dGFydChkc2xfcG9vbF90ICpkcCk7CiAKK3Rhc2txX3QgKmRzbF9wb29sX3ZucmVsZV90YXNrcShk
c2xfcG9vbF90ICpkcCk7CisKICNpZmRlZglfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBz
eXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvdm5vZGUuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vZnMvdm5vZGUu
YwkocmV2aXNpb24gMTkxNjc5KQorKysgc3lzL2NkZGwvY29udHJpYi9vcGVuc29sYXJpcy91dHMv
Y29tbW9uL2ZzL3Zub2RlLmMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDM3IEBACiAKICNp
bmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxz
eXMvcHJvYy5oPgogI2luY2x1ZGUgPHN5cy92bm9kZS5oPgorI2luY2x1ZGUgPHN5cy90YXNrcV9p
bXBsLmg+CiAKK3N0YXRpYyB2b2lkCWZyZWVic2RfdmluYWN0aXZlKHN0cnVjdCB2bm9kZSAqLCBz
dHJ1Y3QgdGhyZWFkICopOworCisvKgorICogQ2FsbCBWT1BfSU5BQ1RJVkUgb24gdGhlIHZub2Rl
IGFuZCBtYW5hZ2UgdGhlIERPSU5HSU5BQ1QgYW5kIE9XRUlOQUNUCisgKiBmbGFncy4gIERPSU5H
SU5BQ1QgcHJldmVudHMgdXMgZnJvbSByZWN1cnNpbmcgaW4gY2FsbHMgdG8gdmluYWN0aXZlLgor
ICogT1dFSU5BQ1QgdHJhY2tzIHdoZXRoZXIgYSB2bm9kZSBtaXNzZWQgYSBjYWxsIHRvIGluYWN0
aXZlIGR1ZSB0byBhCisgKiBmYWlsZWQgbG9jayB1cGdyYWRlLgorICovCitzdGF0aWMgdm9pZAor
ZnJlZWJzZF92aW5hY3RpdmUoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHRocmVhZCAqdGQpCit7
CisKKwlBU1NFUlRfVk9QX0VMT0NLRUQodnAsICJ2aW5hY3RpdmUiKTsKKwlBU1NFUlRfVklfTE9D
S0VEKHZwLCAidmluYWN0aXZlIik7CisJVk5BU1NFUlQoKHZwLT52X2lmbGFnICYgVklfRE9JTkdJ
TkFDVCkgPT0gMCwgdnAsCisJICAgICgidmluYWN0aXZlOiByZWN1cnNlZCBvbiBWSV9ET0lOR0lO
QUNUIikpOworCUNUUjIoS1RSX1ZGUywgIiVzOiB2cCAlcCIsIF9fZnVuY19fLCB2cCk7CisJdnAt
PnZfaWZsYWcgfD0gVklfRE9JTkdJTkFDVDsKKwl2cC0+dl9pZmxhZyAmPSB+VklfT1dFSU5BQ1Q7
CisJVklfVU5MT0NLKHZwKTsKKwlWT1BfSU5BQ1RJVkUodnAsIHRkKTsKKwlWSV9MT0NLKHZwKTsK
KwlWTkFTU0VSVCh2cC0+dl9pZmxhZyAmIFZJX0RPSU5HSU5BQ1QsIHZwLAorCSAgICAoInZpbmFj
dGl2ZTogbG9zdCBWSV9ET0lOR0lOQUNUIikpOworCXZwLT52X2lmbGFnICY9IH5WSV9ET0lOR0lO
QUNUOworfQorCiAvKiBFeHRlbnNpYmxlIGF0dHJpYnV0ZSAoeHZhKSByb3V0aW5lcy4gKi8KIAog
LyoKQEAgLTcyLDMgKzEwMSwxNDQgQEAKIAkJeG9hcCA9ICZ4dmFwLT54dmFfeG9wdGF0dHJzOwog
CXJldHVybiAoeG9hcCk7CiB9CisKK3N0YXRpYyB2b2lkCit2bl9yZWxlX2luYWN0aXZlKHZub2Rl
X3QgKnZwKQoreworCXN0cnVjdCB0aHJlYWQgKnRkID0gY3VydGhyZWFkOworCisJVklfTE9DSyh2
cCk7CisJLyoKKwkgKiBXZSB3YW50IHRvIGhvbGQgdGhlIHZub2RlIHVudGlsIHRoZSBpbmFjdGl2
ZSBmaW5pc2hlcyB0bworCSAqIHByZXZlbnQgdmdvbmUoKSByYWNlcy4gIFdlIGRyb3AgdGhlIHVz
ZSBjb3VudCBoZXJlIGFuZCB0aGUKKwkgKiBob2xkIGNvdW50IGJlbG93IHdoZW4gd2UncmUgZG9u
ZS4KKwkgKi8KKwl2cC0+dl91c2Vjb3VudC0tOworCXZwLT52X2lmbGFnIHw9IFZJX09XRUlOQUNU
OworCS8qCisJICogV2UgbXVzdCBjYWxsIFZPUF9JTkFDVElWRSB3aXRoIHRoZSBub2RlIGxvY2tl
ZC4gTWFyaworCSAqIGFzIFZJX0RPSU5HSU5BQ1QgdG8gYXZvaWQgcmVjdXJzaW9uLgorCSAqLwor
CWlmICh2bl9sb2NrKHZwLCBMS19FWENMVVNJVkUgfCBMS19JTlRFUkxPQ0spID09IDApIHsKKwkJ
VklfTE9DSyh2cCk7CisJCWlmICh2cC0+dl91c2Vjb3VudCA+IDApCisJCQl2cC0+dl9pZmxhZyAm
PSB+VklfT1dFSU5BQ1Q7CisJCWlmICh2cC0+dl9pZmxhZyAmIFZJX09XRUlOQUNUKQorCQkJZnJl
ZWJzZF92aW5hY3RpdmUodnAsIHRkKTsKKwkJVk9QX1VOTE9DSyh2cCwgMCk7CisJfSBlbHNlIHsK
KwkJVklfTE9DSyh2cCk7CisJCWlmICh2cC0+dl91c2Vjb3VudCA+IDApCisJCQl2cC0+dl9pZmxh
ZyAmPSB+VklfT1dFSU5BQ1Q7CisJfQorCXZkcm9wbCh2cCk7CQorfQorCitzdGF0aWMgU1RBSUxR
X0hFQUQoLCB2bm9kZSkgdm5fcmVsZV9hc3luY19saXN0Oworc3RhdGljIHN0cnVjdCBtdHggdm5f
cmVsZV9hc3luY19sb2NrOworc3RhdGljIHN0cnVjdCBjdiB2bl9yZWxlX2FzeW5jX2N2Oworc3Rh
dGljIGludCB2bl9yZWxlX2xpc3RfbGVuZ3RoOwordHlwZWRlZiBzdHJ1Y3QgIHsKKwlzdHJ1Y3Qg
dm5vZGUgKnN0cWVfbmV4dDsKK30gdm5vZGVfbGlua190OworCisvKgorICogTGlrZSB2bl9yZWxl
KCkgZXhjZXB0IGlmIHdlIGFyZSBnb2luZyB0byBjYWxsIFZPUF9JTkFDVElWRSgpIHRoZW4gZG8g
aXQKKyAqIGFzeW5jaHJvbm91c2x5IHVzaW5nIGEgdGFza3EuIFRoaXMgY2FuIGF2b2lkIGRlYWRs
b2NrcyBjYXVzZWQgYnkgcmUtZW50ZXJpbmcKKyAqIHRoZSBmaWxlIHN5c3RlbSBhcyBhIHJlc3Vs
dCBvZiByZWxlYXNpbmcgdGhlIHZub2RlLiBOb3RlLCBmaWxlIHN5c3RlbXMKKyAqIGFscmVhZHkg
aGF2ZSB0byBoYW5kbGUgdGhlIHJhY2Ugd2hlcmUgdGhlIHZub2RlIGlzIGluY3JlbWVudGVkIGJl
Zm9yZSB0aGUKKyAqIGluYWN0aXZlIHJvdXRpbmUgaXMgY2FsbGVkIGFuZCBkb2VzIGl0cyBsb2Nr
aW5nLgorICoKKyAqIFdhcm5pbmc6IEV4Y2Vzc2l2ZSB1c2Ugb2YgdGhpcyByb3V0aW5lIGNhbiBs
ZWFkIHRvIHBlcmZvcm1hbmNlIHByb2JsZW1zLgorICogVGhpcyBpcyBiZWNhdXNlIHRhc2txcyB0
aHJvdHRsZSBiYWNrIGFsbG9jYXRpb24gaWYgdG9vIG1hbnkgYXJlIGNyZWF0ZWQuCisgKi8KK3Zv
aWQKK3ZuX3JlbGVfYXN5bmModm5vZGVfdCAqdnAsIHRhc2txX3QgKnRhc2txIC8qIHVudXNlZCAq
LykKK3sKKwkKKwlLQVNTRVJUKHZwICE9IE5VTEwsICgidnJlbGU6IG51bGwgdnAiKSk7CisJVkZT
X0FTU0VSVF9HSUFOVCh2cC0+dl9tb3VudCk7CisJVklfTE9DSyh2cCk7CisKKwlpZiAodnAtPnZf
dXNlY291bnQgPiAxIHx8ICgodnAtPnZfaWZsYWcgJiBWSV9ET0lOR0lOQUNUKSAmJgorCSAgICB2
cC0+dl91c2Vjb3VudCA9PSAxKSkgeworCQl2cC0+dl91c2Vjb3VudC0tOworCQl2ZHJvcGwodnAp
OworCQlyZXR1cm47CisJfQkKKwlpZiAodnAtPnZfdXNlY291bnQgIT0gMSkgeworI2lmZGVmIERJ
QUdOT1NUSUMKKwkJdnByaW50KCJ2cmVsZTogbmVnYXRpdmUgcmVmIGNvdW50IiwgdnApOworI2Vu
ZGlmCisJCVZJX1VOTE9DSyh2cCk7CisJCXBhbmljKCJ2cmVsZTogbmVnYXRpdmUgcmVmIGNudCIp
OworCX0KKwltdHhfbG9jaygmdm5fcmVsZV9hc3luY19sb2NrKTsKKworCS8qICBTVEFJTFFfSU5T
RVJUX1RBSUwgCQkJKi8KKwkoKih2bm9kZV9saW5rX3QgKikmdnAtPnZfY3N0YXJ0KS5zdHFlX25l
eHQgPSBOVUxMOworCSp2bl9yZWxlX2FzeW5jX2xpc3Quc3RxaF9sYXN0ID0gdnA7CisJdm5fcmVs
ZV9hc3luY19saXN0LnN0cWhfbGFzdCA9CisJICAgICYoKHZub2RlX2xpbmtfdCAqKSZ2cC0+dl9j
c3RhcnQpLT5zdHFlX25leHQ7CisJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCisJCisJdm5fcmVsZV9saXN0X2xlbmd0aCsrOworCWlmICgodm5fcmVsZV9saXN0X2xl
bmd0aCAlIDEwMCkgPT0gMCkKKwkJY3Zfc2lnbmFsKCZ2bl9yZWxlX2FzeW5jX2N2KTsKKwltdHhf
dW5sb2NrKCZ2bl9yZWxlX2FzeW5jX2xvY2spOworCVZJX1VOTE9DSyh2cCk7Cit9CisKK3N0YXRp
YyB2b2lkCit2YV9zZXR1cCh2b2lkICphcmcpCit7CisKKwltdHhfaW5pdCgmdm5fcmVsZV9hc3lu
Y19sb2NrLCAidmFsb2NrIiwgTlVMTCwgTVRYX0RFRik7CisJU1RBSUxRX0lOSVQoJnZuX3JlbGVf
YXN5bmNfbGlzdCk7CisKKwkvKiBjdl9pbml0KCZ2bl9yZWxlX2FzeW5jX2N2LCAidmFjdiIpOyAq
LworCXZuX3JlbGVfYXN5bmNfY3YuY3ZfZGVzY3JpcHRpb24gPSAidmFjdiI7CisJdm5fcmVsZV9h
c3luY19jdi5jdl93YWl0ZXJzID0gMDsKK30KKworCitzdGF0aWMgdm9pZAordnJlbGVfYXN5bmNf
Y2xlYW5lcih2b2lkKQoreworCVNUQUlMUV9IRUFEKCwgdm5vZGUpIHZuX3RtcF9saXN0OworCXN0
cnVjdCB2bm9kZSAqY3Vydm5vZGU7CisKKwlTVEFJTFFfSU5JVCgmdm5fdG1wX2xpc3QpOworCW10
eF9sb2NrKCZ2bl9yZWxlX2FzeW5jX2xvY2spOworCWZvciAoOzspIHsKKwkJU1RBSUxRX0NPTkNB
VCgmdm5fdG1wX2xpc3QsICZ2bl9yZWxlX2FzeW5jX2xpc3QpOworCQl2bl9yZWxlX2xpc3RfbGVu
Z3RoID0gMDsKKwkJbXR4X3VubG9jaygmdm5fcmVsZV9hc3luY19sb2NrKTsKKwkJCisJCXdoaWxl
ICghU1RBSUxRX0VNUFRZKCZ2bl90bXBfbGlzdCkpIHsKKwkJCWN1cnZub2RlID0gU1RBSUxRX0ZJ
UlNUKCZ2bl90bXBfbGlzdCk7CisKKwkJCS8qICAgU1RBSUxRX1JFTU9WRV9IRUFEICovCisJCQlT
VEFJTFFfRklSU1QoJnZuX3RtcF9saXN0KSA9CisJCQkgICAgKCh2bm9kZV9saW5rX3QgKikmY3Vy
dm5vZGUtPnZfY3N0YXJ0KS0+c3RxZV9uZXh0OworCQkJaWYgKFNUQUlMUV9GSVJTVCgmdm5fdG1w
X2xpc3QpID09IE5VTEwpCisJCQkJdm5fdG1wX2xpc3Quc3RxaF9sYXN0ID0gJlNUQUlMUV9GSVJT
VCgmdm5fdG1wX2xpc3QpOworCQkJLyoqKioqKioqKioqKioqKioqKioqKioqLworCisJCQl2bl9y
ZWxlX2luYWN0aXZlKGN1cnZub2RlKTsKKwkJfQorCQltdHhfbG9jaygmdm5fcmVsZV9hc3luY19s
b2NrKTsKKwkJaWYgKHZuX3JlbGVfbGlzdF9sZW5ndGggPT0gMCkKKwkJCWN2X3RpbWVkd2FpdCgm
dm5fcmVsZV9hc3luY19jdiwgJnZuX3JlbGVfYXN5bmNfbG9jaywKKwkJCSAgICBoei8xMCk7CisJ
fQorfQorCitzdGF0aWMgc3RydWN0IHByb2MgKnZyZWxlcHJvYzsKK3N0YXRpYyBzdHJ1Y3Qga3By
b2NfZGVzYyB1cF9rcCA9IHsKKwkidmFjbGVhbiIsCisJdnJlbGVfYXN5bmNfY2xlYW5lciwKKwkm
dnJlbGVwcm9jCit9OworU1lTSU5JVCh2YWNsZWFuLCBTSV9TVUJfS1RIUkVBRF9VUERBVEUsIFNJ
X09SREVSX0ZJUlNULCBrcHJvY19zdGFydCwgJnVwX2twKTsKK1NZU0lOSVQodmFzZXR1cCwgU0lf
U1VCX1ZGUywgU0lfT1JERVJfRklSU1QsIHZhX3NldHVwLCBOVUxMKTsKSW5kZXg6IHN5cy9jZGRs
L2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9zeXMvdm5vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9jb21tb24vc3lzL3Zub2RlLmgJKHJl
dmlzaW9uIDE5MTY3OSkKKysrIHN5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1v
bi9zeXMvdm5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzc3LDYgKzM3NywxMyBAQAogdm9pZAkJ
eHZhX2luaXQoeHZhdHRyX3QgKik7CiB4b3B0YXR0cl90CSp4dmFfZ2V0eG9wdGF0dHIoeHZhdHRy
X3QgKik7CS8qIEdldCBwdHIgdG8geG9wdGF0dHJfdCAqLwogCitzdHJ1Y3QgdGFza3E7Cit2b2lk
CXZuX3JlbGVfYXN5bmMoc3RydWN0IHZub2RlICp2cCwgc3RydWN0IHRhc2txICp0YXNrcSk7CisK
KyNkZWZpbmUJVk5fUkVMRV9BU1lOQyh2cCwgdGFza3EpCXsgXAorCXZuX3JlbGVfYXN5bmModnAs
IHRhc2txKTsgXAorfQorCiAvKgogICogRmxhZ3MgdG8gVk9QX1NFVEFUVFIvVk9QX0dFVEFUVFIu
CiAgKi8K
--0016e645b83cfeb9740468c083dd--



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