Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755345Ab3I3LeV (ORCPT ); Mon, 30 Sep 2013 07:34:21 -0400 Received: from mail-qa0-f42.google.com ([209.85.216.42]:49622 "EHLO mail-qa0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755157Ab3I3LeR (ORCPT ); Mon, 30 Sep 2013 07:34:17 -0400 MIME-Version: 1.0 In-Reply-To: References: <20130917190606.GB3918@infradead.org> <52398FF1.5020502@redhat.com> <20130918143346.GB3891@infradead.org> From: Denys Vlasenko Date: Mon, 30 Sep 2013 13:33:56 +0200 Message-ID: Subject: Re: [RFC] Full syscall argument decode in "perf trace" To: Arnaldo Carvalho de Melo Cc: Denys Vlasenko , Tom Zanussi , Steven Rostedt , Ingo Molnar , Jiri Olsa , Masami Hiramatsu , Oleg Nesterov , Linux Kernel Mailing List , Jiri Moskovcak Content-Type: multipart/mixed; boundary=089e015372ee60ac5c04e79837f7 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 38936 Lines: 554 --089e015372ee60ac5c04e79837f7 Content-Type: text/plain; charset=ISO-8859-1 On Thu, Sep 26, 2013 at 9:41 AM, Denys Vlasenko wrote: > On Wed, Sep 18, 2013 at 4:33 PM, Arnaldo Carvalho de Melo > wrote: >>> The problem: ~100 more tracepoints need to be added merely to get >>> to the point where strace already is, wrt quality of syscall decoding. >>> strace has nearly 300 separate custom syscall formatting functions, >>> some of them quite complex. >>> >>> If we need to add syscall stopping feature (which, as I said above, >>> will be necessary anyway IMO), then syscall decoding can be as good >>> as strace *already*. Then, gradually more tracepoints are added >>> to make it faster. >>> >>> I am thinking about going into this direction. >>> >>> Therefore my question should be restated as: >>> >>> Would perf developers accept the "syscall pausing" feature, >>> or it won't be accepted? >> >> Do you have some patch for us to try? > > I have a patch which is a bit strace specific: it sidesteps > the question of the synchronization between traced process > and its tracer by using ptrace's existing method of reporting stops. > > This works for strace, and is very easy to implement. > Naturally, other tracers (e.g. "perf trace" wouldn't > want to start using ptrace! Synchronization needs > to be done in some other way, not as a ptrace stop. > > For one, the stopping flag needs to be a counter, so that > more than one tracer can use this feature concurrently. > > But anyway, I am attaching it. > > It adds a new flag, attr.sysexit_stop, which makes process stop > at next syscall exit when this tracepoint overflows. Here is the next iteration of the work in progress. I added syscall masks. This necessitated propagation of pointer to struct pt_regs which points to userspace registers from sys_{enter,exit} tracepoints to overflow handling functions, in order to get syscall#. (Yes, I discovered that pt_regs which was already there wasn't the *userspace* one). The patch is tested: I have a modified version of strace which decodes all syscalls properly and which avoids stopping on all syscall entries and on a selected few syscall exits too. As I see it, the next thing to tackle is the stopping method. (The current patch still uses my old ptrace-specific hack). How about the following: add a per-task "pause counter". If it is <= 0, then task is not paused. If it is > 0, task is paused. When an attached perf fd causes task to pause, the counter is incremented, a marker is written into the perf buffer, and task goes to sleep. When tracer process sees the marker, it commands traced process to "unpause", which decrements the counter. Why this way? * this allows traced process to be paused by several tracers at once. * this does not need heavy-weight notifications to be sent to tracers (unlike my current hack, which invokes the waitpid notification machinery, the source of much of strace's slowness). * it might work even if counter increment is reordered relative to perf marker writing. if tracer sees the marker, it can "unpause" - decrement counter and cause it to go -1. The task is not paused (the rule is "<= 0", not "= 0"). Then kernel increments the counter, it's 0 now, and task is still not paused. (I'm not sure whether such property is useful, but if it is, we have it - good :) The downside is, we'd need one new field in task struct. Does this look sensible to you? --089e015372ee60ac5c04e79837f7 Content-Type: application/octet-stream; name="perf_trace_stop_RFC_v2.diff" Content-Disposition: attachment; filename="perf_trace_stop_RFC_v2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hm7leq4e1 ZGlmZiAtdXJwIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNoL2FscGhhL2tl cm5lbC9wZXJmX2V2ZW50LmMgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQvYXJjaC9hbHBo YS9rZXJuZWwvcGVyZl9ldmVudC5jCi0tLSBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5P UkcvYXJjaC9hbHBoYS9rZXJuZWwvcGVyZl9ldmVudC5jCTIwMTMtMDctMDEgMDA6MTM6MjkuMDAw MDAwMDAwICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL2FscGhh L2tlcm5lbC9wZXJmX2V2ZW50LmMJMjAxMy0wOS0zMCAxMToxOTowNC4yOTA4NDkzMjkgKzAyMDAK QEAgLTg1MCw3ICs4NTAsNyBAQCBzdGF0aWMgdm9pZCBhbHBoYV9wZXJmX2V2ZW50X2lycV9oYW5k bGVyCiAJcGVyZl9zYW1wbGVfZGF0YV9pbml0KCZkYXRhLCAwLCBod2MtPmxhc3RfcGVyaW9kKTsK IAogCWlmIChhbHBoYV9wZXJmX2V2ZW50X3NldF9wZXJpb2QoZXZlbnQsIGh3YywgaWR4KSkgewot CQlpZiAocGVyZl9ldmVudF9vdmVyZmxvdyhldmVudCwgJmRhdGEsIHJlZ3MpKSB7CisJCWlmIChw ZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncywgTlVMTCkpIHsKIAkJCS8qIElu dGVycnVwdHMgY29taW5nIHRvbyBxdWlja2x5OyAidGhyb3R0bGUiIHRoZQogCQkJICogY291bnRl ciwgaS5lLiwgZGlzYWJsZSBpdCBmb3IgYSBsaXR0bGUgd2hpbGUuCiAJCQkgKi8KZGlmZiAtdXJw IGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNoL2FybS9rZXJuZWwvcGVyZl9l dmVudF92Ni5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gvYXJtL2tlcm5lbC9w ZXJmX2V2ZW50X3Y2LmMKLS0tIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNo L2FybS9rZXJuZWwvcGVyZl9ldmVudF92Ni5jCTIwMTMtMDctMDEgMDA6MTM6MjkuMDAwMDAwMDAw ICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL2FybS9rZXJuZWwv cGVyZl9ldmVudF92Ni5jCTIwMTMtMDktMzAgMTE6MTk6MDQuMjkxODQ5MzMyICswMjAwCkBAIC01 MTQsNyArNTE0LDcgQEAgYXJtdjZwbXVfaGFuZGxlX2lycShpbnQgaXJxX251bSwKIAkJaWYgKCFh cm1wbXVfZXZlbnRfc2V0X3BlcmlvZChldmVudCkpCiAJCQljb250aW51ZTsKIAotCQlpZiAocGVy Zl9ldmVudF9vdmVyZmxvdyhldmVudCwgJmRhdGEsIHJlZ3MpKQorCQlpZiAocGVyZl9ldmVudF9v dmVyZmxvdyhldmVudCwgJmRhdGEsIHJlZ3MsIE5VTEwpKQogCQkJY3B1X3BtdS0+ZGlzYWJsZShl dmVudCk7CiAJfQogCmRpZmYgLXVycCBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcv YXJjaC9hcm0va2VybmVsL3BlcmZfZXZlbnRfdjcuYyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4 Nl82NC9hcmNoL2FybS9rZXJuZWwvcGVyZl9ldmVudF92Ny5jCi0tLSBsaW51eC0zLjEwLjExLTEw MC5mYzE4Lng4Nl82NC5PUkcvYXJjaC9hcm0va2VybmVsL3BlcmZfZXZlbnRfdjcuYwkyMDEzLTA3 LTAxIDAwOjEzOjI5LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54 ODZfNjQvYXJjaC9hcm0va2VybmVsL3BlcmZfZXZlbnRfdjcuYwkyMDEzLTA5LTMwIDExOjE5OjA0 LjI5Mzg0OTMzOCArMDIwMApAQCAtMTA3NCw3ICsxMDc0LDcgQEAgc3RhdGljIGlycXJldHVybl90 IGFybXY3cG11X2hhbmRsZV9pcnEoaQogCQlpZiAoIWFybXBtdV9ldmVudF9zZXRfcGVyaW9kKGV2 ZW50KSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAm ZGF0YSwgcmVncykpCisJCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVn cywgTlVMTCkpCiAJCQljcHVfcG11LT5kaXNhYmxlKGV2ZW50KTsKIAl9CiAKZGlmZiAtdXJwIGxp bnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNoL2FybS9rZXJuZWwvcGVyZl9ldmVu dF94c2NhbGUuYyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL2FybS9rZXJuZWwv cGVyZl9ldmVudF94c2NhbGUuYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JH L2FyY2gvYXJtL2tlcm5lbC9wZXJmX2V2ZW50X3hzY2FsZS5jCTIwMTMtMDctMDEgMDA6MTM6Mjku MDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL2Fy bS9rZXJuZWwvcGVyZl9ldmVudF94c2NhbGUuYwkyMDEzLTA5LTMwIDExOjE5OjA0LjI5NDg0OTM0 MSArMDIwMApAQCAtMjY1LDcgKzI2NSw3IEBAIHhzY2FsZTFwbXVfaGFuZGxlX2lycShpbnQgaXJx X251bSwgdm9pZAogCQlpZiAoIWFybXBtdV9ldmVudF9zZXRfcGVyaW9kKGV2ZW50KSkKIAkJCWNv bnRpbnVlOwogCi0JCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncykp CisJCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncywgTlVMTCkpCiAJ CQljcHVfcG11LT5kaXNhYmxlKGV2ZW50KTsKIAl9CiAKQEAgLTYwNiw3ICs2MDYsNyBAQCB4c2Nh bGUycG11X2hhbmRsZV9pcnEoaW50IGlycV9udW0sIHZvaWQKIAkJaWYgKCFhcm1wbXVfZXZlbnRf c2V0X3BlcmlvZChldmVudCkpCiAJCQljb250aW51ZTsKIAotCQlpZiAocGVyZl9ldmVudF9vdmVy ZmxvdyhldmVudCwgJmRhdGEsIHJlZ3MpKQorCQlpZiAocGVyZl9ldmVudF9vdmVyZmxvdyhldmVu dCwgJmRhdGEsIHJlZ3MsIE5VTEwpKQogCQkJY3B1X3BtdS0+ZGlzYWJsZShldmVudCk7CiAJfQog CmRpZmYgLXVycCBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJjaC9hcm02NC9r ZXJuZWwvcGVyZl9ldmVudC5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gvYXJt NjQva2VybmVsL3BlcmZfZXZlbnQuYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQu T1JHL2FyY2gvYXJtNjQva2VybmVsL3BlcmZfZXZlbnQuYwkyMDEzLTA5LTIzIDEyOjAzOjI1LjYw NDI1Mzk1NyArMDIwMAorKysgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQvYXJjaC9hcm02 NC9rZXJuZWwvcGVyZl9ldmVudC5jCTIwMTMtMDktMzAgMTE6MTk6MDQuMjk1ODQ5MzQ0ICswMjAw CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYXJtdjhwbXVfaGFuZGxl X2lycShpCiAJCWlmICghYXJtcG11X2V2ZW50X3NldF9wZXJpb2QoZXZlbnQsIGh3YywgaWR4KSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwg cmVncykpCisJCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncywgTlVM TCkpCiAJCQljcHVfcG11LT5kaXNhYmxlKGh3YywgaWR4KTsKIAl9CiAKZGlmZiAtdXJwIGxpbnV4 LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNoL21ldGFnL2tlcm5lbC9wZXJmL3BlcmZf ZXZlbnQuYyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL21ldGFnL2tlcm5lbC9w ZXJmL3BlcmZfZXZlbnQuYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2Fy Y2gvbWV0YWcva2VybmVsL3BlcmYvcGVyZl9ldmVudC5jCTIwMTMtMDctMDEgMDA6MTM6MjkuMDAw MDAwMDAwICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL21ldGFn L2tlcm5lbC9wZXJmL3BlcmZfZXZlbnQuYwkyMDEzLTA5LTMwIDExOjE5OjA0LjI5Njg0OTM0NyAr MDIwMApAQCAtNzg5LDcgKzc4OSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtZXRhZ19wbXVfY291 bnRlcl9vdmUKIAkgKiBjb21wbGV0ZWQuIE5vdGUgdGhlIGNvdW50ZXIgdmFsdWUgbWF5IGhhdmUg YmVlbiBtb2RpZmllZCB3aGlsZSBpdCB3YXMKIAkgKiBpbmFjdGl2ZSB0byBzZXQgaXQgdXAgcmVh ZHkgZm9yIHRoZSBuZXh0IGludGVycnVwdC4KIAkgKi8KLQlpZiAoIXBlcmZfZXZlbnRfb3ZlcmZs b3coZXZlbnQsICZzYW1wbGVkYXRhLCByZWdzKSkgeworCWlmICghcGVyZl9ldmVudF9vdmVyZmxv dyhldmVudCwgJnNhbXBsZWRhdGEsIHJlZ3MsIE5VTEwpKSB7CiAJCV9fZ2xvYmFsX2xvY2syKGZs YWdzKTsKIAkJY291bnRlciA9IChjb3VudGVyICYgMHhmZjAwMDAwMCkgfAogCQkJICAobWV0YWdf aW4zMihQRVJGX0NPVU5UKGlkeCkpICYgMHgwMGZmZmZmZik7CmRpZmYgLXVycCBsaW51eC0zLjEw LjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJjaC9taXBzL2tlcm5lbC9wZXJmX2V2ZW50X21pcHN4 eC5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gvbWlwcy9rZXJuZWwvcGVyZl9l dmVudF9taXBzeHguYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2FyY2gv bWlwcy9rZXJuZWwvcGVyZl9ldmVudF9taXBzeHguYwkyMDEzLTA3LTAxIDAwOjEzOjI5LjAwMDAw MDAwMCArMDIwMAorKysgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQvYXJjaC9taXBzL2tl cm5lbC9wZXJmX2V2ZW50X21pcHN4eC5jCTIwMTMtMDktMzAgMTE6MTk6MDQuMjk3ODQ5MzUxICsw MjAwCkBAIC03NDYsNyArNzQ2LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2Fzc29jaWF0ZWRfZXZl bnQoc3RydQogCWlmICghbWlwc3BtdV9ldmVudF9zZXRfcGVyaW9kKGV2ZW50LCBod2MsIGlkeCkp CiAJCXJldHVybjsKIAotCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCBkYXRhLCByZWdz KSkKKwlpZiAocGVyZl9ldmVudF9vdmVyZmxvdyhldmVudCwgZGF0YSwgcmVncywgTlVMTCkpCiAJ CW1pcHN4eF9wbXVfZGlzYWJsZV9ldmVudChpZHgpOwogfQogCmRpZmYgLXVycCBsaW51eC0zLjEw LjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJjaC9wb3dlcnBjL3BlcmYvY29yZS1ib29rM3MuYyBs aW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL3Bvd2VycGMvcGVyZi9jb3JlLWJvb2sz cy5jCi0tLSBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJjaC9wb3dlcnBjL3Bl cmYvY29yZS1ib29rM3MuYwkyMDEzLTA5LTIzIDEyOjAzOjI1LjYxMDI1Mzk1NSArMDIwMAorKysg bGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQvYXJjaC9wb3dlcnBjL3BlcmYvY29yZS1ib29r M3MuYwkyMDEzLTA5LTMwIDExOjE5OjA0LjI5Nzg0OTM1MSArMDIwMApAQCAtMTYzOSw3ICsxNjM5 LDcgQEAgc3RhdGljIHZvaWQgcmVjb3JkX2FuZF9yZXN0YXJ0KHN0cnVjdCBwZQogCQkJZGF0YS5i cl9zdGFjayA9ICZjcHVody0+YmhyYl9zdGFjazsKIAkJfQogCi0JCWlmIChwZXJmX2V2ZW50X292 ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncykpCisJCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2 ZW50LCAmZGF0YSwgcmVncywgTlVMTCkpCiAJCQlwb3dlcl9wbXVfc3RvcChldmVudCwgMCk7CiAJ fQogfQpkaWZmIC11cnAgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2FyY2gvcG93 ZXJwYy9wZXJmL2NvcmUtZnNsLWVtYi5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2Fy Y2gvcG93ZXJwYy9wZXJmL2NvcmUtZnNsLWVtYi5jCi0tLSBsaW51eC0zLjEwLjExLTEwMC5mYzE4 Lng4Nl82NC5PUkcvYXJjaC9wb3dlcnBjL3BlcmYvY29yZS1mc2wtZW1iLmMJMjAxMy0wNy0wMSAw MDoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0 L2FyY2gvcG93ZXJwYy9wZXJmL2NvcmUtZnNsLWVtYi5jCTIwMTMtMDktMzAgMTE6MTk6MDQuMjk3 ODQ5MzUxICswMjAwCkBAIC02MTUsNyArNjE1LDcgQEAgc3RhdGljIHZvaWQgcmVjb3JkX2FuZF9y ZXN0YXJ0KHN0cnVjdCBwZQogCiAJCXBlcmZfc2FtcGxlX2RhdGFfaW5pdCgmZGF0YSwgMCwgZXZl bnQtPmh3Lmxhc3RfcGVyaW9kKTsKIAotCQlpZiAocGVyZl9ldmVudF9vdmVyZmxvdyhldmVudCwg JmRhdGEsIHJlZ3MpKQorCQlpZiAocGVyZl9ldmVudF9vdmVyZmxvdyhldmVudCwgJmRhdGEsIHJl Z3MsIE5VTEwpKQogCQkJZnNsX2VtYl9wbXVfc3RvcChldmVudCwgMCk7CiAJfQogfQpkaWZmIC11 cnAgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2FyY2gvc3BhcmMva2VybmVsL3Bl cmZfZXZlbnQuYyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9hcmNoL3NwYXJjL2tlcm5l bC9wZXJmX2V2ZW50LmMKLS0tIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNo L3NwYXJjL2tlcm5lbC9wZXJmX2V2ZW50LmMJMjAxMy0wNy0wMSAwMDoxMzoyOS4wMDAwMDAwMDAg KzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gvc3BhcmMva2VybmVs L3BlcmZfZXZlbnQuYwkyMDEzLTA5LTMwIDExOjE5OjA0LjI5Nzg0OTM1MSArMDIwMApAQCAtMTYz Myw3ICsxNjMzLDcgQEAgc3RhdGljIGludCBfX2twcm9iZXMgcGVyZl9ldmVudF9ubWlfaGFuZAog CQlpZiAoIXNwYXJjX3BlcmZfZXZlbnRfc2V0X3BlcmlvZChldmVudCwgaHdjLCBpZHgpKQogCQkJ Y29udGludWU7CiAKLQkJaWYgKHBlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQsICZkYXRhLCByZWdz KSkKKwkJaWYgKHBlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQsICZkYXRhLCByZWdzLCBOVUxMKSkK IAkJCXNwYXJjX3BtdV9zdG9wKGV2ZW50LCAwKTsKIAl9CiAKZGlmZiAtdXJwIGxpbnV4LTMuMTAu MTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9hcmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnRfYW1k X2licy5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gveDg2L2tlcm5lbC9jcHUv cGVyZl9ldmVudF9hbWRfaWJzLmMKLS0tIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9S Ry9hcmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnRfYW1kX2licy5jCTIwMTMtMDctMDEgMDA6 MTM6MjkuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9h cmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnRfYW1kX2licy5jCTIwMTMtMDktMzAgMTE6MTk6 MDQuMjk4ODQ5MzU0ICswMjAwCkBAIC01ODAsNyArNTgwLDcgQEAgc3RhdGljIGludCBwZXJmX2li c19oYW5kbGVfaXJxKHN0cnVjdCBwZQogCQlkYXRhLnJhdyA9ICZyYXc7CiAJfQogCi0JdGhyb3R0 bGUgPSBwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgJnJlZ3MpOworCXRocm90dGxl ID0gcGVyZl9ldmVudF9vdmVyZmxvdyhldmVudCwgJmRhdGEsICZyZWdzLCBOVUxMKTsKIG91dDoK IAlpZiAodGhyb3R0bGUpCiAJCXBlcmZfaWJzX2Rpc2FibGVfZXZlbnQocGVyZl9pYnMsIGh3Yywg KmNvbmZpZyk7CmRpZmYgLXVycCBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJj aC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZf NjQvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMKLS0tIGxpbnV4LTMuMTAuMTEtMTAw LmZjMTgueDg2XzY0Lk9SRy9hcmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnQuYwkyMDEzLTA3 LTAxIDAwOjEzOjI5LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54 ODZfNjQvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMJMjAxMy0wOS0zMCAxMToxOTow NC4yOTg4NDkzNTQgKzAyMDAKQEAgLTEyMjUsNyArMTIyNSw3IEBAIGludCB4ODZfcG11X2hhbmRs ZV9pcnEoc3RydWN0IHB0X3JlZ3MgKnIKIAkJaWYgKCF4ODZfcGVyZl9ldmVudF9zZXRfcGVyaW9k KGV2ZW50KSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50 LCAmZGF0YSwgcmVncykpCisJCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwg cmVncywgTlVMTCkpCiAJCQl4ODZfcG11X3N0b3AoZXZlbnQsIDApOwogCX0KIApkaWZmIC11cnAg bGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVy Zl9ldmVudF9pbnRlbC5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gveDg2L2tl cm5lbC9jcHUvcGVyZl9ldmVudF9pbnRlbC5jCi0tLSBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4 Nl82NC5PUkcvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50X2ludGVsLmMJMjAxMy0wNy0w MSAwMDoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2 XzY0L2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9pbnRlbC5jCTIwMTMtMDktMzAgMTE6 MTk6MDQuMjk4ODQ5MzU0ICswMjAwCkBAIC0xMjIyLDcgKzEyMjIsNyBAQCBhZ2FpbjoKIAkJaWYg KGhhc19icmFuY2hfc3RhY2soZXZlbnQpKQogCQkJZGF0YS5icl9zdGFjayA9ICZjcHVjLT5sYnJf c3RhY2s7CiAKLQkJaWYgKHBlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQsICZkYXRhLCByZWdzKSkK KwkJaWYgKHBlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQsICZkYXRhLCByZWdzLCBOVUxMKSkKIAkJ CXg4Nl9wbXVfc3RvcChldmVudCwgMCk7CiAJfQogCmRpZmYgLXVycCBsaW51eC0zLjEwLjExLTEw MC5mYzE4Lng4Nl82NC5PUkcvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50X2ludGVsX2Rz LmMgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQvYXJjaC94ODYva2VybmVsL2NwdS9wZXJm X2V2ZW50X2ludGVsX2RzLmMKLS0tIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9h cmNoL3g4Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnRfaW50ZWxfZHMuYwkyMDEzLTA3LTAxIDAwOjEz OjI5LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQvYXJj aC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50X2ludGVsX2RzLmMJMjAxMy0wOS0zMCAxMToxOTow NC4yOTg4NDkzNTQgKzAyMDAKQEAgLTc2MSw3ICs3NjEsNyBAQCBzdGF0aWMgdm9pZCBfX2ludGVs X3BtdV9wZWJzX2V2ZW50KHN0cnVjCiAJaWYgKGhhc19icmFuY2hfc3RhY2soZXZlbnQpKQogCQlk YXRhLmJyX3N0YWNrID0gJmNwdWMtPmxicl9zdGFjazsKIAotCWlmIChwZXJmX2V2ZW50X292ZXJm bG93KGV2ZW50LCAmZGF0YSwgJnJlZ3MpKQorCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50 LCAmZGF0YSwgJnJlZ3MsIE5VTEwpKQogCQl4ODZfcG11X3N0b3AoZXZlbnQsIDApOwogfQogCmRp ZmYgLXVycCBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJjaC94ODYva2VybmVs L2NwdS9wZXJmX2V2ZW50X2tuYy5jIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gv eDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9rbmMuYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMx OC54ODZfNjQuT1JHL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9rbmMuYwkyMDEzLTA3 LTAxIDAwOjEzOjI5LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54 ODZfNjQvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50X2tuYy5jCTIwMTMtMDktMzAgMTE6 MTk6MDQuMjk5ODQ5MzU3ICswMjAwCkBAIC0yNTEsNyArMjUxLDcgQEAgYWdhaW46CiAKIAkJcGVy Zl9zYW1wbGVfZGF0YV9pbml0KCZkYXRhLCAwLCBldmVudC0+aHcubGFzdF9wZXJpb2QpOwogCi0J CWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncykpCisJCWlmIChwZXJm X2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncywgTlVMTCkpCiAJCQl4ODZfcG11X3N0 b3AoZXZlbnQsIDApOwogCX0KIApkaWZmIC11cnAgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZf NjQuT1JHL2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9wNC5jIGxpbnV4LTMuMTAuMTEt MTAwLmZjMTgueDg2XzY0L2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9wNC5jCi0tLSBs aW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvYXJjaC94ODYva2VybmVsL2NwdS9wZXJm X2V2ZW50X3A0LmMJMjAxMy0wNy0wMSAwMDoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4 LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2FyY2gveDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudF9w NC5jCTIwMTMtMDktMzAgMTE6MTk6MDQuMjk5ODQ5MzU3ICswMjAwCkBAIC0xMDM3LDcgKzEwMzcs NyBAQCBzdGF0aWMgaW50IHA0X3BtdV9oYW5kbGVfaXJxKHN0cnVjdCBwdF9yCiAJCQljb250aW51 ZTsKIAogCi0JCWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncykpCisJ CWlmIChwZXJmX2V2ZW50X292ZXJmbG93KGV2ZW50LCAmZGF0YSwgcmVncywgTlVMTCkpCiAJCQl4 ODZfcG11X3N0b3AoZXZlbnQsIDApOwogCX0KIApkaWZmIC11cnAgbGludXgtMy4xMC4xMS0xMDAu ZmMxOC54ODZfNjQuT1JHL2luY2x1ZGUvbGludXgvZnRyYWNlX2V2ZW50LmggbGludXgtMy4xMC4x MS0xMDAuZmMxOC54ODZfNjQvaW5jbHVkZS9saW51eC9mdHJhY2VfZXZlbnQuaAotLS0gbGludXgt My4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2luY2x1ZGUvbGludXgvZnRyYWNlX2V2ZW50LmgJ MjAxMy0wOS0yMyAxMjowMzoyNS43MTQyNTM5MTAgKzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAw LmZjMTgueDg2XzY0L2luY2x1ZGUvbGludXgvZnRyYWNlX2V2ZW50LmgJMjAxMy0wOS0zMCAxMTox OTowNC4yOTk4NDkzNTcgKzAyMDAKQEAgLTM3NiwxMCArMzc2LDEwIEBAIGV4dGVybiB2b2lkICpw ZXJmX3RyYWNlX2J1Zl9wcmVwYXJlKGludAogCiBzdGF0aWMgaW5saW5lIHZvaWQKIHBlcmZfdHJh Y2VfYnVmX3N1Ym1pdCh2b2lkICpyYXdfZGF0YSwgaW50IHNpemUsIGludCByY3R4LCB1NjQgYWRk ciwKLQkJICAgICAgIHU2NCBjb3VudCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHZvaWQgKmhlYWQs Ci0JCSAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCisJCSAgICAgICB1NjQgY291bnQs IHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgcHRfcmVncyAqdXNlcl9yZWdzLAorCQkgICAg ICAgdm9pZCAqaGVhZCwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQogewotCXBlcmZfdHBfZXZl bnQoYWRkciwgY291bnQsIHJhd19kYXRhLCBzaXplLCByZWdzLCBoZWFkLCByY3R4LCB0YXNrKTsK KwlwZXJmX3RwX2V2ZW50KGFkZHIsIGNvdW50LCByYXdfZGF0YSwgc2l6ZSwgcmVncywgdXNlcl9y ZWdzLCBoZWFkLCByY3R4LCB0YXNrKTsKIH0KICNlbmRpZgogCmRpZmYgLXVycCBsaW51eC0zLjEw LjExLTEwMC5mYzE4Lng4Nl82NC5PUkcvaW5jbHVkZS9saW51eC9wZXJmX2V2ZW50LmggbGludXgt My4xMC4xMS0xMDAuZmMxOC54ODZfNjQvaW5jbHVkZS9saW51eC9wZXJmX2V2ZW50LmgKLS0tIGxp bnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9pbmNsdWRlL2xpbnV4L3BlcmZfZXZlbnQu aAkyMDEzLTA3LTAxIDAwOjEzOjI5LjAwMDAwMDAwMCArMDIwMAorKysgbGludXgtMy4xMC4xMS0x MDAuZmMxOC54ODZfNjQvaW5jbHVkZS9saW51eC9wZXJmX2V2ZW50LmgJMjAxMy0wOS0zMCAxMTox OTowNC4yOTk4NDkzNTcgKzAyMDAKQEAgLTYwMiw3ICs2MDIsOCBAQCBleHRlcm4gdm9pZCBwZXJm X3ByZXBhcmVfc2FtcGxlKHN0cnVjdCBwCiAKIGV4dGVybiBpbnQgcGVyZl9ldmVudF9vdmVyZmxv dyhzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCiAJCQkJIHN0cnVjdCBwZXJmX3NhbXBsZV9kYXRh ICpkYXRhLAotCQkJCSBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CisJCQkJIHN0cnVjdCBwdF9yZWdz ICpyZWdzLAorCQkJCSBzdHJ1Y3QgcHRfcmVncyAqdXNlcl9yZWdzKTsKIAogc3RhdGljIGlubGlu ZSBib29sIGlzX3NhbXBsaW5nX2V2ZW50KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKIHsKQEAg LTcxNyw3ICs3MTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGVyZl9wYXJhbm9pZF9rZXJuZWwo CiAKIGV4dGVybiB2b2lkIHBlcmZfZXZlbnRfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIHBlcmZf dHBfZXZlbnQodTY0IGFkZHIsIHU2NCBjb3VudCwgdm9pZCAqcmVjb3JkLAotCQkJICBpbnQgZW50 cnlfc2l6ZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJCQkgIGludCBlbnRyeV9zaXplLCBzdHJ1 Y3QgcHRfcmVncyAqcmVncywgc3RydWN0IHB0X3JlZ3MgKnVzZXJfcmVncywKIAkJCSAgc3RydWN0 IGhsaXN0X2hlYWQgKmhlYWQsIGludCByY3R4LAogCQkJICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2spOwogZXh0ZXJuIHZvaWQgcGVyZl9icF9ldmVudChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQs IHZvaWQgKmRhdGEpOwpkaWZmIC11cnAgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JH L2luY2x1ZGUvdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmggbGludXgtMy4xMC4xMS0xMDAuZmMxOC54 ODZfNjQvaW5jbHVkZS90cmFjZS9ldmVudHMvc3lzY2FsbHMuaAotLS0gbGludXgtMy4xMC4xMS0x MDAuZmMxOC54ODZfNjQuT1JHL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmgJMjAxMy0w Ny0wMSAwMDoxMzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgu eDg2XzY0L2luY2x1ZGUvdHJhY2UvZXZlbnRzL3N5c2NhbGxzLmgJMjAxMy0wOS0zMCAxMjowNTox NS42NTgwMDY0MzcgKzAyMDAKQEAgLTMwLDYgKzMwLDcgQEAgVFJBQ0VfRVZFTlRfRk4oc3lzX2Vu dGVyLAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5pZAk9IGlkOwogCQlzeXNjYWxsX2dl dF9hcmd1bWVudHMoY3VycmVudCwgcmVncywgMCwgNiwgX19lbnRyeS0+YXJncyk7CisJCXVzZXJf cmVncyA9IHJlZ3M7CiAJKSwKIAogCVRQX3ByaW50aygiTlIgJWxkICglbHgsICVseCwgJWx4LCAl bHgsICVseCwgJWx4KSIsCkBAIC01Niw2ICs1Nyw3IEBAIFRSQUNFX0VWRU5UX0ZOKHN5c19leGl0 LAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5pZAk9IHN5c2NhbGxfZ2V0X25yKGN1cnJl bnQsIHJlZ3MpOwogCQlfX2VudHJ5LT5yZXQJPSByZXQ7CisJCXVzZXJfcmVncyA9IHJlZ3M7CiAJ KSwKIAogCVRQX3ByaW50aygiTlIgJWxkID0gJWxkIiwKZGlmZiAtdXJwIGxpbnV4LTMuMTAuMTEt MTAwLmZjMTgueDg2XzY0Lk9SRy9pbmNsdWRlL3RyYWNlL2Z0cmFjZS5oIGxpbnV4LTMuMTAuMTEt MTAwLmZjMTgueDg2XzY0L2luY2x1ZGUvdHJhY2UvZnRyYWNlLmgKLS0tIGxpbnV4LTMuMTAuMTEt MTAwLmZjMTgueDg2XzY0Lk9SRy9pbmNsdWRlL3RyYWNlL2Z0cmFjZS5oCTIwMTMtMDctMDEgMDA6 MTM6MjkuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9p bmNsdWRlL3RyYWNlL2Z0cmFjZS5oCTIwMTMtMDktMzAgMTI6MTA6NTkuMDY1MDExNTkwICswMjAw CkBAIC01MTksNiArNTE5LDggQEAgZnRyYWNlX3Jhd19ldmVudF8jI2NhbGwodm9pZCAqX19kYXRh LCBwcgogCXN0cnVjdCBmdHJhY2VfcmF3XyMjY2FsbCAqZW50cnk7CQkJCVwKIAlzdHJ1Y3Qgcmlu Z19idWZmZXIgKmJ1ZmZlcjsJCQkJCVwKIAl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsJCQkJCVwK KwkvKiBkdW1teS4gImFzc2lnbiIgbWFjcm8gcGFyYW0gbWlnaHQgbmVlZCBpdCB0byBleGlzdDog Ki8JXAorCXN0cnVjdCBwdF9yZWdzIF9fbWF5YmVfdW51c2VkICp1c2VyX3JlZ3M7CQkJXAogCWlu dCBfX2RhdGFfc2l6ZTsJCQkJCQlcCiAJaW50IHBjOwkJCQkJCQkJXAogCQkJCQkJCQkJXApAQCAt NjUyLDYgKzY1NCw4IEBAIHBlcmZfdHJhY2VfIyNjYWxsKHZvaWQgKl9fZGF0YSwgcHJvdG8pCiAJ c3RydWN0IGZ0cmFjZV9kYXRhX29mZnNldHNfIyNjYWxsIF9fbWF5YmVfdW51c2VkIF9fZGF0YV9v ZmZzZXRzO1wKIAlzdHJ1Y3QgZnRyYWNlX3Jhd18jI2NhbGwgKmVudHJ5OwkJCQlcCiAJc3RydWN0 IHB0X3JlZ3MgX19yZWdzOwkJCQkJCVwKKwkvKiAiYXNzaWduIiBtYWNybyBwYXJhbWV0ZXIgbWln aHQgb3ZlcndyaXRlIGl0OiAqLwkJXAorCXN0cnVjdCBwdF9yZWdzICp1c2VyX3JlZ3MgPSBOVUxM OwkJCQlcCiAJdTY0IF9fYWRkciA9IDAsIF9fY291bnQgPSAxOwkJCQkJXAogCXN0cnVjdCB0YXNr X3N0cnVjdCAqX190YXNrID0gTlVMTDsJCQkJXAogCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOwkJ CQkJXApAQCAtNjgxLDcgKzY4NSw3IEBAIHBlcmZfdHJhY2VfIyNjYWxsKHZvaWQgKl9fZGF0YSwg cHJvdG8pCiAJCQkJCQkJCQlcCiAJaGVhZCA9IHRoaXNfY3B1X3B0cihldmVudF9jYWxsLT5wZXJm X2V2ZW50cyk7CQkJXAogCXBlcmZfdHJhY2VfYnVmX3N1Ym1pdChlbnRyeSwgX19lbnRyeV9zaXpl LCByY3R4LCBfX2FkZHIsCVwKLQkJX19jb3VudCwgJl9fcmVncywgaGVhZCwgX190YXNrKTsJCQlc CisJCV9fY291bnQsICZfX3JlZ3MsIHVzZXJfcmVncywgaGVhZCwgX190YXNrKTsJCVwKIH0KIAog LyoKZGlmZiAtdXJwIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9pbmNsdWRlL3Vh cGkvbGludXgvcGVyZl9ldmVudC5oIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2luY2x1 ZGUvdWFwaS9saW51eC9wZXJmX2V2ZW50LmgKLS0tIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2 XzY0Lk9SRy9pbmNsdWRlL3VhcGkvbGludXgvcGVyZl9ldmVudC5oCTIwMTMtMDctMDEgMDA6MTM6 MjkuMDAwMDAwMDAwICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9pbmNs dWRlL3VhcGkvbGludXgvcGVyZl9ldmVudC5oCTIwMTMtMDktMzAgMTE6MTk6MDQuMzAwODQ5MzYw ICswMjAwCkBAIC0yNzMsNyArMjczLDEwIEBAIHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgewogCQkJ CWV4Y2x1ZGVfY2FsbGNoYWluX2tlcm5lbCA6IDEsIC8qIGV4Y2x1ZGUga2VybmVsIGNhbGxjaGFp bnMgKi8KIAkJCQlleGNsdWRlX2NhbGxjaGFpbl91c2VyICAgOiAxLCAvKiBleGNsdWRlIHVzZXIg Y2FsbGNoYWlucyAqLwogCi0JCQkJX19yZXNlcnZlZF8xICAgOiA0MTsKKwkJCQlzeXNlbnRlcl9z dG9wICA6IDEsCisJCQkJc3lzZXhpdF9zdG9wICAgOiAxLAorCisJCQkJX19yZXNlcnZlZF8xICAg OiAzOTsKIAogCXVuaW9uIHsKIAkJX191MzIJCXdha2V1cF9ldmVudHM7CSAgLyogd2FrZXVwIGV2 ZXJ5IG4gZXZlbnRzICovCkBAIC0zMDQsNiArMzA3LDE1IEBAIHN0cnVjdCBwZXJmX2V2ZW50X2F0 dHIgewogCiAJLyogQWxpZ24gdG8gdTY0LiAqLwogCV9fdTMyCV9fcmVzZXJ2ZWRfMjsKKworCS8q CisJICogSWYgc3lze2VudGVyLGV4aXR9X3N0b3Agc2hvdWxkIGlnbm9yZSBzb21lIHN5c2NhbGxz LAorCSAqIHRoZXNlIGJpdG1hc2tzIHNwZWNpZnkgd2hpY2ggdG8gaWdub3JlLiBPdGhlcndpc2Ug c2V0IHRvIDAvTlVMTC4KKwkgKi8KKwl1bnNpZ25lZAlzeXNlbnRlcl9tYXNrX2xlbjsKKwl1bnNp Z25lZAlzeXNleGl0X21hc2tfbGVuOworCXVuc2lnbmVkIGxvbmcJKnN5c2VudGVyX21hc2tfcHRy OworCXVuc2lnbmVkIGxvbmcJKnN5c2V4aXRfbWFza19wdHI7CiB9OwogCiAjZGVmaW5lIHBlcmZf ZmxhZ3MoYXR0cikJKCooJihhdHRyKS0+cmVhZF9mb3JtYXQgKyAxKSkKZGlmZiAtdXJwIGxpbnV4 LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9rZXJuZWwvZXZlbnRzL2NvcmUuYyBsaW51eC0z LjEwLjExLTEwMC5mYzE4Lng4Nl82NC9rZXJuZWwvZXZlbnRzL2NvcmUuYwotLS0gbGludXgtMy4x MC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2tlcm5lbC9ldmVudHMvY29yZS5jCTIwMTMtMDktMjMg MTI6MDM6MjUuNzE5MjUzOTA4ICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82 NC9rZXJuZWwvZXZlbnRzL2NvcmUuYwkyMDEzLTA5LTMwIDEyOjExOjIxLjkyOTAxMTkzMyArMDIw MApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImludGVybmFsLmgiCiAKICNpbmNsdWRlIDxh c20vaXJxX3JlZ3MuaD4KKyNpbmNsdWRlIDxhc20vc3lzY2FsbC5oPgogCiBzdHJ1Y3QgcmVtb3Rl X2Z1bmN0aW9uX2NhbGwgewogCXN0cnVjdCB0YXNrX3N0cnVjdAkqcDsKQEAgLTI5MzMsNiArMjkz NCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfZXZlbnRfcmN1KHN0cnVjdCByY3VfaGUKIAlpZiAoZXZl bnQtPm5zKQogCQlwdXRfcGlkX25zKGV2ZW50LT5ucyk7CiAJcGVyZl9ldmVudF9mcmVlX2ZpbHRl cihldmVudCk7CisJa2ZyZWUoZXZlbnQtPmF0dHIuc3lzZW50ZXJfbWFza19wdHIpOwogCWtmcmVl KGV2ZW50KTsKIH0KIApAQCAtNDk2NCw3ICs0OTY2LDggQEAgc3RhdGljIHZvaWQgcGVyZl9sb2df dGhyb3R0bGUoc3RydWN0IHBlcgogCiBzdGF0aWMgaW50IF9fcGVyZl9ldmVudF9vdmVyZmxvdyhz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCiAJCQkJICAgaW50IHRocm90dGxlLCBzdHJ1Y3QgcGVy Zl9zYW1wbGVfZGF0YSAqZGF0YSwKLQkJCQkgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKKwkJCQkg ICBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkgICBzdHJ1Y3QgcHRfcmVncyAqdXNlcl9yZWdz KQogewogCWludCBldmVudHMgPSBhdG9taWNfcmVhZCgmZXZlbnQtPmV2ZW50X2xpbWl0KTsKIAlz dHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsKQEAgLTUwMjYsMTQgKzUwMjks MzUgQEAgc3RhdGljIGludCBfX3BlcmZfZXZlbnRfb3ZlcmZsb3coc3RydWN0CiAJCWlycV93b3Jr X3F1ZXVlKCZldmVudC0+cGVuZGluZyk7CiAJfQogCisJaWYgKCFpbl9pbnRlcnJ1cHQoKSAmJiBl dmVudC0+YXR0ci5zeXNleGl0X3N0b3AgJiYgY3VycmVudC0+cHRyYWNlICYmIHVzZXJfcmVncykg eworCQlpZiAoZXZlbnQtPmF0dHIuc3lzZXhpdF9tYXNrX2xlbiAhPSAwKSB7CisJCQlpbnQgYml0 czsKKwkJCWludCBzY25vOworCisJCQlzY25vID0gc3lzY2FsbF9nZXRfbnIoY3VycmVudCwgdXNl cl9yZWdzKTsKKwkJCWlmIChzY25vIDwgMCkKKwkJCQlnb3RvIHN0b3A7CisJCQliaXRzID0gZXZl bnQtPmF0dHIuc3lzZXhpdF9tYXNrX2xlbiAqIDg7CisJCQlpZiAoc2NubyA+PSBiaXRzKQorCQkJ CWdvdG8gc3RvcDsKKwkJCWlmICghdGVzdF9iaXQoc2NubywgZXZlbnQtPmF0dHIuc3lzZXhpdF9t YXNrX3B0cikpCisJCQkJZ290byBzdG9wOworCQkJZ290byBza2lwOworCQl9Cisgc3RvcDoKKwkJ c2V0X3Rza190aHJlYWRfZmxhZyhjdXJyZW50LCBUSUZfU1lTQ0FMTF9UUkFDRSk7Cisgc2tpcDog OworCX0KKwogCXJldHVybiByZXQ7CiB9CiAKIGludCBwZXJmX2V2ZW50X292ZXJmbG93KHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCwKIAkJCSAgc3RydWN0IHBlcmZfc2FtcGxlX2RhdGEgKmRhdGEs Ci0JCQkgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorCQkJICBzdHJ1Y3QgcHRfcmVncyAqcmVncywK KwkJCSAgc3RydWN0IHB0X3JlZ3MgKnVzZXJfcmVncykKIHsKLQlyZXR1cm4gX19wZXJmX2V2ZW50 X292ZXJmbG93KGV2ZW50LCAxLCBkYXRhLCByZWdzKTsKKwlyZXR1cm4gX19wZXJmX2V2ZW50X292 ZXJmbG93KGV2ZW50LCAxLCBkYXRhLCByZWdzLCB1c2VyX3JlZ3MpOwogfQogCiAvKgpAQCAtNTA4 Myw3ICs1MTA3LDggQEAgYWdhaW46CiAKIHN0YXRpYyB2b2lkIHBlcmZfc3dldmVudF9vdmVyZmxv dyhzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHU2NCBvdmVyZmxvdywKIAkJCQkgICAgc3RydWN0 IHBlcmZfc2FtcGxlX2RhdGEgKmRhdGEsCi0JCQkJICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKQor CQkJCSAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCQkgICAgc3RydWN0IHB0X3JlZ3MgKnVz ZXJfcmVncykKIHsKIAlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsKIAlp bnQgdGhyb3R0bGUgPSAwOwpAQCAtNTA5Niw3ICs1MTIxLDcgQEAgc3RhdGljIHZvaWQgcGVyZl9z d2V2ZW50X292ZXJmbG93KHN0cnVjdAogCiAJZm9yICg7IG92ZXJmbG93OyBvdmVyZmxvdy0tKSB7 CiAJCWlmIChfX3BlcmZfZXZlbnRfb3ZlcmZsb3coZXZlbnQsIHRocm90dGxlLAotCQkJCQkgICAg ZGF0YSwgcmVncykpIHsKKwkJCQkJICAgIGRhdGEsIHJlZ3MsIHVzZXJfcmVncykpIHsKIAkJCS8q CiAJCQkgKiBXZSBpbmhpYml0IHRoZSBvdmVyZmxvdyBmcm9tIGhhcHBlbmluZyB3aGVuCiAJCQkg KiBod2MtPmludGVycnVwdHMgPT0gTUFYX0lOVEVSUlVQVFMuCkBAIC01MTA5LDcgKzUxMzQsOCBA QCBzdGF0aWMgdm9pZCBwZXJmX3N3ZXZlbnRfb3ZlcmZsb3coc3RydWN0CiAKIHN0YXRpYyB2b2lk IHBlcmZfc3dldmVudF9ldmVudChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIHU2NCBuciwKIAkJ CSAgICAgICBzdHJ1Y3QgcGVyZl9zYW1wbGVfZGF0YSAqZGF0YSwKLQkJCSAgICAgICBzdHJ1Y3Qg cHRfcmVncyAqcmVncykKKwkJCSAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwkJCSAgICAg ICBzdHJ1Y3QgcHRfcmVncyAqdXNlcl9yZWdzKQogewogCXN0cnVjdCBod19wZXJmX2V2ZW50ICpo d2MgPSAmZXZlbnQtPmh3OwogCkBAIC01MTIzLDE3ICs1MTQ5LDE3IEBAIHN0YXRpYyB2b2lkIHBl cmZfc3dldmVudF9ldmVudChzdHJ1Y3QgcGUKIAogCWlmICgoZXZlbnQtPmF0dHIuc2FtcGxlX3R5 cGUgJiBQRVJGX1NBTVBMRV9QRVJJT0QpICYmICFldmVudC0+YXR0ci5mcmVxKSB7CiAJCWRhdGEt PnBlcmlvZCA9IG5yOwotCQlyZXR1cm4gcGVyZl9zd2V2ZW50X292ZXJmbG93KGV2ZW50LCAxLCBk YXRhLCByZWdzKTsKKwkJcmV0dXJuIHBlcmZfc3dldmVudF9vdmVyZmxvdyhldmVudCwgMSwgZGF0 YSwgcmVncywgdXNlcl9yZWdzKTsKIAl9IGVsc2UKIAkJZGF0YS0+cGVyaW9kID0gZXZlbnQtPmh3 Lmxhc3RfcGVyaW9kOwogCiAJaWYgKG5yID09IDEgJiYgaHdjLT5zYW1wbGVfcGVyaW9kID09IDEg JiYgIWV2ZW50LT5hdHRyLmZyZXEpCi0JCXJldHVybiBwZXJmX3N3ZXZlbnRfb3ZlcmZsb3coZXZl bnQsIDEsIGRhdGEsIHJlZ3MpOworCQlyZXR1cm4gcGVyZl9zd2V2ZW50X292ZXJmbG93KGV2ZW50 LCAxLCBkYXRhLCByZWdzLCB1c2VyX3JlZ3MpOwogCiAJaWYgKGxvY2FsNjRfYWRkX25lZ2F0aXZl KG5yLCAmaHdjLT5wZXJpb2RfbGVmdCkpCiAJCXJldHVybjsKIAotCXBlcmZfc3dldmVudF9vdmVy ZmxvdyhldmVudCwgMCwgZGF0YSwgcmVncyk7CisJcGVyZl9zd2V2ZW50X292ZXJmbG93KGV2ZW50 LCAwLCBkYXRhLCByZWdzLCB1c2VyX3JlZ3MpOwogfQogCiBzdGF0aWMgaW50IHBlcmZfZXhjbHVk ZV9ldmVudChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsCkBAIC01MjIzLDcgKzUyNDksOCBAQCBm aW5kX3N3ZXZlbnRfaGVhZChzdHJ1Y3Qgc3dldmVudF9odGFibGUKIHN0YXRpYyB2b2lkIGRvX3Bl cmZfc3dfZXZlbnQoZW51bSBwZXJmX3R5cGVfaWQgdHlwZSwgdTMyIGV2ZW50X2lkLAogCQkJCSAg ICB1NjQgbnIsCiAJCQkJICAgIHN0cnVjdCBwZXJmX3NhbXBsZV9kYXRhICpkYXRhLAotCQkJCSAg ICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKKwkJCQkgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCisJ CQkJICAgIHN0cnVjdCBwdF9yZWdzICp1c2VyX3JlZ3MpCiB7CiAJc3RydWN0IHN3ZXZlbnRfaHRh YmxlICpzd2hhc2ggPSAmX19nZXRfY3B1X3Zhcihzd2V2ZW50X2h0YWJsZSk7CiAJc3RydWN0IHBl cmZfZXZlbnQgKmV2ZW50OwpAQCAtNTIzNiw3ICs1MjYzLDcgQEAgc3RhdGljIHZvaWQgZG9fcGVy Zl9zd19ldmVudChlbnVtIHBlcmZfdAogCiAJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGV2ZW50 LCBoZWFkLCBobGlzdF9lbnRyeSkgewogCQlpZiAocGVyZl9zd2V2ZW50X21hdGNoKGV2ZW50LCB0 eXBlLCBldmVudF9pZCwgZGF0YSwgcmVncykpCi0JCQlwZXJmX3N3ZXZlbnRfZXZlbnQoZXZlbnQs IG5yLCBkYXRhLCByZWdzKTsKKwkJCXBlcmZfc3dldmVudF9ldmVudChldmVudCwgbnIsIGRhdGEs IHJlZ3MsIHVzZXJfcmVncyk7CiAJfQogZW5kOgogCXJjdV9yZWFkX3VubG9jaygpOwpAQCAtNTI2 OSw3ICs1Mjk2LDcgQEAgdm9pZCBfX3BlcmZfc3dfZXZlbnQodTMyIGV2ZW50X2lkLCB1NjQgbgog CiAJcGVyZl9zYW1wbGVfZGF0YV9pbml0KCZkYXRhLCBhZGRyLCAwKTsKIAotCWRvX3BlcmZfc3df ZXZlbnQoUEVSRl9UWVBFX1NPRlRXQVJFLCBldmVudF9pZCwgbnIsICZkYXRhLCByZWdzKTsKKwlk b19wZXJmX3N3X2V2ZW50KFBFUkZfVFlQRV9TT0ZUV0FSRSwgZXZlbnRfaWQsIG5yLCAmZGF0YSwg cmVncywgTlVMTCk7CiAKIAlwZXJmX3N3ZXZlbnRfcHV0X3JlY3Vyc2lvbl9jb250ZXh0KHJjdHgp OwogCXByZWVtcHRfZW5hYmxlX25vdHJhY2UoKTsKQEAgLTU1MTQsNyArNTU0MSw4IEBAIHN0YXRp YyBpbnQgcGVyZl90cF9ldmVudF9tYXRjaChzdHJ1Y3QgcGUKIH0KIAogdm9pZCBwZXJmX3RwX2V2 ZW50KHU2NCBhZGRyLCB1NjQgY291bnQsIHZvaWQgKnJlY29yZCwgaW50IGVudHJ5X3NpemUsCi0J CSAgIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwgaW50IHJj dHgsCisJCSAgIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3QgcHRfcmVncyAqdXNlcl9yZWdz LAorCQkgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwgaW50IHJjdHgsCiAJCSAgIHN0cnVjdCB0 YXNrX3N0cnVjdCAqdGFzaykKIHsKIAlzdHJ1Y3QgcGVyZl9zYW1wbGVfZGF0YSBkYXRhOwpAQCAt NTUzMCw3ICs1NTU4LDcgQEAgdm9pZCBwZXJmX3RwX2V2ZW50KHU2NCBhZGRyLCB1NjQgY291bnQs CiAKIAlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZXZlbnQsIGhlYWQsIGhsaXN0X2VudHJ5KSB7 CiAJCWlmIChwZXJmX3RwX2V2ZW50X21hdGNoKGV2ZW50LCAmZGF0YSwgcmVncykpCi0JCQlwZXJm X3N3ZXZlbnRfZXZlbnQoZXZlbnQsIGNvdW50LCAmZGF0YSwgcmVncyk7CisJCQlwZXJmX3N3ZXZl bnRfZXZlbnQoZXZlbnQsIGNvdW50LCAmZGF0YSwgcmVncywgdXNlcl9yZWdzKTsKIAl9CiAKIAkv KgpAQCAtNTU1Miw3ICs1NTgwLDcgQEAgdm9pZCBwZXJmX3RwX2V2ZW50KHU2NCBhZGRyLCB1NjQg Y291bnQsCiAJCQlpZiAoZXZlbnQtPmF0dHIuY29uZmlnICE9IGVudHJ5LT50eXBlKQogCQkJCWNv bnRpbnVlOwogCQkJaWYgKHBlcmZfdHBfZXZlbnRfbWF0Y2goZXZlbnQsICZkYXRhLCByZWdzKSkK LQkJCQlwZXJmX3N3ZXZlbnRfZXZlbnQoZXZlbnQsIGNvdW50LCAmZGF0YSwgcmVncyk7CisJCQkJ cGVyZl9zd2V2ZW50X2V2ZW50KGV2ZW50LCBjb3VudCwgJmRhdGEsIHJlZ3MsIHVzZXJfcmVncyk7 CiAJCX0KIHVubG9jazoKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CkBAIC01NjU2LDcgKzU2ODQsNyBA QCB2b2lkIHBlcmZfYnBfZXZlbnQoc3RydWN0IHBlcmZfZXZlbnQgKmJwCiAJcGVyZl9zYW1wbGVf ZGF0YV9pbml0KCZzYW1wbGUsIGJwLT5hdHRyLmJwX2FkZHIsIDApOwogCiAJaWYgKCFicC0+aHcu c3RhdGUgJiYgIXBlcmZfZXhjbHVkZV9ldmVudChicCwgcmVncykpCi0JCXBlcmZfc3dldmVudF9l dmVudChicCwgMSwgJnNhbXBsZSwgcmVncyk7CisJCXBlcmZfc3dldmVudF9ldmVudChicCwgMSwg JnNhbXBsZSwgcmVncywgTlVMTCk7CiB9CiAjZW5kaWYKIApAQCAtNTY4NCw3ICs1NzEyLDcgQEAg c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHBlcmZfc3dldmVudAogCiAJaWYgKHJlZ3MgJiYg IXBlcmZfZXhjbHVkZV9ldmVudChldmVudCwgcmVncykpIHsKIAkJaWYgKCEoZXZlbnQtPmF0dHIu ZXhjbHVkZV9pZGxlICYmIGlzX2lkbGVfdGFzayhjdXJyZW50KSkpCi0JCQlpZiAoX19wZXJmX2V2 ZW50X292ZXJmbG93KGV2ZW50LCAxLCAmZGF0YSwgcmVncykpCisJCQlpZiAoX19wZXJmX2V2ZW50 X292ZXJmbG93KGV2ZW50LCAxLCAmZGF0YSwgcmVncywgTlVMTCkpCiAJCQkJcmV0ID0gSFJUSU1F Ul9OT1JFU1RBUlQ7CiAJfQogCkBAIC02NDY5LDYgKzY0OTcsMzIgQEAgc3RhdGljIGludCBwZXJm X2NvcHlfYXR0cihzdHJ1Y3QgcGVyZl9ldgogCQkJcmV0ID0gLUVJTlZBTDsKIAl9CiAKKwlpZiAo KGF0dHItPnN5c2VudGVyX21hc2tfbGVuIHwgYXR0ci0+c3lzZXhpdF9tYXNrX2xlbikgJiAoc2l6 ZW9mKGxvbmcpLTEpKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlzaXplID0gYXR0ci0+c3lzZW50ZXJf bWFza19sZW4gKyBhdHRyLT5zeXNleGl0X21hc2tfbGVuOworCWlmIChzaXplID4gUEFHRV9TSVpF KQorCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoc2l6ZSAhPSAwKSB7CisJCXVuc2lnbmVkIGxvbmcg KmtwID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCFrcCkKKwkJCXJldHVybiAt RU5PTUVNOworCisJCXJldCA9IGNvcHlfZnJvbV91c2VyKGtwLCAodm9pZCBfX3VzZXIgKilhdHRy LT5zeXNlbnRlcl9tYXNrX3B0ciwgYXR0ci0+c3lzZW50ZXJfbWFza19sZW4pOworCQlhdHRyLT5z eXNlbnRlcl9tYXNrX3B0ciA9IGtwOworCQlpZiAoIXJldCkgeworCQkJa3AgPSAodm9pZCopa3Ag KyBhdHRyLT5zeXNlbnRlcl9tYXNrX2xlbjsKKwkJCXJldCA9IGNvcHlfZnJvbV91c2VyKGtwLCAo dm9pZCBfX3VzZXIgKilhdHRyLT5zeXNleGl0X21hc2tfcHRyLCBhdHRyLT5zeXNleGl0X21hc2tf bGVuKTsKKwkJCWF0dHItPnN5c2V4aXRfbWFza19wdHIgPSBrcDsKKwkJfQorCQlpZiAocmV0KSB7 CisJCQlrZnJlZShhdHRyLT5zeXNlbnRlcl9tYXNrX3B0cik7CisJCQlnb3RvIG91dDsKKwkJfQor CX0gZWxzZSB7CisJCWF0dHItPnN5c2VudGVyX21hc2tfcHRyID0gTlVMTDsKKwkJYXR0ci0+c3lz ZXhpdF9tYXNrX3B0ciA9IE5VTEw7CisJfQorCiBvdXQ6CiAJcmV0dXJuIHJldDsKIApkaWZmIC11 cnAgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2tlcm5lbC90cmFjZS90cmFjZV9l dmVudF9wZXJmLmMgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQva2VybmVsL3RyYWNlL3Ry YWNlX2V2ZW50X3BlcmYuYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2tl cm5lbC90cmFjZS90cmFjZV9ldmVudF9wZXJmLmMJMjAxMy0wNy0wMSAwMDoxMzoyOS4wMDAwMDAw MDAgKzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2tlcm5lbC90cmFjZS90 cmFjZV9ldmVudF9wZXJmLmMJMjAxMy0wOS0zMCAxMToxOTowNC4zMDE4NDkzNjMgKzAyMDAKQEAg LTI4Miw3ICsyODIsNyBAQCBwZXJmX2Z0cmFjZV9mdW5jdGlvbl9jYWxsKHVuc2lnbmVkIGxvbmcK IAogCWhlYWQgPSB0aGlzX2NwdV9wdHIoZXZlbnRfZnVuY3Rpb24ucGVyZl9ldmVudHMpOwogCXBl cmZfdHJhY2VfYnVmX3N1Ym1pdChlbnRyeSwgRU5UUllfU0laRSwgcmN0eCwgMCwKLQkJCSAgICAg IDEsICZyZWdzLCBoZWFkLCBOVUxMKTsKKwkJCSAgICAgIDEsICZyZWdzLCBOVUxMLCBoZWFkLCBO VUxMKTsKIAogI3VuZGVmIEVOVFJZX1NJWkUKIH0KZGlmZiAtdXJwIGxpbnV4LTMuMTAuMTEtMTAw LmZjMTgueDg2XzY0Lk9SRy9rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMgbGludXgtMy4xMC4x MS0xMDAuZmMxOC54ODZfNjQva2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jCi0tLSBsaW51eC0z LjEwLjExLTEwMC5mYzE4Lng4Nl82NC5PUkcva2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jCTIw MTMtMDktMjMgMTI6MDM6MjUuNzI2MjUzOTA1ICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5m YzE4Lng4Nl82NC9rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMJMjAxMy0wOS0zMCAxMToxOTow NC4zMDE4NDkzNjMgKzAyMDAKQEAgLTExOTMsNyArMTE5Myw3IEBAIGtwcm9iZV9wZXJmX2Z1bmMo c3RydWN0IHRyYWNlX3Byb2JlICp0cCwKIAogCWhlYWQgPSB0aGlzX2NwdV9wdHIoY2FsbC0+cGVy Zl9ldmVudHMpOwogCXBlcmZfdHJhY2VfYnVmX3N1Ym1pdChlbnRyeSwgc2l6ZSwgcmN0eCwKLQkJ CQkJZW50cnktPmlwLCAxLCByZWdzLCBoZWFkLCBOVUxMKTsKKwkJCQkJZW50cnktPmlwLCAxLCBy ZWdzLCBOVUxMLCBoZWFkLCBOVUxMKTsKIH0KIAogLyogS3JldHByb2JlIHByb2ZpbGUgaGFuZGxl ciAqLwpAQCAtMTIyNSw3ICsxMjI1LDcgQEAga3JldHByb2JlX3BlcmZfZnVuYyhzdHJ1Y3QgdHJh Y2VfcHJvYmUgKgogCiAJaGVhZCA9IHRoaXNfY3B1X3B0cihjYWxsLT5wZXJmX2V2ZW50cyk7CiAJ cGVyZl90cmFjZV9idWZfc3VibWl0KGVudHJ5LCBzaXplLCByY3R4LAotCQkJCQllbnRyeS0+cmV0 X2lwLCAxLCByZWdzLCBoZWFkLCBOVUxMKTsKKwkJCQkJZW50cnktPnJldF9pcCwgMSwgcmVncywg TlVMTCwgaGVhZCwgTlVMTCk7CiB9CiAjZW5kaWYJLyogQ09ORklHX1BFUkZfRVZFTlRTICovCiAK ZGlmZiAtdXJwIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0Lk9SRy9rZXJuZWwvdHJhY2Uv dHJhY2Vfc3lzY2FsbHMuYyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9rZXJuZWwvdHJh Y2UvdHJhY2Vfc3lzY2FsbHMuYwotLS0gbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JH L2tlcm5lbC90cmFjZS90cmFjZV9zeXNjYWxscy5jCTIwMTMtMDktMjMgMTI6MDM6MjUuNzI2MjUz OTA1ICswMjAwCisrKyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9rZXJuZWwvdHJhY2Uv dHJhY2Vfc3lzY2FsbHMuYwkyMDEzLTA5LTMwIDExOjE5OjA0LjMwMTg0OTM2MyArMDIwMApAQCAt NTg1LDcgKzU4NSw3IEBAIHN0YXRpYyB2b2lkIHBlcmZfc3lzY2FsbF9lbnRlcih2b2lkICppZ24K IAkJCSAgICAgICAodW5zaWduZWQgbG9uZyAqKSZyZWMtPmFyZ3MpOwogCiAJaGVhZCA9IHRoaXNf Y3B1X3B0cihzeXNfZGF0YS0+ZW50ZXJfZXZlbnQtPnBlcmZfZXZlbnRzKTsKLQlwZXJmX3RyYWNl X2J1Zl9zdWJtaXQocmVjLCBzaXplLCByY3R4LCAwLCAxLCByZWdzLCBoZWFkLCBOVUxMKTsKKwlw ZXJmX3RyYWNlX2J1Zl9zdWJtaXQocmVjLCBzaXplLCByY3R4LCAwLCAxLCByZWdzLCByZWdzLCBo ZWFkLCBOVUxMKTsKIH0KIAogc3RhdGljIGludCBwZXJmX3N5c2VudGVyX2VuYWJsZShzdHJ1Y3Qg ZnRyYWNlX2V2ZW50X2NhbGwgKmNhbGwpCkBAIC02NjMsNyArNjYzLDcgQEAgc3RhdGljIHZvaWQg cGVyZl9zeXNjYWxsX2V4aXQodm9pZCAqaWdubwogCXJlYy0+cmV0ID0gc3lzY2FsbF9nZXRfcmV0 dXJuX3ZhbHVlKGN1cnJlbnQsIHJlZ3MpOwogCiAJaGVhZCA9IHRoaXNfY3B1X3B0cihzeXNfZGF0 YS0+ZXhpdF9ldmVudC0+cGVyZl9ldmVudHMpOwotCXBlcmZfdHJhY2VfYnVmX3N1Ym1pdChyZWMs IHNpemUsIHJjdHgsIDAsIDEsIHJlZ3MsIGhlYWQsIE5VTEwpOworCXBlcmZfdHJhY2VfYnVmX3N1 Ym1pdChyZWMsIHNpemUsIHJjdHgsIDAsIDEsIHJlZ3MsIHJlZ3MsIGhlYWQsIE5VTEwpOwogfQog CiBzdGF0aWMgaW50IHBlcmZfc3lzZXhpdF9lbmFibGUoc3RydWN0IGZ0cmFjZV9ldmVudF9jYWxs ICpjYWxsKQpkaWZmIC11cnAgbGludXgtMy4xMC4xMS0xMDAuZmMxOC54ODZfNjQuT1JHL2tlcm5l bC90cmFjZS90cmFjZV91cHJvYmUuYyBsaW51eC0zLjEwLjExLTEwMC5mYzE4Lng4Nl82NC9rZXJu ZWwvdHJhY2UvdHJhY2VfdXByb2JlLmMKLS0tIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0 Lk9SRy9rZXJuZWwvdHJhY2UvdHJhY2VfdXByb2JlLmMJMjAxMy0wOS0yMyAxMjowMzoyNS43Mjcy NTM5MDQgKzAyMDAKKysrIGxpbnV4LTMuMTAuMTEtMTAwLmZjMTgueDg2XzY0L2tlcm5lbC90cmFj ZS90cmFjZV91cHJvYmUuYwkyMDEzLTA5LTMwIDExOjE5OjA0LjMwMTg0OTM2MyArMDIwMApAQCAt ODYyLDcgKzg2Miw3IEBAIHN0YXRpYyB2b2lkIHVwcm9iZV9wZXJmX3ByaW50KHN0cnVjdCB0cmEK IAlmb3IgKGkgPSAwOyBpIDwgdHUtPm5yX2FyZ3M7IGkrKykKIAkJY2FsbF9mZXRjaCgmdHUtPmFy Z3NbaV0uZmV0Y2gsIHJlZ3MsIGRhdGEgKyB0dS0+YXJnc1tpXS5vZmZzZXQpOwogCi0JcGVyZl90 cmFjZV9idWZfc3VibWl0KGVudHJ5LCBzaXplLCByY3R4LCAwLCAxLCByZWdzLCBoZWFkLCBOVUxM KTsKKwlwZXJmX3RyYWNlX2J1Zl9zdWJtaXQoZW50cnksIHNpemUsIHJjdHgsIDAsIDEsIHJlZ3Ms IE5VTEwsIGhlYWQsIE5VTEwpOwogIG91dDoKIAlwcmVlbXB0X2VuYWJsZSgpOwogfQo= --089e015372ee60ac5c04e79837f7-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/