From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19326 invoked by alias); 13 Sep 2013 15:09:02 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 19317 invoked by uid 89); 13 Sep 2013 15:09:02 -0000 Received: from mail-pd0-f171.google.com (HELO mail-pd0-f171.google.com) (209.85.192.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Fri, 13 Sep 2013 15:09:01 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.4 required=5.0 tests=BAYES_00,FREEMAIL_FROM,KHOP_THREADED,NO_RELAYS autolearn=ham version=3.3.2 X-HELO: mail-pd0-f171.google.com Received: by mail-pd0-f171.google.com with SMTP id g10so1362928pdj.16 for ; Fri, 13 Sep 2013 08:08:59 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.68.223.161 with SMTP id qv1mr14090070pbc.79.1379084939622; Fri, 13 Sep 2013 08:08:59 -0700 (PDT) Received: by 10.70.90.37 with HTTP; Fri, 13 Sep 2013 08:08:59 -0700 (PDT) In-Reply-To: <20130913131556.GD1817@tucnak.redhat.com> References: <20130827115538.GB4093@msticlxl57.ims.intel.com> <20130828093428.GO21876@tucnak.zalov.cz> <20130910150126.GA2059@msticlxl57.ims.intel.com> <20130910151453.GB1817@tucnak.redhat.com> <20130910153053.GB2059@msticlxl57.ims.intel.com> <20130910153624.GD1817@tucnak.redhat.com> <20130910153810.GC2059@msticlxl57.ims.intel.com> <20130913112930.GC30181@msticlxl57.ims.intel.com> <20130913123614.GB1817@tucnak.redhat.com> <20130913131109.GD30181@msticlxl57.ims.intel.com> <20130913131556.GD1817@tucnak.redhat.com> Date: Fri, 13 Sep 2013 15:09:00 -0000 Message-ID: Subject: Re: [RFC] Offloading Support in libgomp From: Ilya Tocar To: Jakub Jelinek , richard.guenther@gmail.com Cc: "Michael V. Zolotukhin" , Kirill Yukhin , Richard Henderson , gcc@gcc.gnu.org Content-Type: multipart/mixed; boundary=047d7b16363bf1871404e6453b49 X-IsSubscribed: yes X-SW-Source: 2013-09/txt/msg00123.txt.bz2 --047d7b16363bf1871404e6453b49 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 213 Hi, I'm working on dumping gimple for "omp pragma target" stuff into gnu.target_lto_ sections. I've tried to reuse current lto infrastructure as much as possible. Could you please take a look at attached patch? --047d7b16363bf1871404e6453b49 Content-Type: application/octet-stream; name="gomp_out.patch" Content-Disposition: attachment; filename="gomp_out.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hljjdcfo0 Content-length: 36718 ZGlmZiAtLWdpdCBhL2djYy9pcGEtaW5saW5lLWFuYWx5c2lzLmMgYi9nY2Mv aXBhLWlubGluZS1hbmFseXNpcy5jCmluZGV4IDgwNmIyMTkuLmIwNDRkMGQg MTAwNjQ0Ci0tLSBhL2djYy9pcGEtaW5saW5lLWFuYWx5c2lzLmMKKysrIGIv Z2NjL2lwYS1pbmxpbmUtYW5hbHlzaXMuYwpAQCAtMzk5Nyw3ICszOTk3LDcg QEAgaW5saW5lX3dyaXRlX3N1bW1hcnkgKHZvaWQpCiAJfQogICAgIH0KICAg c3RyZWFtZXJfd3JpdGVfY2hhcl9zdHJlYW0gKG9iLT5tYWluX3N0cmVhbSwg MCk7Ci0gIHByb2R1Y2VfYXNtIChvYiwgTlVMTCk7CisgIHByb2R1Y2VfYXNt IChvYiwgTlVMTCwgZmFsc2UpOwogICBkZXN0cm95X291dHB1dF9ibG9jayAo b2IpOwogCiAgIGlmIChvcHRpbWl6ZSAmJiAhZmxhZ19pcGFfY3ApCmRpZmYg LS1naXQgYS9nY2MvaXBhLXByb3AuYyBiL2djYy9pcGEtcHJvcC5jCmluZGV4 IDkwNzRhNjMuLjNkODJiNTQgMTAwNjQ0Ci0tLSBhL2djYy9pcGEtcHJvcC5j CisrKyBiL2djYy9pcGEtcHJvcC5jCkBAIC00MDA0LDcgKzQwMDQsNyBAQCBp cGFfcHJvcF93cml0ZV9qdW1wX2Z1bmN0aW9ucyAodm9pZCkKICAgICAgICAg aXBhX3dyaXRlX25vZGVfaW5mbyAob2IsIG5vZGUpOwogICAgIH0KICAgc3Ry ZWFtZXJfd3JpdGVfY2hhcl9zdHJlYW0gKG9iLT5tYWluX3N0cmVhbSwgMCk7 Ci0gIHByb2R1Y2VfYXNtIChvYiwgTlVMTCk7CisgIHByb2R1Y2VfYXNtIChv YiwgTlVMTCwgZmFsc2UpOwogICBkZXN0cm95X291dHB1dF9ibG9jayAob2Ip OwogfQogCkBAIC00MTc5LDcgKzQxNzksNyBAQCBpcGFfcHJvcF93cml0ZV9h bGxfYWdnX3JlcGxhY2VtZW50ICh2b2lkKQogCXdyaXRlX2FnZ19yZXBsYWNl bWVudF9jaGFpbiAob2IsIG5vZGUpOwogICAgIH0KICAgc3RyZWFtZXJfd3Jp dGVfY2hhcl9zdHJlYW0gKG9iLT5tYWluX3N0cmVhbSwgMCk7Ci0gIHByb2R1 Y2VfYXNtIChvYiwgTlVMTCk7CisgIHByb2R1Y2VfYXNtIChvYiwgTlVMTCwg ZmFsc2UpOwogICBkZXN0cm95X291dHB1dF9ibG9jayAob2IpOwogfQogCmRp ZmYgLS1naXQgYS9nY2MvaXBhLXB1cmUtY29uc3QuYyBiL2djYy9pcGEtcHVy ZS1jb25zdC5jCmluZGV4IDdhMjkzNjUuLjg3MDgyZTcgMTAwNjQ0Ci0tLSBh L2djYy9pcGEtcHVyZS1jb25zdC5jCisrKyBiL2djYy9pcGEtcHVyZS1jb25z dC5jCkBAIC05ODcsNyArOTg3LDcgQEAgcHVyZV9jb25zdF93cml0ZV9zdW1t YXJ5ICh2b2lkKQogCX0KICAgICB9CiAKLSAgbHRvX2Rlc3Ryb3lfc2ltcGxl X291dHB1dF9ibG9jayAob2IpOworICBsdG9fZGVzdHJveV9zaW1wbGVfb3V0 cHV0X2Jsb2NrIChvYiwgZmFsc2UpOwogfQogCiAKZGlmZiAtLWdpdCBhL2dj Yy9pcGEtcmVmZXJlbmNlLmMgYi9nY2MvaXBhLXJlZmVyZW5jZS5jCmluZGV4 IDM3NDI0NzQuLmIxMWQ0YmMgMTAwNjQ0Ci0tLSBhL2djYy9pcGEtcmVmZXJl bmNlLmMKKysrIGIvZ2NjL2lwYS1yZWZlcmVuY2UuYwpAQCAtMTAyMiw3ICsx MDIyLDcgQEAgaXBhX3JlZmVyZW5jZV93cml0ZV9vcHRpbWl6YXRpb25fc3Vt bWFyeSAodm9pZCkKIAkgIH0KICAgICAgIH0KICAgQklUTUFQX0ZSRUUgKGx0 cmFuc19zdGF0aWNzKTsKLSAgbHRvX2Rlc3Ryb3lfc2ltcGxlX291dHB1dF9i bG9jayAob2IpOworICBsdG9fZGVzdHJveV9zaW1wbGVfb3V0cHV0X2Jsb2Nr IChvYiwgZmFsc2UpOwogICBzcGxheV90cmVlX2RlbGV0ZSAocmVmZXJlbmNl X3ZhcnNfdG9fY29uc2lkZXIpOwogfQogCmRpZmYgLS1naXQgYS9nY2MvaXBh LmMgYi9nY2MvaXBhLmMKaW5kZXggNzc4YTg4Zi4uOGI5NzMzOCAxMDA2NDQK LS0tIGEvZ2NjL2lwYS5jCisrKyBiL2djYy9pcGEuYwpAQCAtMTM0OSw3ICsx MzQ5LDcgQEAgaXBhX3Byb2ZpbGVfd3JpdGVfc3VtbWFyeSAodm9pZCkKICAg ICAgIHN0cmVhbWVyX3dyaXRlX3Vod2lfc3RyZWFtIChvYi0+bWFpbl9zdHJl YW0sIGhpc3RvZ3JhbVtpXS0+dGltZSk7CiAgICAgICBzdHJlYW1lcl93cml0 ZV91aHdpX3N0cmVhbSAob2ItPm1haW5fc3RyZWFtLCBoaXN0b2dyYW1baV0t PnNpemUpOwogICAgIH0KLSAgbHRvX2Rlc3Ryb3lfc2ltcGxlX291dHB1dF9i bG9jayAob2IpOworICBsdG9fZGVzdHJveV9zaW1wbGVfb3V0cHV0X2Jsb2Nr IChvYiwgZmFsc2UpOwogfQogCiAvKiBEZXNlcmlhbGl6ZSB0aGUgaXBhIGlu Zm8gZm9yIGx0by4gICovCmRpZmYgLS1naXQgYS9nY2MvbHRvLWNncmFwaC5j IGIvZ2NjL2x0by1jZ3JhcGguYwppbmRleCBmY2JhMWI5Li5mYmI0MWE3IDEw MDY0NAotLS0gYS9nY2MvbHRvLWNncmFwaC5jCisrKyBiL2djYy9sdG8tY2dy YXBoLmMKQEAgLTY4OSw3ICs2ODksNyBAQCBvdXRwdXRfb3V0Z29pbmdfY2dy YXBoX2VkZ2VzIChzdHJ1Y3QgY2dyYXBoX2VkZ2UgKmVkZ2UsCiAvKiBPdXRw dXQgdGhlIHBhcnQgb2YgdGhlIGNncmFwaCBpbiBTRVQuICAqLwogCiBzdGF0 aWMgdm9pZAotb3V0cHV0X3JlZnMgKGx0b19zeW10YWJfZW5jb2Rlcl90IGVu Y29kZXIpCitvdXRwdXRfcmVmcyAobHRvX3N5bXRhYl9lbmNvZGVyX3QgZW5j b2RlciwgYm9vbCBpc19vbXApCiB7CiAgIGx0b19zeW10YWJfZW5jb2Rlcl9p dGVyYXRvciBsc2VpOwogICBzdHJ1Y3QgbHRvX3NpbXBsZV9vdXRwdXRfYmxv Y2sgKm9iOwpAQCAtNzE4LDcgKzcxOCw3IEBAIG91dHB1dF9yZWZzIChsdG9f c3ltdGFiX2VuY29kZXJfdCBlbmNvZGVyKQogCiAgIHN0cmVhbWVyX3dyaXRl X3Vod2lfc3RyZWFtIChvYi0+bWFpbl9zdHJlYW0sIDApOwogCi0gIGx0b19k ZXN0cm95X3NpbXBsZV9vdXRwdXRfYmxvY2sgKG9iKTsKKyAgbHRvX2Rlc3Ry b3lfc2ltcGxlX291dHB1dF9ibG9jayAob2IsIGlzX29tcCk7CiB9CiAKIC8q IEFkZCBOT0RFIGludG8gZW5jb2RlciBhcyB3ZWxsIGFzIG5vZGVzIGl0IGlz IGNsb25lZCBmcm9tLgpAQCAtODQ1LDcgKzg0NSw3IEBAIGNvbXB1dGVfbHRy YW5zX2JvdW5kYXJ5IChsdG9fc3ltdGFiX2VuY29kZXJfdCBpbl9lbmNvZGVy KQogLyogT3V0cHV0IHRoZSBwYXJ0IG9mIHRoZSBzeW10YWIgaW4gU0VUIGFu ZCBWU0VULiAgKi8KIAogdm9pZAotb3V0cHV0X3N5bXRhYiAodm9pZCkKK291 dHB1dF9zeW10YWIgKGJvb2wgaXNfb21wKQogewogICBzdHJ1Y3QgY2dyYXBo X25vZGUgKm5vZGU7CiAgIHN0cnVjdCBsdG9fc2ltcGxlX291dHB1dF9ibG9j ayAqb2I7CkBAIC04NzQsOSArODc0LDE1IEBAIG91dHB1dF9zeW10YWIgKHZv aWQpCiAgICAgewogICAgICAgc3ltdGFiX25vZGUgbm9kZSA9IGx0b19zeW10 YWJfZW5jb2Rlcl9kZXJlZiAoZW5jb2RlciwgaSk7CiAgICAgICBpZiAoY2dy YXBoX25vZGUgKmNub2RlID0gZHluX2Nhc3QgPGNncmFwaF9ub2RlPiAobm9k ZSkpCi0gICAgICAgIGx0b19vdXRwdXRfbm9kZSAob2IsIGNub2RlLCBlbmNv ZGVyKTsKKwl7CisJICBpZiAoIWlzX29tcCB8fCBsb29rdXBfYXR0cmlidXRl ICgib21wIGRlY2xhcmUgdGFyZ2V0IiwKKwkJCQkJICBERUNMX0FUVFJJQlVU RVMgKG5vZGUtPnN5bWJvbC5kZWNsKSkpCisJICBsdG9fb3V0cHV0X25vZGUg KG9iLCBjbm9kZSwgZW5jb2Rlcik7CisJfQogICAgICAgZWxzZQotICAgICAg ICBsdG9fb3V0cHV0X3ZhcnBvb2xfbm9kZSAob2IsIHZhcnBvb2wgKG5vZGUp LCBlbmNvZGVyKTsKKwkgIGlmICghaXNfb21wIHx8IGxvb2t1cF9hdHRyaWJ1 dGUgKCJvbXAgZGVjbGFyZSB0YXJnZXQiLAorCQkJCQkgIERFQ0xfQVRUUklC VVRFUyAobm9kZS0+c3ltYm9sLmRlY2wpKSkKKwkgICAgbHRvX291dHB1dF92 YXJwb29sX25vZGUgKG9iLCB2YXJwb29sIChub2RlKSwgZW5jb2Rlcik7CiAJ CiAgICAgfQogCkBAIC04OTEsNyArODk3LDcgQEAgb3V0cHV0X3N5bXRhYiAo dm9pZCkKIAogICBzdHJlYW1lcl93cml0ZV91aHdpX3N0cmVhbSAob2ItPm1h aW5fc3RyZWFtLCAwKTsKIAotICBsdG9fZGVzdHJveV9zaW1wbGVfb3V0cHV0 X2Jsb2NrIChvYik7CisgIGx0b19kZXN0cm95X3NpbXBsZV9vdXRwdXRfYmxv Y2sgKG9iLCBpc19vbXApOwogCiAgIC8qIEVtaXQgdG9wbGV2ZWwgYXNtcy4K ICAgICAgV2hlbiBkb2luZyBXUEEgd2UgbXVzdCBvdXRwdXQgZXZlcnkgYXNt IGp1c3Qgb25jZS4gIFNpbmNlIHdlIGRvIG5vdCBwYXJ0aXRpb24gYXNtCkBA IC05MDMsNyArOTA5LDcgQEAgb3V0cHV0X3N5bXRhYiAodm9pZCkKICAgICAg IGx0b19vdXRwdXRfdG9wbGV2ZWxfYXNtcyAoKTsKICAgICB9CiAKLSAgb3V0 cHV0X3JlZnMgKGVuY29kZXIpOworICBvdXRwdXRfcmVmcyAoZW5jb2Rlciwg aXNfb21wKTsKIH0KIAogLyogT3ZlcndyaXRlIHRoZSBpbmZvcm1hdGlvbiBp biBOT0RFIGJhc2VkIG9uIEZJTEVfREFUQSwgVEFHLCBGTEFHUywKQEAgLTE2 NTgsNyArMTY2NCw3IEBAIG91dHB1dF9jZ3JhcGhfb3B0X3N1bW1hcnkgKHZv aWQpCiAJICBvdXRwdXRfbm9kZV9vcHRfc3VtbWFyeSAob2IsIGNub2RlLCBl bmNvZGVyKTsKIAl9CiAgICAgfQotICBwcm9kdWNlX2FzbSAob2IsIE5VTEwp OworICBwcm9kdWNlX2FzbSAob2IsIE5VTEwsIGZhbHNlKTsKICAgZGVzdHJv eV9vdXRwdXRfYmxvY2sgKG9iKTsKIH0KIApkaWZmIC0tZ2l0IGEvZ2NjL2x0 by1vcHRzLmMgYi9nY2MvbHRvLW9wdHMuYwppbmRleCA0ZDljZGZkLi5iNTI0 YjE5IDEwMDY0NAotLS0gYS9nY2MvbHRvLW9wdHMuYworKysgYi9nY2MvbHRv LW9wdHMuYwpAQCAtNzAsNyArNzAsNyBAQCBsdG9fd3JpdGVfb3B0aW9ucyAo dm9pZCkKICAgY2hhciAqYXJnczsKICAgYm9vbCBmaXJzdF9wID0gdHJ1ZTsK IAotICBzZWN0aW9uX25hbWUgPSBsdG9fZ2V0X3NlY3Rpb25fbmFtZSAoTFRP X3NlY3Rpb25fb3B0cywgTlVMTCwgTlVMTCk7CisgIHNlY3Rpb25fbmFtZSA9 IGx0b19nZXRfc2VjdGlvbl9uYW1lIChMVE9fc2VjdGlvbl9vcHRzLCBOVUxM LCBOVUxMLCBmYWxzZSk7CiAgIGx0b19iZWdpbl9zZWN0aW9uIChzZWN0aW9u X25hbWUsIGZhbHNlKTsKICAgbWVtc2V0ICgmc3RyZWFtLCAwLCBzaXplb2Yg KHN0cmVhbSkpOwogCmRpZmYgLS1naXQgYS9nY2MvbHRvLXNlY3Rpb24tb3V0 LmMgYi9nY2MvbHRvLXNlY3Rpb24tb3V0LmMKaW5kZXggODE0NWVjMy4uMjgy OTUwZiAxMDA2NDQKLS0tIGEvZ2NjL2x0by1zZWN0aW9uLW91dC5jCisrKyBi L2djYy9sdG8tc2VjdGlvbi1vdXQuYwpAQCAtNDksNiArNDksOCBAQCBzdGF0 aWMgdmVjPGx0b19vdXRfZGVjbF9zdGF0ZV9wdHI+IGRlY2xfc3RhdGVfc3Rh Y2s7CiAKIHZlYzxsdG9fb3V0X2RlY2xfc3RhdGVfcHRyPiBsdG9fZnVuY3Rp b25fZGVjbF9zdGF0ZXM7CiAKK3ZlYzxsdG9fb3V0X2RlY2xfc3RhdGVfcHRy PiBvbXBfZnVuY3Rpb25fZGVjbF9zdGF0ZXM7CisKIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAgICBPdXRwdXQgcm91dGluZXMgc2hh cmVkIGJ5IGFsbCBvZiB0aGUgc2VyaWFsaXphdGlvbiBwYXNzZXMuCkBAIC0z MzYsMTMgKzMzOCwxMyBAQCBsdG9fY3JlYXRlX3NpbXBsZV9vdXRwdXRfYmxv Y2sgKGVudW0gbHRvX3NlY3Rpb25fdHlwZSBzZWN0aW9uX3R5cGUpCiAvKiBQ cm9kdWNlIGEgc2ltcGxlIHNlY3Rpb24gZm9yIG9uZSBvZiB0aGUgaXBhIHBh c3Nlcy4gICovCiAKIHZvaWQKLWx0b19kZXN0cm95X3NpbXBsZV9vdXRwdXRf YmxvY2sgKHN0cnVjdCBsdG9fc2ltcGxlX291dHB1dF9ibG9jayAqb2IpCits dG9fZGVzdHJveV9zaW1wbGVfb3V0cHV0X2Jsb2NrIChzdHJ1Y3QgbHRvX3Np bXBsZV9vdXRwdXRfYmxvY2sgKm9iLCBib29sIGlzX29tcCkKIHsKICAgY2hh ciAqc2VjdGlvbl9uYW1lOwogICBzdHJ1Y3QgbHRvX3NpbXBsZV9oZWFkZXIg aGVhZGVyOwogICBzdHJ1Y3QgbHRvX291dHB1dF9zdHJlYW0gKmhlYWRlcl9z dHJlYW07CiAKLSAgc2VjdGlvbl9uYW1lID0gbHRvX2dldF9zZWN0aW9uX25h bWUgKG9iLT5zZWN0aW9uX3R5cGUsIE5VTEwsIE5VTEwpOworICBzZWN0aW9u X25hbWUgPSBsdG9fZ2V0X3NlY3Rpb25fbmFtZSAob2ItPnNlY3Rpb25fdHlw ZSwgTlVMTCwgTlVMTCwgaXNfb21wKTsKICAgbHRvX2JlZ2luX3NlY3Rpb24g KHNlY3Rpb25fbmFtZSwgIWZsYWdfd3BhKTsKICAgZnJlZSAoc2VjdGlvbl9u YW1lKTsKIApAQCAtNDMxLDcgKzQzMyw4IEBAIGx0b19wb3Bfb3V0X2RlY2xf c3RhdGUgKHZvaWQpCiAKIHZvaWQKIGx0b19yZWNvcmRfZnVuY3Rpb25fb3V0 X2RlY2xfc3RhdGUgKHRyZWUgZm5fZGVjbCwKLQkJCQkgICAgc3RydWN0IGx0 b19vdXRfZGVjbF9zdGF0ZSAqc3RhdGUpCisJCQkJICAgIHN0cnVjdCBsdG9f b3V0X2RlY2xfc3RhdGUgKnN0YXRlLAorCQkJCSAgICBib29sIGlzX29tcCkK IHsKICAgaW50IGk7CiAKQEAgLTQ0Myw1ICs0NDYsOCBAQCBsdG9fcmVjb3Jk X2Z1bmN0aW9uX291dF9kZWNsX3N0YXRlICh0cmVlIGZuX2RlY2wsCiAJc3Rh dGUtPnN0cmVhbXNbaV0udHJlZV9oYXNoX3RhYmxlID0gTlVMTDsKICAgICAg IH0KICAgc3RhdGUtPmZuX2RlY2wgPSBmbl9kZWNsOwotICBsdG9fZnVuY3Rp b25fZGVjbF9zdGF0ZXMuc2FmZV9wdXNoIChzdGF0ZSk7CisgIGlmIChpc19v bXApCisgICAgb21wX2Z1bmN0aW9uX2RlY2xfc3RhdGVzLnNhZmVfcHVzaCAo c3RhdGUpOworICBlbHNlCisgICAgbHRvX2Z1bmN0aW9uX2RlY2xfc3RhdGVz LnNhZmVfcHVzaCAoc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvZ2NjL2x0by1z dHJlYW1lci1vdXQuYyBiL2djYy9sdG8tc3RyZWFtZXItb3V0LmMKaW5kZXgg ZWEwZmYxNy4uOWU0MzkyYiAxMDA2NDQKLS0tIGEvZ2NjL2x0by1zdHJlYW1l ci1vdXQuYworKysgYi9nY2MvbHRvLXN0cmVhbWVyLW91dC5jCkBAIC0xNjM5 LDcgKzE2MzksNyBAQCBvdXRwdXRfY2ZnIChzdHJ1Y3Qgb3V0cHV0X2Jsb2Nr ICpvYiwgc3RydWN0IGZ1bmN0aW9uICpmbikKICAgIGEgZnVuY3Rpb24sIHNl dCBGTiB0byB0aGUgZGVjbCBmb3IgdGhhdCBmdW5jdGlvbi4gICovCiAKIHZv aWQKLXByb2R1Y2VfYXNtIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgdHJl ZSBmbikKK3Byb2R1Y2VfYXNtIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwg dHJlZSBmbiwgYm9vbCBpc19vbXApCiB7CiAgIGVudW0gbHRvX3NlY3Rpb25f dHlwZSBzZWN0aW9uX3R5cGUgPSBvYi0+c2VjdGlvbl90eXBlOwogICBzdHJ1 Y3QgbHRvX2Z1bmN0aW9uX2hlYWRlciBoZWFkZXI7CkBAIC0xNjQ5LDEwICsx NjQ5LDEwIEBAIHByb2R1Y2VfYXNtIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpv YiwgdHJlZSBmbikKICAgaWYgKHNlY3Rpb25fdHlwZSA9PSBMVE9fc2VjdGlv bl9mdW5jdGlvbl9ib2R5KQogICAgIHsKICAgICAgIGNvbnN0IGNoYXIgKm5h bWUgPSBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfQVNTRU1CTEVSX05BTUUg KGZuKSk7Ci0gICAgICBzZWN0aW9uX25hbWUgPSBsdG9fZ2V0X3NlY3Rpb25f bmFtZSAoc2VjdGlvbl90eXBlLCBuYW1lLCBOVUxMKTsKKyAgICAgIHNlY3Rp b25fbmFtZSA9IGx0b19nZXRfc2VjdGlvbl9uYW1lIChzZWN0aW9uX3R5cGUs IG5hbWUsIE5VTEwsIGlzX29tcCk7CiAgICAgfQogICBlbHNlCi0gICAgc2Vj dGlvbl9uYW1lID0gbHRvX2dldF9zZWN0aW9uX25hbWUgKHNlY3Rpb25fdHlw ZSwgTlVMTCwgTlVMTCk7CisgICAgc2VjdGlvbl9uYW1lID0gbHRvX2dldF9z ZWN0aW9uX25hbWUgKHNlY3Rpb25fdHlwZSwgTlVMTCwgTlVMTCwgZmFsc2Up OwogCiAgIGx0b19iZWdpbl9zZWN0aW9uIChzZWN0aW9uX25hbWUsICFmbGFn X3dwYSk7CiAgIGZyZWUgKHNlY3Rpb25fbmFtZSk7CkBAIC0xNzM2LDcgKzE3 MzYsNyBAQCBvdXRwdXRfc3RydWN0X2Z1bmN0aW9uX2Jhc2UgKHN0cnVjdCBv dXRwdXRfYmxvY2sgKm9iLCBzdHJ1Y3QgZnVuY3Rpb24gKmZuKQogLyogT3V0 cHV0IHRoZSBib2R5IG9mIGZ1bmN0aW9uIE5PREUtPkRFQ0wuICAqLwogCiBz dGF0aWMgdm9pZAotb3V0cHV0X2Z1bmN0aW9uIChzdHJ1Y3QgY2dyYXBoX25v ZGUgKm5vZGUpCitvdXRwdXRfZnVuY3Rpb24gKHN0cnVjdCBjZ3JhcGhfbm9k ZSAqbm9kZSwgYm9vbCBpc19vbXApCiB7CiAgIHRyZWUgZnVuY3Rpb247CiAg IHN0cnVjdCBmdW5jdGlvbiAqZm47CkBAIC0xODM0LDcgKzE4MzQsNyBAQCBv dXRwdXRfZnVuY3Rpb24gKHN0cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSkKICAg ICBzdHJlYW1lcl93cml0ZV91aHdpIChvYiwgMCk7CiAKICAgLyogQ3JlYXRl IGEgc2VjdGlvbiB0byBob2xkIHRoZSBwaWNrbGVkIG91dHB1dCBvZiB0aGlz IGZ1bmN0aW9uLiAgICovCi0gIHByb2R1Y2VfYXNtIChvYiwgZnVuY3Rpb24p OworICBwcm9kdWNlX2FzbSAob2IsIGZ1bmN0aW9uLCBpc19vbXApOwogCiAg IGRlc3Ryb3lfb3V0cHV0X2Jsb2NrIChvYik7CiB9CkBAIC0xODY3LDcgKzE4 NjcsNyBAQCBsdG9fb3V0cHV0X3RvcGxldmVsX2FzbXMgKHZvaWQpCiAKICAg c3RyZWFtZXJfd3JpdGVfc3RyaW5nX2NzdCAob2IsIG9iLT5tYWluX3N0cmVh bSwgTlVMTF9UUkVFKTsKIAotICBzZWN0aW9uX25hbWUgPSBsdG9fZ2V0X3Nl Y3Rpb25fbmFtZSAoTFRPX3NlY3Rpb25fYXNtLCBOVUxMLCBOVUxMKTsKKyAg c2VjdGlvbl9uYW1lID0gbHRvX2dldF9zZWN0aW9uX25hbWUgKExUT19zZWN0 aW9uX2FzbSwgTlVMTCwgTlVMTCwgZmFsc2UpOwogICBsdG9fYmVnaW5fc2Vj dGlvbiAoc2VjdGlvbl9uYW1lLCAhZmxhZ193cGEpOwogICBmcmVlIChzZWN0 aW9uX25hbWUpOwogCkBAIC0xOTA5LDcgKzE5MDksNyBAQCBjb3B5X2Z1bmN0 aW9uIChzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUpCiAgIHNpemVfdCBsZW47 CiAgIGNvbnN0IGNoYXIgKm5hbWUgPSBJREVOVElGSUVSX1BPSU5URVIgKERF Q0xfQVNTRU1CTEVSX05BTUUgKGZ1bmN0aW9uKSk7CiAgIGNoYXIgKnNlY3Rp b25fbmFtZSA9Ci0gICAgbHRvX2dldF9zZWN0aW9uX25hbWUgKExUT19zZWN0 aW9uX2Z1bmN0aW9uX2JvZHksIG5hbWUsIE5VTEwpOworICAgIGx0b19nZXRf c2VjdGlvbl9uYW1lIChMVE9fc2VjdGlvbl9mdW5jdGlvbl9ib2R5LCBuYW1l LCBOVUxMLCBmYWxzZSk7CiAgIHNpemVfdCBpLCBqOwogICBzdHJ1Y3QgbHRv X2luX2RlY2xfc3RhdGUgKmluX3N0YXRlOwogICBzdHJ1Y3QgbHRvX291dF9k ZWNsX3N0YXRlICpvdXRfc3RhdGUgPSBsdG9fZ2V0X291dF9kZWNsX3N0YXRl ICgpOwpAQCAtMTk4OCwxMiArMTk4OCwxMiBAQCBsdG9fb3V0cHV0ICh2b2lk KQogCSAgZGVjbF9zdGF0ZSA9IGx0b19uZXdfb3V0X2RlY2xfc3RhdGUgKCk7 CiAJICBsdG9fcHVzaF9vdXRfZGVjbF9zdGF0ZSAoZGVjbF9zdGF0ZSk7CiAJ ICBpZiAoZ2ltcGxlX2hhc19ib2R5X3AgKG5vZGUtPnN5bWJvbC5kZWNsKSB8 fCAhZmxhZ193cGEpCi0JICAgIG91dHB1dF9mdW5jdGlvbiAobm9kZSk7CisJ ICAgIG91dHB1dF9mdW5jdGlvbiAobm9kZSwgZmFsc2UpOwogCSAgZWxzZQog CSAgICBjb3B5X2Z1bmN0aW9uIChub2RlKTsKIAkgIGdjY19hc3NlcnQgKGx0 b19nZXRfb3V0X2RlY2xfc3RhdGUgKCkgPT0gZGVjbF9zdGF0ZSk7CiAJICBs dG9fcG9wX291dF9kZWNsX3N0YXRlICgpOwotCSAgbHRvX3JlY29yZF9mdW5j dGlvbl9vdXRfZGVjbF9zdGF0ZSAobm9kZS0+c3ltYm9sLmRlY2wsIGRlY2xf c3RhdGUpOworCSAgbHRvX3JlY29yZF9mdW5jdGlvbl9vdXRfZGVjbF9zdGF0 ZSAobm9kZS0+c3ltYm9sLmRlY2wsIGRlY2xfc3RhdGUsIGZhbHNlKTsKIAl9 CiAgICAgfQogCkBAIC0yMDAxLDEzICsyMDAxLDk4IEBAIGx0b19vdXRwdXQg KHZvaWQpCiAgICAgIGJlIGRvbmUgbm93IHRvIG1ha2Ugc3VyZSB0aGF0IGFs bCB0aGUgc3RhdGVtZW50cyBpbiBldmVyeSBmdW5jdGlvbgogICAgICBoYXZl IGJlZW4gcmVudW1iZXJlZCBzbyB0aGF0IGVkZ2VzIGNhbiBiZSBhc3NvY2lh dGVkIHdpdGggY2FsbAogICAgICBzdGF0ZW1lbnRzIHVzaW5nIHRoZSBzdGF0 ZW1lbnQgVUlEcy4gICovCi0gIG91dHB1dF9zeW10YWIgKCk7CisgIG91dHB1 dF9zeW10YWIgKGZhbHNlKTsKIAogI2lmZGVmIEVOQUJMRV9DSEVDS0lORwog ICBsdG9fYml0bWFwX2ZyZWUgKG91dHB1dCk7CiAjZW5kaWYKIH0KIAorYm9v bAorZ2F0ZV9vbXBfb3V0ICh2b2lkKQoreworICByZXR1cm4gZmxhZ19vcGVu bXA7Cit9CisKK3N0YXRpYyB2b2lkCitvbXBfb3V0cHV0ICh2b2lkKQorewor ICBsdG9fc3RyZWFtZXJfaG9va3NfaW5pdCgpOworICBzdHJ1Y3QgbHRvX291 dF9kZWNsX3N0YXRlICpkZWNsX3N0YXRlOworICBpbnQgaSwgbl9ub2RlczsK KyAgbHRvX3N5bXRhYl9lbmNvZGVyX3QgZW5jb2RlciA9IGx0b19nZXRfb3V0 X2RlY2xfc3RhdGUgKCktPnN5bXRhYl9ub2RlX2VuY29kZXI7CisKKyAgLyog SW5pdGlhbGl6ZSB0aGUgc3RyZWFtZXIuICAqLworICBsdG9fc3RyZWFtZXJf aW5pdCAoKTsKKworICBuX25vZGVzID0gbHRvX3N5bXRhYl9lbmNvZGVyX3Np emUgKGVuY29kZXIpOworICAvKiBQcm9jZXNzIG9ubHkgdGhlIGZ1bmN0aW9u cyB3aXRoIGJvZGllcy4gICovCisgIGZvciAoaSA9IDA7IGkgPCBuX25vZGVz OyBpKyspCisgICAgeworICAgICAgc3ltdGFiX25vZGUgc25vZGUgPSBsdG9f c3ltdGFiX2VuY29kZXJfZGVyZWYgKGVuY29kZXIsIGkpOworICAgICAgY2dy YXBoX25vZGUgKm5vZGUgPSBkeW5fY2FzdCA8Y2dyYXBoX25vZGU+IChzbm9k ZSk7CisgICAgICBpZiAobm9kZQorCSAgJiYgbHRvX3N5bXRhYl9lbmNvZGVy X2VuY29kZV9ib2R5X3AgKGVuY29kZXIsIG5vZGUpCisJICAmJiAhbm9kZS0+ c3ltYm9sLmFsaWFzCisJICAmJiAhbm9kZS0+dGh1bmsudGh1bmtfcAorCSAg JiYgZ2ltcGxlX2hhc19ib2R5X3AgKG5vZGUtPnN5bWJvbC5kZWNsKQorCSAg JiYgbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBkZWNsYXJlIHRhcmdldCIsCisJ CQkgICAgICAgREVDTF9BVFRSSUJVVEVTIChub2RlLT5zeW1ib2wuZGVjbCkp KQorCXsKKwkgIGRlY2xfc3RhdGUgPSBsdG9fbmV3X291dF9kZWNsX3N0YXRl ICgpOworCSAgbHRvX3B1c2hfb3V0X2RlY2xfc3RhdGUgKGRlY2xfc3RhdGUp OworCSAgb3V0cHV0X2Z1bmN0aW9uIChub2RlLCB0cnVlKTsKKwkgIGx0b19w b3Bfb3V0X2RlY2xfc3RhdGUgKCk7CisJICBsdG9fcmVjb3JkX2Z1bmN0aW9u X291dF9kZWNsX3N0YXRlIChub2RlLT5zeW1ib2wuZGVjbCwgZGVjbF9zdGF0 ZSwgdHJ1ZSk7CisJfQorICAgIH0KKworICAvKiBFbWl0IHRoZSBjYWxsZ3Jh cGggYWZ0ZXIgZW1pdHRpbmcgZnVuY3Rpb24gYm9kaWVzLiAgVGhpcyBuZWVk cyB0bworICAgICBiZSBkb25lIG5vdyB0byBtYWtlIHN1cmUgdGhhdCBhbGwg dGhlIHN0YXRlbWVudHMgaW4gZXZlcnkgZnVuY3Rpb24KKyAgICAgaGF2ZSBi ZWVuIHJlbnVtYmVyZWQgc28gdGhhdCBlZGdlcyBjYW4gYmUgYXNzb2NpYXRl ZCB3aXRoIGNhbGwKKyAgICAgc3RhdGVtZW50cyB1c2luZyB0aGUgc3RhdGVt ZW50IFVJRHMuICAqLworICBvdXRwdXRfc3ltdGFiICh0cnVlKTsKK30KKwor bmFtZXNwYWNlIHsKKworY29uc3QgcGFzc19kYXRhIHBhc3NfZGF0YV9pcGFf b21wX2dpbXBsZV9vdXQgPQoreworICBJUEFfUEFTUywgLyogdHlwZSAqLwor ICAib21wX2dpbXBsZV9vdXQiLCAvKiBuYW1lICovCisgIE9QVEdST1VQX05P TkUsIC8qIG9wdGluZm9fZmxhZ3MgKi8KKyAgdHJ1ZSwgLyogaGFzX2dhdGUg Ki8KKyAgZmFsc2UsIC8qIGhhc19leGVjdXRlICovCisgIFRWX0lQQV9PTVBf R0lNUExFX09VVCwgLyogdHZfaWQgKi8KKyAgMCwgLyogcHJvcGVydGllc19y ZXF1aXJlZCAqLworICAwLCAvKiBwcm9wZXJ0aWVzX3Byb3ZpZGVkICovCisg IDAsIC8qIHByb3BlcnRpZXNfZGVzdHJveWVkICovCisgIDAsIC8qIHRvZG9f ZmxhZ3Nfc3RhcnQgKi8KKyAgMCwgLyogdG9kb19mbGFnc19maW5pc2ggKi8K K307CisKK2NsYXNzIHBhc3NfaXBhX29tcF9naW1wbGVfb3V0IDogcHVibGlj IGlwYV9vcHRfcGFzc19kCit7CitwdWJsaWM6CisgIHBhc3NfaXBhX29tcF9n aW1wbGVfb3V0KGdjYzo6Y29udGV4dCAqY3R4dCkKKyAgICA6IGlwYV9vcHRf cGFzc19kKHBhc3NfZGF0YV9pcGFfb21wX2dpbXBsZV9vdXQsIGN0eHQsCisJ CSAgICAgTlVMTCwgLyogZ2VuZXJhdGVfc3VtbWFyeSAqLworCQkgICAgIG9t cF9vdXRwdXQsIC8qIHdyaXRlX3N1bW1hcnkgKi8KKwkJICAgICBOVUxMLCAv KiByZWFkX3N1bW1hcnkgKi8KKwkJICAgICBvbXBfb3V0cHV0LCAvKiB3cml0 ZV9vcHRpbWl6YXRpb25fc3VtbWFyeSAqLworCQkgICAgIE5VTEwsIC8qIHJl YWRfb3B0aW1pemF0aW9uX3N1bW1hcnkgKi8KKwkJICAgICBOVUxMLCAvKiBz dG10X2ZpeHVwICovCisJCSAgICAgMCwgLyogZnVuY3Rpb25fdHJhbnNmb3Jt X3RvZG9fZmxhZ3Nfc3RhcnQgKi8KKwkJICAgICBOVUxMLCAvKiBmdW5jdGlv bl90cmFuc2Zvcm0gKi8KKwkJICAgICBOVUxMKSAvKiB2YXJpYWJsZV90cmFu c2Zvcm0gKi8KKyAge30KKworICAvKiBvcHRfcGFzcyBtZXRob2RzOiAqLwor ICBib29sIGdhdGUgKCkgeyByZXR1cm4gZ2F0ZV9vbXBfb3V0ICgpOyB9CisK K307IC8vIGNsYXNzIHBhc3NfaXBhX29tcF9naW1wbGVfb3V0CisKK30gLy8g YW5vbiBuYW1lc3BhY2UKIG5hbWVzcGFjZSB7CiAKIGNvbnN0IHBhc3NfZGF0 YSBwYXNzX2RhdGFfaXBhX2x0b19naW1wbGVfb3V0ID0KQEAgLTIwNDksNiAr MjEzNCwxMiBAQCBwdWJsaWM6CiB9IC8vIGFub24gbmFtZXNwYWNlCiAKIGlw YV9vcHRfcGFzc19kICoKK21ha2VfcGFzc19pcGFfb21wX2dpbXBsZV9vdXQg KGdjYzo6Y29udGV4dCAqY3R4dCkKK3sKKyAgcmV0dXJuIG5ldyBwYXNzX2lw YV9vbXBfZ2ltcGxlX291dCAoY3R4dCk7Cit9CisKK2lwYV9vcHRfcGFzc19k ICoKIG1ha2VfcGFzc19pcGFfbHRvX2dpbXBsZV9vdXQgKGdjYzo6Y29udGV4 dCAqY3R4dCkKIHsKICAgcmV0dXJuIG5ldyBwYXNzX2lwYV9sdG9fZ2ltcGxl X291dCAoY3R4dCk7CkBAIC0yMzI0LDEwICsyNDE1LDEwIEBAIG91dHB1dF9z eW1ib2xfcCAoc3ltdGFiX25vZGUgbm9kZSkKICAgIFNFVCBhbmQgVlNFVCBh cmUgY2dyYXBoL3ZhcnBvb2wgbm9kZSBzZXRzIHdlIGFyZSBvdXRwdXR0aW5n LiAgKi8KIAogc3RhdGljIHZvaWQKLXByb2R1Y2Vfc3ltdGFiIChzdHJ1Y3Qg b3V0cHV0X2Jsb2NrICpvYikKK3Byb2R1Y2Vfc3ltdGFiIChzdHJ1Y3Qgb3V0 cHV0X2Jsb2NrICpvYiwgYm9vbCBpc19vbXApCiB7CiAgIHN0cnVjdCBzdHJl YW1lcl90cmVlX2NhY2hlX2QgKmNhY2hlID0gb2ItPndyaXRlcl9jYWNoZTsK LSAgY2hhciAqc2VjdGlvbl9uYW1lID0gbHRvX2dldF9zZWN0aW9uX25hbWUg KExUT19zZWN0aW9uX3N5bXRhYiwgTlVMTCwgTlVMTCk7CisgIGNoYXIgKnNl Y3Rpb25fbmFtZSA9IGx0b19nZXRfc2VjdGlvbl9uYW1lIChMVE9fc2VjdGlv bl9zeW10YWIsIE5VTEwsIE5VTEwsIGlzX29tcCk7CiAgIHN0cnVjdCBwb2lu dGVyX3NldF90ICpzZWVuOwogICBzdHJ1Y3QgbHRvX291dHB1dF9zdHJlYW0g c3RyZWFtOwogICBsdG9fc3ltdGFiX2VuY29kZXJfdCBlbmNvZGVyID0gb2It PmRlY2xfc3RhdGUtPnN5bXRhYl9ub2RlX2VuY29kZXI7CkBAIC0yMzQ3LDcg KzI0MzgsOSBAQCBwcm9kdWNlX3N5bXRhYiAoc3RydWN0IG91dHB1dF9ibG9j ayAqb2IpCiAgICAgewogICAgICAgc3ltdGFiX25vZGUgbm9kZSA9IGxzZWlf bm9kZSAobHNlaSk7CiAKLSAgICAgIGlmICghb3V0cHV0X3N5bWJvbF9wIChu b2RlKSB8fCBERUNMX0VYVEVSTkFMIChub2RlLT5zeW1ib2wuZGVjbCkpCisg ICAgICBpZiAoIW91dHB1dF9zeW1ib2xfcCAobm9kZSkgfHwgREVDTF9FWFRF Uk5BTCAobm9kZS0+c3ltYm9sLmRlY2wpCisJICB8fCAoaXNfb21wICYmICFs b29rdXBfYXR0cmlidXRlICgib21wIGRlY2xhcmUgdGFyZ2V0IiwKKwkJCQkJ ICAgREVDTF9BVFRSSUJVVEVTIChub2RlLT5zeW1ib2wuZGVjbCkpKSkKIAlj b250aW51ZTsKICAgICAgIHdyaXRlX3N5bWJvbCAoY2FjaGUsICZzdHJlYW0s IG5vZGUtPnN5bWJvbC5kZWNsLCBzZWVuLCBmYWxzZSk7CiAgICAgfQpAQCAt MjM1Niw3ICsyNDQ5LDkgQEAgcHJvZHVjZV9zeW10YWIgKHN0cnVjdCBvdXRw dXRfYmxvY2sgKm9iKQogICAgIHsKICAgICAgIHN5bXRhYl9ub2RlIG5vZGUg PSBsc2VpX25vZGUgKGxzZWkpOwogCi0gICAgICBpZiAoIW91dHB1dF9zeW1i b2xfcCAobm9kZSkgfHwgIURFQ0xfRVhURVJOQUwgKG5vZGUtPnN5bWJvbC5k ZWNsKSkKKyAgICAgIGlmICghb3V0cHV0X3N5bWJvbF9wIChub2RlKSB8fCAh REVDTF9FWFRFUk5BTCAobm9kZS0+c3ltYm9sLmRlY2wpCisJICB8fCAoaXNf b21wICYmICFsb29rdXBfYXR0cmlidXRlICgib21wIGRlY2xhcmUgdGFyZ2V0 IiwKKwkJCQkJICAgREVDTF9BVFRSSUJVVEVTIChub2RlLT5zeW1ib2wuZGVj bCkpKSkKIAljb250aW51ZTsKICAgICAgIHdyaXRlX3N5bWJvbCAoY2FjaGUs ICZzdHJlYW0sIG5vZGUtPnN5bWJvbC5kZWNsLCBzZWVuLCBmYWxzZSk7CiAg ICAgfQpAQCAtMjM3NSw3ICsyNDcwLDcgQEAgcHJvZHVjZV9zeW10YWIgKHN0 cnVjdCBvdXRwdXRfYmxvY2sgKm9iKQogICAgcmVjb3ZlciB0aGVzZSBvbiBv dGhlciBzaWRlLiAgKi8KIAogc3RhdGljIHZvaWQKLXByb2R1Y2VfYXNtX2Zv cl9kZWNscyAodm9pZCkKK3Byb2R1Y2VfYXNtX2Zvcl9kZWNscyAoYm9vbCBp c19vbXApCiB7CiAgIHN0cnVjdCBsdG9fb3V0X2RlY2xfc3RhdGUgKm91dF9z dGF0ZTsKICAgc3RydWN0IGx0b19vdXRfZGVjbF9zdGF0ZSAqZm5fb3V0X3N0 YXRlOwpAQCAtMjM4NywxMiArMjQ4MiwxNyBAQCBwcm9kdWNlX2FzbV9mb3Jf ZGVjbHMgKHZvaWQpCiAgIHNpemVfdCBkZWNsX3N0YXRlX3NpemU7CiAgIGlu dDMyX3QgbnVtX2RlY2xfc3RhdGVzOwogCisgIHZlYzxsdG9fb3V0X2RlY2xf c3RhdGVfcHRyPiBkZWNsX3N0YXRlcyA9IGlzX29tcAorICAgID8gb21wX2Z1 bmN0aW9uX2RlY2xfc3RhdGVzCisgICAgOiBsdG9fZnVuY3Rpb25fZGVjbF9z dGF0ZXM7CisKKwogICBvYiA9IGNyZWF0ZV9vdXRwdXRfYmxvY2sgKExUT19z ZWN0aW9uX2RlY2xzKTsKICAgb2ItPmdsb2JhbCA9IHRydWU7CiAKICAgbWVt c2V0ICgmaGVhZGVyLCAwLCBzaXplb2YgKHN0cnVjdCBsdG9fZGVjbF9oZWFk ZXIpKTsKIAotICBzZWN0aW9uX25hbWUgPSBsdG9fZ2V0X3NlY3Rpb25fbmFt ZSAoTFRPX3NlY3Rpb25fZGVjbHMsIE5VTEwsIE5VTEwpOworICBzZWN0aW9u X25hbWUgPSBsdG9fZ2V0X3NlY3Rpb25fbmFtZSAoTFRPX3NlY3Rpb25fZGVj bHMsIE5VTEwsIE5VTEwsIGlzX29tcCk7CiAgIGx0b19iZWdpbl9zZWN0aW9u IChzZWN0aW9uX25hbWUsICFmbGFnX3dwYSk7CiAgIGZyZWUgKHNlY3Rpb25f bmFtZSk7CiAKQEAgLTI0MDMsMTIgKzI1MDMsMTIgQEAgcHJvZHVjZV9hc21f Zm9yX2RlY2xzICh2b2lkKQogCiAgIC8qIFdyaXRlIHRoZSBnbG9iYWwgc3lt Ym9scy4gICovCiAgIG91dF9zdGF0ZSA9IGx0b19nZXRfb3V0X2RlY2xfc3Rh dGUgKCk7Ci0gIG51bV9mbnMgPSBsdG9fZnVuY3Rpb25fZGVjbF9zdGF0ZXMu bGVuZ3RoICgpOworICBudW1fZm5zID0gZGVjbF9zdGF0ZXMubGVuZ3RoICgp OwogICBsdG9fb3V0cHV0X2RlY2xfc3RhdGVfc3RyZWFtcyAob2IsIG91dF9z dGF0ZSk7CiAgIGZvciAoaWR4ID0gMDsgaWR4IDwgbnVtX2ZuczsgaWR4Kysp CiAgICAgewogICAgICAgZm5fb3V0X3N0YXRlID0KLQlsdG9fZnVuY3Rpb25f ZGVjbF9zdGF0ZXNbaWR4XTsKKwlkZWNsX3N0YXRlc1tpZHhdOwogICAgICAg bHRvX291dHB1dF9kZWNsX3N0YXRlX3N0cmVhbXMgKG9iLCBmbl9vdXRfc3Rh dGUpOwogICAgIH0KIApAQCAtMjQyNCw4ICsyNTI0LDcgQEAgcHJvZHVjZV9h c21fZm9yX2RlY2xzICh2b2lkKQogICBkZWNsX3N0YXRlX3NpemUgKz0gbHRv X291dF9kZWNsX3N0YXRlX3dyaXR0ZW5fc2l6ZSAob3V0X3N0YXRlKTsKICAg Zm9yIChpZHggPSAwOyBpZHggPCBudW1fZm5zOyBpZHgrKykKICAgICB7Ci0g ICAgICBmbl9vdXRfc3RhdGUgPQotCWx0b19mdW5jdGlvbl9kZWNsX3N0YXRl c1tpZHhdOworICAgICAgZm5fb3V0X3N0YXRlID0gZGVjbF9zdGF0ZXNbaWR4 XTsKICAgICAgIGRlY2xfc3RhdGVfc2l6ZSArPSBsdG9fb3V0X2RlY2xfc3Rh dGVfd3JpdHRlbl9zaXplIChmbl9vdXRfc3RhdGUpOwogICAgIH0KICAgaGVh ZGVyLmRlY2xfc3RhdGVfc2l6ZSA9IGRlY2xfc3RhdGVfc2l6ZTsKQEAgLTI0 NDcsOCArMjU0Niw3IEBAIHByb2R1Y2VfYXNtX2Zvcl9kZWNscyAodm9pZCkK ICAgbHRvX291dHB1dF9kZWNsX3N0YXRlX3JlZnMgKG9iLCBkZWNsX3N0YXRl X3N0cmVhbSwgb3V0X3N0YXRlKTsKICAgZm9yIChpZHggPSAwOyBpZHggPCBu dW1fZm5zOyBpZHgrKykKICAgICB7Ci0gICAgICBmbl9vdXRfc3RhdGUgPQot CWx0b19mdW5jdGlvbl9kZWNsX3N0YXRlc1tpZHhdOworICAgICAgZm5fb3V0 X3N0YXRlID0gZGVjbF9zdGF0ZXNbaWR4XTsKICAgICAgIGx0b19vdXRwdXRf ZGVjbF9zdGF0ZV9yZWZzIChvYiwgZGVjbF9zdGF0ZV9zdHJlYW0sIGZuX291 dF9zdGF0ZSk7CiAgICAgfQogICBsdG9fd3JpdGVfc3RyZWFtIChkZWNsX3N0 YXRlX3N0cmVhbSk7CkBAIC0yNDYyLDI0ICsyNTYwLDM4IEBAIHByb2R1Y2Vf YXNtX2Zvcl9kZWNscyAodm9pZCkKICAgLyogV3JpdGUgdGhlIHN5bWJvbCB0 YWJsZS4gIEl0IGlzIHVzZWQgYnkgbGlua2VyIHRvIGRldGVybWluZSBkZXBl bmRlbmNpZXMKICAgICAgYW5kIHRodXMgd2UgY2FuIHNraXAgaXQgZm9yIFdQ QS4gICovCiAgIGlmICghZmxhZ193cGEpCi0gICAgcHJvZHVjZV9zeW10YWIg KG9iKTsKKyAgICBwcm9kdWNlX3N5bXRhYiAob2IsIGlzX29tcCk7CiAKICAg LyogV3JpdGUgY29tbWFuZCBsaW5lIG9wdHMuICAqLwotICBsdG9fd3JpdGVf b3B0aW9ucyAoKTsKKyAgaWYgKCFpc19vbXApCisgICAgbHRvX3dyaXRlX29w dGlvbnMgKCk7CiAKICAgLyogRGVhbGxvY2F0ZSBtZW1vcnkgYW5kIGNsZWFu IHVwLiAgKi8KICAgZm9yIChpZHggPSAwOyBpZHggPCBudW1fZm5zOyBpZHgr KykKICAgICB7Ci0gICAgICBmbl9vdXRfc3RhdGUgPQotCWx0b19mdW5jdGlv bl9kZWNsX3N0YXRlc1tpZHhdOworICAgICAgZm5fb3V0X3N0YXRlID0gZGVj bF9zdGF0ZXNbaWR4XTsKICAgICAgIGx0b19kZWxldGVfb3V0X2RlY2xfc3Rh dGUgKGZuX291dF9zdGF0ZSk7CiAgICAgfQotICBsdG9fc3ltdGFiX2VuY29k ZXJfZGVsZXRlIChvYi0+ZGVjbF9zdGF0ZS0+c3ltdGFiX25vZGVfZW5jb2Rl cik7CisgIGlmICghaXNfb21wIHx8ICFmbGFnX2x0bykKKyAgICBsdG9fc3lt dGFiX2VuY29kZXJfZGVsZXRlIChvYi0+ZGVjbF9zdGF0ZS0+c3ltdGFiX25v ZGVfZW5jb2Rlcik7CisgIG9tcF9mdW5jdGlvbl9kZWNsX3N0YXRlcy5yZWxl YXNlICgpOwogICBsdG9fZnVuY3Rpb25fZGVjbF9zdGF0ZXMucmVsZWFzZSAo KTsKICAgZGVzdHJveV9vdXRwdXRfYmxvY2sgKG9iKTsKIH0KIAogCitzdGF0 aWMgdm9pZAorcHJvZHVjZV9hc21fZm9yX2RlY2xzX2x0byAoKQoreworICBw cm9kdWNlX2FzbV9mb3JfZGVjbHMgKGZhbHNlKTsKK30KKworc3RhdGljIHZv aWQKK3Byb2R1Y2VfYXNtX2Zvcl9kZWNsc19vbXAgKCkKK3sKKyAgcHJvZHVj ZV9hc21fZm9yX2RlY2xzICh0cnVlKTsKK30KKwogbmFtZXNwYWNlIHsKIAog Y29uc3QgcGFzc19kYXRhIHBhc3NfZGF0YV9pcGFfbHRvX2ZpbmlzaF9vdXQg PQpAQCAtMjUwMyw5ICsyNjE1LDkgQEAgcHVibGljOgogICBwYXNzX2lwYV9s dG9fZmluaXNoX291dChnY2M6OmNvbnRleHQgKmN0eHQpCiAgICAgOiBpcGFf b3B0X3Bhc3NfZChwYXNzX2RhdGFfaXBhX2x0b19maW5pc2hfb3V0LCBjdHh0 LAogCQkgICAgIE5VTEwsIC8qIGdlbmVyYXRlX3N1bW1hcnkgKi8KLQkJICAg ICBwcm9kdWNlX2FzbV9mb3JfZGVjbHMsIC8qIHdyaXRlX3N1bW1hcnkgKi8K KwkJICAgICBwcm9kdWNlX2FzbV9mb3JfZGVjbHNfbHRvLCAvKiB3cml0ZV9z dW1tYXJ5ICovCiAJCSAgICAgTlVMTCwgLyogcmVhZF9zdW1tYXJ5ICovCi0J CSAgICAgcHJvZHVjZV9hc21fZm9yX2RlY2xzLCAvKiB3cml0ZV9vcHRpbWl6 YXRpb25fc3VtbWFyeSAqLworCQkgICAgIHByb2R1Y2VfYXNtX2Zvcl9kZWNs c19sdG8sIC8qIHdyaXRlX29wdGltaXphdGlvbl9zdW1tYXJ5ICovCiAJCSAg ICAgTlVMTCwgLyogcmVhZF9vcHRpbWl6YXRpb25fc3VtbWFyeSAqLwogCQkg ICAgIE5VTEwsIC8qIHN0bXRfZml4dXAgKi8KIAkJICAgICAwLCAvKiBmdW5j dGlvbl90cmFuc2Zvcm1fdG9kb19mbGFnc19zdGFydCAqLwpAQCAtMjUyNSwz ICsyNjM3LDQ4IEBAIG1ha2VfcGFzc19pcGFfbHRvX2ZpbmlzaF9vdXQgKGdj Yzo6Y29udGV4dCAqY3R4dCkKIHsKICAgcmV0dXJuIG5ldyBwYXNzX2lwYV9s dG9fZmluaXNoX291dCAoY3R4dCk7CiB9CituYW1lc3BhY2UgeworCitjb25z dCBwYXNzX2RhdGEgcGFzc19kYXRhX2lwYV9vbXBfZmluaXNoX291dCA9Cit7 CisgIElQQV9QQVNTLCAvKiB0eXBlICovCisgICJvbXBfZGVjbHNfb3V0Iiwg LyogbmFtZSAqLworICBPUFRHUk9VUF9OT05FLCAvKiBvcHRpbmZvX2ZsYWdz ICovCisgIHRydWUsIC8qIGhhc19nYXRlICovCisgIGZhbHNlLCAvKiBoYXNf ZXhlY3V0ZSAqLworICBUVl9JUEFfT01QX0RFQ0xfT1VULCAvKiB0dl9pZCAq LworICAwLCAvKiBwcm9wZXJ0aWVzX3JlcXVpcmVkICovCisgIDAsIC8qIHBy b3BlcnRpZXNfcHJvdmlkZWQgKi8KKyAgMCwgLyogcHJvcGVydGllc19kZXN0 cm95ZWQgKi8KKyAgMCwgLyogdG9kb19mbGFnc19zdGFydCAqLworICAwLCAv KiB0b2RvX2ZsYWdzX2ZpbmlzaCAqLworfTsKKworY2xhc3MgcGFzc19pcGFf b21wX2ZpbmlzaF9vdXQgOiBwdWJsaWMgaXBhX29wdF9wYXNzX2QKK3sKK3B1 YmxpYzoKKyAgcGFzc19pcGFfb21wX2ZpbmlzaF9vdXQoZ2NjOjpjb250ZXh0 ICpjdHh0KQorICAgIDogaXBhX29wdF9wYXNzX2QocGFzc19kYXRhX2lwYV9v bXBfZmluaXNoX291dCwgY3R4dCwKKwkJICAgICBOVUxMLCAvKiBnZW5lcmF0 ZV9zdW1tYXJ5ICovCisJCSAgICAgcHJvZHVjZV9hc21fZm9yX2RlY2xzX29t cCwgLyogd3JpdGVfc3VtbWFyeSAqLworCQkgICAgIE5VTEwsIC8qIHJlYWRf c3VtbWFyeSAqLworCQkgICAgIHByb2R1Y2VfYXNtX2Zvcl9kZWNsc19vbXAs IC8qIHdyaXRlX29wdGltaXphdGlvbl9zdW1tYXJ5ICovCisJCSAgICAgTlVM TCwgLyogcmVhZF9vcHRpbWl6YXRpb25fc3VtbWFyeSAqLworCQkgICAgIE5V TEwsIC8qIHN0bXRfZml4dXAgKi8KKwkJICAgICAwLCAvKiBmdW5jdGlvbl90 cmFuc2Zvcm1fdG9kb19mbGFnc19zdGFydCAqLworCQkgICAgIE5VTEwsIC8q IGZ1bmN0aW9uX3RyYW5zZm9ybSAqLworCQkgICAgIE5VTEwpIC8qIHZhcmlh YmxlX3RyYW5zZm9ybSAqLworICB7fQorCisgIC8qIG9wdF9wYXNzIG1ldGhv ZHM6ICovCisgIGJvb2wgZ2F0ZSAoKSB7IHJldHVybiBnYXRlX29tcF9vdXQg KCk7IH0KKworfTsgLy8gY2xhc3MgcGFzc19pcGFfbHRvX2ZpbmlzaF9vdXQK KworfSAvLyBhbm9uIG5hbWVzcGFjZQorCitpcGFfb3B0X3Bhc3NfZCAqCitt YWtlX3Bhc3NfaXBhX29tcF9maW5pc2hfb3V0IChnY2M6OmNvbnRleHQgKmN0 eHQpCit7CisgIHJldHVybiBuZXcgcGFzc19pcGFfb21wX2ZpbmlzaF9vdXQg KGN0eHQpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL2x0by1zdHJlYW1lci5jIGIv Z2NjL2x0by1zdHJlYW1lci5jCmluZGV4IGU3YjY2YzEuLjA2ODY2NTggMTAw NjQ0Ci0tLSBhL2djYy9sdG8tc3RyZWFtZXIuYworKysgYi9nY2MvbHRvLXN0 cmVhbWVyLmMKQEAgLTE0MCw3ICsxNDAsNyBAQCBsdG9fYml0bWFwX2ZyZWUg KGJpdG1hcCBiKQogICAgdG8gZnJlZSB0aGUgcmV0dXJuZWQgbmFtZS4gICov CiAKIGNoYXIgKgotbHRvX2dldF9zZWN0aW9uX25hbWUgKGludCBzZWN0aW9u X3R5cGUsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBsdG9fZmlsZV9kZWNs X2RhdGEgKmYpCitsdG9fZ2V0X3NlY3Rpb25fbmFtZSAoaW50IHNlY3Rpb25f dHlwZSwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGx0b19maWxlX2RlY2xf ZGF0YSAqZiwgYm9vbCBpc19vbXApCiB7CiAgIGNvbnN0IGNoYXIgKmFkZDsK ICAgY2hhciBwb3N0WzMyXTsKQEAgLTE3Myw3ICsxNzMsOSBAQCBsdG9fZ2V0 X3NlY3Rpb25fbmFtZSAoaW50IHNlY3Rpb25fdHlwZSwgY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IGx0b19maWxlX2RlY2xfZAogICAgIHNwcmludGYgKHBv c3QsICIuIiBIT1NUX1dJREVfSU5UX1BSSU5UX0hFWF9QVVJFLCBmLT5pZCk7 CiAgIGVsc2UKICAgICBzcHJpbnRmIChwb3N0LCAiLiIgSE9TVF9XSURFX0lO VF9QUklOVF9IRVhfUFVSRSwgZ2V0X3JhbmRvbV9zZWVkIChmYWxzZSkpOyAK LSAgcmV0dXJuIGNvbmNhdCAoTFRPX1NFQ1RJT05fTkFNRV9QUkVGSVgsIHNl cCwgYWRkLCBwb3N0LCBOVUxMKTsKKyAgcmV0dXJuIGNvbmNhdCAoaXNfb21w ID8gT01QX1NFQ1RJT05fTkFNRV9QUkVGSVgKKwkJICAgICAgICA6IExUT19T RUNUSU9OX05BTUVfUFJFRklYLAorCQkJc2VwLCBhZGQsIHBvc3QsIE5VTEwp OwogfQogCiAKZGlmZiAtLWdpdCBhL2djYy9sdG8tc3RyZWFtZXIuaCBiL2dj Yy9sdG8tc3RyZWFtZXIuaAppbmRleCBlN2M4OWYxLi4xN2YxOGRkIDEwMDY0 NAotLS0gYS9nY2MvbHRvLXN0cmVhbWVyLmgKKysrIGIvZ2NjL2x0by1zdHJl YW1lci5oCkBAIC0xNDEsNiArMTQxLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICAgIG5hbWUgZm9y IHRoZSBmdW5jdGlvbnMgYW5kIHN0YXRpY19pbml0aWFsaXplcnMuICBGb3Ig b3RoZXIgdHlwZXMgb2YKICAgIHNlY3Rpb25zIGEgJy4nIGFuZCB0aGUgc2Vj dGlvbiB0eXBlIGFyZSBhcHBlbmRlZC4gICovCiAjZGVmaW5lIExUT19TRUNU SU9OX05BTUVfUFJFRklYICAgICAgICAgIi5nbnUubHRvXyIKKyNkZWZpbmUg T01QX1NFQ1RJT05fTkFNRV9QUkVGSVggICAgICAgICAiLmdudS50YXJnZXRf bHRvXyIKIAogI2RlZmluZSBMVE9fbWFqb3JfdmVyc2lvbiAyCiAjZGVmaW5l IExUT19taW5vcl92ZXJzaW9uIDIKQEAgLTgwMiwxNCArODAzLDE1IEBAIGV4 dGVybiB2b2lkIGx0b19vdXRwdXRfdHlwZV9yZWZfaW5kZXggKHN0cnVjdCBs dG9fb3V0X2RlY2xfc3RhdGUgKiwKIAkJCQlzdHJ1Y3QgbHRvX291dHB1dF9z dHJlYW0gKiwgdHJlZSk7CiBleHRlcm4gc3RydWN0IGx0b19zaW1wbGVfb3V0 cHV0X2Jsb2NrICpsdG9fY3JlYXRlX3NpbXBsZV9vdXRwdXRfYmxvY2sgKAog CQkJCWVudW0gbHRvX3NlY3Rpb25fdHlwZSk7Ci1leHRlcm4gdm9pZCBsdG9f ZGVzdHJveV9zaW1wbGVfb3V0cHV0X2Jsb2NrIChzdHJ1Y3QgbHRvX3NpbXBs ZV9vdXRwdXRfYmxvY2sgKik7CitleHRlcm4gdm9pZCBsdG9fZGVzdHJveV9z aW1wbGVfb3V0cHV0X2Jsb2NrIChzdHJ1Y3QgbHRvX3NpbXBsZV9vdXRwdXRf YmxvY2sgKiwgYm9vbCBpc19vbXApOwogZXh0ZXJuIHN0cnVjdCBsdG9fb3V0 X2RlY2xfc3RhdGUgKmx0b19uZXdfb3V0X2RlY2xfc3RhdGUgKHZvaWQpOwog ZXh0ZXJuIHZvaWQgbHRvX2RlbGV0ZV9vdXRfZGVjbF9zdGF0ZSAoc3RydWN0 IGx0b19vdXRfZGVjbF9zdGF0ZSAqKTsKIGV4dGVybiBzdHJ1Y3QgbHRvX291 dF9kZWNsX3N0YXRlICpsdG9fZ2V0X291dF9kZWNsX3N0YXRlICh2b2lkKTsK IGV4dGVybiB2b2lkIGx0b19wdXNoX291dF9kZWNsX3N0YXRlIChzdHJ1Y3Qg bHRvX291dF9kZWNsX3N0YXRlICopOwogZXh0ZXJuIHN0cnVjdCBsdG9fb3V0 X2RlY2xfc3RhdGUgKmx0b19wb3Bfb3V0X2RlY2xfc3RhdGUgKHZvaWQpOwog ZXh0ZXJuIHZvaWQgbHRvX3JlY29yZF9mdW5jdGlvbl9vdXRfZGVjbF9zdGF0 ZSAodHJlZSwKLQkJCQkJCXN0cnVjdCBsdG9fb3V0X2RlY2xfc3RhdGUgKik7 CisJCQkJCQlzdHJ1Y3QgbHRvX291dF9kZWNsX3N0YXRlICosCisJCQkJCQli b29sIGlzX29tcCk7CiBleHRlcm4gdm9pZCBsdG9fYXBwZW5kX2Jsb2NrIChz dHJ1Y3QgbHRvX291dHB1dF9zdHJlYW0gKik7CiAKIApAQCAtODE3LDcgKzgx OSw3IEBAIGV4dGVybiB2b2lkIGx0b19hcHBlbmRfYmxvY2sgKHN0cnVjdCBs dG9fb3V0cHV0X3N0cmVhbSAqKTsKIGV4dGVybiBjb25zdCBjaGFyICpsdG9f dGFnX25hbWUgKGVudW0gTFRPX3RhZ3MpOwogZXh0ZXJuIGJpdG1hcCBsdG9f Yml0bWFwX2FsbG9jICh2b2lkKTsKIGV4dGVybiB2b2lkIGx0b19iaXRtYXBf ZnJlZSAoYml0bWFwKTsKLWV4dGVybiBjaGFyICpsdG9fZ2V0X3NlY3Rpb25f bmFtZSAoaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBsdG9fZmlsZV9kZWNs X2RhdGEgKik7CitleHRlcm4gY2hhciAqbHRvX2dldF9zZWN0aW9uX25hbWUg KGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgbHRvX2ZpbGVfZGVjbF9kYXRh ICosIGJvb2wgaXNfb21wKTsKIGV4dGVybiB2b2lkIHByaW50X2x0b19yZXBv cnQgKGNvbnN0IGNoYXIgKik7CiBleHRlcm4gdm9pZCBsdG9fc3RyZWFtZXJf aW5pdCAodm9pZCk7CiBleHRlcm4gYm9vbCBnYXRlX2x0b19vdXQgKHZvaWQp OwpAQCAtODYwLDcgKzg2Miw3IEBAIGV4dGVybiBzdHJ1Y3Qgb3V0cHV0X2Js b2NrICpjcmVhdGVfb3V0cHV0X2Jsb2NrIChlbnVtIGx0b19zZWN0aW9uX3R5 cGUpOwogZXh0ZXJuIHZvaWQgZGVzdHJveV9vdXRwdXRfYmxvY2sgKHN0cnVj dCBvdXRwdXRfYmxvY2sgKik7CiBleHRlcm4gdm9pZCBsdG9fb3V0cHV0X3Ry ZWUgKHN0cnVjdCBvdXRwdXRfYmxvY2sgKiwgdHJlZSwgYm9vbCwgYm9vbCk7 CiBleHRlcm4gdm9pZCBsdG9fb3V0cHV0X3RvcGxldmVsX2FzbXMgKHZvaWQp OwotZXh0ZXJuIHZvaWQgcHJvZHVjZV9hc20gKHN0cnVjdCBvdXRwdXRfYmxv Y2sgKm9iLCB0cmVlIGZuKTsKK2V4dGVybiB2b2lkIHByb2R1Y2VfYXNtIChz dHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgdHJlZSBmbiwgYm9vbCBpc19vbXAp Owogdm9pZCBsdG9fb3V0cHV0X2RlY2xfc3RhdGVfc3RyZWFtcyAoc3RydWN0 IG91dHB1dF9ibG9jayAqLAogCQkJCSAgICBzdHJ1Y3QgbHRvX291dF9kZWNs X3N0YXRlICopOwogdm9pZCBsdG9fb3V0cHV0X2RlY2xfc3RhdGVfcmVmcyAo c3RydWN0IG91dHB1dF9ibG9jayAqLApAQCAtODgzLDcgKzg4NSw3IEBAIHZv aWQgbHRvX3NldF9zeW10YWJfZW5jb2Rlcl9pbl9wYXJ0aXRpb24gKGx0b19z eW10YWJfZW5jb2Rlcl90LAogCiBib29sIGx0b19zeW10YWJfZW5jb2Rlcl9l bmNvZGVfaW5pdGlhbGl6ZXJfcCAobHRvX3N5bXRhYl9lbmNvZGVyX3QsCiAJ CQkJCSAgICAgIHN0cnVjdCB2YXJwb29sX25vZGUgKik7Ci12b2lkIG91dHB1 dF9zeW10YWIgKHZvaWQpOwordm9pZCBvdXRwdXRfc3ltdGFiIChib29sIGlz X29tcCk7CiB2b2lkIGlucHV0X3N5bXRhYiAodm9pZCk7CiBib29sIHJlZmVy ZW5jZWRfZnJvbV9vdGhlcl9wYXJ0aXRpb25fcCAoc3RydWN0IGlwYV9yZWZf bGlzdCAqLAogCQkJCSAgICAgICAgbHRvX3N5bXRhYl9lbmNvZGVyX3QpOwpA QCAtOTE2LDYgKzkxOCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpsdG9fc2Vj dGlvbl9uYW1lW107CiAvKiBIb2xkcyBhbGwgdGhlIG91dCBkZWNsIHN0YXRl cyBvZiBmdW5jdGlvbnMgb3V0cHV0IHNvIGZhciBpbiB0aGUKICAgIGN1cnJl bnQgb3V0cHV0IGZpbGUuICAqLwogZXh0ZXJuIHZlYzxsdG9fb3V0X2RlY2xf c3RhdGVfcHRyPiBsdG9fZnVuY3Rpb25fZGVjbF9zdGF0ZXM7CitleHRlcm4g dmVjPGx0b19vdXRfZGVjbF9zdGF0ZV9wdHI+IG9tcF9mdW5jdGlvbl9kZWNs X3N0YXRlczsKIAogLyogUmV0dXJuIHRydWUgaWYgTFRPIHRhZyBUQUcgY29y cmVzcG9uZHMgdG8gYSB0cmVlIGNvZGUuICAqLwogc3RhdGljIGlubGluZSBi b29sCmRpZmYgLS1naXQgYS9nY2MvbHRvL2x0by5jIGIvZ2NjL2x0by9sdG8u YwppbmRleCBjODU0NTg5Li44MjllZGZjIDEwMDY0NAotLS0gYS9nY2MvbHRv L2x0by5jCisrKyBiL2djYy9sdG8vbHRvLmMKQEAgLTI5MjUsNyArMjkyNSw3 IEBAIGdldF9zZWN0aW9uX2RhdGEgKHN0cnVjdCBsdG9fZmlsZV9kZWNsX2Rh dGEgKmZpbGVfZGF0YSwKICAgaHRhYl90IHNlY3Rpb25faGFzaF90YWJsZSA9 IGZpbGVfZGF0YS0+c2VjdGlvbl9oYXNoX3RhYmxlOwogICBzdHJ1Y3QgbHRv X3NlY3Rpb25fc2xvdCAqZl9zbG90OwogICBzdHJ1Y3QgbHRvX3NlY3Rpb25f c2xvdCBzX3Nsb3Q7Ci0gIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSA9IGx0 b19nZXRfc2VjdGlvbl9uYW1lIChzZWN0aW9uX3R5cGUsIG5hbWUsIGZpbGVf ZGF0YSk7CisgIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSA9IGx0b19nZXRf c2VjdGlvbl9uYW1lIChzZWN0aW9uX3R5cGUsIG5hbWUsIGZpbGVfZGF0YSwg ZmFsc2UpOwogICBjaGFyICpkYXRhID0gTlVMTDsKIAogICAqbGVuID0gMDsK ZGlmZiAtLWdpdCBhL2djYy9wYXNzZXMuYyBiL2djYy9wYXNzZXMuYwppbmRl eCBlM2E3MjEyLi42Nzg3NTViIDEwMDY0NAotLS0gYS9nY2MvcGFzc2VzLmMK KysrIGIvZ2NjL3Bhc3Nlcy5jCkBAIC0yMzEyLDkgKzIzMTIsOCBAQCBpcGFf d3JpdGVfc3VtbWFyaWVzICh2b2lkKQogICBzdHJ1Y3QgY2dyYXBoX25vZGUg Km5vZGU7CiAgIHN0cnVjdCBjZ3JhcGhfbm9kZSAqKm9yZGVyOwogCi0gIGlm ICghZmxhZ19nZW5lcmF0ZV9sdG8gfHwgc2Vlbl9lcnJvciAoKSkKKyAgaWYg KCEoZmxhZ19nZW5lcmF0ZV9sdG8gfHwgZmxhZ19vcGVubXApIHx8IHNlZW5f ZXJyb3IgKCkpCiAgICAgcmV0dXJuOwotCiAgIGVuY29kZXIgPSBsdG9fc3lt dGFiX2VuY29kZXJfbmV3IChmYWxzZSk7CiAKICAgLyogQ3JlYXRlIHRoZSBj YWxsZ3JhcGggc2V0IGluIHRoZSBzYW1lIG9yZGVyIHVzZWQgaW4KZGlmZiAt LWdpdCBhL2djYy9wYXNzZXMuZGVmIGIvZ2NjL3Bhc3Nlcy5kZWYKaW5kZXgg YjI4OTcxMy4uNWZjMDU4OCAxMDA2NDQKLS0tIGEvZ2NjL3Bhc3Nlcy5kZWYK KysrIGIvZ2NjL3Bhc3Nlcy5kZWYKQEAgLTEwMiw2ICsxMDIsOCBAQCBhbG9u ZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQogICBURVJNSU5BVEVfUEFTU19MSVNUICgpCiAKICAgSU5TRVJUX1BBU1NF U19BRlRFUiAoYWxsX3JlZ3VsYXJfaXBhX3Bhc3NlcykKKyAgTkVYVF9QQVNT IChwYXNzX2lwYV9vbXBfZ2ltcGxlX291dCk7CisgIE5FWFRfUEFTUyAocGFz c19pcGFfb21wX2ZpbmlzaF9vdXQpOwogICBORVhUX1BBU1MgKHBhc3NfaXBh X3dob2xlX3Byb2dyYW1fdmlzaWJpbGl0eSk7CiAgIE5FWFRfUEFTUyAocGFz c19pcGFfcHJvZmlsZSk7CiAgIE5FWFRfUEFTUyAocGFzc19pcGFfY3ApOwpk aWZmIC0tZ2l0IGEvZ2NjL3RpbWV2YXIuZGVmIGIvZ2NjL3RpbWV2YXIuZGVm CmluZGV4IGJkMWVlNzYuLjM2NjBlNzggMTAwNjQ0Ci0tLSBhL2djYy90aW1l dmFyLmRlZgorKysgYi9nY2MvdGltZXZhci5kZWYKQEAgLTcyLDggKzcyLDEw IEBAIERFRlRJTUVWQVIgKFRWX0lQQV9GTlNQTElUICAgICAgICAgICAsICJp cGEgZnVuY3Rpb24gc3BsaXR0aW5nIikKIERFRlRJTUVWQVIgKFRWX0lQQV9P UFQJCSAgICAgLCAiaXBhIHZhcmlvdXMgb3B0aW1pemF0aW9ucyIpCiBERUZU SU1FVkFSIChUVl9JUEFfTFRPX0dJTVBMRV9JTiAgICAgLCAiaXBhIGx0byBn aW1wbGUgaW4iKQogREVGVElNRVZBUiAoVFZfSVBBX0xUT19HSU1QTEVfT1VU ICAgICwgImlwYSBsdG8gZ2ltcGxlIG91dCIpCitERUZUSU1FVkFSIChUVl9J UEFfT01QX0dJTVBMRV9PVVQgICAgLCAiaXBhIG9tcCBnaW1wbGUgb3V0IikK IERFRlRJTUVWQVIgKFRWX0lQQV9MVE9fREVDTF9JTiAgICAgICAsICJpcGEg bHRvIGRlY2wgaW4iKQogREVGVElNRVZBUiAoVFZfSVBBX0xUT19ERUNMX09V VCAgICAgICwgImlwYSBsdG8gZGVjbCBvdXQiKQorREVGVElNRVZBUiAoVFZf SVBBX09NUF9ERUNMX09VVCAgICAgICwgImlwYSBvbXAgZGVjbCBvdXQiKQog REVGVElNRVZBUiAoVFZfSVBBX0xUT19ERUNMX0lOSVRfSU8gICwgImlwYSBs dG8gZGVjbCBpbml0IEkvTyIpCiBERUZUSU1FVkFSIChUVl9JUEFfTFRPX0NH UkFQSF9JTyAgICAgLCAiaXBhIGx0byBjZ3JhcGggSS9PIikKIERFRlRJTUVW QVIgKFRWX0lQQV9MVE9fREVDTF9NRVJHRSAgICAsICJpcGEgbHRvIGRlY2wg bWVyZ2UiKQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtcGFzcy5oIGIvZ2NjL3Ry ZWUtcGFzcy5oCmluZGV4IDc4N2E0OWIuLmZmODliZWMgMTAwNjQ0Ci0tLSBh L2djYy90cmVlLXBhc3MuaAorKysgYi9nY2MvdHJlZS1wYXNzLmgKQEAgLTQ1 MSw2ICs0NTEsNyBAQCBleHRlcm4gc2ltcGxlX2lwYV9vcHRfcGFzcyAqbWFr ZV9wYXNzX2Vhcmx5X2xvY2FsX3Bhc3NlcyAoZ2NjOjpjb250ZXh0ICpjdHh0 KTsKIAogZXh0ZXJuIGlwYV9vcHRfcGFzc19kICptYWtlX3Bhc3NfaXBhX3do b2xlX3Byb2dyYW1fdmlzaWJpbGl0eSAoZ2NjOjpjb250ZXh0CiAJCQkJCQkJ ICAgICAgICpjdHh0KTsKK2V4dGVybiBpcGFfb3B0X3Bhc3NfZCAqbWFrZV9w YXNzX2lwYV9vbXBfZ2ltcGxlX291dCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsK IGV4dGVybiBpcGFfb3B0X3Bhc3NfZCAqbWFrZV9wYXNzX2lwYV9sdG9fZ2lt cGxlX291dCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVybiBzaW1wbGVf aXBhX29wdF9wYXNzICptYWtlX3Bhc3NfaXBhX2luY3JlYXNlX2FsaWdubWVu dCAoZ2NjOjpjb250ZXh0CiAJCQkJCQkJICAgICAgKmN0eHQpOwpAQCAtNDYz LDYgKzQ2NCw3IEBAIGV4dGVybiBpcGFfb3B0X3Bhc3NfZCAqbWFrZV9wYXNz X2lwYV9yZWZlcmVuY2UgKGdjYzo6Y29udGV4dCAqY3R4dCk7CiBleHRlcm4g aXBhX29wdF9wYXNzX2QgKm1ha2VfcGFzc19pcGFfcHVyZV9jb25zdCAoZ2Nj Ojpjb250ZXh0ICpjdHh0KTsKIGV4dGVybiBzaW1wbGVfaXBhX29wdF9wYXNz ICptYWtlX3Bhc3NfaXBhX3B0YSAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4 dGVybiBpcGFfb3B0X3Bhc3NfZCAqbWFrZV9wYXNzX2lwYV9sdG9fZmluaXNo X291dCAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKK2V4dGVybiBpcGFfb3B0X3Bh c3NfZCAqbWFrZV9wYXNzX2lwYV9vbXBfZmluaXNoX291dCAoZ2NjOjpjb250 ZXh0ICpjdHh0KTsKIGV4dGVybiBzaW1wbGVfaXBhX29wdF9wYXNzICptYWtl X3Bhc3NfaXBhX3RtIChnY2M6OmNvbnRleHQgKmN0eHQpOwogZXh0ZXJuIGlw YV9vcHRfcGFzc19kICptYWtlX3Bhc3NfaXBhX3Byb2ZpbGUgKGdjYzo6Y29u dGV4dCAqY3R4dCk7CiBleHRlcm4gaXBhX29wdF9wYXNzX2QgKm1ha2VfcGFz c19pcGFfY2R0b3JfbWVyZ2UgKGdjYzo6Y29udGV4dCAqY3R4dCk7Cg== --047d7b16363bf1871404e6453b49--