From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.devel Subject: Re: Kludge in eval.c Date: Sun, 11 Dec 2016 13:36:25 -0500 Message-ID: References: <8337hvfs7j.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c0448f4bbf92c0543664343 X-Trace: blaine.gmane.org 1481481497 18910 195.159.176.226 (11 Dec 2016 18:38:17 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 11 Dec 2016 18:38:17 +0000 (UTC) To: Eli Zaretskii , Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Dec 11 19:38:13 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cG90j-0003xw-VD for ged-emacs-devel@m.gmane.org; Sun, 11 Dec 2016 19:38:10 +0100 Original-Received: from localhost ([::1]:56750 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cG90o-0000ie-8E for ged-emacs-devel@m.gmane.org; Sun, 11 Dec 2016 13:38:14 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cG909-0000gt-6S for emacs-devel@gnu.org; Sun, 11 Dec 2016 13:37:35 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cG906-00054P-Tt for emacs-devel@gnu.org; Sun, 11 Dec 2016 13:37:33 -0500 Original-Received: from mail-oi0-f48.google.com ([209.85.218.48]:33275) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cG902-00053k-Rz; Sun, 11 Dec 2016 13:37:27 -0500 Original-Received: by mail-oi0-f48.google.com with SMTP id w63so68221761oiw.0; Sun, 11 Dec 2016 10:37:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to; bh=KE5aq4YwK0t4QwsqscWLpEiDRg3zMuzH+/+0XLftq9s=; b=u1x6TOojPsk9zWp6Jke6DAJARJbXVu+SYd1Huph7J9ybJ+eniLKSokC5ltI8+Je4VC bEltRiZt4ZNZOqqDMMuQfKkAXX+BqKXrFzvnM5czLQXxvLUoNaoTuaZwV2ahN6zCboZi H6PxYTdEkn08Rm6Bj4GwmmXXOBAu1jndQqjbgp+1L9rVfgxCqT9JRr0W/9n/lIoihcbt i+oj9Ra2/5fEj0CSrgynMpTsI+czgfYy4g0Bcaahbpkw3Gx4BZAFju83wRDdvrwiB4nU 7vj5MEDXOWbEIgkTEQXf76FWSd4Ep0YiiNjH7nvP6lo3dpwBM7zMHo/XzKqdgdpe6Nla lYVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to; bh=KE5aq4YwK0t4QwsqscWLpEiDRg3zMuzH+/+0XLftq9s=; b=EmUpIr8uhg+rRh0w12a1VqLUBT3hs6ajQBabParftkROhLbYje+kxNXazqZ7zmKrrP hCqGu1G2rKU35HP3tqUEV3uE5EY8qd+1OaSU6KvNU/L9o4AtcVbv6mOBOjUywPv+BDZv 9PBMYKwAowPvzA001lPmeMT+5cxS0JfY9/QUA2BU1KbwSkoqXUDRhbOKs0glD1g0NP1T llWV+Jmg83g8v1cv9Hh8LxnW++6czR/XIZiyb4OcayYPtkCmhakPeqT3pfG7kExP/nkv wnmCgnnrB83TFqCJE6GBFyRs9gNuh6COe1s5wO1OAOC3rmcpU1XbxPUg5kLNZkr+Jyry 0cGA== X-Gm-Message-State: AKaTC01UfqkW/701iiopm0By4Clnp1uuPQKljKFTFfDA8vHyRNXwp0eFqsjT+5Xbs0EpkFOBpGJkhX2ETexh2g== X-Received: by 10.157.9.72 with SMTP id 66mr35265299otp.109.1481481385662; Sun, 11 Dec 2016 10:36:25 -0800 (PST) Original-Received: by 10.157.6.234 with HTTP; Sun, 11 Dec 2016 10:36:25 -0800 (PST) In-Reply-To: <8337hvfs7j.fsf@gnu.org> X-Google-Sender-Auth: PE4xNyD2fE3QCncwHLolB2PAaTM X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.218.48 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:210296 Archived-At: --94eb2c0448f4bbf92c0543664343 Content-Type: text/plain; charset=UTF-8 On Sat, Dec 10, 2016 at 3:24 PM, Eli Zaretskii wrote: > > When I worked on merging the concurrency branch, I bumped into a > problem with the recently introduced watcher feature. The problem is > that variables can have thread-local bindings, so when there's a > thread switch, Emacs needs to rebind those variables to the values > they have in the new thread. If such a variable is marked as > trap-write, rebinding would normally call the watchers, which I think > is not what we want. Do you agree? Yes, I agree. The fact that thread-local values are implemented by rebinding is a C level implementation detail that shouldn't leak into Lisp code. > > If you agree, then we need a way of bypassing the watchers call when > the rebinding is due to a thread switch. In the merged concurrency > code I used a semi-kludgey solution for that, see the two FIXMEs I > left behind, in rebind_for_thread_switch and unbind_for_thread_switch. > Could you please look at that and suggest a cleaner solution? > The easiest is adding a global flag, but after doing that, I realized adding a parameter to set_internal and friends isn't too much trouble. So my suggestion is the attached v2 patch, I've included the v1 for comparison, since I had written it already anyway. --94eb2c0448f4bbf92c0543664343 Content-Type: text/x-diff; charset=US-ASCII; name="v1-0001-Clean-up-var-watcher-disabling-on-thread-switchin.patch" Content-Disposition: attachment; filename="v1-0001-Clean-up-var-watcher-disabling-on-thread-switchin.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iwk3wbq60 RnJvbSA4ZTRlNmNkOTQxNGUwYmEzMDFhYWQ3ZWMyNGMzZDAxZDY3ZDM5MWI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FtIFBvc3RhdnNreSA8bnBvc3RhdnNAZ21haWwuY29tPgpE YXRlOiBTYXQsIDEwIERlYyAyMDE2IDIxOjUzOjUzIC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2MV0g Q2xlYW4gdXAgdmFyIHdhdGNoZXIgZGlzYWJsaW5nIG9uIHRocmVhZCBzd2l0Y2hpbmcKCiogc3Jj L2RhdGEuYyAoaW5oaWJpdF92YXJpYWJsZV93YXRjaGVycyk6IE5ldyB2YXJpYWJsZS4KKG5vdGlm eV92YXJpYWJsZV93YXRjaGVycyk6IERvbid0IG5vdGlmeSB3YXRjaGVycyBpdCdzIG5vbi1uaWwu Ciogc3JjL2V2YWwuYyAoc2V0X2luaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMpOiBOZXcgZnVuY3Rp b24uCihyZWJpbmRfZm9yX3RocmVhZF9zd2l0Y2gsIHVuYmluZF9mb3JfdGhyZWFkX3N3aXRjaCk6 IERpc2FibGUgdmFyaWFibGUKd2F0Y2hlcnMgd2hpbGUgc2V0dGluZyB2YXJpYWJsZXMgdG8gdGhy ZWFkLWxvY2FsIHZhbHVlcy4KLS0tCiBzcmMvZGF0YS5jIHwgIDQgKysrKwogc3JjL2V2YWwuYyB8 IDM5ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2xpc3AuaCB8 ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2RhdGEuYyBiL3NyYy9kYXRhLmMKaW5kZXggMDlkOTRmNS4uNjgy YTY2OSAxMDA2NDQKLS0tIGEvc3JjL2RhdGEuYworKysgYi9zcmMvZGF0YS5jCkBAIC0xNTEzLDEy ICsxNTEzLDE2IEBAIERFRlVOICgiZ2V0LXZhcmlhYmxlLXdhdGNoZXJzIiwgRmdldF92YXJpYWJs ZV93YXRjaGVycywgU2dldF92YXJpYWJsZV93YXRjaGVycywKICAgICA6IFFuaWw7CiB9CiAKK2Jv b2wgaW5oaWJpdF92YXJpYWJsZV93YXRjaGVycyA9IGZhbHNlOworCiB2b2lkCiBub3RpZnlfdmFy aWFibGVfd2F0Y2hlcnMgKExpc3BfT2JqZWN0IHN5bWJvbCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzcF9PYmplY3QgbmV3dmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNw X09iamVjdCBvcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0 IHdoZXJlKQogeworICBpZiAoaW5oaWJpdF92YXJpYWJsZV93YXRjaGVycykgcmV0dXJuOworCiAg IHN5bWJvbCA9IEZpbmRpcmVjdF92YXJpYWJsZSAoc3ltYm9sKTsKIAogICBwdHJkaWZmX3QgY291 bnQgPSBTUEVDUERMX0lOREVYICgpOwpkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFs LmMKaW5kZXggZjFlMGFlNy4uMTVlZjVhYiAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysgYi9z cmMvZXZhbC5jCkBAIC0zMzQzLDMwICszMzQzLDM0IEBAIHJlY29yZF91bndpbmRfcHJvdGVjdF92 b2lkICh2b2lkICgqZnVuY3Rpb24pICh2b2lkKSkKICAgZ3Jvd19zcGVjcGRsICgpOwogfQogCitz dGF0aWMgdm9pZAorc2V0X2luaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMgKGludCB2YWwpCit7Cisg IGluaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMgPSB2YWw7Cit9CisKIHZvaWQKIHJlYmluZF9mb3Jf dGhyZWFkX3N3aXRjaCAodm9pZCkKIHsKICAgdW5pb24gc3BlY2JpbmRpbmcgKmJpbmQ7CiAKKyAg cHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKKyAgcmVjb3JkX3Vud2luZF9wcm90 ZWN0X2ludCAoc2V0X2luaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMpOworICAvKiBIaWRlIGltcGxl bWVudGF0aW9uIG9mIHRocmVhZC1sb2NhbCB2YXJpYWJsZXMgZnJvbSBMaXNwIGNvZGUuICAqLwor ICBpbmhpYml0X3ZhcmlhYmxlX3dhdGNoZXJzID0gdHJ1ZTsKKwogICBmb3IgKGJpbmQgPSBzcGVj cGRsOyBiaW5kICE9IHNwZWNwZGxfcHRyOyArK2JpbmQpCiAgICAgewogICAgICAgaWYgKGJpbmQt PmtpbmQgPj0gU1BFQ1BETF9MRVQpCiAJewogCSAgTGlzcF9PYmplY3QgdmFsdWUgPSBzcGVjcGRs X3NhdmVkX3ZhbHVlIChiaW5kKTsKIAkgIExpc3BfT2JqZWN0IHN5bSA9IHNwZWNwZGxfc3ltYm9s IChiaW5kKTsKLQkgIGJvb2wgd2FzX3RyYXBwZWQgPQotCSAgICBTWU1CT0xQIChzeW0pCi0JICAg ICYmIFhTWU1CT0wgKHN5bSktPnRyYXBwZWRfd3JpdGUgPT0gU1lNQk9MX1RSQVBQRURfV1JJVEU7 Ci0JICAvKiBGSVhNRTogVGhpcyBpcyBub3QgY2xlYW4sIGFuZCBpZiBkb19zcGVjYmluZCBzaWdu YWxzIGFuCi0JICAgICBlcnJvciwgdGhlIHN5bWJvbCB3aWxsIGJlIGxlZnQgdW50cmFwcGVkLiAg Ki8KLQkgIGlmICh3YXNfdHJhcHBlZCkKLQkgICAgWFNZTUJPTCAoc3ltKS0+dHJhcHBlZF93cml0 ZSA9IFNZTUJPTF9VTlRSQVBQRURfV1JJVEU7CiAJICBiaW5kLT5sZXQuc2F2ZWRfdmFsdWUgPSBR bmlsOwogCSAgZG9fc3BlY2JpbmQgKFhTWU1CT0wgKHN5bSksIGJpbmQsIHZhbHVlKTsKLQkgIGlm ICh3YXNfdHJhcHBlZCkKLQkgICAgWFNZTUJPTCAoc3ltKS0+dHJhcHBlZF93cml0ZSA9IFNZTUJP TF9UUkFQUEVEX1dSSVRFOwogCX0KICAgICB9CisgIHVuYmluZF90byAoY291bnQsIFFuaWwpOwog fQogCiBzdGF0aWMgdm9pZApAQCAtMzUxMCwyNCArMzUxNCwyMyBAQCB1bmJpbmRfZm9yX3RocmVh ZF9zd2l0Y2ggKHN0cnVjdCB0aHJlYWRfc3RhdGUgKnRocikKIHsKICAgdW5pb24gc3BlY2JpbmRp bmcgKmJpbmQ7CiAKKyAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKKyAgcmVj b3JkX3Vud2luZF9wcm90ZWN0X2ludCAoc2V0X2luaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGliaXRfdmFyaWFibGVfd2F0Y2hlcnMpOwor ICAvKiBIaWRlIGltcGxlbWVudGF0aW9uIG9mIHRocmVhZC1sb2NhbCB2YXJpYWJsZXMgZnJvbSBM aXNwIGNvZGUuICAqLworICBpbmhpYml0X3ZhcmlhYmxlX3dhdGNoZXJzID0gdHJ1ZTsKKworCiAg IGZvciAoYmluZCA9IHRoci0+bV9zcGVjcGRsX3B0cjsgYmluZCA+IHRoci0+bV9zcGVjcGRsOykK ICAgICB7CiAgICAgICBpZiAoKC0tYmluZCktPmtpbmQgPj0gU1BFQ1BETF9MRVQpCiAJewogCSAg TGlzcF9PYmplY3Qgc3ltID0gc3BlY3BkbF9zeW1ib2wgKGJpbmQpOwotCSAgYm9vbCB3YXNfdHJh cHBlZCA9Ci0JICAgIFNZTUJPTFAgKHN5bSkKLQkgICAgJiYgWFNZTUJPTCAoc3ltKS0+dHJhcHBl ZF93cml0ZSA9PSBTWU1CT0xfVFJBUFBFRF9XUklURTsKIAkgIGJpbmQtPmxldC5zYXZlZF92YWx1 ZSA9IGZpbmRfc3ltYm9sX3ZhbHVlIChzeW0pOwotCSAgLyogRklYTUU6IFRoaXMgaXMgbm90IGNs ZWFuLCBhbmQgaWYgZG9fb25lX3VuYmluZCBzaWduYWxzIGFuCi0JICAgICBlcnJvciwgdGhlIHN5 bWJvbCB3aWxsIGJlIGxlZnQgdW50cmFwcGVkLiAgKi8KLQkgIGlmICh3YXNfdHJhcHBlZCkKLQkg ICAgWFNZTUJPTCAoc3ltKS0+dHJhcHBlZF93cml0ZSA9IFNZTUJPTF9VTlRSQVBQRURfV1JJVEU7 CiAJICBkb19vbmVfdW5iaW5kIChiaW5kLCBmYWxzZSk7Ci0JICBpZiAod2FzX3RyYXBwZWQpCi0J ICAgIFhTWU1CT0wgKHN5bSktPnRyYXBwZWRfd3JpdGUgPSBTWU1CT0xfVFJBUFBFRF9XUklURTsK IAl9CiAgICAgfQorICB1bmJpbmRfdG8gKGNvdW50LCBRbmlsKTsKIH0KIAogREVGVU4gKCJzcGVj aWFsLXZhcmlhYmxlLXAiLCBGc3BlY2lhbF92YXJpYWJsZV9wLCBTc3BlY2lhbF92YXJpYWJsZV9w LCAxLCAxLCAwLApkaWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggMjUy NzA3Yy4uYjE2Y2FkYSAxMDA2NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMvbGlzcC5oCkBA IC02MDUsNiArNjA1LDcgQEAgSU5MSU5FIGJvb2wgKFZFQ1RPUkxJS0VQKSAoTGlzcF9PYmplY3Qp OwogLyogRGVmaW5lZCBpbiBkYXRhLmMuICAqLwogZXh0ZXJuIF9Ob3JldHVybiB2b2lkIHdyb25n X3R5cGVfYXJndW1lbnQgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CiBleHRlcm4gX05vcmV0 dXJuIHZvaWQgd3JvbmdfY2hvaWNlIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOworZXh0ZXJu IGJvb2wgaW5oaWJpdF92YXJpYWJsZV93YXRjaGVyczsKIGV4dGVybiB2b2lkIG5vdGlmeV92YXJp YWJsZV93YXRjaGVycyAoTGlzcF9PYmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBuZXd2YWwsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3BfT2JqZWN0IG9wZXJhdGlv biwgTGlzcF9PYmplY3Qgd2hlcmUpOwogCi0tIAoyLjkuMwoK --94eb2c0448f4bbf92c0543664343 Content-Type: text/x-diff; charset=US-ASCII; name="v2-0001-Clean-up-var-watcher-disabling-on-thread-switchin.patch" Content-Disposition: attachment; filename="v2-0001-Clean-up-var-watcher-disabling-on-thread-switchin.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iwkze3lr1 RnJvbSA1YzE2ODAyMDVjYTBmYzkwZWNmNDVhZmNiMDQ1ZDdkODQ1N2ExYjNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOb2FtIFBvc3RhdnNreSA8bnBvc3RhdnNAZ21haWwuY29tPgpE YXRlOiBTdW4sIDExIERlYyAyMDE2IDEzOjA4OjE1IC0wNTAwClN1YmplY3Q6IFtQQVRDSCB2Ml0g Q2xlYW4gdXAgdmFyIHdhdGNoZXIgZGlzYWJsaW5nIG9uIHRocmVhZCBzd2l0Y2hpbmcKCiogc3Jj L2RhdGEuYyAoRnNldF9kZWZhdWx0KTogTW92ZSBjb2RlIGludG8gbmV3IEMgbGV2ZWwgZnVuY3Rp b24sCmBzZXRfZGVmYXVsdF9pbnRlcm5hbCcuCihzZXRfZGVmYXVsdF9pbnRlcm5hbCk6IE5ldyBm dW5jdGlvbiwgbGlrZSBgRnNldF9kZWZhdWx0JyBidXQgYWxzbyB0YWtlcwphZGRpdGlvbmFsIGJp bmRmbGFnIHBhcmFtZXRlci4KKHNldF9pbnRlcm5hbCk6IE9ubHkgY2FsbCBgbm90aWZ5X3Zhcmlh YmxlX3dhdGNoZXJzJyBpZiBiaW5kZmxhZyBpcyBub3QKU0VUX0lOVEVSTkFMX1RIUkVBRF9TV0lU Q0guCiogc3JjL2V2YWwuYyAoZG9fc3BlY2JpbmQsIGRvX29uZV91bmJpbmQpOiBBZGQgYmluZGZs YWcgcGFyYW1ldGVyLApwYXNzZWQgb24gdG8gc2V0X2ludGVybmFsIGFuZCBzZXRfZGVmYXVsdF9p bnRlcm5hbC4gIEFkanVzdCBjYWxsZXJzLgoocmViaW5kX2Zvcl90aHJlYWRfc3dpdGNoLCB1bmJp bmRfZm9yX3RocmVhZF9zd2l0Y2gpOiBQYXNzClNFVF9JTlRFUk5BTF9USFJFQURfU1dJVENIIHRv IGRvX3NwZWNiaW5kLCBkb19vbmVfdW5iaW5kIGluc3RlYWQgb2YKdGVtcG9yYXJpbHkgYWRqdXN0 aW5nIHN5bWJvbCdzIHRyYXBwZWRfd3JpdGUgZmllbGQuCi0tLQogc3JjL2RhdGEuYyB8IDQ2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9ldmFsLmMg fCA1MSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9saXNwLmggfCAgNiArKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygr KSwgNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2RhdGEuYyBiL3NyYy9kYXRhLmMK aW5kZXggMDlkOTRmNS4uOTYyNjQ4YiAxMDA2NDQKLS0tIGEvc3JjL2RhdGEuYworKysgYi9zcmMv ZGF0YS5jCkBAIC0xMjk2LDExICsxMjk2LDEzIEBAIHNldF9pbnRlcm5hbCAoTGlzcF9PYmplY3Qg c3ltYm9sLCBMaXNwX09iamVjdCBuZXd2YWwsIExpc3BfT2JqZWN0IHdoZXJlLAogICAgICAgICBy ZXR1cm47CiAKICAgICBjYXNlIFNZTUJPTF9UUkFQUEVEX1dSSVRFOgotICAgICAgbm90aWZ5X3Zh cmlhYmxlX3dhdGNoZXJzIChzeW1ib2wsIHZvaWRlPyBRbmlsIDogbmV3dmFsLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYmluZGZsYWcgPT0gU0VUX0lOVEVSTkFMX0JJTkQ/IFFs ZXQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGZsYWcgPT0gU0VUX0lO VEVSTkFMX1VOQklORD8gUXVubGV0IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHZvaWRlPyBRbWFrdW5ib3VuZCA6IFFzZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3aGVyZSk7CisgICAgICAvKiBTZXR0aW5nIGR1ZSB0byB0aHJlYWQtc3dpdGNoaW5nIGRv ZXNuJ3QgY291bnQuICAqLworICAgICAgaWYgKGJpbmRmbGFnICE9IFNFVF9JTlRFUk5BTF9USFJF QURfU1dJVENIKQorICAgICAgICBub3RpZnlfdmFyaWFibGVfd2F0Y2hlcnMgKHN5bWJvbCwgdm9p ZGU/IFFuaWwgOiBuZXd2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJp bmRmbGFnID09IFNFVF9JTlRFUk5BTF9CSU5EPyBRbGV0IDoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmluZGZsYWcgPT0gU0VUX0lOVEVSTkFMX1VOQklORD8gUXVubGV0IDoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZGU/IFFtYWt1bmJvdW5kIDog UXNldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOwogICAgICAg LyogRkFMTFRIUk9VR0ghICAqLwogICAgIGNhc2UgU1lNQk9MX1VOVFJBUFBFRF9XUklURToKICAg ICAgICAgYnJlYWs7CkBAIC0xNDExLDcgKzE0MTMsNyBAQCBzZXRfaW50ZXJuYWwgKExpc3BfT2Jq ZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgbmV3dmFsLCBMaXNwX09iamVjdCB3aGVyZSwKIAkgICAg aW50IG9mZnNldCA9IFhCVUZGRVJfT0JKRldEIChpbm5lcmNvbnRlbnRzKS0+b2Zmc2V0OwogCSAg ICBpbnQgaWR4ID0gUEVSX0JVRkZFUl9JRFggKG9mZnNldCk7CiAJICAgIGlmIChpZHggPiAwCi0J CSYmICFiaW5kZmxhZworICAgICAgICAgICAgICAgICYmIGJpbmRmbGFnID09IFNFVF9JTlRFUk5B TF9TRVQKIAkJJiYgIWxldF9zaGFkb3dzX2J1ZmZlcl9iaW5kaW5nX3AgKHN5bSkpCiAJICAgICAg U0VUX1BFUl9CVUZGRVJfVkFMVUVfUCAoYnVmLCBpZHgsIDEpOwogCSAgfQpAQCAtMTYzMSwxMSAr MTYzMyw5IEBAIERFRlVOICgiZGVmYXVsdC12YWx1ZSIsIEZkZWZhdWx0X3ZhbHVlLCBTZGVmYXVs dF92YWx1ZSwgMSwgMSwgMCwKICAgeHNpZ25hbDEgKFF2b2lkX3ZhcmlhYmxlLCBzeW1ib2wpOwog fQogCi1ERUZVTiAoInNldC1kZWZhdWx0IiwgRnNldF9kZWZhdWx0LCBTc2V0X2RlZmF1bHQsIDIs IDIsIDAsCi0gICAgICAgZG9jOiAvKiBTZXQgU1lNQk9MJ3MgZGVmYXVsdCB2YWx1ZSB0byBWQUxV RS4gIFNZTUJPTCBhbmQgVkFMVUUgYXJlIGV2YWx1YXRlZC4KLVRoZSBkZWZhdWx0IHZhbHVlIGlz IHNlZW4gaW4gYnVmZmVycyB0aGF0IGRvIG5vdCBoYXZlIHRoZWlyIG93biB2YWx1ZXMKLWZvciB0 aGlzIHZhcmlhYmxlLiAgKi8pCi0gIChMaXNwX09iamVjdCBzeW1ib2wsIExpc3BfT2JqZWN0IHZh bHVlKQordm9pZAorc2V0X2RlZmF1bHRfaW50ZXJuYWwgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlz cF9PYmplY3QgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgZW51bSBTZXRfSW50ZXJuYWxf QmluZCBiaW5kZmxhZykKIHsKICAgc3RydWN0IExpc3BfU3ltYm9sICpzeW07CiAKQEAgLTE2NDks MTEgKzE2NDksMTMgQEAgREVGVU4gKCJzZXQtZGVmYXVsdCIsIEZzZXRfZGVmYXVsdCwgU3NldF9k ZWZhdWx0LCAyLCAyLCAwLAogICAgICAgICB4c2lnbmFsMSAoUXNldHRpbmdfY29uc3RhbnQsIHN5 bWJvbCk7CiAgICAgICBlbHNlCiAgICAgICAgIC8qIEFsbG93IHNldHRpbmcga2V5d29yZHMgdG8g dGhlaXIgb3duIHZhbHVlLiAgKi8KLSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1 cm47CiAKICAgICBjYXNlIFNZTUJPTF9UUkFQUEVEX1dSSVRFOgogICAgICAgLyogRG9uJ3Qgbm90 aWZ5IGhlcmUgaWYgd2UncmUgZ29pbmcgdG8gY2FsbCBGc2V0IGFueXdheS4gICovCi0gICAgICBp ZiAoc3ltLT5yZWRpcmVjdCAhPSBTWU1CT0xfUExBSU5WQUwpCisgICAgICBpZiAoc3ltLT5yZWRp cmVjdCAhPSBTWU1CT0xfUExBSU5WQUwKKyAgICAgICAgICAvKiBTZXR0aW5nIGR1ZSB0byB0aHJl YWQgc3dpdGNoaW5nIGRvZXNuJ3QgY291bnQuICAqLworICAgICAgICAgICYmIGJpbmRmbGFnICE9 IFNFVF9JTlRFUk5BTF9USFJFQURfU1dJVENIKQogICAgICAgICBub3RpZnlfdmFyaWFibGVfd2F0 Y2hlcnMgKHN5bWJvbCwgdmFsdWUsIFFzZXRfZGVmYXVsdCwgUW5pbCk7CiAgICAgICAvKiBGQUxM VEhST1VHSCEgICovCiAgICAgY2FzZSBTWU1CT0xfVU5UUkFQUEVEX1dSSVRFOgpAQCAtMTY2Niw3 ICsxNjY4LDcgQEAgREVGVU4gKCJzZXQtZGVmYXVsdCIsIEZzZXRfZGVmYXVsdCwgU3NldF9kZWZh dWx0LCAyLCAyLCAwLAogICBzd2l0Y2ggKHN5bS0+cmVkaXJlY3QpCiAgICAgewogICAgIGNhc2Ug U1lNQk9MX1ZBUkFMSUFTOiBzeW0gPSBpbmRpcmVjdF92YXJpYWJsZSAoc3ltKTsgZ290byBzdGFy dDsKLSAgICBjYXNlIFNZTUJPTF9QTEFJTlZBTDogcmV0dXJuIEZzZXQgKHN5bWJvbCwgdmFsdWUp OworICAgIGNhc2UgU1lNQk9MX1BMQUlOVkFMOiBzZXRfaW50ZXJuYWwgKHN5bWJvbCwgdmFsdWUs IFFuaWwsIGJpbmRmbGFnKTsgcmV0dXJuOwogICAgIGNhc2UgU1lNQk9MX0xPQ0FMSVpFRDoKICAg ICAgIHsKIAlzdHJ1Y3QgTGlzcF9CdWZmZXJfTG9jYWxfVmFsdWUgKmJsdiA9IFNZTUJPTF9CTFYg KHN5bSk7CkBAIC0xNjc3LDcgKzE2NzksNyBAQCBERUZVTiAoInNldC1kZWZhdWx0IiwgRnNldF9k ZWZhdWx0LCBTc2V0X2RlZmF1bHQsIDIsIDIsIDAsCiAJLyogSWYgdGhlIGRlZmF1bHQgYmluZGlu ZyBpcyBub3cgbG9hZGVkLCBzZXQgdGhlIFJFQUxWQUxVRSBzbG90IHRvby4gICovCiAJaWYgKGJs di0+ZndkICYmIEVRIChibHYtPmRlZmNlbGwsIGJsdi0+dmFsY2VsbCkpCiAJICBzdG9yZV9zeW12 YWxfZm9yd2FyZGluZyAoYmx2LT5md2QsIHZhbHVlLCBOVUxMKTsKLQlyZXR1cm4gdmFsdWU7Cisg ICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICBjYXNlIFNZTUJPTF9GT1JXQVJERUQ6CiAgICAg ICB7CkBAIC0xNzAzLDE1ICsxNzA1LDI1IEBAIERFRlVOICgic2V0LWRlZmF1bHQiLCBGc2V0X2Rl ZmF1bHQsIFNzZXRfZGVmYXVsdCwgMiwgMiwgMCwKIAkJICBpZiAoIVBFUl9CVUZGRVJfVkFMVUVf UCAoYiwgaWR4KSkKIAkJICAgIHNldF9wZXJfYnVmZmVyX3ZhbHVlIChiLCBvZmZzZXQsIHZhbHVl KTsKIAkgICAgICB9Ci0JICAgIHJldHVybiB2YWx1ZTsKIAkgIH0KIAllbHNlCi0JICByZXR1cm4g RnNldCAoc3ltYm9sLCB2YWx1ZSk7CisgICAgICAgICAgc2V0X2ludGVybmFsIChzeW1ib2wsIHZh bHVlLCBRbmlsLCBiaW5kZmxhZyk7CisgICAgICAgIHJldHVybjsKICAgICAgIH0KICAgICBkZWZh dWx0OiBlbWFjc19hYm9ydCAoKTsKICAgICB9CiB9CiAKK0RFRlVOICgic2V0LWRlZmF1bHQiLCBG c2V0X2RlZmF1bHQsIFNzZXRfZGVmYXVsdCwgMiwgMiwgMCwKKyAgICAgICBkb2M6IC8qIFNldCBT WU1CT0wncyBkZWZhdWx0IHZhbHVlIHRvIFZBTFVFLiAgU1lNQk9MIGFuZCBWQUxVRSBhcmUgZXZh bHVhdGVkLgorVGhlIGRlZmF1bHQgdmFsdWUgaXMgc2VlbiBpbiBidWZmZXJzIHRoYXQgZG8gbm90 IGhhdmUgdGhlaXIgb3duIHZhbHVlcworZm9yIHRoaXMgdmFyaWFibGUuICAqLykKKyAgKExpc3Bf T2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgdmFsdWUpCit7CisgIHNldF9kZWZhdWx0X2ludGVy bmFsIChzeW1ib2wsIHZhbHVlLCBTRVRfSU5URVJOQUxfU0VUKTsKKyAgcmV0dXJuIHZhbHVlOwor fQorCiBERUZVTiAoInNldHEtZGVmYXVsdCIsIEZzZXRxX2RlZmF1bHQsIFNzZXRxX2RlZmF1bHQs IDAsIFVORVZBTExFRCwgMCwKICAgICAgICBkb2M6IC8qIFNldCB0aGUgZGVmYXVsdCB2YWx1ZSBv ZiB2YXJpYWJsZSBWQVIgdG8gVkFMVUUuCiBWQVIsIHRoZSB2YXJpYWJsZSBuYW1lLCBpcyBsaXRl cmFsIChub3QgZXZhbHVhdGVkKTsKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5j CmluZGV4IGYxZTBhZTcuLjdlMTlkZjggMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3Jj L2V2YWwuYwpAQCAtMzE5Nyw3ICszMTk3LDcgQEAgbGV0X3NoYWRvd3NfZ2xvYmFsX2JpbmRpbmdf cCAoTGlzcF9PYmplY3Qgc3ltYm9sKQogCiBzdGF0aWMgdm9pZAogZG9fc3BlY2JpbmQgKHN0cnVj dCBMaXNwX1N5bWJvbCAqc3ltLCB1bmlvbiBzcGVjYmluZGluZyAqYmluZCwKLQkgICAgIExpc3Bf T2JqZWN0IHZhbHVlKQorICAgICAgICAgICAgIExpc3BfT2JqZWN0IHZhbHVlLCBlbnVtIFNldF9J bnRlcm5hbF9CaW5kIGJpbmRmbGFnKQogewogICBzd2l0Y2ggKHN5bS0+cmVkaXJlY3QpCiAgICAg ewpAQCAtMzIwNSwxOSArMzIwNSwxOSBAQCBkb19zcGVjYmluZCAoc3RydWN0IExpc3BfU3ltYm9s ICpzeW0sIHVuaW9uIHNwZWNiaW5kaW5nICpiaW5kLAogICAgICAgaWYgKCFzeW0tPnRyYXBwZWRf d3JpdGUpCiAJU0VUX1NZTUJPTF9WQUwgKHN5bSwgdmFsdWUpOwogICAgICAgZWxzZQotCXNldF9p bnRlcm5hbCAoc3BlY3BkbF9zeW1ib2wgKGJpbmQpLCB2YWx1ZSwgUW5pbCwgU0VUX0lOVEVSTkFM X0JJTkQpOworICAgICAgICBzZXRfaW50ZXJuYWwgKHNwZWNwZGxfc3ltYm9sIChiaW5kKSwgdmFs dWUsIFFuaWwsIGJpbmRmbGFnKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTWU1CT0xfRk9S V0FSREVEOgogICAgICAgaWYgKEJVRkZFUl9PQkpGV0RQIChTWU1CT0xfRldEIChzeW0pKQogCSAg JiYgc3BlY3BkbF9raW5kIChiaW5kKSA9PSBTUEVDUERMX0xFVF9ERUZBVUxUKQogCXsKLQkgIEZz ZXRfZGVmYXVsdCAoc3BlY3BkbF9zeW1ib2wgKGJpbmQpLCB2YWx1ZSk7CisgICAgICAgICAgc2V0 X2RlZmF1bHRfaW50ZXJuYWwgKHNwZWNwZGxfc3ltYm9sIChiaW5kKSwgdmFsdWUsIGJpbmRmbGFn KTsKIAkgIHJldHVybjsKIAl9CiAgICAgICAvKiBGQUxMVEhST1VHSCAqLwogICAgIGNhc2UgU1lN Qk9MX0xPQ0FMSVpFRDoKLSAgICAgIHNldF9pbnRlcm5hbCAoc3BlY3BkbF9zeW1ib2wgKGJpbmQp LCB2YWx1ZSwgUW5pbCwgU0VUX0lOVEVSTkFMX0JJTkQpOworICAgICAgc2V0X2ludGVybmFsIChz cGVjcGRsX3N5bWJvbCAoYmluZCksIHZhbHVlLCBRbmlsLCBiaW5kZmxhZyk7CiAgICAgICBicmVh azsKIAogICAgIGRlZmF1bHQ6CkBAIC0zMjU4LDcgKzMyNTgsNyBAQCBzcGVjYmluZCAoTGlzcF9P YmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCB2YWx1ZSkKICAgICAgIHNwZWNwZGxfcHRyLT5sZXQu b2xkX3ZhbHVlID0gU1lNQk9MX1ZBTCAoc3ltKTsKICAgICAgIHNwZWNwZGxfcHRyLT5sZXQuc2F2 ZWRfdmFsdWUgPSBRbmlsOwogICAgICAgZ3Jvd19zcGVjcGRsICgpOwotICAgICAgZG9fc3BlY2Jp bmQgKHN5bSwgc3BlY3BkbF9wdHIgLSAxLCB2YWx1ZSk7CisgICAgICBkb19zcGVjYmluZCAoc3lt LCBzcGVjcGRsX3B0ciAtIDEsIHZhbHVlLCBTRVRfSU5URVJOQUxfQklORCk7CiAgICAgICBicmVh azsKICAgICBjYXNlIFNZTUJPTF9MT0NBTElaRUQ6CiAgICAgICBpZiAoU1lNQk9MX0JMViAoc3lt KS0+ZnJhbWVfbG9jYWwpCkBAIC0zMjkxLDcgKzMyOTEsNyBAQCBzcGVjYmluZCAoTGlzcF9PYmpl Y3Qgc3ltYm9sLCBMaXNwX09iamVjdCB2YWx1ZSkKIAkgICAgICB7CiAJCXNwZWNwZGxfcHRyLT5s ZXQua2luZCA9IFNQRUNQRExfTEVUX0RFRkFVTFQ7CiAJCWdyb3dfc3BlY3BkbCAoKTsKLQkJZG9f c3BlY2JpbmQgKHN5bSwgc3BlY3BkbF9wdHIgLSAxLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg ZG9fc3BlY2JpbmQgKHN5bSwgc3BlY3BkbF9wdHIgLSAxLCB2YWx1ZSwgU0VUX0lOVEVSTkFMX0JJ TkQpOwogCQlyZXR1cm47CiAJICAgICAgfQogCSAgfQpAQCAtMzI5OSw3ICszMjk5LDcgQEAgc3Bl Y2JpbmQgKExpc3BfT2JqZWN0IHN5bWJvbCwgTGlzcF9PYmplY3QgdmFsdWUpCiAJICBzcGVjcGRs X3B0ci0+bGV0LmtpbmQgPSBTUEVDUERMX0xFVDsKIAogCWdyb3dfc3BlY3BkbCAoKTsKLQlkb19z cGVjYmluZCAoc3ltLCBzcGVjcGRsX3B0ciAtIDEsIHZhbHVlKTsKKyAgICAgICAgZG9fc3BlY2Jp bmQgKHN5bSwgc3BlY3BkbF9wdHIgLSAxLCB2YWx1ZSwgU0VUX0lOVEVSTkFMX0JJTkQpOwogCWJy ZWFrOwogICAgICAgfQogICAgIGRlZmF1bHQ6IGVtYWNzX2Fib3J0ICgpOwpAQCAtMzM1NCwyMyAr MzM1NCwxNiBAQCByZWJpbmRfZm9yX3RocmVhZF9zd2l0Y2ggKHZvaWQpCiAJewogCSAgTGlzcF9P YmplY3QgdmFsdWUgPSBzcGVjcGRsX3NhdmVkX3ZhbHVlIChiaW5kKTsKIAkgIExpc3BfT2JqZWN0 IHN5bSA9IHNwZWNwZGxfc3ltYm9sIChiaW5kKTsKLQkgIGJvb2wgd2FzX3RyYXBwZWQgPQotCSAg ICBTWU1CT0xQIChzeW0pCi0JICAgICYmIFhTWU1CT0wgKHN5bSktPnRyYXBwZWRfd3JpdGUgPT0g U1lNQk9MX1RSQVBQRURfV1JJVEU7Ci0JICAvKiBGSVhNRTogVGhpcyBpcyBub3QgY2xlYW4sIGFu ZCBpZiBkb19zcGVjYmluZCBzaWduYWxzIGFuCi0JICAgICBlcnJvciwgdGhlIHN5bWJvbCB3aWxs IGJlIGxlZnQgdW50cmFwcGVkLiAgKi8KLQkgIGlmICh3YXNfdHJhcHBlZCkKLQkgICAgWFNZTUJP TCAoc3ltKS0+dHJhcHBlZF93cml0ZSA9IFNZTUJPTF9VTlRSQVBQRURfV1JJVEU7CiAJICBiaW5k LT5sZXQuc2F2ZWRfdmFsdWUgPSBRbmlsOwotCSAgZG9fc3BlY2JpbmQgKFhTWU1CT0wgKHN5bSks IGJpbmQsIHZhbHVlKTsKLQkgIGlmICh3YXNfdHJhcHBlZCkKLQkgICAgWFNZTUJPTCAoc3ltKS0+ dHJhcHBlZF93cml0ZSA9IFNZTUJPTF9UUkFQUEVEX1dSSVRFOworICAgICAgICAgIGRvX3NwZWNi aW5kIChYU1lNQk9MIChzeW0pLCBiaW5kLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg U0VUX0lOVEVSTkFMX1RIUkVBRF9TV0lUQ0gpOwogCX0KICAgICB9CiB9CiAKIHN0YXRpYyB2b2lk Ci1kb19vbmVfdW5iaW5kICh1bmlvbiBzcGVjYmluZGluZyAqdGhpc19iaW5kaW5nLCBib29sIHVu d2luZGluZykKK2RvX29uZV91bmJpbmQgKHVuaW9uIHNwZWNiaW5kaW5nICp0aGlzX2JpbmRpbmcs IGJvb2wgdW53aW5kaW5nLAorICAgICAgICAgICAgICAgZW51bSBTZXRfSW50ZXJuYWxfQmluZCBi aW5kZmxhZykKIHsKICAgZWFzc2VydCAodW53aW5kaW5nIHx8IHRoaXNfYmluZGluZy0+a2luZCA+ PSBTUEVDUERMX0xFVCk7CiAgIHN3aXRjaCAodGhpc19iaW5kaW5nLT5raW5kKQpAQCAtMzM5OSw3 ICszMzkyLDcgQEAgZG9fb25lX3VuYmluZCAodW5pb24gc3BlY2JpbmRpbmcgKnRoaXNfYmluZGlu ZywgYm9vbCB1bndpbmRpbmcpCiAJICAgICAgU0VUX1NZTUJPTF9WQUwgKFhTWU1CT0wgKHN5bSks IHNwZWNwZGxfb2xkX3ZhbHVlICh0aGlzX2JpbmRpbmcpKTsKIAkgICAgZWxzZQogCSAgICAgIHNl dF9pbnRlcm5hbCAoc3ltLCBzcGVjcGRsX29sZF92YWx1ZSAodGhpc19iaW5kaW5nKSwKLQkJCSAg ICBRbmlsLCBTRVRfSU5URVJOQUxfVU5CSU5EKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRbmlsLCBiaW5kZmxhZyk7CiAJICAgIGJyZWFrOwogCSAgfQogCWVsc2UKQEAgLTM0MDksOCAr MzQwMiw5IEBAIGRvX29uZV91bmJpbmQgKHVuaW9uIHNwZWNiaW5kaW5nICp0aGlzX2JpbmRpbmcs IGJvb2wgdW53aW5kaW5nKQogCSAgfQogICAgICAgfQogICAgIGNhc2UgU1BFQ1BETF9MRVRfREVG QVVMVDoKLSAgICAgIEZzZXRfZGVmYXVsdCAoc3BlY3BkbF9zeW1ib2wgKHRoaXNfYmluZGluZyks Ci0JCSAgICBzcGVjcGRsX29sZF92YWx1ZSAodGhpc19iaW5kaW5nKSk7CisgICAgICBzZXRfZGVm YXVsdF9pbnRlcm5hbCAoc3BlY3BkbF9zeW1ib2wgKHRoaXNfYmluZGluZyksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3BlY3BkbF9vbGRfdmFsdWUgKHRoaXNfYmluZGluZyksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmluZGZsYWcpOwogICAgICAgYnJlYWs7CiAgICAgY2Fz ZSBTUEVDUERMX0xFVF9MT0NBTDoKICAgICAgIHsKQEAgLTM0MjIsNyArMzQxNiw3IEBAIGRvX29u ZV91bmJpbmQgKHVuaW9uIHNwZWNiaW5kaW5nICp0aGlzX2JpbmRpbmcsIGJvb2wgdW53aW5kaW5n KQogCS8qIElmIHRoaXMgd2FzIGEgbG9jYWwgYmluZGluZywgcmVzZXQgdGhlIHZhbHVlIGluIHRo ZSBhcHByb3ByaWF0ZQogCSAgIGJ1ZmZlciwgYnV0IG9ubHkgaWYgdGhhdCBidWZmZXIncyBiaW5k aW5nIHN0aWxsIGV4aXN0cy4gICovCiAJaWYgKCFOSUxQIChGbG9jYWxfdmFyaWFibGVfcCAoc3lt Ym9sLCB3aGVyZSkpKQotCSAgc2V0X2ludGVybmFsIChzeW1ib2wsIG9sZF92YWx1ZSwgd2hlcmUs IFNFVF9JTlRFUk5BTF9VTkJJTkQpOworICAgICAgICAgIHNldF9pbnRlcm5hbCAoc3ltYm9sLCBv bGRfdmFsdWUsIHdoZXJlLCBiaW5kZmxhZyk7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICB9 CkBAIC0zNDk2LDcgKzM0OTAsNyBAQCB1bmJpbmRfdG8gKHB0cmRpZmZfdCBjb3VudCwgTGlzcF9P YmplY3QgdmFsdWUpCiAgICAgICB1bmlvbiBzcGVjYmluZGluZyB0aGlzX2JpbmRpbmc7CiAgICAg ICB0aGlzX2JpbmRpbmcgPSAqLS1zcGVjcGRsX3B0cjsKIAotICAgICAgZG9fb25lX3VuYmluZCAo JnRoaXNfYmluZGluZywgdHJ1ZSk7CisgICAgICBkb19vbmVfdW5iaW5kICgmdGhpc19iaW5kaW5n LCB0cnVlLCBTRVRfSU5URVJOQUxfVU5CSU5EKTsKICAgICB9CiAKICAgaWYgKE5JTFAgKFZxdWl0 X2ZsYWcpICYmICFOSUxQIChxdWl0ZikpCkBAIC0zNTE1LDE3ICszNTA5LDggQEAgdW5iaW5kX2Zv cl90aHJlYWRfc3dpdGNoIChzdHJ1Y3QgdGhyZWFkX3N0YXRlICp0aHIpCiAgICAgICBpZiAoKC0t YmluZCktPmtpbmQgPj0gU1BFQ1BETF9MRVQpCiAJewogCSAgTGlzcF9PYmplY3Qgc3ltID0gc3Bl Y3BkbF9zeW1ib2wgKGJpbmQpOwotCSAgYm9vbCB3YXNfdHJhcHBlZCA9Ci0JICAgIFNZTUJPTFAg KHN5bSkKLQkgICAgJiYgWFNZTUJPTCAoc3ltKS0+dHJhcHBlZF93cml0ZSA9PSBTWU1CT0xfVFJB UFBFRF9XUklURTsKIAkgIGJpbmQtPmxldC5zYXZlZF92YWx1ZSA9IGZpbmRfc3ltYm9sX3ZhbHVl IChzeW0pOwotCSAgLyogRklYTUU6IFRoaXMgaXMgbm90IGNsZWFuLCBhbmQgaWYgZG9fb25lX3Vu YmluZCBzaWduYWxzIGFuCi0JICAgICBlcnJvciwgdGhlIHN5bWJvbCB3aWxsIGJlIGxlZnQgdW50 cmFwcGVkLiAgKi8KLQkgIGlmICh3YXNfdHJhcHBlZCkKLQkgICAgWFNZTUJPTCAoc3ltKS0+dHJh cHBlZF93cml0ZSA9IFNZTUJPTF9VTlRSQVBQRURfV1JJVEU7Ci0JICBkb19vbmVfdW5iaW5kIChi aW5kLCBmYWxzZSk7Ci0JICBpZiAod2FzX3RyYXBwZWQpCi0JICAgIFhTWU1CT0wgKHN5bSktPnRy YXBwZWRfd3JpdGUgPSBTWU1CT0xfVFJBUFBFRF9XUklURTsKKyAgICAgICAgICBkb19vbmVfdW5i aW5kIChiaW5kLCBmYWxzZSwgU0VUX0lOVEVSTkFMX1RIUkVBRF9TV0lUQ0gpOwogCX0KICAgICB9 CiB9CmRpZmYgLS1naXQgYS9zcmMvbGlzcC5oIGIvc3JjL2xpc3AuaAppbmRleCAyNTI3MDdjLi41 Yjc3ZGM4IDEwMDY0NAotLS0gYS9zcmMvbGlzcC5oCisrKyBiL3NyYy9saXNwLmgKQEAgLTM0OTMs MTAgKzM0OTMsMTQgQEAgc2V0X3N1Yl9jaGFyX3RhYmxlX2NvbnRlbnRzIChMaXNwX09iamVjdCB0 YWJsZSwgcHRyZGlmZl90IGlkeCwgTGlzcF9PYmplY3QgdmFsKQogZW51bSBTZXRfSW50ZXJuYWxf QmluZCB7CiAgIFNFVF9JTlRFUk5BTF9TRVQsCiAgIFNFVF9JTlRFUk5BTF9CSU5ELAotICBTRVRf SU5URVJOQUxfVU5CSU5ECisgIFNFVF9JTlRFUk5BTF9VTkJJTkQsCisgIFNFVF9JTlRFUk5BTF9U SFJFQURfU1dJVENICiB9OwogZXh0ZXJuIHZvaWQgc2V0X2ludGVybmFsIChMaXNwX09iamVjdCwg TGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IFNldF9JbnRlcm5hbF9CaW5kKTsKK2V4dGVybiB2b2lkIHNldF9kZWZhdWx0X2ludGVybmFsIChM aXNwX09iamVjdCwgTGlzcF9PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW51bSBTZXRfSW50ZXJuYWxfQmluZCBiaW5kZmxhZyk7CisKIGV4dGVybiB2b2lkIHN5bXNf b2ZfZGF0YSAodm9pZCk7CiBleHRlcm4gdm9pZCBzd2FwX2luX2dsb2JhbF9iaW5kaW5nIChzdHJ1 Y3QgTGlzcF9TeW1ib2wgKik7CiAKLS0gCjIuOS4zCgo= --94eb2c0448f4bbf92c0543664343--