From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31197 invoked by alias); 19 Nov 2013 06:16:14 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 31184 invoked by uid 89); 19 Nov 2013 06:16:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RDNS_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mail-ob0-f180.google.com Received: from Unknown (HELO mail-ob0-f180.google.com) (209.85.214.180) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 19 Nov 2013 06:16:09 +0000 Received: by mail-ob0-f180.google.com with SMTP id vb8so8224892obc.11 for ; Mon, 18 Nov 2013 22:16:02 -0800 (PST) X-Received: by 10.60.103.106 with SMTP id fv10mr5437206oeb.44.1384841762135; Mon, 18 Nov 2013 22:16:02 -0800 (PST) MIME-Version: 1.0 Received: by 10.60.117.69 with HTTP; Mon, 18 Nov 2013 22:15:22 -0800 (PST) In-Reply-To: <51F01C13.3080402@redhat.com> References: <51F01C13.3080402@redhat.com> From: Hui Zhu Date: Tue, 19 Nov 2013 06:19:00 -0000 Message-ID: Subject: Re: [PATCH] Fix PR 12702 - gdb can hang waiting for thread group leader (gdbserver) To: Pedro Alves Cc: gdb-patches ml , "Gustavo, Luis" Content-Type: multipart/mixed; boundary=089e012277b44d7bf004eb819929 X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00511.txt.bz2 --089e012277b44d7bf004eb819929 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1648 On Thu, Jul 25, 2013 at 2:25 AM, Pedro Alves wrote: > On 07/20/2013 10:59 AM, Hui Zhu wrote: >> Hi, >> >> I got a issue with leader-exit.exp will hang with target_board=native-gdbserver. >> I found the reason is gdbserver still have this issue. So I post a >> patch for gdbserver. > > leader-exit.exp is part of a series of tests for a set of related > problems. See: > > http://www.sourceware.org/ml/gdb-patches/2011-10/msg00704.html > > Several are currently masked because gdbserver doesn't support > fork/exec yet. > > We should fix this by implementing TARGET_WAITKIND_NO_RESUMED > on gdbserver, like the patch above did for native. > > -- > Pedro Alves > Hi Pedro, According to your comments, I make a new patch to add TARGET_WAITKIND_NO_RESUMED to gdbserver. It can pass the leader-exit.exp and pass the regression test. Please help me review it. Thanks, Hui 2013-11-19 Hui Zhu * common/ptid.c (ptid_match): New. * common/ptid.h (ptid_match): New extern. * inferior.h (ptid_match): Removed. * infrun.c (ptid_match): Removed. 2013-11-19 Hui Zhu * linux-low.c (sigchld_mask): New. (handle_extended_wait): Add debug output. (num_lwps): New. (check_zombie_leaders_callback): New. (check_zombie_leaders): New. (not_suspended_callback): New. (check_pending_stop): New. (linux_wait_for_lwp): Call my_waitpid with WNOHANG. (linux_wait_for_event): Change the return check for linux_wait_for_lwp. (wait_lwp): New. (wait_for_sigstop): Call wait_lwp. * linux-low.h (lwp_info): Add pending_stop. * server.c (handle_target_event): Add check for TARGET_WAITKIND_NO_RESUMED. --089e012277b44d7bf004eb819929 Content-Type: text/plain; charset=US-ASCII; name="2-fix-12702.txt" Content-Disposition: attachment; filename="2-fix-12702.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ho6r009j0 Content-length: 23689 LS0tIGEvZ2RiL2NvbW1vbi9wdGlkLmMKKysrIGIvZ2RiL2NvbW1vbi9wdGlk LmMKQEAgLTExNCwzICsxMTQsMTcgQEAgcHRpZF90aWRfcCAocHRpZF90IHB0 aWQpCiAKICAgcmV0dXJuIChwdGlkX2dldF90aWQgKHB0aWQpICE9IDApOwog fQorCitpbnQKK3B0aWRfbWF0Y2ggKHB0aWRfdCBwdGlkLCBwdGlkX3QgZmls dGVyKQoreworICBpZiAocHRpZF9lcXVhbCAoZmlsdGVyLCBtaW51c19vbmVf cHRpZCkpCisgICAgcmV0dXJuIDE7CisgIGlmIChwdGlkX2lzX3BpZCAoZmls dGVyKQorICAgICAgJiYgcHRpZF9nZXRfcGlkIChwdGlkKSA9PSBwdGlkX2dl dF9waWQgKGZpbHRlcikpCisgICAgcmV0dXJuIDE7CisgIGVsc2UgaWYgKHB0 aWRfZXF1YWwgKHB0aWQsIGZpbHRlcikpCisgICAgcmV0dXJuIDE7CisKKyAg cmV0dXJuIDA7Cit9Ci0tLSBhL2dkYi9jb21tb24vcHRpZC5oCisrKyBiL2dk Yi9jb21tb24vcHRpZC5oCkBAIC03OCw0ICs3OCwxNCBAQCBpbnQgcHRpZF9s d3BfcCAocHRpZF90IHB0aWQpOwogLyogUmV0dXJuIHRydWUgaWYgUFRJRCdz IHRpZCBtZW1iZXIgaXMgbm9uLXplcm8uICAqLwogaW50IHB0aWRfdGlkX3Ag KHB0aWRfdCBwdGlkKTsKIAorLyogUmV0dXJucyB0cnVlIGlmIFBUSUQgbWF0 Y2hlcyBmaWx0ZXIgRklMVEVSLiAgRklMVEVSIGNhbiBiZSB0aGUgd2lsZAor ICAgY2FyZCBNSU5VU19PTkVfUFRJRCAoYWxsIHB0aWQgbWF0Y2ggaXQpOyBj YW4gYmUgYSBwdGlkIHJlcHJlc2VudGluZworICAgYSBwcm9jZXNzIChwdGlk X2lzX3BpZCByZXR1cm5zIHRydWUpLCBpbiB3aGljaCBjYXNlLCBhbGwgbHdw cyBhbmQKKyAgIHRocmVhZHMgb2YgdGhhdCBnaXZlbiBwcm9jZXNzIG1hdGNo LCBsd3BzIGFuZCB0aHJlYWRzIG9mIG90aGVyCisgICBwcm9jZXNzZXMgZG8g bm90OyBvciwgaXQgY2FuIHJlcHJlc2VudCBhIHNwZWNpZmljIHRocmVhZCwg aW4gd2hpY2gKKyAgIGNhc2UsIG9ubHkgdGhhdCB0aHJlYWQgd2lsbCBtYXRj aCB0cnVlLiAgUFRJRCBtdXN0IHJlcHJlc2VudCBhCisgICBzcGVjaWZpYyBM V1Agb3IgVEhSRUFELCBpdCBjYW4gbmV2ZXIgYmUgYSB3aWxkIGNhcmQuICAq LworCitleHRlcm4gaW50IHB0aWRfbWF0Y2ggKHB0aWRfdCBwdGlkLCBwdGlk X3QgZmlsdGVyKTsKKwogI2VuZGlmCi0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtbG93LmMKKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwpAQCAt MjIwLDYgKzIyMCw5IEBAIGludCB1c2luZ190aHJlYWRzID0gMTsKICAgIGp1 bXAgcGFkcykuICAqLwogc3RhdGljIGludCBzdGFiaWxpemluZ190aHJlYWRz OwogCisvKiBTaWduYWxzIHRvIGJsb2NrIFNJR0NITEQuICAqLworc3RhdGlj IHNpZ3NldF90IHNpZ2NobGRfbWFzazsKKwogc3RhdGljIHZvaWQgbGludXhf cmVzdW1lX29uZV9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLAogCQkJCSAg aW50IHN0ZXAsIGludCBzaWduYWwsIHNpZ2luZm9fdCAqaW5mbyk7CiBzdGF0 aWMgdm9pZCBsaW51eF9yZXN1bWUgKHN0cnVjdCB0aHJlYWRfcmVzdW1lICpy ZXN1bWVfaW5mbywgc2l6ZV90IG4pOwpAQCAtNDA3LDYgKzQxMCwxMSBAQCBo YW5kbGVfZXh0ZW5kZWRfd2FpdCAoc3RydWN0IGx3cF9pbmZvICplCiAJICAg IHdhcm5pbmcgKCJ3YWl0IHJldHVybmVkIHVuZXhwZWN0ZWQgc3RhdHVzIDB4 JXgiLCBzdGF0dXMpOwogCX0KIAorICAgICAgaWYgKGRlYnVnX3RocmVhZHMp CisJZnByaW50ZiAoc3RkZXJyLCAiSEVXOiBHb3QgY2xvbmUgZXZlbnQgIgor CQkgICAgICAgICAiZnJvbSBMV1AgJWxkLCBuZXcgY2hpbGQgaXMgTFdQICVs ZFxuIiwKKwkJIGx3cGlkX29mIChldmVudF9jaGlsZCksIG5ld19waWQpOwor CiAgICAgICBwdGlkID0gcHRpZF9idWlsZCAocGlkX29mIChldmVudF9jaGls ZCksIG5ld19waWQsIDApOwogICAgICAgbmV3X2x3cCA9IChzdHJ1Y3QgbHdw X2luZm8gKikgYWRkX2x3cCAocHRpZCk7CiAgICAgICBhZGRfdGhyZWFkIChw dGlkLCBuZXdfbHdwKTsKQEAgLTEyNjgsMzAgKzEyNzYsMTQ4IEBAIGZpbmRf bHdwX3BpZCAocHRpZF90IHB0aWQpCiAgIHJldHVybiAoc3RydWN0IGx3cF9p bmZvKikgZmluZF9pbmZlcmlvciAoJmFsbF9sd3BzLCBzYW1lX2x3cCwgJnB0 aWQpOwogfQogCisvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBrbm93biBMV1Bz IGluIHRoZSB0Z2lkIGdpdmVuIGJ5IFBJRC4gICovCisKK3N0YXRpYyBpbnQK K251bV9sd3BzIChpbnQgcGlkKQoreworICBpbnQgY291bnQgPSAwOworICBz dHJ1Y3QgaW5mZXJpb3JfbGlzdF9lbnRyeSAqaW5mID0gYWxsX2x3cHMuaGVh ZDsKKworICB3aGlsZSAoaW5mICE9IE5VTEwpCisgICAgeworICAgICAgc3Ry dWN0IGluZmVyaW9yX2xpc3RfZW50cnkgKm5leHQ7CisKKyAgICAgIG5leHQg PSBpbmYtPm5leHQ7CisgICAgICBpZiAocHRpZF9nZXRfcGlkKGluZi0+aWQp ID09IHBpZCkKKwljb3VudCsrOworICAgICAgaW5mID0gbmV4dDsKKyAgICB9 CisKKyAgcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgdm9pZAorY2hlY2tf em9tYmllX2xlYWRlcnNfY2FsbGJhY2sgKHN0cnVjdCBpbmZlcmlvcl9saXN0 X2VudHJ5ICppbmYpCit7CisgIHBpZF90IGxlYWRlcl9waWQgPSBwdGlkX2dl dF9waWQgKGluZi0+aWQpOworICBzdHJ1Y3QgbHdwX2luZm8gKmxlYWRlcl9s cDsKKworICBsZWFkZXJfbHAgPSBmaW5kX2x3cF9waWQgKGluZi0+aWQpOwor ICBpZiAobGVhZGVyX2xwICE9IE5VTEwKKyAgICAgIC8qIENoZWNrIGlmIHRo ZXJlIGFyZSBvdGhlciB0aHJlYWRzIGluIHRoZSBncm91cCwgYXMgd2UgbWF5 CisJIGhhdmUgcmFjZWQgd2l0aCB0aGUgaW5mZXJpb3Igc2ltcGx5IGV4aXRp bmcuICAqLworICAgICAgJiYgbnVtX2x3cHMgKGxlYWRlcl9waWQpID4gMQor ICAgICAgJiYgbGludXhfcHJvY19waWRfaXNfem9tYmllIChsZWFkZXJfcGlk KSkKKyAgICBkZWxldGVfbHdwIChsZWFkZXJfbHApOworfQorCisvKiBEZXRl Y3Qgem9tYmllIHRocmVhZCBncm91cCBsZWFkZXJzLCBhbmQgImV4aXQiIHRo ZW0uICBXZSBjYW4ndCByZWFwCisgICB0aGVpciBleGl0cyB1bnRpbCBhbGwg b3RoZXIgdGhyZWFkcyBpbiB0aGUgZ3JvdXAgaGF2ZSBleGl0ZWQuICAqLwor CitzdGF0aWMgdm9pZAorY2hlY2tfem9tYmllX2xlYWRlcnMgKHZvaWQpCit7 CisgIGZvcl9lYWNoX2luZmVyaW9yICgmYWxsX3Byb2Nlc3NlcywgY2hlY2tf em9tYmllX2xlYWRlcnNfY2FsbGJhY2spOworfQorCitzdGF0aWMgaW50Citu b3Rfc3VzcGVuZGVkX2NhbGxiYWNrIChzdHJ1Y3QgaW5mZXJpb3JfbGlzdF9l bnRyeSAqaW5mLCB2b2lkICphcmcpCit7CisgIHB0aWRfdCBmaWx0ZXIgPSAq KHB0aWRfdCAqKWFyZzsKKyAgc3RydWN0IGx3cF9pbmZvICpsd3A7CisKKyAg aWYgKCFwdGlkX21hdGNoIChpbmYtPmlkLCBmaWx0ZXIpKQorICAgIHJldHVy biAwOworCisgIGx3cCA9IGZpbmRfbHdwX3BpZCAoaW5mLT5pZCk7CisgIGlm IChsd3AgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKworICBpZiAobHdwLT5z dXNwZW5kZWQpCisgICAgcmV0dXJuIDA7CisKKyAgcmV0dXJuIDE7Cit9CisK K3N0YXRpYyBpbnQKK2NoZWNrX3BlbmRpbmdfc3RvcCAoc3RydWN0IGluZmVy aW9yX2xpc3RfZW50cnkgKmluZiwgdm9pZCAqZGF0YSkKK3sKKyAgcHRpZF90 IHB0aWQgPSAqKHB0aWRfdCAqKSBkYXRhOworICBzdHJ1Y3QgbHdwX2luZm8g Kmx3cDsKKworICBpZiAocHRpZF9lcXVhbCAocHRpZCwgbWludXNfb25lX3B0 aWQpCisgICAgICB8fCBwdGlkX2dldF9waWQoaW5mLT5pZCkgPT0gcHRpZF9n ZXRfcGlkKHB0aWQpKQorICAgIHsKKyAgICAgIGx3cCA9IGZpbmRfbHdwX3Bp ZCAoaW5mLT5pZCk7CisgICAgICBpZiAobHdwLT5wZW5kaW5nX3N0b3ApCisJ cmV0dXJuIDE7CisgICAgfQorCisgIHJldHVybiAwOworfQorCiBzdGF0aWMg c3RydWN0IGx3cF9pbmZvICoKIGxpbnV4X3dhaXRfZm9yX2x3cCAocHRpZF90 IHB0aWQsIGludCAqd3N0YXRwLCBpbnQgb3B0aW9ucykKIHsKLSAgaW50IHJl dDsKLSAgaW50IHRvX3dhaXRfZm9yID0gLTE7CisgIGludCByZXQgPSAwOwog ICBzdHJ1Y3QgbHdwX2luZm8gKmNoaWxkID0gTlVMTDsKKyAgc2lnc2V0X3Qg cHJldl9tYXNrOwogCiAgIGlmIChkZWJ1Z190aHJlYWRzKQogICAgIGZwcmlu dGYgKHN0ZGVyciwgImxpbnV4X3dhaXRfZm9yX2x3cDogJXNcbiIsIHRhcmdl dF9waWRfdG9fc3RyIChwdGlkKSk7CiAKLSAgaWYgKHB0aWRfZXF1YWwgKHB0 aWQsIG1pbnVzX29uZV9wdGlkKSkKLSAgICB0b193YWl0X2ZvciA9IC0xOwkJ CS8qIGFueSBjaGlsZCAqLwotICBlbHNlCi0gICAgdG9fd2FpdF9mb3IgPSBw dGlkX2dldF9sd3AgKHB0aWQpOwkvKiB0aGlzIGx3cCBvbmx5ICovCisgIC8q IE1ha2Ugc3VyZSBTSUdDSExEIGlzIGJsb2NrZWQuICAqLworICBzaWdwcm9j bWFzayAoU0lHX0JMT0NLLCAmc2lnY2hsZF9tYXNrLCAmcHJldl9tYXNrKTsK IAotICBvcHRpb25zIHw9IF9fV0FMTDsKKyAgLyogRmlyc3QgY2hlY2sgaWYg dGhlcmUgaXMgYSBMV1Agd2l0aCBhIHdhaXQgc3RhdHVzIHBlbmRpbmcuICAq LworICBpZiAocHRpZF9lcXVhbCAocHRpZCwgbWludXNfb25lX3B0aWQpIHx8 IHB0aWRfZ2V0X2x3cCAocHRpZCkgPT0gMCkKKyAgICBjaGlsZCA9IChzdHJ1 Y3QgbHdwX2luZm8qKSBmaW5kX2luZmVyaW9yICgmYWxsX2x3cHMsIGNoZWNr X3BlbmRpbmdfc3RvcCwKKwkJCQkJICAgICAgJnB0aWQpOworICBlbHNlCisg ICAgY2hpbGQgPSBmaW5kX2x3cF9waWQgKHB0aWQpOworICBpZiAoY2hpbGQg JiYgY2hpbGQtPnBlbmRpbmdfc3RvcCkKKyAgICB7CisgICAgICBpZiAoZGVi dWdfdGhyZWFkcykKKwlmcHJpbnRmIChzdGRlcnIsCisJCSAibGludXhfd2Fp dF9mb3JfbHdwOiAlcyBoYXMgYSB3YWl0IHN0YXR1cyBwZW5kaW5nLlxuIiwK KwkJIHRhcmdldF9waWRfdG9fc3RyIChwdGlkX29mIChjaGlsZCkpKTsKKyAg ICAgICp3c3RhdHAgPSBjaGlsZC0+bGFzdF9zdGF0dXM7CisgICAgICBjaGls ZC0+cGVuZGluZ19zdG9wID0gMDsKKyAgICAgIGNoaWxkLT5zdG9wcGVkID0g MTsKKyAgICAgIGdvdG8gZ290X2NoaWxkOworICAgIH0KIAogcmV0cnk6Cisg IHJldCA9IG15X3dhaXRwaWQgKC0xLCB3c3RhdHAsIF9fV0NMT05FIHwgV05P SEFORyk7CisgIGlmIChyZXQgPT0gMCB8fCAocmV0ID09IC0xICYmIGVycm5v ID09IEVDSElMRCkpCisgICAgcmV0ID0gbXlfd2FpdHBpZCAoLTEsIHdzdGF0 cCwgV05PSEFORyk7CiAKLSAgcmV0ID0gbXlfd2FpdHBpZCAodG9fd2FpdF9m b3IsIHdzdGF0cCwgb3B0aW9ucyk7Ci0gIGlmIChyZXQgPT0gMCB8fCAocmV0 ID09IC0xICYmIGVycm5vID09IEVDSElMRCAmJiAob3B0aW9ucyAmIFdOT0hB TkcpKSkKLSAgICByZXR1cm4gTlVMTDsKLSAgZWxzZSBpZiAocmV0ID09IC0x KQotICAgIHBlcnJvcl93aXRoX25hbWUgKCJ3YWl0cGlkIik7CisgIGlmIChy ZXQgPD0gMCkKKyAgICB7CisgICAgICBzaWdzZXRfdCBzdXNwZW5kX21hc2s7 CisKKyAgICAgIC8qIENoZWNrIGZvciB6b21iaWUgdGhyZWFkIGdyb3VwIGxl YWRlcnMuICBUaG9zZSBjYW4ndCBiZSByZWFwZWQKKwkgdW50aWwgYWxsIG90 aGVyIHRocmVhZHMgaW4gdGhlIHRocmVhZCBncm91cCBhcmUuICAqLworICAg ICAgY2hlY2tfem9tYmllX2xlYWRlcnMgKCk7CisKKyAgICAgIC8qIElmIHRo ZXJlIGFyZSBubyByZXN1bWVkIGNoaWxkcmVuIGxlZnQsIGJhaWwuICBXZSdk IGJlIHN0dWNrCisJIGZvcmV2ZXIgaW4gdGhlIHNpZ3N1c3BlbmQgY2FsbCBi ZWxvdyBvdGhlcndpc2UuCisJIE9SIG5vIGludGVyZXN0aW5nIGV2ZW50IHRv IHJlcG9ydCB0byB0aGUgY29yZS4qLworICAgICAgaWYgKChmaW5kX2luZmVy aW9yICgmYWxsX2x3cHMsIG5vdF9zdXNwZW5kZWRfY2FsbGJhY2ssICZwdGlk KSA9PSBOVUxMKQorCSAgfHwgKG9wdGlvbnMgJiBXTk9IQU5HKSkKKwl7CisJ ICBzaWdwcm9jbWFzayAoU0lHX1NFVE1BU0ssICZwcmV2X21hc2ssIE5VTEwp OworCSAgcmV0dXJuIE5VTEw7CisJfQorCisgICAgICAvKiBCbG9jayB1bnRp bCB3ZSBnZXQgYW4gZXZlbnQgcmVwb3J0ZWQgd2l0aCBTSUdDSExELiAgKi8K KyAgICAgIHNpZ3Byb2NtYXNrIChTSUdfU0VUTUFTSywgTlVMTCwgJnN1c3Bl bmRfbWFzayk7CisgICAgICBzaWdkZWxzZXQgKCZzdXNwZW5kX21hc2ssIFNJ R0NITEQpOworICAgICAgc2lnc3VzcGVuZCAoJnN1c3BlbmRfbWFzayk7CisK KyAgICAgIGdvdG8gcmV0cnk7CisgICAgfQogCiAgIGlmIChkZWJ1Z190aHJl YWRzCiAgICAgICAmJiAoIVdJRlNUT1BQRUQgKCp3c3RhdHApCkBAIC0xNDA4 LDYgKzE1MzQsMjQgQEAgcmV0cnk6CiAgICAgICBjdXJyZW50X2luZmVyaW9y ID0gc2F2ZWRfaW5mZXJpb3I7CiAgICAgfQogCisgIGlmICghcHRpZF9tYXRj aCAocHRpZF9vZiAoY2hpbGQpLCBwdGlkKSkKKyAgICB7CisgICAgICBpZiAo ZGVidWdfdGhyZWFkcykKKyAgICAgICAgeworCSAgY2hhciBjaGlsZF9wdGlk X2J1Zls4MF07CisKKwkgIHN0cmNweSAoY2hpbGRfcHRpZF9idWYsIHRhcmdl dF9waWRfdG9fc3RyIChwdGlkX29mIChjaGlsZCkpKTsKKwkgIGZwcmludGYg KHN0ZGVyciwgImxpbnV4X3dhaXRfZm9yX2x3cDogJXMgaXMgbm90IHNhbWUg d2l0aCAlcy5cbiIsCisJCSAgIGNoaWxkX3B0aWRfYnVmLCB0YXJnZXRfcGlk X3RvX3N0ciAocHRpZCkpOworCX0KKyAgICAgIGNoaWxkLT5wZW5kaW5nX3N0 b3AgPSAxOworICAgICAgY2hpbGQtPnN0b3BwZWQgPSAwOworICAgICAgZ290 byByZXRyeTsKKyAgICB9CisKK2dvdF9jaGlsZDoKKyAgc2lncHJvY21hc2sg KFNJR19TRVRNQVNLLCAmcHJldl9tYXNrLCBOVUxMKTsKKwogICByZXR1cm4g Y2hpbGQ7CiB9CiAKQEAgLTE4NDQsMTYgKzE5ODgsMTMgQEAgbGludXhfd2Fp dF9mb3JfZXZlbnQgKHB0aWRfdCBwdGlkLCBpbnQgKgogICAgIHsKICAgICAg IGV2ZW50X2NoaWxkID0gbGludXhfd2FpdF9mb3JfbHdwICh3YWl0X3B0aWQs IHdzdGF0LCBvcHRpb25zKTsKIAotICAgICAgaWYgKChvcHRpb25zICYgV05P SEFORykgJiYgZXZlbnRfY2hpbGQgPT0gTlVMTCkKKyAgICAgIGlmIChldmVu dF9jaGlsZCA9PSBOVUxMKQogCXsKIAkgIGlmIChkZWJ1Z190aHJlYWRzKQot CSAgICBmcHJpbnRmIChzdGRlcnIsICJXTk9IQU5HIHNldCwgbm8gZXZlbnQg Zm91bmRcbiIpOworCSAgICBmcHJpbnRmIChzdGRlcnIsICJObyBldmVudCBm b3VuZFxuIik7CiAJICByZXR1cm4gMDsKIAl9CiAKLSAgICAgIGlmIChldmVu dF9jaGlsZCA9PSBOVUxMKQotCWVycm9yICgiZXZlbnQgZnJvbSB1bmtub3du IGNoaWxkIik7Ci0KICAgICAgIGlmIChwdGlkX2lzX3BpZCAocHRpZCkKIAkg ICYmIHB0aWRfZ2V0X3BpZCAocHRpZCkgIT0gcHRpZF9nZXRfcGlkIChwdGlk X29mIChldmVudF9jaGlsZCkpKQogCXsKQEAgLTIzMTQsOCArMjQ1NSwyNSBA QCByZXRyeToKICAgICAgIHBpZCA9IGxpbnV4X3dhaXRfZm9yX2V2ZW50IChz dGVwX292ZXJfYmtwdCwgJncsIG9wdGlvbnMgJiB+V05PSEFORyk7CiAgICAg fQogCi0gIGlmIChwaWQgPT0gMCkgLyogb25seSBpZiBUQVJHRVRfV05PSEFO RyAqLwotICAgIHJldHVybiBudWxsX3B0aWQ7CisgIGlmIChwaWQgPT0gMCkK KyAgICB7CisgICAgICAvKiBJZiB0aGVyZSBhcmUgbm8gcmVzdW1lZCBjaGls ZHJlbiBsZWZ0LCBiYWlsLiAgV2UnZCBiZSBzdHVjaworCSBmb3JldmVyIGlu IHRoZSBzaWdzdXNwZW5kIGNhbGwgYmVsb3cgb3RoZXJ3aXNlLiAgKi8KKyAg ICAgIGlmIChmaW5kX2luZmVyaW9yICgmYWxsX2x3cHMsIG5vdF9zdXNwZW5k ZWRfY2FsbGJhY2ssICZwdGlkKSA9PSBOVUxMKQorCXsKKwkgIG91cnN0YXR1 cy0+a2luZCA9IFRBUkdFVF9XQUlUS0lORF9OT19SRVNVTUVEOworCSAgcmV0 dXJuIG1pbnVzX29uZV9wdGlkOworCX0KKworICAgICAgLyogTm8gaW50ZXJl c3RpbmcgZXZlbnQgdG8gcmVwb3J0IHRvIHRoZSBjb3JlLiAgKi8KKyAgICAg IGlmICh0YXJnZXRfb3B0aW9ucyAmIFRBUkdFVF9XTk9IQU5HKQorCXsKKwkg IG91cnN0YXR1cy0+a2luZCA9IFRBUkdFVF9XQUlUS0lORF9JR05PUkU7CisJ ICByZXR1cm4gbWludXNfb25lX3B0aWQ7CisJfQorCisgICAgICByZXR1cm4g bnVsbF9wdGlkOworICAgIH0KIAogICBldmVudF9jaGlsZCA9IGdldF90aHJl YWRfbHdwIChjdXJyZW50X2luZmVyaW9yKTsKIApAQCAtMjg5OSw2ICszMDU3 LDE3NSBAQCBtYXJrX2x3cF9kZWFkIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCwg aW50CiAgIGx3cC0+c3RvcF9leHBlY3RlZCA9IDA7CiB9CiAKKy8qIFdhaXQg Zm9yIExQIHRvIHN0b3AuICBSZXR1cm5zIHRoZSB3YWl0IHN0YXR1cywgb3Ig MCBpZiB0aGUgTFdQIGhhcworICAgZXhpdGVkLiAgKi8KKworc3RhdGljIGlu dAord2FpdF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKQoreworICBwaWRf dCBwaWQ7CisgIGludCBzdGF0dXMgPSAwOworICBpbnQgdGhyZWFkX2RlYWQg PSAwOworICBzaWdzZXRfdCBwcmV2X21hc2s7CisKKyAgLyogTWFrZSBzdXJl IFNJR0NITEQgaXMgYmxvY2tlZCBmb3Igc2lnc3VzcGVuZCBhdm9pZGluZyBh IHJhY2UgYmVsb3cuICAqLworICBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAm c2lnY2hsZF9tYXNrLCAmcHJldl9tYXNrKTsKKworICBmb3IgKDs7KQorICAg IHsKKyAgICAgIHNpZ3NldF90IHN1c3BlbmRfbWFzazsKKworICAgICAgLyog SWYgbXlfd2FpdHBpZCByZXR1cm5zIDAgaXQgbWVhbnMgdGhlIF9fV0NMT05F IHZzLiBub24tX19XQ0xPTkUga2luZAorCSB3YXMgcmlnaHQgYW5kIHdlIHNo b3VsZCBqdXN0IGNhbGwgc2lnc3VzcGVuZC4gICovCisKKyAgICAgIHBpZCA9 IG15X3dhaXRwaWQgKHB0aWRfZ2V0X2x3cCAobHdwLT5oZWFkLmlkKSwgJnN0 YXR1cywgV05PSEFORyk7CisgICAgICBpZiAocGlkID09IC0xICYmIGVycm5v ID09IEVDSElMRCkKKwlwaWQgPSBteV93YWl0cGlkIChwdGlkX2dldF9sd3Ag KGx3cC0+aGVhZC5pZCksICZzdGF0dXMsIF9fV0NMT05FIHwgV05PSEFORyk7 CisgICAgICBpZiAocGlkID09IC0xICYmIGVycm5vID09IEVDSElMRCkKKwl7 CisJICAvKiBUaGUgdGhyZWFkIGhhcyBwcmV2aW91c2x5IGV4aXRlZC4gIFdl IG5lZWQgdG8gZGVsZXRlIGl0CisJICAgICBub3cgYmVjYXVzZSwgZm9yIHNv bWUgdmVuZG9yIDIuNCBrZXJuZWxzIHdpdGggTlBUTAorCSAgICAgc3VwcG9y dCBiYWNrcG9ydGVkLCB0aGVyZSB3b24ndCBiZSBhbiBleGl0IGV2ZW50IHVu bGVzcworCSAgICAgaXQgaXMgdGhlIG1haW4gdGhyZWFkLiAgMi42IGtlcm5l bHMgd2lsbCByZXBvcnQgYW4gZXhpdAorCSAgICAgZXZlbnQgZm9yIGVhY2gg dGhyZWFkIHRoYXQgZXhpdHMsIGFzIGV4cGVjdGVkLiAgKi8KKwkgIHRocmVh ZF9kZWFkID0gMTsKKwkgIGlmIChkZWJ1Z190aHJlYWRzKQorCSAgICBmcHJp bnRmIChzdGRlcnIsICJXTDogJXMgdmFuaXNoZWQuXG4iLAorCQkgICAgIHRh cmdldF9waWRfdG9fc3RyIChsd3AtPmhlYWQuaWQpKTsKKwl9CisgICAgICBp ZiAocGlkICE9IDApCisJYnJlYWs7CisKKyAgICAgIC8qIEJ1Z3MgMTA5NzAs IDEyNzAyLgorCSBUaHJlYWQgZ3JvdXAgbGVhZGVyIG1heSBoYXZlIGV4aXRl ZCBpbiB3aGljaCBjYXNlIHdlJ2xsIGxvY2sgdXAgaW4KKwkgd2FpdHBpZCBp ZiB0aGVyZSBhcmUgb3RoZXIgdGhyZWFkcywgZXZlbiBpZiB0aGV5IGFyZSBh bGwgem9tYmllcyB0b28uCisJIEJhc2ljYWxseSwgd2UncmUgbm90IHN1cHBv c2VkIHRvIHVzZSB3YWl0cGlkIHRoaXMgd2F5LgorCSBfX1dDTE9ORSBpcyBu b3QgYXBwbGljYWJsZSBmb3IgdGhlIGxlYWRlciBzbyB3ZSBjYW4ndCB1c2Ug dGhhdC4KKwkgTElOVVhfTkFUX1RIUkVBRF9BTElWRSBjYW5ub3QgYmUgdXNl ZCBoZXJlIGFzIGl0IHJlcXVpcmVzIGEgU1RPUFBFRAorCSBwcm9jZXNzOyBp dCBnZXRzIEVTUkNIIGJvdGggZm9yIHRoZSB6b21iaWUgYW5kIGZvciBydW5u aW5nIHByb2Nlc3Nlcy4KKworCSBBcyBhIHdvcmthcm91bmQsIGNoZWNrIGlm IHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSB0aHJlYWQgZ3JvdXAgbGVhZGVyIGFu ZAorCSBpZiBpdCdzIGEgem9tYmllLCBhbmQgYXZvaWQgY2FsbGluZyB3YWl0 cGlkIGlmIGl0IGlzLgorCisJIFRoaXMgaXMgcmFjeSwgd2hhdCBpZiB0aGUg dGdsIGJlY29tZXMgYSB6b21iaWUgcmlnaHQgYWZ0ZXIgd2UgY2hlY2s/CisJ IFRoZXJlZm9yZSBhbHdheXMgdXNlIFdOT0hBTkcgd2l0aCBzaWdzdXNwZW5k IC0gaXQgaXMgZXF1aXZhbGVudCB0bworCSB3YWl0aW5nIHdhaXRwaWQgYnV0 IGxpbnV4X3Byb2NfcGlkX2lzX3pvbWJpZSBpcyBzYWZlIHRoaXMgd2F5LiAg Ki8KKworICAgICAgaWYgKHB0aWRfZ2V0X3BpZCAobHdwLT5oZWFkLmlkKSA9 PSBwdGlkX2dldF9sd3AgKGx3cC0+aGVhZC5pZCkKKwkgICYmIGxpbnV4X3By b2NfcGlkX2lzX3pvbWJpZSAocHRpZF9nZXRfbHdwIChsd3AtPmhlYWQuaWQp KSkKKwl7CisJICB0aHJlYWRfZGVhZCA9IDE7CisJICBpZiAoZGVidWdfdGhy ZWFkcykKKwkgICAgZnByaW50ZiAoc3RkZXJyLCAiV0w6IFRocmVhZCBncm91 cCBsZWFkZXIgJXMgdmFuaXNoZWQuXG4iLAorCQkgICAgIHRhcmdldF9waWRf dG9fc3RyIChsd3AtPmhlYWQuaWQpKTsKKwkgIGJyZWFrOworCX0KKworICAg ICAgLyogV2FpdCBmb3IgbmV4dCBTSUdDSExEIGFuZCB0cnkgYWdhaW4uICBU aGlzIG1heSBsZXQgU0lHQ0hMRCBoYW5kbGVycworCSBnZXQgaW52b2tlZCBk ZXNwaXRlIG91ciBjYWxsZXIgaGFkIHRoZW0gaW50ZW50aW9uYWxseSBibG9j a2VkIGJ5CisJIGJsb2NrX2NoaWxkX3NpZ25hbHMuICBUaGlzIGlzIHNlbnNp dGl2ZSBvbmx5IHRvIHRoZSBsb29wIG9mCisJIGxpbnV4X25hdF93YWl0XzEg YW5kIHRoZXJlIGlmIHdlIGdldCBjYWxsZWQgbXlfd2FpdHBpZCBnZXRzIGNh bGxlZAorCSBhZ2FpbiBiZWZvcmUgaXQgZ2V0cyB0byBzaWdzdXNwZW5kIHNv IHdlIGNhbiBzYWZlbHkgbGV0IHRoZSBoYW5kbGVycworCSBnZXQgZXhlY3V0 ZWQgaGVyZS4gICovCisKKyAgICAgIC8qIEJsb2NrIHVudGlsIHdlIGdldCBh biBldmVudCByZXBvcnRlZCB3aXRoIFNJR0NITEQuICAqLworICAgICAgc2ln cHJvY21hc2sgKFNJR19TRVRNQVNLLCBOVUxMLCAmc3VzcGVuZF9tYXNrKTsK KyAgICAgIHNpZ2RlbHNldCAoJnN1c3BlbmRfbWFzaywgU0lHQ0hMRCk7Cisg ICAgICBzaWdzdXNwZW5kICgmc3VzcGVuZF9tYXNrKTsKKyAgICB9CisKKyAg c2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmcHJldl9tYXNrLCBOVUxMKTsK KworICBpZiAoIXRocmVhZF9kZWFkKQorICAgIHsKKyAgICAgIGdkYl9hc3Nl cnQgKHBpZCA9PSBwdGlkX2dldF9sd3AgKGx3cC0+aGVhZC5pZCkpOworCisg ICAgICBpZiAoZGVidWdfdGhyZWFkcykKKwlmcHJpbnRmIChzdGRlcnIsICJX TDogd2FpdHBpZCAlcyByZWNlaXZlZCAleFxuIiwKKwkJIHRhcmdldF9waWRf dG9fc3RyIChsd3AtPmhlYWQuaWQpLCBzdGF0dXMpOworCisgICAgICAvKiBD aGVjayBpZiB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuICAqLworICAgICAgaWYg KFdJRkVYSVRFRCAoc3RhdHVzKSB8fCBXSUZTSUdOQUxFRCAoc3RhdHVzKSkK Kwl7CisJICB0aHJlYWRfZGVhZCA9IDE7CisJICBpZiAoZGVidWdfdGhyZWFk cykKKwkgICAgZnByaW50ZiAoc3RkZXJyLCAiV0w6ICVzIGV4aXRlZC5cbiIs CisJCSAgICAgdGFyZ2V0X3BpZF90b19zdHIgKGx3cC0+aGVhZC5pZCkpOwor CX0KKyAgICB9CisKKyAgaWYgKHRocmVhZF9kZWFkKQorICAgIHsKKyAgICAg IGRlbGV0ZV9sd3AgKGx3cCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisK KyAgZ2RiX2Fzc2VydCAoV0lGU1RPUFBFRCAoc3RhdHVzKSk7CisKKyAgbHdw LT5zdG9wcGVkID0gMTsKKyAgbHdwLT5sYXN0X3N0YXR1cyA9IHN0YXR1czsK KyAgaWYgKFdJRlNUT1BQRUQgKHN0YXR1cykpCisgICAgeworICAgICAgbHdw LT5zdG9wX3BjID0gZ2V0X3N0b3BfcGMgKGx3cCk7CisgICAgICBpZiAoV1NU T1BTSUcgKHN0YXR1cykgPT0gU0lHU1RPUCAmJiBsd3AtPnN0b3BfZXhwZWN0 ZWQpCisJbHdwLT5zdG9wX2V4cGVjdGVkID0gMDsKKyAgICB9CisKKyAgaWYg KFdJRlNUT1BQRUQgKHN0YXR1cykgJiYgV1NUT1BTSUcgKHN0YXR1cykgPT0g U0lHVFJBUCkKKyAgICB7CisgICAgICBpZiAodGhlX2xvd190YXJnZXQuc3Rv cHBlZF9ieV93YXRjaHBvaW50ID09IE5VTEwpCisJeworCSAgbHdwLT5zdG9w cGVkX2J5X3dhdGNocG9pbnQgPSAwOworCX0KKyAgICAgIGVsc2UKKwl7CisJ ICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yOworCisJICBz YXZlZF9pbmZlcmlvciA9IGN1cnJlbnRfaW5mZXJpb3I7CisJICBjdXJyZW50 X2luZmVyaW9yID0gZ2V0X2x3cF90aHJlYWQgKGx3cCk7CisKKwkgIGx3cC0+ c3RvcHBlZF9ieV93YXRjaHBvaW50CisJICAgID0gdGhlX2xvd190YXJnZXQu c3RvcHBlZF9ieV93YXRjaHBvaW50ICgpOworCisJICBpZiAobHdwLT5zdG9w cGVkX2J5X3dhdGNocG9pbnQpCisJICAgIHsKKwkgICAgICBpZiAodGhlX2xv d190YXJnZXQuc3RvcHBlZF9kYXRhX2FkZHJlc3MgIT0gTlVMTCkKKwkJbHdw LT5zdG9wcGVkX2RhdGFfYWRkcmVzcworCQkgID0gdGhlX2xvd190YXJnZXQu c3RvcHBlZF9kYXRhX2FkZHJlc3MgKCk7CisJICAgICAgZWxzZQorCQlsd3At PnN0b3BwZWRfZGF0YV9hZGRyZXNzID0gMDsKKwkgICAgfQorCisJICBjdXJy ZW50X2luZmVyaW9yID0gc2F2ZWRfaW5mZXJpb3I7CisJfQorICAgIH0KKwor ICAvKiBIYW5kbGUgR05VL0xpbnV4J3Mgc3lzY2FsbCBTSUdUUkFQcy4gICov CisgIGlmIChXSUZTVE9QUEVEIChzdGF0dXMpICYmIFdTVE9QU0lHIChzdGF0 dXMpID09IFNZU0NBTExfU0lHVFJBUCkKKyAgICB7CisgICAgICBpZiAoZGVi dWdfdGhyZWFkcykKKwlmcHJpbnRmIChzdGRlcnIsICJXTDogSGFuZGxpbmcg c3lzY2FsbCBTSUdUUkFQc1xuIik7CisgICAgICAvKiBObyBsb25nZXIgbmVl ZCB0aGUgc3lzZ29vZCBiaXQuICBUaGUgcHRyYWNlIGV2ZW50IGVuZHMgdXAK KwkgcmVjb3JkZWQgaW4gbHAtPndhaXRzdGF0dXMgaWYgd2UgY2FyZSBmb3Ig aXQuICBXZSBjYW4gY2FycnkKKwkgb24gaGFuZGxpbmcgdGhlIGV2ZW50IGxp a2UgYSByZWd1bGFyIFNJR1RSQVAgZnJvbSBoZXJlCisJIG9uLiAgKi8KKyAg ICAgIHN0YXR1cyA9IFdfU1RPUENPREUgKFNJR1RSQVApOworICAgICAgcHRy YWNlIChQVFJBQ0VfQ09OVCwgcHRpZF9nZXRfbHdwIChsd3AtPmhlYWQuaWQp LCAwLCAwKTsKKyAgICAgIHJldHVybiB3YWl0X2x3cCAobHdwKTsKKyAgICB9 CisKKyAgLyogSGFuZGxlIEdOVS9MaW51eCdzIGV4dGVuZGVkIHdhaXRzdGF0 dXMgZm9yIHRyYWNlIGV2ZW50cy4gICovCisgIGlmIChXSUZTVE9QUEVEIChz dGF0dXMpICYmIFdTVE9QU0lHIChzdGF0dXMpID09IFNJR1RSQVAgJiYgc3Rh dHVzID4+IDE2ICE9IDApCisgICAgeworICAgICAgaWYgKGRlYnVnX3RocmVh ZHMpCisJZnByaW50ZiAoc3RkZXJyLCAiV0w6IEhhbmRsaW5nIGV4dGVuZGVk IHN0YXR1cyAweCUwNnhcbiIsIHN0YXR1cyk7CisgICAgICBoYW5kbGVfZXh0 ZW5kZWRfd2FpdCAobHdwLCBzdGF0dXMpOworICAgICAgcmV0dXJuIHdhaXRf bHdwIChsd3ApOworICAgIH0KKworICByZXR1cm4gc3RhdHVzOworfQorCiBz dGF0aWMgdm9pZAogd2FpdF9mb3Jfc2lnc3RvcCAoc3RydWN0IGluZmVyaW9y X2xpc3RfZW50cnkgKmVudHJ5KQogewpAQCAtMjkwNiw4ICszMjMzLDYgQEAg d2FpdF9mb3Jfc2lnc3RvcCAoc3RydWN0IGluZmVyaW9yX2xpc3RfZQogICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnNhdmVkX2luZmVyaW9yOwogICBpbnQgd3N0 YXQ7CiAgIHB0aWRfdCBzYXZlZF90aWQ7Ci0gIHB0aWRfdCBwdGlkOwotICBp bnQgcGlkOwogCiAgIGlmIChsd3AtPnN0b3BwZWQpCiAgICAgewpAQCAtMjky MywxMiArMzI0OCwxMiBAQCB3YWl0X2Zvcl9zaWdzdG9wIChzdHJ1Y3QgaW5m ZXJpb3JfbGlzdF9lCiAgIGVsc2UKICAgICBzYXZlZF90aWQgPSBudWxsX3B0 aWQ7IC8qIGF2b2lkIGJvZ3VzIHVudXNlZCB3YXJuaW5nICovCiAKLSAgcHRp ZCA9IGx3cC0+aGVhZC5pZDsKLQogICBpZiAoZGVidWdfdGhyZWFkcykKICAg ICBmcHJpbnRmIChzdGRlcnIsICJ3YWl0X2Zvcl9zaWdzdG9wOiBwdWxsaW5n IG9uZSBldmVudFxuIik7CiAKLSAgcGlkID0gbGludXhfd2FpdF9mb3JfZXZl bnQgKHB0aWQsICZ3c3RhdCwgX19XQUxMKTsKKyAgd3N0YXQgPSB3YWl0X2x3 cCAobHdwKTsKKyAgaWYgKHdzdGF0ID09IDApCisgICAgcmV0dXJuOwogCiAg IC8qIElmIHdlIHN0b3BwZWQgd2l0aCBhIG5vbi1TSUdTVE9QIHNpZ25hbCwg c2F2ZSBpdCBmb3IgbGF0ZXIKICAgICAgYW5kIHJlY29yZCB0aGUgcGVuZGlu ZyBTSUdTVE9QLiAgSWYgdGhlIHByb2Nlc3MgZXhpdGVkLCBqdXN0CkBAIC0y OTUyLDkgKzMyNzcsMTAgQEAgd2FpdF9mb3Jfc2lnc3RvcCAoc3RydWN0IGlu ZmVyaW9yX2xpc3RfZQogICBlbHNlCiAgICAgewogICAgICAgaWYgKGRlYnVn X3RocmVhZHMpCi0JZnByaW50ZiAoc3RkZXJyLCAiUHJvY2VzcyAlZCBleGl0 ZWQgd2hpbGUgc3RvcHBpbmcgTFdQc1xuIiwgcGlkKTsKKwlmcHJpbnRmIChz dGRlcnIsICJQcm9jZXNzICVsZCBleGl0ZWQgd2hpbGUgc3RvcHBpbmcgTFdQ c1xuIiwKKwkJIHB0aWRfZ2V0X2x3cCAobHdwLT5oZWFkLmlkKSk7CiAKLSAg ICAgIGx3cCA9IGZpbmRfbHdwX3BpZCAocGlkX3RvX3B0aWQgKHBpZCkpOwor ICAgICAgbHdwID0gZmluZF9sd3BfcGlkIChwaWRfdG9fcHRpZCAocHRpZF9n ZXRfbHdwIChsd3AtPmhlYWQuaWQpKSk7CiAgICAgICBpZiAobHdwKQogCXsK IAkgIC8qIExlYXZlIHRoaXMgc3RhdHVzIHBlbmRpbmcgZm9yIHRoZSBuZXh0 IHRpbWUgd2UncmUgYWJsZSB0bwpAQCAtNTg2NCw1ICs2MTkwLDggQEAgaW5p dGlhbGl6ZV9sb3cgKHZvaWQpCiAgIHNpZ2NobGRfYWN0aW9uLnNhX2ZsYWdz ID0gU0FfUkVTVEFSVDsKICAgc2lnYWN0aW9uIChTSUdDSExELCAmc2lnY2hs ZF9hY3Rpb24sIE5VTEwpOwogCisgIHNpZ2VtcHR5c2V0ICgmc2lnY2hsZF9t YXNrKTsKKyAgc2lnYWRkc2V0KCZzaWdjaGxkX21hc2ssIFNJR0NITEQpOwor CiAgIGluaXRpYWxpemVfbG93X2FyY2ggKCk7CiB9Ci0tLSBhL2dkYi9nZGJz ZXJ2ZXIvbGludXgtbG93LmgKKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1s b3cuaApAQCAtMjUzLDYgKzI1Myw5IEBAIHN0cnVjdCBsd3BfaW5mbwogICAg ICBldmVudCBhbHJlYWR5IHJlY2VpdmVkIGluIGEgd2FpdCgpKS4gICovCiAg IGludCBzdG9wcGVkOwogCisgIC8qIElmIHRoaXMgZmxhZyBpcyBzZXQsIHRo ZSBsd3AgaGFzIGEgd2FpdCBzdGF0dXMgcGVuZGluZy4gICovCisgIGludCBw ZW5kaW5nX3N0b3A7CisKICAgLyogSWYgdGhpcyBmbGFnIGlzIHNldCwgdGhl IGx3cCBpcyBrbm93biB0byBiZSBkZWFkIGFscmVhZHkgKGV4aXQKICAgICAg ZXZlbnQgYWxyZWFkeSByZWNlaXZlZCBpbiBhIHdhaXQoKSwgYW5kIGlzIGNh Y2hlZCBpbgogICAgICBzdGF0dXNfcGVuZGluZykuICAqLwotLS0gYS9nZGIv Z2Ric2VydmVyL3NlcnZlci5jCisrKyBiL2dkYi9nZGJzZXJ2ZXIvc2VydmVy LmMKQEAgLTM1OTUsNyArMzU5NSw4IEBAIGhhbmRsZV90YXJnZXRfZXZlbnQg KGludCBlcnIsIGdkYl9jbGllbnQKICAgbGFzdF9wdGlkID0gbXl3YWl0ICht aW51c19vbmVfcHRpZCwgJmxhc3Rfc3RhdHVzLAogCQkgICAgICBUQVJHRVRf V05PSEFORywgMSk7CiAKLSAgaWYgKGxhc3Rfc3RhdHVzLmtpbmQgIT0gVEFS R0VUX1dBSVRLSU5EX0lHTk9SRSkKKyAgaWYgKGxhc3Rfc3RhdHVzLmtpbmQg IT0gVEFSR0VUX1dBSVRLSU5EX0lHTk9SRQorICAgICAgJiYgbGFzdF9zdGF0 dXMua2luZCAhPSBUQVJHRVRfV0FJVEtJTkRfTk9fUkVTVU1FRCkKICAgICB7 CiAgICAgICBpbnQgcGlkID0gcHRpZF9nZXRfcGlkIChsYXN0X3B0aWQpOwog ICAgICAgc3RydWN0IHByb2Nlc3NfaW5mbyAqcHJvY2VzcyA9IGZpbmRfcHJv Y2Vzc19waWQgKHBpZCk7Ci0tLSBhL2dkYi9pbmZlcmlvci5oCisrKyBiL2dk Yi9pbmZlcmlvci5oCkBAIC02NSwxNiArNjUsNiBAQCBleHRlcm4gdm9pZCBk aXNjYXJkX2luZmNhbGxfY29udHJvbF9zdGF0CiBleHRlcm4gc3RydWN0IHJl Z2NhY2hlICoKICAgZ2V0X2luZmNhbGxfc3VzcGVuZF9zdGF0ZV9yZWdjYWNo ZSAoc3RydWN0IGluZmNhbGxfc3VzcGVuZF9zdGF0ZSAqKTsKIAotLyogUmV0 dXJucyB0cnVlIGlmIFBUSUQgbWF0Y2hlcyBmaWx0ZXIgRklMVEVSLiAgRklM VEVSIGNhbiBiZSB0aGUgd2lsZAotICAgY2FyZCBNSU5VU19PTkVfUFRJRCAo YWxsIHB0aWQgbWF0Y2ggaXQpOyBjYW4gYmUgYSBwdGlkIHJlcHJlc2VudGlu ZwotICAgYSBwcm9jZXNzIChwdGlkX2lzX3BpZCByZXR1cm5zIHRydWUpLCBp biB3aGljaCBjYXNlLCBhbGwgbHdwcyBhbmQKLSAgIHRocmVhZHMgb2YgdGhh dCBnaXZlbiBwcm9jZXNzIG1hdGNoLCBsd3BzIGFuZCB0aHJlYWRzIG9mIG90 aGVyCi0gICBwcm9jZXNzZXMgZG8gbm90OyBvciwgaXQgY2FuIHJlcHJlc2Vu dCBhIHNwZWNpZmljIHRocmVhZCwgaW4gd2hpY2gKLSAgIGNhc2UsIG9ubHkg dGhhdCB0aHJlYWQgd2lsbCBtYXRjaCB0cnVlLiAgUFRJRCBtdXN0IHJlcHJl c2VudCBhCi0gICBzcGVjaWZpYyBMV1Agb3IgVEhSRUFELCBpdCBjYW4gbmV2 ZXIgYmUgYSB3aWxkIGNhcmQuICAqLwotCi1leHRlcm4gaW50IHB0aWRfbWF0 Y2ggKHB0aWRfdCBwdGlkLCBwdGlkX3QgZmlsdGVyKTsKLQogLyogU2F2ZSB2 YWx1ZSBvZiBpbmZlcmlvcl9wdGlkIHNvIHRoYXQgaXQgbWF5IGJlIHJlc3Rv cmVkIGJ5CiAgICBhIGxhdGVyIGNhbGwgdG8gZG9fY2xlYW51cHMoKS4gIFJl dHVybnMgdGhlIHN0cnVjdCBjbGVhbnVwCiAgICBwb2ludGVyIG5lZWRlZCBm b3IgbGF0ZXIgZG9pbmcgdGhlIGNsZWFudXAuICAqLwotLS0gYS9nZGIvaW5m cnVuLmMKKysrIGIvZ2RiL2luZnJ1bi5jCkBAIC03MDU5LDIwICs3MDU5LDYg QEAgZGlzY2FyZF9pbmZjYWxsX2NvbnRyb2xfc3RhdGUgKHN0cnVjdCBpbgog ICB4ZnJlZSAoaW5mX3N0YXR1cyk7CiB9CiAMCi1pbnQKLXB0aWRfbWF0Y2gg KHB0aWRfdCBwdGlkLCBwdGlkX3QgZmlsdGVyKQotewotICBpZiAocHRpZF9l cXVhbCAoZmlsdGVyLCBtaW51c19vbmVfcHRpZCkpCi0gICAgcmV0dXJuIDE7 Ci0gIGlmIChwdGlkX2lzX3BpZCAoZmlsdGVyKQotICAgICAgJiYgcHRpZF9n ZXRfcGlkIChwdGlkKSA9PSBwdGlkX2dldF9waWQgKGZpbHRlcikpCi0gICAg cmV0dXJuIDE7Ci0gIGVsc2UgaWYgKHB0aWRfZXF1YWwgKHB0aWQsIGZpbHRl cikpCi0gICAgcmV0dXJuIDE7Ci0KLSAgcmV0dXJuIDA7Ci19Ci0KIC8qIHJl c3RvcmVfaW5mZXJpb3JfcHRpZCgpIHdpbGwgYmUgdXNlZCBieSB0aGUgY2xl YW51cCBtYWNoaW5lcnkKICAgIHRvIHJlc3RvcmUgdGhlIGluZmVyaW9yX3B0 aWQgdmFsdWUgc2F2ZWQgaW4gYSBjYWxsIHRvCiAgICBzYXZlX2luZmVyaW9y X3B0aWQoKS4gICovCg== --089e012277b44d7bf004eb819929--