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>
