From owner-freebsd-hackers@FreeBSD.ORG Mon Mar 17 06:07:42 2014 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BFC915E0; Mon, 17 Mar 2014 06:07:42 +0000 (UTC) Received: from mail-oa0-x229.google.com (mail-oa0-x229.google.com [IPv6:2607:f8b0:4003:c02::229]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 62D2F62C; Mon, 17 Mar 2014 06:07:42 +0000 (UTC) Received: by mail-oa0-f41.google.com with SMTP id j17so5220108oag.0 for ; Sun, 16 Mar 2014 23:07:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=9vXLPlGLYz5qq++9rZiNHvn6ISes/M7N1NfaPBjksnA=; b=gBI87TZewNfdRnPwyOQAhOql/BAw9jFlf6Ty0UiEwuwhpKIvLDfgHZPLfaj2nIJxB1 9EHbWe4IpLyvFNt5C+gzhC0+4bBpOl053Fsrsri57XGCj1b7vqBSPjLf+AJspv0lSI1h pYO02GVwa/54b9mzF1dtKRgFS3seUPQ/gclrR10FklR6ggEjlHZA5HwXQsIn4EoWsFo5 B0eMJnBdVMOxI/aHpB3L9YdDny2ChXW/rrpwfUbMK35aR4+b7E4w6zqK6PfTl/vhptIR dVXhOJsl4swkVRh4V79oZjam8DiHTYPdqfc+eCMQETt3P/E5OC1lEEtN63DBeYpvcKG4 oINg== MIME-Version: 1.0 X-Received: by 10.182.33.73 with SMTP id p9mr18791144obi.37.1395036461711; Sun, 16 Mar 2014 23:07:41 -0700 (PDT) Received: by 10.182.130.71 with HTTP; Sun, 16 Mar 2014 23:07:41 -0700 (PDT) In-Reply-To: References: Date: Mon, 17 Mar 2014 02:07:41 -0400 Message-ID: Subject: Re: Definition struct and int From: Joe Nosay To: Adrian Chadd , FreeBSD Hackers Content-Type: multipart/mixed; boundary=047d7b5d58b4c09aa004f4c73c6e X-Content-Filtered-By: Mailman/MimeDel 2.1.17 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Mar 2014 06:07:42 -0000 --047d7b5d58b4c09aa004f4c73c6e Content-Type: text/plain; charset=ISO-8859-1 On Sun, Mar 16, 2014 at 1:07 AM, Joe Nosay wrote: > > > > On Fri, Mar 14, 2014 at 5:43 PM, Joe Nosay wrote: > >> >> >> >> On Thu, Mar 13, 2014 at 9:26 PM, Adrian Chadd wrote: >> >>> Is this -HEAD, or? >>> >>> >>> -a >>> >>> >>> On 13 March 2014 18:13, Joe Nosay wrote: >>> > Testing of a patch for using UDP Lite on FreeBSD caused no compilation >>> > errors; however, after adding the options of "VIMAGE" and "MROUTING" to >>> > conf/kern?GENERIC, make buildkernel stops with: >>> > /usr/src/sys/netinet/udp_usrreq.c:1701:18: error: too few arguments to >>> > function >>> > call, expected 2, have 1 >>> > udp_discardcb(up); >>> > ~~~~~~~~~~~~~ ^ >>> > /usr/src/sys/netinet/udp_usrreq.c:274:1: note: 'udp_discardcb' >>> declared here >>> > void >>> > ^ >>> > 1 error generated. >>> > *** Error code 1 >>> > >>> > The file in question of >>> > /usr/src/sys/netinet/udp_usrreq.c >>> > >>> > has the value of >>> > udp_discardcb(struct udpcb *up, int isudp) >>> > >>> > that is causing the problem. >>> > >>> > >>> > >>> > I believe that the compiler is looking for a value to int isudp but >>> that >>> > value does not exist. >>> > _______________________________________________ >>> > freebsd-hackers@freebsd.org mailing list >>> > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers >>> > To unsubscribe, send any mail to " >>> freebsd-hackers-unsubscribe@freebsd.org" >>> >> >> >> No, it is 10.0 RELEASE #0 r262601 >> >> Last time, I had entered too many files. Here are the relative files. >> >> >> There was no problem in compiling as listed earlier. I have not studied >> C enough to solve this problem; however, I can see that int isudp happens >> once while the next closest account is int isudplite. >> >> > > I've just upgraded source to head. I have three patches for UDP Lite. The > question is which one(s) should I use. > > The udp-v.diff only has a reference to udp_discardcb up, while patch > udplite and udplite.diff have the struct and int references. > > Could someone possibly point me towards some online documentation that would allow me to learn of a solution to this problem? This would be much better because I would be solving and learning. Included are the three patches mentioned earlier. Yes, I will be looking at them again. Apologies for any noise and if I am coming off the wrong way. --047d7b5d58b4c09aa004f4c73c6e Content-Type: text/plain; charset=US-ASCII; name="udp-v.diff" Content-Disposition: attachment; filename="udp-v.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hsvl791s1 SW5kZXg6IHN5cy9uZXRpbmV0L3VkcF91c3JyZXEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5l dC91ZHBfdXNycmVxLmMJKHJldmlzaW9uIDI0OTc4NSkKKysrIHN5cy9uZXRpbmV0L3VkcF91c3Jy ZXEuYwkod29ya2luZyBjb3B5KQpAQCAtOTQ5LDYgKzk0OSw3IEBAIHVkcF9vdXRwdXQoc3RydWN0 IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJaW50IGxlbiA9IG0tPm1fcGt0aGRy LmxlbjsKIAlzdHJ1Y3QgaW5fYWRkciBmYWRkciwgbGFkZHI7CiAJc3RydWN0IGNtc2doZHIgKmNt OworCXN0cnVjdCBpbnBjYmluZm8gKnBjYmluZm87CiAJc3RydWN0IHNvY2thZGRyX2luICpzaW4s IHNyYzsKIAlpbnQgZXJyb3IgPSAwOwogCWludCBpcGZsYWdzOwpAQCAtMTA0OSwxMiArMTA1MCwx MyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQog CSAqCiAJICogWFhYUlc6IENoZWNrIHRoYXQgaGFzaCBsb2NraW5nIHVwZGF0ZSBoZXJlIGlzIGNv cnJlY3QuCiAJICovCisJcGNiaW5mbyA9IGlucC0+aW5wX3BjYmluZm87CiAJc2luID0gKHN0cnVj dCBzb2NrYWRkcl9pbiAqKWFkZHI7CiAJaWYgKHNpbiAhPSBOVUxMICYmCiAJICAgIChpbnAtPmlu cF9sYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSAmJiBpbnAtPmlucF9scG9ydCA9PSAwKSkgewog CQlJTlBfUlVOTE9DSyhpbnApOwogCQlJTlBfV0xPQ0soaW5wKTsKLQkJSU5QX0hBU0hfV0xPQ0so JlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dMT0NLKHBjYmluZm8pOwogCQl1bmxvY2tfdWRiaW5m byA9IFVIX1dMT0NLRUQ7CiAJfSBlbHNlIGlmICgoc2luICE9IE5VTEwgJiYgKAogCSAgICAoc2lu LT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkgfHwKQEAgLTEwNjIsNyArMTA2NCw3IEBA IHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJICAg IChpbnAtPmlucF9sYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkgfHwKIAkgICAgKGlucC0+aW5w X2xwb3J0ID09IDApKSkgfHwKIAkgICAgKHNyYy5zaW5fZmFtaWx5ID09IEFGX0lORVQpKSB7Ci0J CUlOUF9IQVNIX1JMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9STE9DSyhwY2JpbmZvKTsK IAkJdW5sb2NrX3VkYmluZm8gPSBVSF9STE9DS0VEOwogCX0gZWxzZQogCQl1bmxvY2tfdWRiaW5m byA9IFVIX1VOTE9DS0VEOwpAQCAtMTA3NSw3ICsxMDc3LDcgQEAgdWRwX291dHB1dChzdHJ1Y3Qg aW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAlsYWRkciA9IGlucC0+aW5wX2xhZGRy OwogCWxwb3J0ID0gaW5wLT5pbnBfbHBvcnQ7CiAJaWYgKHNyYy5zaW5fZmFtaWx5ID09IEFGX0lO RVQpIHsKLQkJSU5QX0hBU0hfTE9DS19BU1NFUlQoJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX0xP Q0tfQVNTRVJUKHBjYmluZm8pOwogCQlpZiAoKGxwb3J0ID09IDApIHx8CiAJCSAgICAobGFkZHIu c19hZGRyID09IElOQUREUl9BTlkgJiYKIAkJICAgICBzcmMuc2luX2FkZHIuc19hZGRyID09IElO QUREUl9BTlkpKSB7CkBAIC0xMTI2LDcgKzExMjgsNyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBj YiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCQkgICAgaW5wLT5pbnBfbHBvcnQgPT0gMCB8 fAogCQkgICAgc2luLT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSB8fAogCQkgICAgc2lu LT5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0JST0FEQ0FTVCkgewotCQkJSU5QX0hBU0hfTE9D S19BU1NFUlQoJlZfdWRiaW5mbyk7CisJCQlJTlBfSEFTSF9MT0NLX0FTU0VSVChwY2JpbmZvKTsK IAkJCWVycm9yID0gaW5fcGNiY29ubmVjdF9zZXR1cChpbnAsIGFkZHIsICZsYWRkci5zX2FkZHIs CiAJCQkgICAgJmxwb3J0LCAmZmFkZHIuc19hZGRyLCAmZnBvcnQsIE5VTEwsCiAJCQkgICAgdGQt PnRkX3VjcmVkKTsKQEAgLTExNDEsNyArMTE0Myw3IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNi ICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJCQlpZiAoaW5wLT5pbnBfbGFkZHIuc19hZGRy ID09IElOQUREUl9BTlkgJiYKIAkJCSAgICBpbnAtPmlucF9scG9ydCA9PSAwKSB7CiAJCQkJSU5Q X1dMT0NLX0FTU0VSVChpbnApOwotCQkJCUlOUF9IQVNIX1dMT0NLX0FTU0VSVCgmVl91ZGJpbmZv KTsKKwkJCQlJTlBfSEFTSF9XTE9DS19BU1NFUlQocGNiaW5mbyk7CiAJCQkJLyoKIAkJCQkgKiBS ZW1lbWJlciBhZGRyIGlmIGphaWxlZCwgdG8gcHJldmVudAogCQkJCSAqIHJlYmluZGluZy4KQEAg LTEyMzcsOSArMTIzOSw5IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBt YnVmICptLCBzdHJ1CiAJVURQU1RBVF9JTkModWRwc19vcGFja2V0cyk7CiAKIAlpZiAodW5sb2Nr X3VkYmluZm8gPT0gVUhfV0xPQ0tFRCkKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsK KwkJSU5QX0hBU0hfV1VOTE9DSyhwY2JpbmZvKTsKIAllbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9 PSBVSF9STE9DS0VEKQotCQlJTlBfSEFTSF9SVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT SF9SVU5MT0NLKHBjYmluZm8pOwogCWVycm9yID0gaXBfb3V0cHV0KG0sIGlucC0+aW5wX29wdGlv bnMsIE5VTEwsIGlwZmxhZ3MsCiAJICAgIGlucC0+aW5wX21vcHRpb25zLCBpbnApOwogCWlmICh1 bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKQpAQCAtMTI1MCwxMCArMTI1MiwxMCBAQCB1ZHBf b3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCiByZWxlYXNl OgogCWlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKSB7Ci0JCUlOUF9IQVNIX1dVTkxP Q0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxPQ0socGNiaW5mbyk7CiAJCUlOUF9XVU5M T0NLKGlucCk7CiAJfSBlbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9STE9DS0VEKSB7Ci0J CUlOUF9IQVNIX1JVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1JVTkxPQ0socGNiaW5m byk7CiAJCUlOUF9SVU5MT0NLKGlucCk7CiAJfSBlbHNlCiAJCUlOUF9SVU5MT0NLKGlucCk7CkBA IC0xNDA1LDEwICsxNDA3LDEwIEBAIHVkcF9hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbykKIAlLQVNT RVJUKGlucCAhPSBOVUxMLCAoInVkcF9hYm9ydDogaW5wID09IE5VTEwiKSk7CiAJSU5QX1dMT0NL KGlucCk7CiAJaWYgKGlucC0+aW5wX2ZhZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKSB7Ci0JCUlO UF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2Jp bmZvKTsKIAkJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCQlpbnAtPmlucF9sYWRkci5zX2FkZHIg PSBJTkFERFJfQU5ZOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT SF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNvKTsKIAl9 CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE0ODEsOSArMTQ4Myw5IEBAIHVkcF9iaW5kKHN0cnVj dCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwKIAlpbnAgPSBzb3RvaW5wY2Ioc28p OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwX2JpbmQ6IGlucCA9PSBOVUxMIikpOwogCUlO UF9XTE9DSyhpbnApOwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dM T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gaW5fcGNiYmluZChpbnAsIG5hbSwgdGQt PnRkX3VjcmVkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dV TkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJSU5QX1dVTkxPQ0soaW5wKTsKIAlyZXR1cm4gKGVy cm9yKTsKIH0KQEAgLTE0OTcsMTAgKzE0OTksMTAgQEAgdWRwX2Nsb3NlKHN0cnVjdCBzb2NrZXQg KnNvKQogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwX2Nsb3NlOiBpbnAgPT0gTlVMTCIpKTsK IAlJTlBfV0xPQ0soaW5wKTsKIAlpZiAoaW5wLT5pbnBfZmFkZHIuc19hZGRyICE9IElOQUREUl9B TlkpIHsKLQkJSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dMT0NLKGlu cC0+aW5wX3BjYmluZm8pOwogCQlpbl9wY2JkaXNjb25uZWN0KGlucCk7CiAJCWlucC0+aW5wX2xh ZGRyLnNfYWRkciA9IElOQUREUl9BTlk7Ci0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7 CisJCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCXNvaXNkaXNjb25uZWN0 ZWQoc28pOwogCX0KIAlJTlBfV1VOTE9DSyhpbnApOwpAQCAtMTUyNiw5ICsxNTI4LDkgQEAgdWRw X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmEKIAkJSU5QX1dV TkxPQ0soaW5wKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQotCUlOUF9IQVNIX1dMT0NLKCZWX3Vk YmluZm8pOworCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gaW5f cGNiY29ubmVjdChpbnAsIG5hbSwgdGQtPnRkX3VjcmVkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZW X3VkYmluZm8pOworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaWYgKGVy cm9yID09IDApCiAJCXNvaXNjb25uZWN0ZWQoc28pOwogCUlOUF9XVU5MT0NLKGlucCk7CkBAIC0x NTQ1LDE0ICsxNTQ3LDE0IEBAIHVkcF9kZXRhY2goc3RydWN0IHNvY2tldCAqc28pCiAJS0FTU0VS VChpbnAgIT0gTlVMTCwgKCJ1ZHBfZGV0YWNoOiBpbnAgPT0gTlVMTCIpKTsKIAlLQVNTRVJUKGlu cC0+aW5wX2ZhZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZLAogCSAgICAoInVkcF9kZXRhY2g6IG5v dCBkaXNjb25uZWN0ZWQiKSk7Ci0JSU5QX0lORk9fV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0lO Rk9fV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJSU5QX1dMT0NLKGlucCk7CiAJdXAgPSBpbnRv dWRwY2IoaW5wKTsKIAlLQVNTRVJUKHVwICE9IE5VTEwsICgiJXM6IHVwID09IE5VTEwiLCBfX2Z1 bmNfXykpOwogCWlucC0+aW5wX3BwY2IgPSBOVUxMOwogCWluX3BjYmRldGFjaChpbnApOwogCWlu X3BjYmZyZWUoaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9JTkZP X1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJdWRwX2Rpc2NhcmRjYih1cCk7CiB9CiAKQEAg LTE1NjgsMTAgKzE1NzAsMTAgQEAgdWRwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28pCiAJ CUlOUF9XVU5MT0NLKGlucCk7CiAJCXJldHVybiAoRU5PVENPTk4pOwogCX0KLQlJTlBfSEFTSF9X TE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlp bl9wY2JkaXNjb25uZWN0KGlucCk7CiAJaW5wLT5pbnBfbGFkZHIuc19hZGRyID0gSU5BRERSX0FO WTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dVTkxPQ0soaW5w LT5pbnBfcGNiaW5mbyk7CiAJU09DS19MT0NLKHNvKTsKIAlzby0+c29fc3RhdGUgJj0gflNTX0lT Q09OTkVDVEVEOwkJLyogWFhYICovCiAJU09DS19VTkxPQ0soc28pOwpJbmRleDogc3lzL25ldGlu ZXQ2L3VkcDZfdXNycmVxLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQ2L3VkcDZfdXNycmVx LmMJKHJldmlzaW9uIDI0OTc4NSkKKysrIHN5cy9uZXRpbmV0Ni91ZHA2X3VzcnJlcS5jCSh3b3Jr aW5nIGNvcHkpCkBAIC04MjYsMTAgKzgyNiwxMCBAQCB1ZHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQg KnNvKQogCiAJSU5QX1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgm aW5wLT5pbjZwX2ZhZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5Q X0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2JkaXNjb25uZWN0KGlucCk7 CiAJCWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBfSEFTSF9XVU5MT0NLKCZW X3VkYmluZm8pOworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lz ZGlzY29ubmVjdGVkKHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTg5MSw3ICs4OTEs NyBAQCB1ZHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbmFtLAog CUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwNl9iaW5kOiBpbnAgPT0gTlVMTCIpKTsKIAogCUlO UF9XTE9DSyhpbnApOwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dM T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBfSVBWNDsKIAlp bnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKIAlpZiAoKGlucC0+aW5wX2ZsYWdzICYgSU42UF9J UFY2X1Y2T05MWSkgPT0gMCkgewpAQCAtOTE5LDcgKzkxOSw3IEBAIHVkcDZfYmluZChzdHJ1Y3Qg c29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sCiAjaWZkZWYgSU5FVAogb3V0OgogI2Vu ZGlmCi0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XVU5MT0NLKGlu cC0+aW5wX3BjYmluZm8pOwogCUlOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuIChlcnJvcik7CiB9 CkBAIC05NDMsMTAgKzk0MywxMCBAQCB1ZHA2X2Nsb3NlKHN0cnVjdCBzb2NrZXQgKnNvKQogI2Vu ZGlmCiAJSU5QX1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmaW5w LT5pbjZwX2ZhZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hB U0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2JkaXNjb25uZWN0KGlucCk7CiAJ CWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3Vk YmluZm8pOworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlz Y29ubmVjdGVkKHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTk4NSwxMCArOTg1LDEw IEBAIHVkcDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuCiAJ CWVycm9yID0gcHJpc29uX3JlbW90ZV9pcDQodGQtPnRkX3VjcmVkLCAmc2luLnNpbl9hZGRyKTsK IAkJaWYgKGVycm9yICE9IDApCiAJCQlnb3RvIG91dDsKLQkJSU5QX0hBU0hfV0xPQ0soJlZfdWRi aW5mbyk7CisJCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQllcnJvciA9IGlu X3BjYmNvbm5lY3QoaW5wLCAoc3RydWN0IHNvY2thZGRyICopJnNpbiwKIAkJICAgIHRkLT50ZF91 Y3JlZCk7Ci0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxP Q0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWlmIChlcnJvciA9PSAwKQogCQkJc29pc2Nvbm5lY3Rl ZChzbyk7CiAJCWdvdG8gb3V0OwpAQCAtMTAwMyw5ICsxMDAzLDkgQEAgdWRwNl9jb25uZWN0KHN0 cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm4KIAllcnJvciA9IHByaXNvbl9yZW1v dGVfaXA2KHRkLT50ZF91Y3JlZCwgJnNpbjYtPnNpbjZfYWRkcik7CiAJaWYgKGVycm9yICE9IDAp CiAJCWdvdG8gb3V0OwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNIX1dM T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gaW42X3BjYmNvbm5lY3QoaW5wLCBuYW0s IHRkLT50ZF91Y3JlZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFT SF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlmIChlcnJvciA9PSAwKQogCQlzb2lzY29u bmVjdGVkKHNvKTsKIG91dDoKQEAgLTEwMjIsMTMgKzEwMjIsMTMgQEAgdWRwNl9kZXRhY2goc3Ry dWN0IHNvY2tldCAqc28pCiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJUKGlucCAhPSBO VUxMLCAoInVkcDZfZGV0YWNoOiBpbnAgPT0gTlVMTCIpKTsKIAotCUlOUF9JTkZPX1dMT0NLKCZW X3VkYmluZm8pOworCUlOUF9JTkZPX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XTE9D SyhpbnApOwogCXVwID0gaW50b3VkcGNiKGlucCk7CiAJS0FTU0VSVCh1cCAhPSBOVUxMLCAoIiVz OiB1cCA9PSBOVUxMIiwgX19mdW5jX18pKTsKIAlpbl9wY2JkZXRhY2goaW5wKTsKIAlpbl9wY2Jm cmVlKGlucCk7Ci0JSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSU5GT19XVU5M T0NLKGlucC0+aW5wX3BjYmluZm8pOwogCXVkcF9kaXNjYXJkY2IodXApOwogfQogCkBAIC0xMDU4 LDEwICsxMDU4LDEwIEBAIHVkcDZfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJZ290 byBvdXQ7CiAJfQogCi0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xP Q0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaW42X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAlpbnAtPmlu NnBfbGFkZHIgPSBpbjZhZGRyX2FueTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOwor CUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJU09DS19MT0NLKHNvKTsKIAlz by0+c29fc3RhdGUgJj0gflNTX0lTQ09OTkVDVEVEOwkJLyogWFhYICovCiAJU09DS19VTkxPQ0so c28pOwpAQCAtMTEyOCw5ICsxMTI4LDkgQEAgdWRwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBp bnQgZmxhZ3MsIHN0cnVjdCBtYnUKICNpZmRlZiBNQUMKIAltYWNfaW5wY2JfY3JlYXRlX21idWYo aW5wLCBtKTsKICNlbmRpZgotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9IQVNI X1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gdWRwNl9vdXRwdXQoaW5wLCBtLCBh ZGRyLCBjb250cm9sLCB0ZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBf SEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogI2lmZGVmIElORVQKICNlbmRpZgkKIAlJ TlBfV1VOTE9DSyhpbnApOwo= --047d7b5d58b4c09aa004f4c73c6e Content-Type: application/octet-stream; name=patch-udplite Content-Disposition: attachment; filename=patch-udplite Content-Transfer-Encoding: base64 X-Attachment-Id: f_hsvl74610 SW5kZXg6IGxpYi9saWJjL25ldC9nZXRhZGRyaW5mby5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj L25ldC9nZXRhZGRyaW5mby5jCShyZXZpc2lvbiAyNDg4MTEpCisrKyBsaWIvbGliYy9uZXQvZ2V0 YWRkcmluZm8uYwkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEyICsxNzAsMTQgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBleHBsb3JlIGV4cGxvcmVbXSA9IHsKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVB TSwgSVBQUk9UT19UQ1AsIDB4MDcgfSwKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9U T19TQ1RQLCAweDAzIH0sCiAJeyBQRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NU UCwgMHgwNyB9LAorCXsgUEZfSU5FVDYsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQTElURSwgMHgw MyB9LAogCXsgUEZfSU5FVDYsIFNPQ0tfUkFXLCBBTlksIDB4MDUgfSwKICNlbmRpZgogCXsgUEZf SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAsIDB4MDcgfSwKIAl7IFBGX0lORVQsIFNPQ0tf U1RSRUFNLCBJUFBST1RPX1RDUCwgMHgwNyB9LAogCXsgUEZfSU5FVCwgU09DS19TVFJFQU0sIElQ UFJPVE9fU0NUUCwgMHgwMyB9LAogCXsgUEZfSU5FVCwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9f U0NUUCwgMHgwNyB9LAorCXsgUEZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFBMSVRFLCAw eDAzIH0sCiAJeyBQRl9JTkVULCBTT0NLX1JBVywgQU5ZLCAweDA1IH0sCiAJeyAtMSwgMCwgMCwg MCB9LAogfTsKQEAgLTE0NzYsNiArMTQ3OCw5IEBAIGdldF9wb3J0KHN0cnVjdCBhZGRyaW5mbyAq YWksIGNvbnN0IGNoYXIgKnNlcnZuYW1lCiAJCWNhc2UgSVBQUk9UT19TQ1RQOgogCQkJcHJvdG8g PSAic2N0cCI7CiAJCQlicmVhazsKKwkJY2FzZSBJUFBST1RPX1VEUExJVEU6CisJCQlwcm90byA9 ICJ1ZHBsaXRlIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcHJvdG8gPSBOVUxMOwogCQkJ YnJlYWs7CkluZGV4OiBzeXMvbmV0aW5ldC9pbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0 L2luLmMJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L2luLmMJKHdvcmtpbmcgY29w eSkKQEAgLTEyMDUsNiArMTIwNSw3IEBAIGluX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQog CiAJaW5fcGNicHVyZ2VpZjAoJlZfcmlwY2JpbmZvLCBpZnApOwogCWluX3BjYnB1cmdlaWYwKCZW X3VkYmluZm8sIGlmcCk7CisJaW5fcGNicHVyZ2VpZjAoJlZfdWxpdGVjYmluZm8sIGlmcCk7CiAJ aW5fcHVyZ2VtYWRkcnMoaWZwKTsKIH0KIApJbmRleDogc3lzL25ldGluZXQvaW4uaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzeXMvbmV0aW5ldC9pbi5oCShyZXZpc2lvbiAyNDg4MTEpCisrKyBzeXMvbmV0aW5l dC9pbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDcgQEAgX19FTkRfREVDTFMKICNk ZWZpbmUJSVBQUk9UT19JUENPTVAJCTEwOAkJLyogcGF5bG9hZCBjb21wcmVzc2lvbiAoSVBDb21w KSAqLwogI2RlZmluZQlJUFBST1RPX1NDVFAJCTEzMgkJLyogU0NUUCAqLwogI2RlZmluZQlJUFBS T1RPX01ICQkxMzUJCS8qIElQdjYgTW9iaWxpdHkgSGVhZGVyICovCisjZGVmaW5lCUlQUFJPVE9f VURQTElURQkJMTM2CQkvKiBVRFBMaXRlICovCiAvKiAxMDEtMjU0OiBQYXJ0bHkgVW5hc3NpZ25l ZCAqLwogI2RlZmluZQlJUFBST1RPX1BJTQkJMTAzCQkvKiBQcm90b2NvbCBJbmRlcGVuZGVudCBN Y2FzdCAqLwogI2RlZmluZQlJUFBST1RPX0NBUlAJCTExMgkJLyogQ0FSUCAqLwpJbmRleDogc3lz L25ldGluZXQvaW5fcGNiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQvaW5fcGNiLmMJKHJl dmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L2luX3BjYi5jCSh3b3JraW5nIGNvcHkpCkBA IC0zOTAsMTMgKzM5MCwxNCBAQCBpbl9wY2JfbHBvcnQoc3RydWN0IGlucGNiICppbnAsIHN0cnVj dCBpbl9hZGRyICpsYQogCQlsYXN0cG9ydCA9ICZwY2JpbmZvLT5pcGlfbGFzdHBvcnQ7CiAJfQog CS8qCi0JICogRm9yIFVEUCwgdXNlIHJhbmRvbSBwb3J0IGFsbG9jYXRpb24gYXMgbG9uZyBhcyB0 aGUgdXNlcgorCSAqIEZvciBVRFAoLUxpdGUpLCB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBh cyBsb25nIGFzIHRoZSB1c2VyCiAJICogYWxsb3dzIGl0LiAgRm9yIFRDUCAoYW5kIGFzIG9mIHll dCB1bmtub3duKSBjb25uZWN0aW9ucywKIAkgKiB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBv bmx5IGlmIHRoZSB1c2VyIGFsbG93cyBpdCBBTkQKIAkgKiBpcHBvcnRfdGljaygpIGFsbG93cyBp dC4KIAkgKi8KIAlpZiAoVl9pcHBvcnRfcmFuZG9taXplZCAmJgotCQkoIVZfaXBwb3J0X3N0b3By YW5kb20gfHwgcGNiaW5mbyA9PSAmVl91ZGJpbmZvKSkKKwkJKCFWX2lwcG9ydF9zdG9wcmFuZG9t IHx8IHBjYmluZm8gPT0gJlZfdWRiaW5mbyB8fAorCQlwY2JpbmZvID09ICZWX3VsaXRlY2JpbmZv KSkKIAkJZG9yYW5kb20gPSAxOwogCWVsc2UKIAkJZG9yYW5kb20gPSAwOwpAQCAtNDA2LDggKzQw Nyw4IEBAIGluX3BjYl9scG9ydChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IGluX2FkZHIgKmxh CiAJICovCiAJaWYgKGZpcnN0ID09IGxhc3QpCiAJCWRvcmFuZG9tID0gMDsKLQkvKiBNYWtlIHN1 cmUgdG8gbm90IGluY2x1ZGUgVURQIHBhY2tldHMgaW4gdGhlIGNvdW50LiAqLwotCWlmIChwY2Jp bmZvICE9ICZWX3VkYmluZm8pCisJLyogTWFrZSBzdXJlIHRvIG5vdCBpbmNsdWRlIFVEUCgtTGl0 ZSkgcGFja2V0cyBpbiB0aGUgY291bnQuICovCisJaWYgKHBjYmluZm8gIT0gJlZfdWRiaW5mbyB8 fCBwY2JpbmZvICE9ICZWX3VsaXRlY2JpbmZvKQogCQlWX2lwcG9ydF90Y3BhbGxvY3MrKzsKIAkv KgogCSAqIEluc3RlYWQgb2YgaGF2aW5nIHR3byBsb29wcyBmdXJ0aGVyIGRvd24gY291bnRpbmcg dXAgb3IgZG93bgpJbmRleDogc3lzL25ldGluZXQvaW5fcHJvdG8uYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz eXMvbmV0aW5ldC9pbl9wcm90by5jCShyZXZpc2lvbiAyNDg4MTEpCisrKyBzeXMvbmV0aW5ldC9p bl9wcm90by5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDIwIEBAIHN0cnVjdCBwcm90 b3N3IGluZXRzd1tdID0gewogfSwKICNlbmRpZiAvKiBTQ1RQICovCiB7CisJLnByX3R5cGUgPQkJ U09DS19ER1JBTSwKKwkucHJfZG9tYWluID0JCSZpbmV0ZG9tYWluLAorCS5wcl9wcm90b2NvbCA9 CQlJUFBST1RPX1VEUExJVEUsCisJLnByX2ZsYWdzID0JCVBSX0FUT01JQ3xQUl9BRERSLAorCS5w cl9pbnB1dCA9CQl1ZHBfaW5wdXQsCisJLnByX2N0bGlucHV0ID0JCXVkcGxpdGVfY3RsaW5wdXQs CisJLnByX2N0bG91dHB1dCA9CQl1ZHBfY3Rsb3V0cHV0LAorCS5wcl9pbml0ID0JCXVkcGxpdGVf aW5pdCwKKyNpZmRlZiBWSU1BR0UKKwkucHJfZGVzdHJveSA9CQl1ZHBsaXRlX2Rlc3Ryb3ksCisj ZW5kaWYKKwkucHJfdXNycmVxcyA9CQkmdWRwX3VzcnJlcXMKK30sCit7CiAJLnByX3R5cGUgPQkJ U09DS19SQVcsCiAJLnByX2RvbWFpbiA9CQkmaW5ldGRvbWFpbiwKIAkucHJfcHJvdG9jb2wgPQkJ SVBQUk9UT19SQVcsCkBAIC0zNzAsNiArMzg0LDcgQEAgU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJ UFBST1RPX1RDUCwJdGNwLAlDVExGTEFHX1IKICNpZmRlZiBTQ1RQCiBTWVNDVExfTk9ERShfbmV0 X2luZXQsIElQUFJPVE9fU0NUUCwJc2N0cCwJQ1RMRkxBR19SVywgMCwJIlNDVFAiKTsKICNlbmRp ZgorU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJUFBST1RPX1VEUExJVEUsCXVkcGxpdGUsQ1RMRkxB R19SVywgMCwJIlVEUExpdGUiKTsKIFNZU0NUTF9OT0RFKF9uZXRfaW5ldCwgSVBQUk9UT19JR01Q LAlpZ21wLAlDVExGTEFHX1JXLCAwLAkiSUdNUCIpOwogI2lmZGVmIElQU0VDCiAvKiBYWFggbm8g cHJvdG9jb2wgIyB0byB1c2UsIHBpY2sgc29tZXRoaW5nICJyZXNlcnZlZCIgKi8KSW5kZXg6IHN5 cy9uZXRpbmV0L3VkcF91c3JyZXEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldC91ZHBfdXNy cmVxLmMJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L3VkcF91c3JyZXEuYwkod29y a2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZW5k aWYKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5o PgorI2luY2x1ZGUgPG5ldGluZXQvdWRwbGl0ZS5oPgogCiAjaWZkZWYgSVBTRUMKICNpbmNsdWRl IDxuZXRpcHNlYy9pcHNlYy5oPgpAQCAtMTMxLDEzICsxMzIsMTggQEAgdV9sb25nCXVkcF9yZWN2 c3BhY2UgPSA0MCAqICgxMDI0ICsKICNlbmRpZgogCQkJCSAgICAgICk7CiAKKwogU1lTQ1RMX1VM T05HKF9uZXRfaW5ldF91ZHAsIFVEUENUTF9SRUNWU1BBQ0UsIHJlY3ZzcGFjZSwgQ1RMRkxBR19S VywKICAgICAmdWRwX3JlY3ZzcGFjZSwgMCwgIk1heGltdW0gc3BhY2UgZm9yIGluY29taW5nIFVE UCBkYXRhZ3JhbXMiKTsKIAogVk5FVF9ERUZJTkUoc3RydWN0IGlucGNiaGVhZCwgdWRiKTsJCS8q IGZyb20gdWRwX3Zhci5oICovCiBWTkVUX0RFRklORShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZv KTsKK1ZORVRfREVGSU5FKHN0cnVjdCBpbnBjYmhlYWQsIHVsaXRlY2IpOworVk5FVF9ERUZJTkUo c3RydWN0IGlucGNiaW5mbywgdWxpdGVjYmluZm8pOwogc3RhdGljIFZORVRfREVGSU5FKHVtYV96 b25lX3QsIHVkcGNiX3pvbmUpOwotI2RlZmluZQlWX3VkcGNiX3pvbmUJCQlWTkVUKHVkcGNiX3pv bmUpCitzdGF0aWMgVk5FVF9ERUZJTkUodW1hX3pvbmVfdCwgdWRwbGl0ZWNiX3pvbmUpOworI2Rl ZmluZQlWX3VkcGNiX3pvbmUJCVZORVQodWRwY2Jfem9uZSkKKyNkZWZpbmUJVl91ZHBsaXRlY2Jf em9uZQlWTkVUKHVkcGxpdGVjYl96b25lKQogCiAjaWZuZGVmIFVEQkhBU0hTSVpFCiAjZGVmaW5l CVVEQkhBU0hTSVpFCTEyOApAQCAtMTY3LDEwICsxNzMsMTYgQEAgc3RhdGljIHZvaWQKIHVkcF96 b25lX2NoYW5nZSh2b2lkICp0YWcpCiB7CiAKLQl1bWFfem9uZV9zZXRfbWF4KFZfdWRiaW5mby5p cGlfem9uZSwgbWF4c29ja2V0cyk7Ci0JdW1hX3pvbmVfc2V0X21heChWX3VkcGNiX3pvbmUsIG1h eHNvY2tldHMpOworCXVkcF9jb21tb25fem9uZV9jaGFuZ2UoVl91ZGJpbmZvLCBWX3VkcGNiX3pv bmUpOwogfQogCitzdGF0aWMgdm9pZAordWRwbGl0ZV96b25lX2NoYW5nZSh2b2lkICp0YWcpCit7 CisKKwl1ZHBfY29tbW9uX3pvbmVfY2hhbmdlKFZfdWxpdGVjYmluZm8sIFZfdWRwbGl0ZWNiX3pv bmUpOworfQorCiBzdGF0aWMgaW50CiB1ZHBfaW5wY2JfaW5pdCh2b2lkICptZW0sIGludCBzaXpl LCBpbnQgZmxhZ3MpCiB7CkBAIC0xODEsMjEgKzE5MywzNCBAQCB1ZHBfaW5wY2JfaW5pdCh2b2lk ICptZW0sIGludCBzaXplLCBpbnQgZmxhZ3MpCiAJcmV0dXJuICgwKTsKIH0KIAorc3RhdGljIGlu dAordWRwbGl0ZV9pbnBjYl9pbml0KHZvaWQgKm1lbSwgaW50IHNpemUsIGludCBmbGFncykKK3sK KwlzdHJ1Y3QgaW5wY2IgKmlucDsKKworCWlucCA9IG1lbTsKKwlJTlBfTE9DS19JTklUKGlucCwg ImlucCIsICJ1ZHBsaXRlaW5wIik7CisJcmV0dXJuICgwKTsKK30KKwogdm9pZAogdWRwX2luaXQo dm9pZCkKIHsKLQotCWluX3BjYmluZm9faW5pdCgmVl91ZGJpbmZvLCAidWRwIiwgJlZfdWRiLCBV REJIQVNIU0laRSwgVURCSEFTSFNJWkUsCi0JICAgICJ1ZHBfaW5wY2IiLCB1ZHBfaW5wY2JfaW5p dCwgTlVMTCwgVU1BX1pPTkVfTk9GUkVFLAotCSAgICBJUElfSEFTSEZJRUxEU18yVFVQTEUpOwot CVZfdWRwY2Jfem9uZSA9IHVtYV96Y3JlYXRlKCJ1ZHBjYiIsIHNpemVvZihzdHJ1Y3QgdWRwY2Ip LAotCSAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBVTUFfQUxJR05fUFRSLCBVTUFfWk9ORV9O T0ZSRUUpOwotCXVtYV96b25lX3NldF9tYXgoVl91ZHBjYl96b25lLCBtYXhzb2NrZXRzKTsKLQl1 bWFfem9uZV9zZXRfd2FybmluZyhWX3VkcGNiX3pvbmUsICJrZXJuLmlwYy5tYXhzb2NrZXRzIGxp bWl0IHJlYWNoZWQiKTsKKwl1ZHBfY29tbW9uX2luaXQoJlZfdWRiaW5mbywgInVkcCIsICZWX3Vk YiwgInVkcF9pbnBjYiIsIHVkcF9pbnBjYl9pbml0LAorCSAgICBWX3VkcGNiX3pvbmUsICJ1ZHBj YiIpOwogCUVWRU5USEFORExFUl9SRUdJU1RFUihtYXhzb2NrZXRzX2NoYW5nZSwgdWRwX3pvbmVf Y2hhbmdlLCBOVUxMLAogCSAgICBFVkVOVEhBTkRMRVJfUFJJX0FOWSk7CiB9CiAKK3ZvaWQKK3Vk cGxpdGVfaW5pdCh2b2lkKQoreworCXVkcF9jb21tb25faW5pdCgmVl91bGl0ZWNiaW5mbywgInVk cGxpdGUiLCAmVl91bGl0ZWNiLCAidWRwbGl0ZV9pbnBjYiIsCisJICAgIHVkcGxpdGVfaW5wY2Jf aW5pdCwgVl91ZHBsaXRlY2Jfem9uZSwgInVkcGxpdGVjYiIpOworCUVWRU5USEFORExFUl9SRUdJ U1RFUihtYXhzb2NrZXRzX2NoYW5nZSwgdWRwbGl0ZV96b25lX2NoYW5nZSwgTlVMTCwKKwkgICAg RVZFTlRIQU5ETEVSX1BSSV9BTlkpOworfQorCiAvKgogICogS2VybmVsIG1vZHVsZSBpbnRlcmZh Y2UgZm9yIHVwZGF0aW5nIHVkcHN0YXQuICBUaGUgYXJndW1lbnQgaXMgYW4gaW5kZXgKICAqIGlu dG8gdWRwc3RhdCB0cmVhdGVkIGFzIGFuIGFycmF5IG9mIHVfbG9uZy4gIFdoaWxlIHRoaXMgZW5j b2RlcyB0aGUKQEAgLTIxNSw3ICsyNDAsMTAgQEAgdWRwX25ld3VkcGNiKHN0cnVjdCBpbnBjYiAq aW5wKQogewogCXN0cnVjdCB1ZHBjYiAqdXA7CiAKLQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96 b25lLCBNX05PV0FJVCB8IE1fWkVSTyk7CisJaWYgKGlucC0+aW5wX3NvY2tldC0+c29fcHJvdG8t PnByX3Byb3RvY29sID09IElQUFJPVE9fVURQKQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96 b25lLCBNX05PV0FJVCB8IE1fWkVSTyk7CisJZWxzZQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBs aXRlY2Jfem9uZSwgTV9OT1dBSVQgfCBNX1pFUk8pOwogCWlmICh1cCA9PSBOVUxMKQogCQlyZXR1 cm4gKEVOT0JVRlMpOwogCWlucC0+aW5wX3BwY2IgPSB1cDsKQEAgLTIyMywxMCArMjUxLDEyIEBA IHVkcF9uZXd1ZHBjYihzdHJ1Y3QgaW5wY2IgKmlucCkKIH0KIAogdm9pZAotdWRwX2Rpc2NhcmRj YihzdHJ1Y3QgdWRwY2IgKnVwKQordWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKnVwLCBpbnQg aXN1ZHApCiB7Ci0KLQl1bWFfemZyZWUoVl91ZHBjYl96b25lLCB1cCk7CisJaWYgKGlzdWRwKQor CQl1bWFfemZyZWUoVl91ZHBjYl96b25lLCB1cCk7CisJZWxzZQorCQl1bWFfemZyZWUoVl91ZHBs aXRlY2Jfem9uZSwgdXApOwogfQogCiAjaWZkZWYgVklNQUdFCkBAIC0yMzQsOSArMjY0LDE1IEBA IHZvaWQKIHVkcF9kZXN0cm95KHZvaWQpCiB7CiAKLQlpbl9wY2JpbmZvX2Rlc3Ryb3koJlZfdWRi aW5mbyk7Ci0JdW1hX3pkZXN0cm95KFZfdWRwY2Jfem9uZSk7CisJdWRwX2NvbW1vbl9kZXN0cm95 KCZWX3VkYmluZm8sIFZfdWRwY2Jfem9uZSk7CiB9CisKK3ZvaWQKK3VkcGxpdGVfZGVzdHJveSh2 b2lkKQoreworCisJdWRwX2NvbW1vbl9kZXN0cm95KCZWX3VsaXRlY2JpbmZvLCBWX3VkcGxpdGVj Yl96b25lKTsKK30KICNlbmRpZgogCiAjaWZkZWYgSU5FVApAQCAtMzM5LDEwICszNzUsMTMgQEAg dWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCXN0cnVjdCB1ZHBoZHIgKnVoOwog CXN0cnVjdCBpZm5ldCAqaWZwOwogCXN0cnVjdCBpbnBjYiAqaW5wOworCXN0cnVjdCBpbnBjYmlu Zm8gKnBjYmluZm87CiAJdWludDE2X3QgbGVuLCBpcF9sZW47CiAJc3RydWN0IGlwIHNhdmVfaXA7 CiAJc3RydWN0IHNvY2thZGRyX2luIHVkcF9pbjsKIAlzdHJ1Y3QgbV90YWcgKmZ3ZF90YWc7CisJ aW50IGNzY292X3BhcnRpYWw7CisJdWludDhfdCBwcjsKIAogCWlmcCA9IG0tPm1fcGt0aGRyLnJj dmlmOwogCVVEUFNUQVRfSU5DKHVkcHNfaXBhY2tldHMpOwpAQCAtMzYyLDE0ICs0MDEsMTUgQEAg dWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCSAqLwogCWlwID0gbXRvZChtLCBz dHJ1Y3QgaXAgKik7CiAJaWYgKG0tPm1fbGVuIDwgaXBobGVuICsgc2l6ZW9mKHN0cnVjdCB1ZHBo ZHIpKSB7Ci0JCWlmICgobSA9IG1fcHVsbHVwKG0sIGlwaGxlbiArIHNpemVvZihzdHJ1Y3QgdWRw aGRyKSkpID09IDApIHsKKwkJaWYgKChtID0gbV9wdWxsdXAobSwgaXBobGVuICsgc2l6ZW9mKHN0 cnVjdCB1ZHBoZHIpKSkgPT0gTlVMTCkgewogCQkJVURQU1RBVF9JTkModWRwc19oZHJvcHMpOwog CQkJcmV0dXJuOwogCQl9CiAJCWlwID0gbXRvZChtLCBzdHJ1Y3QgaXAgKik7CiAJfQogCXVoID0g KHN0cnVjdCB1ZHBoZHIgKikoKGNhZGRyX3QpaXAgKyBpcGhsZW4pOwotCisJcHIgPSBpcC0+aXBf cDsKKwljc2Nvdl9wYXJ0aWFsID0gKHByID09IElQUFJPVE9fVURQTElURSkgPyAxIDogMDsKIAkv KgogCSAqIERlc3RpbmF0aW9uIHBvcnQgb2YgMCBpcyBpbGxlZ2FsLCBiYXNlZCBvbiBSRkM3Njgu CiAJICovCkBAIC0zOTIsMTIgKzQzMiwxOSBAQCB1ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGlu dCBvZmYpCiAJICovCiAJbGVuID0gbnRvaHMoKHVfc2hvcnQpdWgtPnVoX3VsZW4pOwogCWlwX2xl biA9IG50b2hzKGlwLT5pcF9sZW4pIC0gaXBobGVuOworCWlmIChwciA9PSBJUFBST1RPX1VEUExJ VEUgJiYgbGVuID09IDApIHsKKwkJLyogWmVybyBtZWFucyBjaGVja3N1bSBvdmVyIHRoZSBjb21w bGV0ZSBwYWNrZXQuICovCisJCWxlbiA9IGlwX2xlbjsKKwkJY3Njb3ZfcGFydGlhbCA9IDA7CisJ fQorCiAJaWYgKGlwX2xlbiAhPSBsZW4pIHsKIAkJaWYgKGxlbiA+IGlwX2xlbiB8fCBsZW4gPCBz aXplb2Yoc3RydWN0IHVkcGhkcikpIHsKIAkJCVVEUFNUQVRfSU5DKHVkcHNfYmFkbGVuKTsKIAkJ CWdvdG8gYmFkdW5sb2NrZWQ7CiAJCX0KLQkJbV9hZGoobSwgbGVuIC0gaXBfbGVuKTsKKwkJaWYg KHByID09IElQUFJPVE9fVURQKQorCQkJbV9hZGoobSwgbGVuIC0gaXBfbGVuKTsKIAl9CiAKIAkv KgpAQCAtNDE1LDIwICs0NjIsMjQgQEAgdWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2Zm KQogCWlmICh1aC0+dWhfc3VtKSB7CiAJCXVfc2hvcnQgdWhfc3VtOwogCi0JCWlmIChtLT5tX3Br dGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9EQVRBX1ZBTElEKSB7CisJCWlmICgobS0+bV9wa3RoZHIu Y3N1bV9mbGFncyAmIENTVU1fREFUQV9WQUxJRCkgJiYKKwkJICAgICFjc2Nvdl9wYXJ0aWFsKSB7 CiAJCQlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fUFNFVURPX0hEUikKIAkJCQl1 aF9zdW0gPSBtLT5tX3BrdGhkci5jc3VtX2RhdGE7CiAJCQllbHNlCiAJCQkJdWhfc3VtID0gaW5f cHNldWRvKGlwLT5pcF9zcmMuc19hZGRyLAogCQkJCSAgICBpcC0+aXBfZHN0LnNfYWRkciwgaHRv bmwoKHVfc2hvcnQpbGVuICsKLQkJCQkgICAgbS0+bV9wa3RoZHIuY3N1bV9kYXRhICsgSVBQUk9U T19VRFApKTsKKwkJCQkgICAgbS0+bV9wa3RoZHIuY3N1bV9kYXRhICsgcHIpKTsKIAkJCXVoX3N1 bSBePSAweGZmZmY7CiAJCX0gZWxzZSB7CiAJCQljaGFyIGJbOV07CiAKIAkJCWJjb3B5KCgoc3Ry dWN0IGlwb3ZseSAqKWlwKS0+aWhfeDEsIGIsIDkpOwogCQkJYnplcm8oKChzdHJ1Y3QgaXBvdmx5 ICopaXApLT5paF94MSwgOSk7Ci0JCQkoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX2xlbiA9IHVo LT51aF91bGVuOworCQkJaWYgKHByID09IElQUFJPVE9fVURQKQorCQkJCSgoc3RydWN0IGlwb3Zs eSAqKWlwKS0+aWhfbGVuID0gdWgtPnVoX3VsZW47CisJCQllbHNlCisJCQkJKChzdHJ1Y3QgaXBv dmx5ICopaXApLT5paF9sZW4gPSBodG9ucyhpcF9sZW4pOwogCQkJdWhfc3VtID0gaW5fY2tzdW0o bSwgbGVuICsgc2l6ZW9mIChzdHJ1Y3QgaXApKTsKIAkJCWJjb3B5KGIsICgoc3RydWN0IGlwb3Zs eSAqKWlwKS0+aWhfeDEsIDkpOwogCQl9CkBAIC00NDAsMTQgKzQ5MSwxOCBAQCB1ZHBfaW5wdXQo c3RydWN0IG1idWYgKm0sIGludCBvZmYpCiAJfSBlbHNlCiAJCVVEUFNUQVRfSU5DKHVkcHNfbm9z dW0pOwogCisJcGNiaW5mbyA9IChwciA9PSBJUFBST1RPX1VEUCkgPyAmVl91ZGJpbmZvIDogJlZf dWxpdGVjYmluZm87CisKIAlpZiAoSU5fTVVMVElDQVNUKG50b2hsKGlwLT5pcF9kc3Quc19hZGRy KSkgfHwKIAkgICAgaW5fYnJvYWRjYXN0KGlwLT5pcF9kc3QsIGlmcCkpIHsKIAkJc3RydWN0IGlu cGNiICpsYXN0OworCQlzdHJ1Y3QgaW5wY2JoZWFkICpwY2JsaXN0OwogCQlzdHJ1Y3QgaXBfbW9w dGlvbnMgKmltbzsKIAotCQlJTlBfSU5GT19STE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9f UkxPQ0socGNiaW5mbyk7CisJCXBjYmxpc3QgPSAocHIgPT0gSVBQUk9UT19VRFApID8gJlZfdWRi IDogJlZfdWxpdGVjYjsKIAkJbGFzdCA9IE5VTEw7Ci0JCUxJU1RfRk9SRUFDSChpbnAsICZWX3Vk YiwgaW5wX2xpc3QpIHsKKwkJTElTVF9GT1JFQUNIKGlucCwgcGNibGlzdCwgaW5wX2xpc3QpIHsK IAkJCWlmIChpbnAtPmlucF9scG9ydCAhPSB1aC0+dWhfZHBvcnQpCiAJCQkJY29udGludWU7CiAj aWZkZWYgSU5FVDYKQEAgLTUzMywxMiArNTg4LDEyIEBAIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAq bSwgaW50IG9mZikKIAkJCVVEUFNUQVRfSU5DKHVkcHNfbm9wb3J0YmNhc3QpOwogCQkJaWYgKGlu cCkKIAkJCQlJTlBfUlVOTE9DSyhpbnApOwotCQkJSU5QX0lORk9fUlVOTE9DSygmVl91ZGJpbmZv KTsKKwkJCUlOUF9JTkZPX1JVTkxPQ0socGNiaW5mbyk7CiAJCQlnb3RvIGJhZHVubG9ja2VkOwog CQl9CiAJCXVkcF9hcHBlbmQobGFzdCwgaXAsIG0sIGlwaGxlbiwgJnVkcF9pbik7CiAJCUlOUF9S VU5MT0NLKGxhc3QpOwotCQlJTlBfSU5GT19SVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSU5G T19SVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm47CiAJfQogCkBAIC01NTksNyArNjE0LDcgQEAg dWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQkgKiBUcmFuc3BhcmVudGx5IGZv cndhcmRlZC4gUHJldGVuZCB0byBiZSB0aGUgZGVzdGluYXRpb24uCiAJCSAqIEFscmVhZHkgZ290 IG9uZSBsaWtlIHRoaXM/CiAJCSAqLwotCQlpbnAgPSBpbl9wY2Jsb29rdXBfbWJ1ZigmVl91ZGJp bmZvLCBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCisJCWlucCA9IGluX3BjYmxvb2t1cF9tYnVm KHBjYmluZm8sIGlwLT5pcF9zcmMsIHVoLT51aF9zcG9ydCwKIAkJICAgIGlwLT5pcF9kc3QsIHVo LT51aF9kcG9ydCwgSU5QTE9PS1VQX1JMT0NLUENCLCBpZnAsIG0pOwogCQlpZiAoIWlucCkgewog CQkJLyoKQEAgLTU2Nyw3ICs2MjIsNyBAQCB1ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBv ZmYpCiAJCQkgKiBCZWNhdXNlIHdlJ3ZlIHJld3JpdHRlbiB0aGUgZGVzdGluYXRpb24gYWRkcmVz cywKIAkJCSAqIGFueSBoYXJkd2FyZS1nZW5lcmF0ZWQgaGFzaCBpcyBpZ25vcmVkLgogCQkJICov Ci0JCQlpbnAgPSBpbl9wY2Jsb29rdXAoJlZfdWRiaW5mbywgaXAtPmlwX3NyYywKKwkJCWlucCA9 IGluX3BjYmxvb2t1cChwY2JpbmZvLCBpcC0+aXBfc3JjLAogCQkJICAgIHVoLT51aF9zcG9ydCwg bmV4dF9ob3AtPnNpbl9hZGRyLAogCQkJICAgIG5leHRfaG9wLT5zaW5fcG9ydCA/IGh0b25zKG5l eHRfaG9wLT5zaW5fcG9ydCkgOgogCQkJICAgIHVoLT51aF9kcG9ydCwgSU5QTE9PS1VQX1dJTERD QVJEIHwKQEAgLTU3Nyw3ICs2MzIsNyBAQCB1ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBv ZmYpCiAJCW1fdGFnX2RlbGV0ZShtLCBmd2RfdGFnKTsKIAkJbS0+bV9mbGFncyAmPSB+TV9JUF9O RVhUSE9QOwogCX0gZWxzZQotCQlpbnAgPSBpbl9wY2Jsb29rdXBfbWJ1ZigmVl91ZGJpbmZvLCBp cC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCisJCWlucCA9IGluX3BjYmxvb2t1cF9tYnVmKHBjYmlu Zm8sIGlwLT5pcF9zcmMsIHVoLT51aF9zcG9ydCwKIAkJICAgIGlwLT5pcF9kc3QsIHVoLT51aF9k cG9ydCwgSU5QTE9PS1VQX1dJTERDQVJEIHwKIAkJICAgIElOUExPT0tVUF9STE9DS1BDQiwgaWZw LCBtKTsKIAlpZiAoaW5wID09IE5VTEwpIHsKQEAgLTYxMyw2ICs2NjgsMTYgQEAgdWRwX2lucHV0 KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQltX2ZyZWVtKG0pOwogCQlyZXR1cm47CiAJfQor CWlmIChjc2Nvdl9wYXJ0aWFsKSB7CisJCXN0cnVjdCB1ZHBjYiAqdXA7CisKKwkJdXAgPSBpbnRv dWRwY2IoaW5wKTsKKwkJaWYgKHVwLT51X3J4Y3NsZW4gPiBsZW4pIHsKKwkJCUlOUF9SVU5MT0NL KGlucCk7CisJCQltX2ZyZWVtKG0pOworCQkJcmV0dXJuOworCQl9CisJfQogCXVkcF9hcHBlbmQo aW5wLCBpcCwgbSwgaXBobGVuLCAmdWRwX2luKTsKIAlJTlBfUlVOTE9DSyhpbnApOwogCXJldHVy bjsKQEAgLTY0NCw5ICs3MDksOSBAQCB1ZHBfbm90aWZ5KHN0cnVjdCBpbnBjYiAqaW5wLCBpbnQg ZXJybm8pCiAJcmV0dXJuIChpbnApOwogfQogCi0jaWZkZWYgSU5FVAotdm9pZAotdWRwX2N0bGlu cHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKK3N0YXRpYyB2b2lk Cit1ZHBfY29tbW9uX2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQg KnZpcCwKKyAgICBzdHJ1Y3QgaW5wY2JpbmZvICpwY2JpbmZvKQogewogCXN0cnVjdCBpcCAqaXAg PSB2aXA7CiAJc3RydWN0IHVkcGhkciAqdWg7CkBAIC02NzUsNyArNzQwLDcgQEAgdWRwX25vdGlm eShzdHJ1Y3QgaW5wY2IgKmlucCwgaW50IGVycm5vKQogCQlyZXR1cm47CiAJaWYgKGlwICE9IE5V TEwpIHsKIAkJdWggPSAoc3RydWN0IHVkcGhkciAqKSgoY2FkZHJfdClpcCArIChpcC0+aXBfaGwg PDwgMikpOwotCQlpbnAgPSBpbl9wY2Jsb29rdXAoJlZfdWRiaW5mbywgZmFkZHIsIHVoLT51aF9k cG9ydCwKKwkJaW5wID0gaW5fcGNibG9va3VwKHBjYmluZm8sIGZhZGRyLCB1aC0+dWhfZHBvcnQs CiAJCSAgICBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsIElOUExPT0tVUF9STE9DS1BDQiwgTlVM TCk7CiAJCWlmIChpbnAgIT0gTlVMTCkgewogCQkJSU5QX1JMT0NLX0FTU0VSVChpbnApOwpAQCAt Njg1LDkgKzc1MCwyMyBAQCB1ZHBfbm90aWZ5KHN0cnVjdCBpbnBjYiAqaW5wLCBpbnQgZXJybm8p CiAJCQlJTlBfUlVOTE9DSyhpbnApOwogCQl9CiAJfSBlbHNlCi0JCWluX3BjYm5vdGlmeWFsbCgm Vl91ZGJpbmZvLCBmYWRkciwgaW5ldGN0bGVycm1hcFtjbWRdLAorCQlpbl9wY2Jub3RpZnlhbGwo cGNiaW5mbywgZmFkZHIsIGluZXRjdGxlcnJtYXBbY21kXSwKIAkJICAgIHVkcF9ub3RpZnkpOwor CXJldHVybjsKIH0KKworI2lmZGVmIElORVQKK3ZvaWQKK3VkcF9jdGxpbnB1dChpbnQgY21kLCBz dHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2aXApCit7CisJcmV0dXJuICh1ZHBfY29tbW9uX2N0 bGlucHV0KGNtZCwgc2EsIHZpcCwgJlZfdWRiaW5mbykpOworfQorCit2b2lkCit1ZHBsaXRlX2N0 bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKnZpcCkKK3sKKwlyZXR1 cm4gKHVkcF9jb21tb25fY3RsaW5wdXQoY21kLCBzYSwgdmlwLCAmVl91bGl0ZWNiaW5mbykpOwor fQogI2VuZGlmIC8qIElORVQgKi8KIAogc3RhdGljIGludApAQCAtODQzLDE2ICs5MjIsMTYgQEAg U1lTQ1RMX1BST0MoX25ldF9pbmV0X3VkcCwgT0lEX0FVVE8sIGdldGNyZWQsCiBpbnQKIHVkcF9j dGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzb3B0KQogewotCWlu dCBlcnJvciA9IDAsIG9wdHZhbDsKKwlpbnQgaXN1ZHBsaXRlLCBlcnJvciwgb3B0dmFsOwogCXN0 cnVjdCBpbnBjYiAqaW5wOwotI2lmZGVmIElQU0VDX05BVF9UCiAJc3RydWN0IHVkcGNiICp1cDsK LSNlbmRpZgogCisJZXJyb3IgPSAwOworCWlzdWRwbGl0ZSA9IChzby0+c29fcHJvdG8tPnByX3By b3RvY29sID09IElQUFJPVE9fVURQTElURSkgPyAxIDogMDsKIAlpbnAgPSBzb3RvaW5wY2Ioc28p OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgiJXM6IGlucCA9PSBOVUxMIiwgX19mdW5jX18pKTsK IAlJTlBfV0xPQ0soaW5wKTsKLQlpZiAoc29wdC0+c29wdF9sZXZlbCAhPSBJUFBST1RPX1VEUCkg eworCWlmIChzb3B0LT5zb3B0X2xldmVsICE9IHNvLT5zb19wcm90by0+cHJfcHJvdG9jb2wpIHsK ICNpZmRlZiBJTkVUNgogCQlpZiAoSU5QX0NIRUNLX1NPQ0tBRihzbywgQUZfSU5FVDYpKSB7CiAJ CQlJTlBfV1VOTE9DSyhpbnApOwpAQCAtOTEwLDcgKzk4OSwzMyBAQCB1ZHBfY3Rsb3V0cHV0KHN0 cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqcwogCQkJfQogCQkJSU5QX1dVTkxPQ0so aW5wKTsKIAkJCWJyZWFrOworCQljYXNlIFVEUExJVEVfU0VORF9DU0NPVjoKKwkJY2FzZSBVRFBM SVRFX1JFQ1ZfQ1NDT1Y6CisJCQlpZiAoIWlzdWRwbGl0ZSkKKwkJCQlnb3RvIGJhZF9zZXRvcHRu YW1lOworCQkJSU5QX1dVTkxPQ0soaW5wKTsKKwkJCWVycm9yID0gc29vcHRjb3B5aW4oc29wdCwg Jm9wdHZhbCwgc2l6ZW9mKG9wdHZhbCksCisJCQkgICAgc2l6ZW9mKG9wdHZhbCkpOworCQkJaWYg KGVycm9yKQorCQkJCWJyZWFrOworCQkJaW5wID0gc290b2lucGNiKHNvKTsKKwkJCUtBU1NFUlQo aW5wICE9IE5VTEwsICgiJXM6IGlucCA9PSBOVUxMIiwgX19mdW5jX18pKTsKKwkJCUlOUF9XTE9D SyhpbnApOworCQkJdXAgPSBpbnRvdWRwY2IoaW5wKTsKKwkJCUtBU1NFUlQodXAgIT0gTlVMTCwg KCIlczogdXAgPT0gTlVMTCIsIF9fZnVuY19fKSk7CisJCQlpZiAob3B0dmFsICE9IDAgJiYgb3B0 dmFsIDwgOCkgeworCQkJCWVycm9yID0gRUlOVkFMOworCQkJCUlOUF9XVU5MT0NLKGlucCk7CisJ CQkJYnJlYWs7CisJCQl9CisJCQlpZiAoc29wdC0+c29wdF9uYW1lID09IFVEUExJVEVfU0VORF9D U0NPVikKKwkJCQl1cC0+dV90eGNzbGVuID0gb3B0dmFsOworCQkJZWxzZQorCQkJCXVwLT51X3J4 Y3NsZW4gPSBvcHR2YWw7CisJCQlJTlBfV1VOTE9DSyhpbnApOworCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6CitiYWRfc2V0b3B0bmFtZToKIAkJCUlOUF9XVU5MT0NLKGlucCk7CiAJCQllcnJvciA9IEVO T1BST1RPT1BUOwogCQkJYnJlYWs7CkBAIC05MjcsNyArMTAzMiwyMSBAQCB1ZHBfY3Rsb3V0cHV0 KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29wdCAqcwogCQkJZXJyb3IgPSBzb29wdGNv cHlvdXQoc29wdCwgJm9wdHZhbCwgc2l6ZW9mIG9wdHZhbCk7CiAJCQlicmVhazsKICNlbmRpZgor CQljYXNlIFVEUExJVEVfU0VORF9DU0NPVjoKKwkJY2FzZSBVRFBMSVRFX1JFQ1ZfQ1NDT1Y6CisJ CQlpZiAoIWlzdWRwbGl0ZSkKKwkJCQlnb3RvIGJhZF9nZXRvcHRuYW1lOworCQkJdXAgPSBpbnRv dWRwY2IoaW5wKTsKKwkJCUtBU1NFUlQodXAgIT0gTlVMTCwgKCIlczogdXAgPT0gTlVMTCIsIF9f ZnVuY19fKSk7CisJCQlpZiAoc29wdC0+c29wdF9uYW1lID09IFVEUExJVEVfU0VORF9DU0NPVikK KwkJCQlvcHR2YWwgPSB1cC0+dV90eGNzbGVuOworCQkJZWxzZQorCQkJCW9wdHZhbCA9IHVwLT51 X3J4Y3NsZW47CisJCQlJTlBfV1VOTE9DSyhpbnApOworCQkJZXJyb3IgPSBzb29wdGNvcHlvdXQo c29wdCwgJm9wdHZhbCwgc2l6ZW9mKG9wdHZhbCkpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Citi YWRfZ2V0b3B0bmFtZToKIAkJCUlOUF9XVU5MT0NLKGlucCk7CiAJCQllcnJvciA9IEVOT1BST1RP T1BUOwogCQkJYnJlYWs7CkBAIC05NDksMTIgKzEwNjgsMTYgQEAgdWRwX291dHB1dChzdHJ1Y3Qg aW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAlpbnQgbGVuID0gbS0+bV9wa3RoZHIu bGVuOwogCXN0cnVjdCBpbl9hZGRyIGZhZGRyLCBsYWRkcjsKIAlzdHJ1Y3QgY21zZ2hkciAqY207 CisJc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbzsKIAlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiwg c3JjOworCWludCBjc2Nvdl9wYXJ0aWFsID0gMDsKIAlpbnQgZXJyb3IgPSAwOwogCWludCBpcGZs YWdzOwogCXVfc2hvcnQgZnBvcnQsIGxwb3J0OwogCWludCB1bmxvY2tfdWRiaW5mbzsKIAl1X2No YXIgdG9zOworCXVpbnQ4X3QgcHI7CisJdWludDE2X3QgY3Njb3YgPSAwOwogCiAJLyoKIAkgKiB1 ZHBfb3V0cHV0KCkgbWF5IG5lZWQgdG8gdGVtcG9yYXJpbHkgYmluZCBvciBjb25uZWN0IHRoZSBj dXJyZW50CkBAIC0xMDQ5LDEyICsxMTcyLDEzIEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICpp bnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJICoKIAkgKiBYWFhSVzogQ2hlY2sgdGhhdCBoYXNo IGxvY2tpbmcgdXBkYXRlIGhlcmUgaXMgY29ycmVjdC4KIAkgKi8KKwlwY2JpbmZvID0gaW5wLT5p bnBfcGNiaW5mbzsKIAlzaW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopYWRkcjsKIAlpZiAoc2lu ICE9IE5VTEwgJiYKIAkgICAgKGlucC0+aW5wX2xhZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZICYm IGlucC0+aW5wX2xwb3J0ID09IDApKSB7CiAJCUlOUF9SVU5MT0NLKGlucCk7CiAJCUlOUF9XTE9D SyhpbnApOwotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0so cGNiaW5mbyk7CiAJCXVubG9ja191ZGJpbmZvID0gVUhfV0xPQ0tFRDsKIAl9IGVsc2UgaWYgKChz aW4gIT0gTlVMTCAmJiAoCiAJICAgIChzaW4tPnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5Z KSB8fApAQCAtMTA2Miw3ICsxMTg2LDcgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwg c3RydWN0IG1idWYgKm0sIHN0cnUKIAkgICAgKGlucC0+aW5wX2xhZGRyLnNfYWRkciA9PSBJTkFE RFJfQU5ZKSB8fAogCSAgICAoaW5wLT5pbnBfbHBvcnQgPT0gMCkpKSB8fAogCSAgICAoc3JjLnNp bl9mYW1pbHkgPT0gQUZfSU5FVCkpIHsKLQkJSU5QX0hBU0hfUkxPQ0soJlZfdWRiaW5mbyk7CisJ CUlOUF9IQVNIX1JMT0NLKHBjYmluZm8pOwogCQl1bmxvY2tfdWRiaW5mbyA9IFVIX1JMT0NLRUQ7 CiAJfSBlbHNlCiAJCXVubG9ja191ZGJpbmZvID0gVUhfVU5MT0NLRUQ7CkBAIC0xMDc1LDcgKzEx OTksNyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3Ry dQogCWxhZGRyID0gaW5wLT5pbnBfbGFkZHI7CiAJbHBvcnQgPSBpbnAtPmlucF9scG9ydDsKIAlp ZiAoc3JjLnNpbl9mYW1pbHkgPT0gQUZfSU5FVCkgewotCQlJTlBfSEFTSF9MT0NLX0FTU0VSVCgm Vl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfTE9DS19BU1NFUlQocGNiaW5mbyk7CiAJCWlmICgobHBv cnQgPT0gMCkgfHwKIAkJICAgIChsYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSAmJgogCQkgICAg IHNyYy5zaW5fYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSkpIHsKQEAgLTExMjYsNyArMTI1MCw3 IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1CiAJ CSAgICBpbnAtPmlucF9scG9ydCA9PSAwIHx8CiAJCSAgICBzaW4tPnNpbl9hZGRyLnNfYWRkciA9 PSBJTkFERFJfQU5ZIHx8CiAJCSAgICBzaW4tPnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQlJP QURDQVNUKSB7Ci0JCQlJTlBfSEFTSF9MT0NLX0FTU0VSVCgmVl91ZGJpbmZvKTsKKwkJCUlOUF9I QVNIX0xPQ0tfQVNTRVJUKHBjYmluZm8pOwogCQkJZXJyb3IgPSBpbl9wY2Jjb25uZWN0X3NldHVw KGlucCwgYWRkciwgJmxhZGRyLnNfYWRkciwKIAkJCSAgICAmbHBvcnQsICZmYWRkci5zX2FkZHIs ICZmcG9ydCwgTlVMTCwKIAkJCSAgICB0ZC0+dGRfdWNyZWQpOwpAQCAtMTE0MSw3ICsxMjY1LDcg QEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAkJ CWlmIChpbnAtPmlucF9sYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSAmJgogCQkJICAgIGlucC0+ aW5wX2xwb3J0ID09IDApIHsKIAkJCQlJTlBfV0xPQ0tfQVNTRVJUKGlucCk7Ci0JCQkJSU5QX0hB U0hfV0xPQ0tfQVNTRVJUKCZWX3VkYmluZm8pOworCQkJCUlOUF9IQVNIX1dMT0NLX0FTU0VSVChw Y2JpbmZvKTsKIAkJCQkvKgogCQkJCSAqIFJlbWVtYmVyIGFkZHIgaWYgamFpbGVkLCB0byBwcmV2 ZW50CiAJCQkJICogcmViaW5kaW5nLgpAQCAtMTE4OCwxNSArMTMxMiwzNSBAQCB1ZHBfb3V0cHV0 KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCSAqIEZpbGwgaW4gbWJ1 ZiB3aXRoIGV4dGVuZGVkIFVEUCBoZWFkZXIgYW5kIGFkZHJlc3NlcyBhbmQgbGVuZ3RoIHB1dAog CSAqIGludG8gbmV0d29yayBmb3JtYXQuCiAJICovCisJcHIgPSBJUFBST1RPX1VEUDsKIAl1aSA9 IG10b2QobSwgc3RydWN0IHVkcGlwaGRyICopOwogCWJ6ZXJvKHVpLT51aV94MSwgc2l6ZW9mKHVp LT51aV94MSkpOwkvKiBYWFggc3RpbGwgbmVlZGVkPyAqLwotCXVpLT51aV9wciA9IElQUFJPVE9f VURQOwogCXVpLT51aV9zcmMgPSBsYWRkcjsKIAl1aS0+dWlfZHN0ID0gZmFkZHI7CiAJdWktPnVp X3Nwb3J0ID0gbHBvcnQ7CiAJdWktPnVpX2Rwb3J0ID0gZnBvcnQ7CiAJdWktPnVpX3VsZW4gPSBo dG9ucygodV9zaG9ydClsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpOwogCisJaWYgKGlucC0+ aW5wX3NvY2tldC0+c29fcHJvdG8tPnByX3Byb3RvY29sID09IElQUFJPVE9fVURQTElURSkgewor CQlzdHJ1Y3QgdWRwY2IgKnVwOworCQl1aW50MTZfdCBwbGVuOworCisJCXByID0gSVBQUk9UT19V RFBMSVRFOworCQl1cCA9IGludG91ZHBjYihpbnApOworCQljc2NvdiA9IHVwLT51X3R4Y3NsZW47 CisJCXBsZW4gPSAodV9zaG9ydClsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcik7CisJCWlmIChj c2NvdiA+PSBwbGVuKQorCQkJY3Njb3YgPSAwOworCQl1aS0+dWlfbGVuID0gaHRvbnMocGxlbik7 CisJCXVpLT51aV91bGVuID0gaHRvbnMoY3Njb3YpOworCisJCS8qIEZvciBVRFBMaXRlLCBjaGVj a3N1bSBjb3ZlcmFnZSBsZW5ndGggb2YgemVybyBtZWFucworCQkgKiB0aGUgZW50aXJlIFVEUExp dGUgcGFja2V0IGlzIGNvdmVyZWQgYnkgdGhlIGNoZWNrc3VtLgorCQkgKi8KKwkJY3Njb3ZfcGFy dGlhbCA9IChjc2NvdiA9PSAwKSA/IDAgOiAxOworCX0KKwl1aS0+dWlfcHIgPSBwcjsKKwogCS8q CiAJICogU2V0IHRoZSBEb24ndCBGcmFnbWVudCBiaXQgaW4gdGhlIElQIGhlYWRlci4KIAkgKi8K QEAgLTEyMjIsMjQgKzEzNjYsMjkgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3Ry dWN0IG1idWYgKm0sIHN0cnUKIAkvKgogCSAqIFNldCB1cCBjaGVja3N1bSBhbmQgb3V0cHV0IGRh dGFncmFtLgogCSAqLwotCWlmIChWX3VkcF9ja3N1bSkgeworCXVpLT51aV9zdW0gPSAwOworCWlm IChjc2Nvdl9wYXJ0aWFsKSB7CiAJCWlmIChpbnAtPmlucF9mbGFncyAmIElOUF9PTkVTQkNBU1Qp CiAJCQlmYWRkci5zX2FkZHIgPSBJTkFERFJfQlJPQURDQVNUOworCQlpZiAoKHVpLT51aV9zdW0g PSBpbl9ja3N1bShtLCBzaXplb2Yoc3RydWN0IGlwKSArIGNzY292KSkgPT0gMCkKKwkJCXVpLT51 aV9zdW0gPSAweGZmZmY7CisJfSBlbHNlIGlmIChWX3VkcF9ja3N1bSB8fCAhY3Njb3ZfcGFydGlh bCkgeworCQlpZiAoaW5wLT5pbnBfZmxhZ3MgJiBJTlBfT05FU0JDQVNUKQorCQkJZmFkZHIuc19h ZGRyID0gSU5BRERSX0JST0FEQ0FTVDsKIAkJdWktPnVpX3N1bSA9IGluX3BzZXVkbyh1aS0+dWlf c3JjLnNfYWRkciwgZmFkZHIuc19hZGRyLAotCQkgICAgaHRvbnMoKHVfc2hvcnQpbGVuICsgc2l6 ZW9mKHN0cnVjdCB1ZHBoZHIpICsgSVBQUk9UT19VRFApKTsKKwkJICAgIGh0b25zKCh1X3Nob3J0 KWxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSArIHByKSk7CiAJCW0tPm1fcGt0aGRyLmNzdW1f ZmxhZ3MgPSBDU1VNX1VEUDsKIAkJbS0+bV9wa3RoZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3Ry dWN0IHVkcGhkciwgdWhfc3VtKTsKLQl9IGVsc2UKLQkJdWktPnVpX3N1bSA9IDA7CisJfQogCSgo c3RydWN0IGlwICopdWkpLT5pcF9sZW4gPSBodG9ucyhzaXplb2Yoc3RydWN0IHVkcGlwaGRyKSAr IGxlbik7CiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX3R0bCA9IGlucC0+aW5wX2lwX3R0bDsJLyog WFhYICovCiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX3RvcyA9IHRvczsJCS8qIFhYWCAqLwogCVVE UFNUQVRfSU5DKHVkcHNfb3BhY2tldHMpOwogCiAJaWYgKHVubG9ja191ZGJpbmZvID09IFVIX1dM T0NLRUQpCi0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxP Q0socGNiaW5mbyk7CiAJZWxzZSBpZiAodW5sb2NrX3VkYmluZm8gPT0gVUhfUkxPQ0tFRCkKLQkJ SU5QX0hBU0hfUlVOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfUlVOTE9DSyhwY2JpbmZv KTsKIAllcnJvciA9IGlwX291dHB1dChtLCBpbnAtPmlucF9vcHRpb25zLCBOVUxMLCBpcGZsYWdz LAogCSAgICBpbnAtPmlucF9tb3B0aW9ucywgaW5wKTsKIAlpZiAodW5sb2NrX3VkYmluZm8gPT0g VUhfV0xPQ0tFRCkKQEAgLTEyNTAsMTAgKzEzOTksMTAgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5w Y2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAogcmVsZWFzZToKIAlpZiAodW5sb2NrX3Vk YmluZm8gPT0gVUhfV0xPQ0tFRCkgewotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOwor CQlJTlBfSEFTSF9XVU5MT0NLKHBjYmluZm8pOwogCQlJTlBfV1VOTE9DSyhpbnApOwogCX0gZWxz ZSBpZiAodW5sb2NrX3VkYmluZm8gPT0gVUhfUkxPQ0tFRCkgewotCQlJTlBfSEFTSF9SVU5MT0NL KCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9SVU5MT0NLKHBjYmluZm8pOwogCQlJTlBfUlVOTE9D SyhpbnApOwogCX0gZWxzZQogCQlJTlBfUlVOTE9DSyhpbnApOwpAQCAtMTQwNSwxMCArMTU1NCwx MCBAQCB1ZHBfYWJvcnQoc3RydWN0IHNvY2tldCAqc28pCiAJS0FTU0VSVChpbnAgIT0gTlVMTCwg KCJ1ZHBfYWJvcnQ6IGlucCA9PSBOVUxMIikpOwogCUlOUF9XTE9DSyhpbnApOwogCWlmIChpbnAt PmlucF9mYWRkci5zX2FkZHIgIT0gSU5BRERSX0FOWSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91 ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluX3BjYmRp c2Nvbm5lY3QoaW5wKTsKIAkJaW5wLT5pbnBfbGFkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKLQkJ SU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlu cF9wY2JpbmZvKTsKIAkJc29pc2Rpc2Nvbm5lY3RlZChzbyk7CiAJfQogCUlOUF9XVU5MT0NLKGlu cCk7CkBAIC0xNDE4LDE3ICsxNTY3LDIzIEBAIHN0YXRpYyBpbnQKIHVkcF9hdHRhY2goc3RydWN0 IHNvY2tldCAqc28sIGludCBwcm90bywgc3RydWN0IHRocmVhZCAqdGQpCiB7CiAJc3RydWN0IGlu cGNiICppbnA7CisgICAgICAgIHN0cnVjdCBpbnBjYmluZm8gKnBjYmluZm87CiAJaW50IGVycm9y OwogCisJaWYgKHNvLT5zb19wcm90by0+cHJfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApCisJCXBj YmluZm8gPSAmVl91ZGJpbmZvOworCWVsc2UKKwkJcGNiaW5mbyA9ICZWX3VsaXRlY2JpbmZvOwor CiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJUKGlucCA9PSBOVUxMLCAoInVkcF9hdHRh Y2g6IGlucCAhPSBOVUxMIikpOwogCWVycm9yID0gc29yZXNlcnZlKHNvLCB1ZHBfc2VuZHNwYWNl LCB1ZHBfcmVjdnNwYWNlKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiAoZXJyb3IpOwotCUlOUF9J TkZPX1dMT0NLKCZWX3VkYmluZm8pOwotCWVycm9yID0gaW5fcGNiYWxsb2Moc28sICZWX3VkYmlu Zm8pOworCUlOUF9JTkZPX1dMT0NLKHBjYmluZm8pOworCWVycm9yID0gaW5fcGNiYWxsb2Moc28s IHBjYmluZm8pOwogCWlmIChlcnJvcikgewotCQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8p OworCQlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm4gKGVycm9yKTsKIAl9CiAK QEAgLTE0NDAsMTMgKzE1OTUsMTQgQEAgdWRwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50 IHByb3RvLCBzdHJ1Y3QgdGgKIAlpZiAoZXJyb3IpIHsKIAkJaW5fcGNiZGV0YWNoKGlucCk7CiAJ CWluX3BjYmZyZWUoaW5wKTsKLQkJSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5Q X0lORk9fV1VOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQogCiAJSU5QX1dV TkxPQ0soaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9JTkZPX1dV TkxPQ0socGNiaW5mbyk7CiAJcmV0dXJuICgwKTsKKwogfQogI2VuZGlmIC8qIElORVQgKi8KIApA QCAtMTQ4MSw5ICsxNjM3LDkgQEAgdWRwX2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBz b2NrYWRkciAqbmFtLAogCWlucCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVM TCwgKCJ1ZHBfYmluZDogaW5wID09IE5VTEwiKSk7CiAJSU5QX1dMT0NLKGlucCk7Ci0JSU5QX0hB U0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7 CiAJZXJyb3IgPSBpbl9wY2JiaW5kKGlucCwgbmFtLCB0ZC0+dGRfdWNyZWQpOwotCUlOUF9IQVNI X1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZv KTsKIAlJTlBfV1VOTE9DSyhpbnApOwogCXJldHVybiAoZXJyb3IpOwogfQpAQCAtMTQ5NywxMCAr MTY1MywxMCBAQCB1ZHBfY2xvc2Uoc3RydWN0IHNvY2tldCAqc28pCiAJS0FTU0VSVChpbnAgIT0g TlVMTCwgKCJ1ZHBfY2xvc2U6IGlucCA9PSBOVUxMIikpOwogCUlOUF9XTE9DSyhpbnApOwogCWlm IChpbnAtPmlucF9mYWRkci5zX2FkZHIgIT0gSU5BRERSX0FOWSkgewotCQlJTlBfSEFTSF9XTE9D SygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWlu X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAkJaW5wLT5pbnBfbGFkZHIuc19hZGRyID0gSU5BRERSX0FO WTsKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV1VOTE9DSyhp bnAtPmlucF9wY2JpbmZvKTsKIAkJc29pc2Rpc2Nvbm5lY3RlZChzbyk7CiAJfQogCUlOUF9XVU5M T0NLKGlucCk7CkBAIC0xNTI2LDkgKzE2ODIsOSBAQCB1ZHBfY29ubmVjdChzdHJ1Y3Qgc29ja2V0 ICpzbywgc3RydWN0IHNvY2thZGRyICpuYQogCQlJTlBfV1VOTE9DSyhpbnApOwogCQlyZXR1cm4g KGVycm9yKTsKIAl9Ci0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xP Q0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJZXJyb3IgPSBpbl9wY2Jjb25uZWN0KGlucCwgbmFtLCB0 ZC0+dGRfdWNyZWQpOwotCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hf V1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlpZiAoZXJyb3IgPT0gMCkKIAkJc29pc2Nvbm5l Y3RlZChzbyk7CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE1NDAsMjAgKzE2OTYsMjMgQEAgdWRw X2RldGFjaChzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKIAlzdHJ1 Y3QgdWRwY2IgKnVwOworCWludCBpc3VkcDsKIAorCWlzdWRwID0gKHNvLT5zb19wcm90by0+cHJf cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApID8gMSA6IDA7CisKIAlpbnAgPSBzb3RvaW5wY2Ioc28p OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwX2RldGFjaDogaW5wID09IE5VTEwiKSk7CiAJ S0FTU0VSVChpbnAtPmlucF9mYWRkci5zX2FkZHIgPT0gSU5BRERSX0FOWSwKIAkgICAgKCJ1ZHBf ZGV0YWNoOiBub3QgZGlzY29ubmVjdGVkIikpOwotCUlOUF9JTkZPX1dMT0NLKCZWX3VkYmluZm8p OworCUlOUF9JTkZPX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XTE9DSyhpbnApOwog CXVwID0gaW50b3VkcGNiKGlucCk7CiAJS0FTU0VSVCh1cCAhPSBOVUxMLCAoIiVzOiB1cCA9PSBO VUxMIiwgX19mdW5jX18pKTsKIAlpbnAtPmlucF9wcGNiID0gTlVMTDsKIAlpbl9wY2JkZXRhY2go aW5wKTsKIAlpbl9wY2JmcmVlKGlucCk7Ci0JSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsK LQl1ZHBfZGlzY2FyZGNiKHVwKTsKKwlJTlBfSU5GT19XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8p OworCXVkcF9kaXNjYXJkY2IodXAsIGlzdWRwKTsKIH0KIAogc3RhdGljIGludApAQCAtMTU2OCwx MCArMTcyNywxMCBAQCB1ZHBfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJSU5QX1dV TkxPQ0soaW5wKTsKIAkJcmV0dXJuIChFTk9UQ09OTik7CiAJfQotCUlOUF9IQVNIX1dMT0NLKCZW X3VkYmluZm8pOworCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWluX3BjYmRp c2Nvbm5lY3QoaW5wKTsKIAlpbnAtPmlucF9sYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotCUlO UF9IQVNIX1dVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9w Y2JpbmZvKTsKIAlTT0NLX0xPQ0soc28pOwogCXNvLT5zb19zdGF0ZSAmPSB+U1NfSVNDT05ORUNU RUQ7CQkvKiBYWFggKi8KIAlTT0NLX1VOTE9DSyhzbyk7CkBAIC0xNjIyLDQgKzE3ODEsNSBAQCBz dHJ1Y3QgcHJfdXNycmVxcyB1ZHBfdXNycmVxcyA9IHsKIAkucHJ1X3Nvc2V0bGFiZWwgPQlpbl9w Y2Jzb3NldGxhYmVsLAogCS5wcnVfY2xvc2UgPQkJdWRwX2Nsb3NlLAogfTsKKwogI2VuZGlmIC8q IElORVQgKi8KSW5kZXg6IHN5cy9uZXRpbmV0L3VkcF92YXIuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bmV0aW5ldC91ZHBfdmFyLmgJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0L3VkcF92 YXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDEyIEBAIHR5cGVkZWYgdm9pZCgqdWRw X3R1bl9mdW5jX3QpKHN0cnVjdCBtYnVmICosIGludCBvCiBzdHJ1Y3QgdWRwY2IgewogCXVkcF90 dW5fZnVuY190CXVfdHVuX2Z1bmM7CS8qIFVEUCBrZXJuZWwgdHVubmVsaW5nIGNhbGxiYWNrLiAq LwogCXVfaW50CQl1X2ZsYWdzOwkvKiBHZW5lcmljIFVEUCBmbGFncy4gKi8KKwl1aW50MTZfdAl1 X3J4Y3NsZW47CS8qIENvdmVyYWdlIGZvciBpbmNvbWluZyBkYXRhZ3JhbXMuICovCisJdWludDE2 X3QJdV90eGNzbGVuOwkvKiBDb3ZlcmFnZSBmb3Igb3V0Z29pbmcgZGF0YWdyYW1zLiAqLwogfTsK IAotI2RlZmluZQlpbnRvdWRwY2IoaXApCSgoc3RydWN0IHVkcGNiICopKGlwKS0+aW5wX3BwY2Ip Ci0jZGVmaW5lCXNvdG91ZHBjYihzbykJKGludG91ZHBjYihzb3RvaW5wY2Ioc28pKSkKKyNkZWZp bmUJaW50b3VkcGNiKGlwKQkJKChzdHJ1Y3QgdWRwY2IgKikoaXApLT5pbnBfcHBjYikKKyNkZWZp bmUJc290b3VkcGNiKHNvKQkJKGludG91ZHBjYihzb3RvaW5wY2Ioc28pKSkKIAogCQkJCS8qIElQ c2VjOiBFU1AgaW4gVURQIHR1bm5lbGluZzogKi8KICNkZWZpbmUJVUZfRVNQSU5VRFBfTk9OX0lL RQkweDAwMDAwMDAxCS8qIHcvIG5vbi1JS0UgbWFya2VyIC4uICovCkBAIC05Myw2ICs5NSwzMyBA QCBzdHJ1Y3QgdWRwc3RhdCB7CiAJdV9sb25nCXVkcHNfZmlsdGVybWNhc3Q7CS8qIGJsb2NrZWQg YnkgbXVsdGljYXN0IGZpbHRlciAqLwogfTsKIAorLyogCisgKiBQcm90b2NvbCBjb250cm9sIGJs b2NrcyBtYW5hZ2VtZW50IGZ1bmN0aW9ucy4KKyAqLworI2RlZmluZSBVRFBfUENCSU5GT19JTklU KHBjYmluZm8sIHBjYm5hbWUsIGxpc3RoZWFkLCBpbnBjYnpvbmVfbmFtZSxcCisJaW5wY2J6b25l X2luaXQpIHsgXAorCWluX3BjYmluZm9faW5pdChwY2JpbmZvLCBwY2JuYW1lLCBsaXN0aGVhZCwg VURCSEFTSFNJWkUsIFVEQkhBU0hTSVpFLFwKKwkgICAgaW5wY2J6b25lX25hbWUsIGlucGNiem9u ZV9pbml0LCBOVUxMLCBVTUFfWk9ORV9OT0ZSRUUsXAorCSAgICBJUElfSEFTSEZJRUxEU18yVFVQ TEUpOyBcCit9CisKKyNkZWZpbmUJVURQX1BDQklORk9fREVTVFJPWShwY2JpbmZvKSB7IFwKKwlp bl9wY2JpbmZvX2Rlc3Ryb3kocGNiaW5mbyk7IFwKK30KKworLyoKKyAqIFpvbmUgYWxsb2NhdGlv biBmdW5jdGlvbnMuCisgKi8KKyNkZWZpbmUJVURQX1pPTkVfSU5JVCh6b25lLCB6b25lX25hbWUp IHsgXAorCXpvbmUgPSB1bWFfemNyZWF0ZSh6b25lX25hbWUsIHNpemVvZihzdHJ1Y3QgdWRwY2Ip LCBOVUxMLCBOVUxMLCBOVUxMLFwKKwkgICAgTlVMTCwgVU1BX0FMSUdOX1BUUiwgVU1BX1pPTkVf Tk9GUkVFKTsgXAorCXVtYV96b25lX3NldF9tYXgoem9uZSwgbWF4c29ja2V0cyk7IFwKKwl1bWFf em9uZV9zZXRfd2FybmluZyh6b25lLCAia2Vybi5pcGMubWF4c29ja2V0cyBsaW1pdCByZWFjaGVk Iik7IFwKK30KKworI2RlZmluZQlVRFBfWk9ORV9ERVNUUk9ZKHpvbmUpCXVtYV96ZGVzdHJveSh6 b25lKQorCisKICNpZmRlZiBfS0VSTkVMCiAvKgogICogSW4ta2VybmVsIGNvbnN1bWVycyBjYW4g dXNlIHRoZXNlIGFjY2Vzc29yIG1hY3JvcyBkaXJlY3RseSB0byB1cGRhdGUKQEAgLTEzNCw4ICsx NjMsMTIgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0X3VkcCk7CiBleHRlcm4gc3RydWN0IHByX3Vz cnJlcXMJdWRwX3VzcnJlcXM7CiBWTkVUX0RFQ0xBUkUoc3RydWN0IGlucGNiaGVhZCwgdWRiKTsK IFZORVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZvKTsKK1ZORVRfREVDTEFSRShz dHJ1Y3QgaW5wY2JoZWFkLCB1bGl0ZWNiKTsKK1ZORVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JpbmZv LCB1bGl0ZWNiaW5mbyk7CiAjZGVmaW5lCVZfdWRiCQkJVk5FVCh1ZGIpCiAjZGVmaW5lCVZfdWRi aW5mbwkJVk5FVCh1ZGJpbmZvKQorI2RlZmluZQlWX3VsaXRlY2IJCVZORVQodWxpdGVjYikKKyNk ZWZpbmUJVl91bGl0ZWNiaW5mbwkJVk5FVCh1bGl0ZWNiaW5mbykKIAogZXh0ZXJuIHVfbG9uZwkJ CXVkcF9zZW5kc3BhY2U7CiBleHRlcm4gdV9sb25nCQkJdWRwX3JlY3ZzcGFjZTsKQEAgLTE0Nywy MCArMTgwLDQxIEBAIFZORVRfREVDTEFSRShpbnQsIHVkcF9ibGFja2hvbGUpOwogI2RlZmluZQlW X3VkcF9ibGFja2hvbGUJCVZORVQodWRwX2JsYWNraG9sZSkKIGV4dGVybiBpbnQJCQl1ZHBfbG9n X2luX3ZhaW47CiAKLWludAkJIHVkcF9uZXd1ZHBjYihzdHJ1Y3QgaW5wY2IgKik7Ci12b2lkCQkg dWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKik7CitpbnQJCXVkcF9uZXd1ZHBjYihzdHJ1Y3Qg aW5wY2IgKik7Cit2b2lkCQl1ZHBfZGlzY2FyZGNiKHN0cnVjdCB1ZHBjYiAqLCBpbnQpOwogCi12 b2lkCQkgdWRwX2N0bGlucHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZvaWQgKik7Ci1pbnQJ CSB1ZHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IHNvY2tvcHQgKik7Ci12b2lk CQkgdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1ZHBfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2Fk ZHIgKiwgdm9pZCAqKTsKK3ZvaWQJCXVkcGxpdGVfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2Fk ZHIgKiwgdm9pZCAqKTsKK2ludAkJdWRwX2N0bG91dHB1dChzdHJ1Y3Qgc29ja2V0ICosIHN0cnVj dCBzb2Nrb3B0ICopOwordm9pZAkJdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1ZHBsaXRlX2luaXQo dm9pZCk7CiAjaWZkZWYgVklNQUdFCi12b2lkCQkgdWRwX2Rlc3Ryb3kodm9pZCk7Cit2b2lkCQl1 ZHBfZGVzdHJveSh2b2lkKTsKK3ZvaWQJCXVkcGxpdGVfZGVzdHJveSh2b2lkKTsKICNlbmRpZgot dm9pZAkJIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwordm9pZAkJdWRwX2lucHV0KHN0 cnVjdCBtYnVmICosIGludCk7Cit2b2lkCQl1ZHBsaXRlX2lucHV0KHN0cnVjdCBtYnVmICosIGlu dCk7CiBzdHJ1Y3QgaW5wY2IJKnVkcF9ub3RpZnkoc3RydWN0IGlucGNiICppbnAsIGludCBlcnJu byk7Ci1pbnQJCSB1ZHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28pOworaW50CQl1ZHBfc2h1 dGRvd24oc3RydWN0IHNvY2tldCAqc28pOwogCiBpbnQgdWRwX3NldF9rZXJuZWxfdHVubmVsaW5n KHN0cnVjdCBzb2NrZXQgKnNvLCB1ZHBfdHVuX2Z1bmNfdCBmKTsKLSNlbmRpZgogCi0jZW5kaWYK KyNkZWZpbmUJdWRwX2NvbW1vbl9pbml0KHBjYmluZm8sIHBjYm5hbWUsIGxpc3RoZWFkLCBpbnBj YnpvbmVfbmFtZSxcCisJaW5wY2J6b25lX2luaXQsIHpvbmUsIHpvbmVfbmFtZSkgeyBcCisJVURQ X1BDQklORk9fSU5JVChwY2JpbmZvLCBwY2JuYW1lLCBsaXN0aGVhZCwgaW5wY2J6b25lX25hbWUs XAorCSAgICBpbnBjYnpvbmVfaW5pdCk7IFwKKwlVRFBfWk9ORV9JTklUKHpvbmUsIHpvbmVfbmFt ZSk7IFwKK30KKworI2RlZmluZQl1ZHBfY29tbW9uX2Rlc3Ryb3kocGNiaW5mbywgem9uZSkgeyBc CisJVURQX1BDQklORk9fREVTVFJPWShwY2JpbmZvKTsgXAorCVVEUF9aT05FX0RFU1RST1koem9u ZSk7IFwKK30KKworI2RlZmluZQl1ZHBfY29tbW9uX3pvbmVfY2hhbmdlKF9wY2JpbmZvLCBfem9u ZSkgeyBcCisgICAgICAgIHVtYV96b25lX3NldF9tYXgoKF9wY2JpbmZvKS5pcGlfem9uZSwgbWF4 c29ja2V0cyk7IFwKKyAgICAgICAgdW1hX3pvbmVfc2V0X21heCgoX3pvbmUpLCBtYXhzb2NrZXRz KTsgXAorfQorI2VuZGlmIC8qIF9LRVJORUwgKi8KKworI2VuZGlmIC8qIF9ORVRJTkVUX1VEUF9W QVJfSF8gKi8KSW5kZXg6IHN5cy9uZXRpbmV0L3VkcGxpdGUuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bmV0aW5ldC91ZHBsaXRlLmgJKHJldmlzaW9uIDApCisrKyBzeXMvbmV0aW5ldC91ZHBsaXRlLmgJ KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIw MTMsIEtldmluIExvCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBg YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwor ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB WQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G IFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKgorICogJEZyZWVCU0QkCisg Ki8KKworI2lmbmRlZiBfTkVUSU5FVF9VRFBMSVRFX0hfCisjZGVmaW5lCV9ORVRJTkVUX1VEUExJ VEVfSF8KKworLyogCisgKiBVc2VyLXNldHRhYmxlIG9wdGlvbnMgKHVzZWQgd2l0aCBzZXRzb2Nr b3B0KS4KKyAqLworI2RlZmluZQlVRFBMSVRFX1NFTkRfQ1NDT1YJMgkvKiBTZW5kZXIgY2hlY2tz dW0gY292ZXJhZ2UuICovCisjZGVmaW5lCVVEUExJVEVfUkVDVl9DU0NPVgk0CS8qIFJlY2VpdmVy IGNoZWNrc3VtIGNvdmVyYWdlLiAqLworCisjZW5kaWYJLyogIV9ORVRJTkVUX1VEUExJVEVfSF8g Ki8KSW5kZXg6IHN5cy9uZXRpbmV0Ni9pbjZfaWZhdHRhY2guYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bmV0aW5ldDYvaW42X2lmYXR0YWNoLmMJKHJldmlzaW9uIDI0ODgxMSkKKysrIHN5cy9uZXRpbmV0 Ni9pbjZfaWZhdHRhY2guYwkod29ya2luZyBjb3B5KQpAQCAtODM3LDYgKzgzNyw3IEBAIGluNl9p ZmRldGFjaChzdHJ1Y3QgaWZuZXQgKmlmcCkKIAl9CiAKIAlpbjZfcGNicHVyZ2VpZjAoJlZfdWRi aW5mbywgaWZwKTsKKwlpbjZfcGNicHVyZ2VpZjAoJlZfdWxpdGVjYmluZm8sIGlmcCk7CiAJaW42 X3BjYnB1cmdlaWYwKCZWX3JpcGNiaW5mbywgaWZwKTsKIAkvKiBsZWF2ZSBmcm9tIGFsbCBtdWx0 aWNhc3QgZ3JvdXBzIGpvaW5lZCAqLwogCWluNl9wdXJnZW1hZGRycyhpZnApOwpJbmRleDogc3lz L25ldGluZXQ2L2luNl9wcm90by5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0Ni9pbjZfcHJv dG8uYwkocmV2aXNpb24gMjQ4ODExKQorKysgc3lzL25ldGluZXQ2L2luNl9wcm90by5jCSh3b3Jr aW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDE5IEBAIHN0cnVjdCBpcDZwcm90b3N3IGluZXQ2c3db XSA9IHsKIH0sCiAjZW5kaWYgLyogU0NUUCAqLwogeworCS5wcl90eXBlID0JCVNPQ0tfREdSQU0s CisJLnByX2RvbWFpbiA9CQkmaW5ldDZkb21haW4sCisJLnByX3Byb3RvY29sID0JCUlQUFJPVE9f VURQTElURSwKKwkucHJfZmxhZ3MgPQkJUFJfQVRPTUlDfFBSX0FERFIsCisJLnByX2lucHV0ID0J CXVkcDZfaW5wdXQsCisJLnByX2N0bGlucHV0ID0JCXVkcGxpdGU2X2N0bGlucHV0LAorCS5wcl9j dGxvdXRwdXQgPQkJdWRwX2N0bG91dHB1dCwKKyNpZm5kZWYgSU5FVAkvKiBEbyBub3QgY2FsbCBp bml0aWFsaXphdGlvbiB0d2ljZS4gKi8KKwkucHJfaW5pdCA9CQl1ZHBsaXRlX2luaXQsCisjZW5k aWYKKwkucHJfdXNycmVxcyA9CQkmdWRwNl91c3JyZXFzLAorfSwKK3sKIAkucHJfdHlwZSA9CQlT T0NLX1JBVywKIAkucHJfZG9tYWluID0JCSZpbmV0NmRvbWFpbiwKIAkucHJfcHJvdG9jb2wgPQkJ SVBQUk9UT19SQVcsCkBAIC00NTMsNiArNDY2LDcgQEAgU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJ SVBQUk9UT19UQ1AsCXRjcDYsCUNUTEZMQUcKICNpZmRlZiBTQ1RQCiBTWVNDVExfTk9ERShfbmV0 X2luZXQ2LAlJUFBST1RPX1NDVFAsCXNjdHA2LAlDVExGTEFHX1JXLCAwLAkiU0NUUDYiKTsKICNl bmRpZgorU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJSVBQUk9UT19VRFBMSVRFLHVkcGxpdGU2LENU TEZMQUdfUlcsIDAsCSJVRFBMSVRFNiIpOwogI2lmZGVmIElQU0VDCiBTWVNDVExfTk9ERShfbmV0 X2luZXQ2LAlJUFBST1RPX0VTUCwJaXBzZWM2LAlDVExGTEFHX1JXLCAwLAkiSVBTRUM2Iik7CiAj ZW5kaWYgLyogSVBTRUMgKi8KSW5kZXg6IHN5cy9uZXRpbmV0Ni91ZHA2X3VzcnJlcS5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHN5cy9uZXRpbmV0Ni91ZHA2X3VzcnJlcS5jCShyZXZpc2lvbiAyNDg4MTEpCisr KyBzeXMvbmV0aW5ldDYvdWRwNl91c3JyZXEuYwkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEw Niw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5o PgogI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+ CisjaW5jbHVkZSA8bmV0aW5ldC91ZHBsaXRlLmg+CiAKICNpbmNsdWRlIDxuZXRpbmV0Ni9pcDZw cm90b3N3Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldDYvaXA2X3Zhci5oPgpAQCAtMTc4LDExICsxNzks MTQgQEAgdWRwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykK IAlzdHJ1Y3QgaXA2X2hkciAqaXA2OwogCXN0cnVjdCB1ZHBoZHIgKnVoOwogCXN0cnVjdCBpbnBj YiAqaW5wOwotCXN0cnVjdCB1ZHBjYiAqdXA7CisJc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbzsK KwlzdHJ1Y3QgdWRwY2IgKnVwID0gTlVMTDsKIAlpbnQgb2ZmID0gKm9mZnA7CisJaW50IGNzY292 X3BhcnRpYWw7CiAJaW50IHBsZW4sIHVsZW47CiAJc3RydWN0IHNvY2thZGRyX2luNiBmcm9tc2E7 CiAJc3RydWN0IG1fdGFnICpmd2RfdGFnOworCXVpbnQ4X3Qgbnh0OwogCXVpbnQxNl90IHVoX3N1 bTsKIAogCWlmcCA9IG0tPm1fcGt0aGRyLnJjdmlmOwpAQCAtMjE1LDkgKzIxOSwxOSBAQCB1ZHA2 X2lucHV0KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCXBsZW4gPSBu dG9ocyhpcDYtPmlwNl9wbGVuKSAtIG9mZiArIHNpemVvZigqaXA2KTsKIAl1bGVuID0gbnRvaHMo KHVfc2hvcnQpdWgtPnVoX3VsZW4pOwogCisJbnh0ID0gaXA2LT5pcDZfbnh0OworCWNzY292X3Bh cnRpYWwgPSAobnh0ID09IElQUFJPVE9fVURQTElURSkgPyAxIDogMDsKKwlpZiAobnh0ID09IElQ UFJPVE9fVURQTElURSAmJiB1bGVuID09IDApIHsKKwkJLyogWmVybyBtZWFucyBjaGVja3N1bSBv dmVyIHRoZSBjb21wbGV0ZSBwYWNrZXQuICovCisJCXVsZW4gPSBwbGVuOworCQljc2Nvdl9wYXJ0 aWFsID0gMDsKKwl9CisKIAlpZiAocGxlbiAhPSB1bGVuKSB7Ci0JCVVEUFNUQVRfSU5DKHVkcHNf YmFkbGVuKTsKLQkJZ290byBiYWR1bmxvY2tlZDsKKwkJaWYgKHVsZW4gPiBwbGVuIHx8IHVsZW4g PCBzaXplb2Yoc3RydWN0IHVkcGhkcikpIHsKKwkJCVVEUFNUQVRfSU5DKHVkcHNfYmFkbGVuKTsK KwkJCWdvdG8gYmFkdW5sb2NrZWQ7CisJCX0KIAl9CiAKIAkvKgpAQCAtMjI4LDE1ICsyNDIsMTYg QEAgdWRwNl9pbnB1dChzdHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJ Z290byBiYWR1bmxvY2tlZDsKIAl9CiAKLQlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENT VU1fREFUQV9WQUxJRF9JUFY2KSB7CisJaWYgKChtLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NV TV9EQVRBX1ZBTElEX0lQVjYpICYmCisJICAgICFjc2Nvdl9wYXJ0aWFsKSB7CiAJCWlmIChtLT5t X3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9QU0VVRE9fSERSKQogCQkJdWhfc3VtID0gbS0+bV9w a3RoZHIuY3N1bV9kYXRhOwogCQllbHNlCi0JCQl1aF9zdW0gPSBpbjZfY2tzdW1fcHNldWRvKGlw NiwgdWxlbiwKLQkJCSAgICBJUFBST1RPX1VEUCwgbS0+bV9wa3RoZHIuY3N1bV9kYXRhKTsKKwkJ CXVoX3N1bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2LCB1bGVuLCBueHQsCisJCQkgICAgbS0+bV9w a3RoZHIuY3N1bV9kYXRhKTsKIAkJdWhfc3VtIF49IDB4ZmZmZjsKIAl9IGVsc2UKLQkJdWhfc3Vt ID0gaW42X2Nrc3VtKG0sIElQUFJPVE9fVURQLCBvZmYsIHVsZW4pOworCQl1aF9zdW0gPSBpbjZf Y2tzdW0obSwgbnh0LCBvZmYsIHVsZW4pOwogCiAJaWYgKHVoX3N1bSAhPSAwKSB7CiAJCVVEUFNU QVRfSU5DKHVkcHNfYmFkc3VtKTsKQEAgLTI0OSwxMSArMjY0LDEzIEBAIHVkcDZfaW5wdXQoc3Ry dWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJaW5pdF9zaW42KCZmcm9tc2Es IG0pOwogCWZyb21zYS5zaW42X3BvcnQgPSB1aC0+dWhfc3BvcnQ7CiAKKwlwY2JpbmZvID0gKG54 dCA9PSBJUFBST1RPX1VEUCkgPyAmVl91ZGJpbmZvIDogJlZfdWxpdGVjYmluZm87CiAJaWYgKElO Nl9JU19BRERSX01VTFRJQ0FTVCgmaXA2LT5pcDZfZHN0KSkgewogCQlzdHJ1Y3QgaW5wY2IgKmxh c3Q7CisJCXN0cnVjdCBpbnBjYmhlYWQgKnBjYmxpc3Q7CiAJCXN0cnVjdCBpcDZfbW9wdGlvbnMg KmltbzsKIAotCQlJTlBfSU5GT19STE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9fUkxPQ0so cGNiaW5mbyk7CiAJCS8qCiAJCSAqIEluIHRoZSBldmVudCB0aGF0IGxhZGRyIHNob3VsZCBiZSBz ZXQgdG8gdGhlIGxpbmstbG9jYWwKIAkJICogYWRkcmVzcyAodGhpcyBoYXBwZW5zIGluIFJJUG5n KSwgdGhlIG11bHRpY2FzdCBhZGRyZXNzCkBAIC0yNjksOCArMjg2LDkgQEAgdWRwNl9pbnB1dChz dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJICogaGVyZS4gIFdlIG5l ZWQgdWRwaGRyIGZvciBJUHNlYyBwcm9jZXNzaW5nIHNvIHdlIGRvIHRoYXQKIAkJICogbGF0ZXIu CiAJCSAqLworCQlwY2JsaXN0ID0gKG54dCA9PSBJUFBST1RPX1VEUCkgPyAmVl91ZGIgOiAmVl91 bGl0ZWNiOwogCQlsYXN0ID0gTlVMTDsKLQkJTElTVF9GT1JFQUNIKGlucCwgJlZfdWRiLCBpbnBf bGlzdCkgeworCQlMSVNUX0ZPUkVBQ0goaW5wLCBwY2JsaXN0LCBpbnBfbGlzdCkgewogCQkJaWYg KChpbnAtPmlucF92ZmxhZyAmIElOUF9JUFY2KSA9PSAwKQogCQkJCWNvbnRpbnVlOwogCQkJaWYg KGlucC0+aW5wX2xwb3J0ICE9IHVoLT51aF9kcG9ydCkKQEAgLTM3NSw3ICszOTMsNyBAQCB1ZHA2 X2lucHV0KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCQkJZ290byBi YWRoZWFkbG9ja2VkOwogCQl9CiAJCUlOUF9STE9DSyhsYXN0KTsKLQkJSU5QX0lORk9fUlVOTE9D SygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9fUlVOTE9DSyhwY2JpbmZvKTsKIAkJdXAgPSBpbnRv dWRwY2IobGFzdCk7CiAJCWlmICh1cC0+dV90dW5fZnVuYyA9PSBOVUxMKSB7CiAJCQl1ZHA2X2Fw cGVuZChsYXN0LCBtLCBvZmYsICZmcm9tc2EpOwpAQCAtNDA1LDggKzQyMyw4IEBAIHVkcDZfaW5w dXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCSAqIFRyYW5zcGFy ZW50bHkgZm9yd2FyZGVkLiBQcmV0ZW5kIHRvIGJlIHRoZSBkZXN0aW5hdGlvbi4KIAkJICogQWxy ZWFkeSBnb3Qgb25lIGxpa2UgdGhpcz8KIAkJICovCi0JCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1 ZigmVl91ZGJpbmZvLAotCQkgICAgJmlwNi0+aXA2X3NyYywgdWgtPnVoX3Nwb3J0LCAmaXA2LT5p cDZfZHN0LCB1aC0+dWhfZHBvcnQsCisJCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1ZihwY2JpbmZv LCAmaXA2LT5pcDZfc3JjLAorCQkgICAgdWgtPnVoX3Nwb3J0LCAmaXA2LT5pcDZfZHN0LCB1aC0+ dWhfZHBvcnQsCiAJCSAgICBJTlBMT09LVVBfUkxPQ0tQQ0IsIG0tPm1fcGt0aGRyLnJjdmlmLCBt KTsKIAkJaWYgKCFpbnApIHsKIAkJCS8qCkBAIC00MTQsNyArNDMyLDcgQEAgdWRwNl9pbnB1dChz dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJCSAqIEJlY2F1c2Ugd2Un dmUgcmV3cml0dGVuIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLAogCQkJICogYW55IGhhcmR3YXJl LWdlbmVyYXRlZCBoYXNoIGlzIGlnbm9yZWQuCiAJCQkgKi8KLQkJCWlucCA9IGluNl9wY2Jsb29r dXAoJlZfdWRiaW5mbywgJmlwNi0+aXA2X3NyYywKKwkJCWlucCA9IGluNl9wY2Jsb29rdXAocGNi aW5mbywgJmlwNi0+aXA2X3NyYywKIAkJCSAgICB1aC0+dWhfc3BvcnQsICZuZXh0X2hvcDYtPnNp bjZfYWRkciwKIAkJCSAgICBuZXh0X2hvcDYtPnNpbjZfcG9ydCA/IGh0b25zKG5leHRfaG9wNi0+ c2luNl9wb3J0KSA6CiAJCQkgICAgdWgtPnVoX2Rwb3J0LCBJTlBMT09LVVBfV0lMRENBUkQgfApA QCAtNDI0LDcgKzQ0Miw3IEBAIHVkcDZfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZw LCBpbnQgcHJvdG8pCiAJCW1fdGFnX2RlbGV0ZShtLCBmd2RfdGFnKTsKIAkJbS0+bV9mbGFncyAm PSB+TV9JUDZfTkVYVEhPUDsKIAl9IGVsc2UKLQkJaW5wID0gaW42X3BjYmxvb2t1cF9tYnVmKCZW X3VkYmluZm8sICZpcDYtPmlwNl9zcmMsCisJCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1ZihwY2Jp bmZvLCAmaXA2LT5pcDZfc3JjLAogCQkgICAgdWgtPnVoX3Nwb3J0LCAmaXA2LT5pcDZfZHN0LCB1 aC0+dWhfZHBvcnQsCiAJCSAgICBJTlBMT09LVVBfV0lMRENBUkQgfCBJTlBMT09LVVBfUkxPQ0tQ Q0IsCiAJCSAgICBtLT5tX3BrdGhkci5yY3ZpZiwgbSk7CkBAIC00NTQsNyArNDcyLDE0IEBAIHVk cDZfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCXJldHVy biAoSVBQUk9UT19ET05FKTsKIAl9CiAJSU5QX1JMT0NLX0FTU0VSVChpbnApOwotCXVwID0gaW50 b3VkcGNiKGlucCk7CisJaWYgKGNzY292X3BhcnRpYWwpIHsKKwkJdXAgPSBpbnRvdWRwY2IoaW5w KTsKKwkJaWYgKHVwLT51X3J4Y3NsZW4gPiB1bGVuKSB7CisJCQlJTlBfUlVOTE9DSyhpbnApOwor CQkJbV9mcmVlbShtKTsKKwkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKKwkJfQorCX0KIAlpZiAo dXAtPnVfdHVuX2Z1bmMgPT0gTlVMTCkgewogCQl1ZHA2X2FwcGVuZChpbnAsIG0sIG9mZiwgJmZy b21zYSk7CiAJfSBlbHNlIHsKQEAgLTQ2OCwxNSArNDkzLDE2IEBAIHVkcDZfaW5wdXQoc3RydWN0 IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJcmV0dXJuIChJUFBST1RPX0RPTkUp OwogCiBiYWRoZWFkbG9ja2VkOgotCUlOUF9JTkZPX1JVTkxPQ0soJlZfdWRiaW5mbyk7CisJSU5Q X0lORk9fUlVOTE9DSyhwY2JpbmZvKTsKIGJhZHVubG9ja2VkOgogCWlmIChtKQogCQltX2ZyZWVt KG0pOwogCXJldHVybiAoSVBQUk9UT19ET05FKTsKIH0KIAotdm9pZAotdWRwNl9jdGxpbnB1dChp bnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkKQorc3RhdGljIHZvaWQKK3VkcDZf Y29tbW9uX2N0bGlucHV0KGludCBjbWQsIHN0cnVjdCBzb2NrYWRkciAqc2EsIHZvaWQgKmQsCisg ICAgc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbykKIHsKIAlzdHJ1Y3QgdWRwaGRyIHVoOwogCXN0 cnVjdCBpcDZfaGRyICppcDY7CkBAIC01MzIsMTQgKzU1OCwyNiBAQCBiYWR1bmxvY2tlZDoKIAkJ Ynplcm8oJnVoLCBzaXplb2YodWgpKTsKIAkJbV9jb3B5ZGF0YShtLCBvZmYsIHNpemVvZigqdWhw KSwgKGNhZGRyX3QpJnVoKTsKIAotCQkodm9pZCkgaW42X3BjYm5vdGlmeSgmVl91ZGJpbmZvLCBz YSwgdWgudWhfZHBvcnQsCisJCSh2b2lkKSBpbjZfcGNibm90aWZ5KHBjYmluZm8sIHNhLCB1aC51 aF9kcG9ydCwKIAkJICAgIChzdHJ1Y3Qgc29ja2FkZHIgKilpcDZjcC0+aXA2Y19zcmMsIHVoLnVo X3Nwb3J0LCBjbWQsCiAJCSAgICBjbWRhcmcsIG5vdGlmeSk7CiAJfSBlbHNlCi0JCSh2b2lkKSBp bjZfcGNibm90aWZ5KCZWX3VkYmluZm8sIHNhLCAwLAorCQkodm9pZCkgaW42X3BjYm5vdGlmeShw Y2JpbmZvLCBzYSwgMCwKIAkJICAgIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilzYTZfc3JjLCAw LCBjbWQsIGNtZGFyZywgbm90aWZ5KTsKIH0KIAordm9pZAordWRwNl9jdGxpbnB1dChpbnQgY21k LCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkKQoreworCXJldHVybiAodWRwNl9jb21tb25f Y3RsaW5wdXQoY21kLCBzYSwgZCwgJlZfdWRiaW5mbykpOworfQorCit2b2lkCit1ZHBsaXRlNl9j dGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkKQoreworCXJldHVy biAodWRwNl9jb21tb25fY3RsaW5wdXQoY21kLCBzYSwgZCwgJlZfdWxpdGVjYmluZm8pKTsKK30K Kwogc3RhdGljIGludAogdWRwNl9nZXRjcmVkKFNZU0NUTF9IQU5ETEVSX0FSR1MpCiB7CkBAIC01 OTcsOSArNjM1LDEyIEBAIHVkcDZfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1 ZiAqbSwgc3RyCiAJc3RydWN0IGluNl9hZGRyICpsYWRkciwgKmZhZGRyLCBpbjZhOwogCXN0cnVj dCBzb2NrYWRkcl9pbjYgKnNpbjYgPSBOVUxMOwogCXN0cnVjdCBpZm5ldCAqb2lmcCA9IE5VTEw7 CisJaW50IGNzY292X3BhcnRpYWwgPSAwOwogCWludCBzY29wZV9hbWJpZ3VvdXMgPSAwOwogCXVf c2hvcnQgZnBvcnQ7CiAJaW50IGVycm9yID0gMDsKKwl1aW50OF90IG54dDsKKwl1aW50MTZfdCBj c2NvdiA9IDA7CiAJc3RydWN0IGlwNl9wa3RvcHRzICpvcHRwLCBvcHQ7CiAJaW50IGFmID0gQUZf SU5FVDYsIGhsZW4gPSBzaXplb2Yoc3RydWN0IGlwNl9oZHIpOwogCWludCBmbGFnczsKQEAgLTc1 NiwxMyArNzk3LDI5IEBAIHVkcDZfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1 ZiAqbSwgc3RyCiAJLyoKIAkgKiBTdHVmZiBjaGVja3N1bSBhbmQgb3V0cHV0IGRhdGFncmFtLgog CSAqLworCW54dCA9IElQUFJPVE9fVURQOwogCXVkcDYgPSAoc3RydWN0IHVkcGhkciAqKShtdG9k KG0sIGNhZGRyX3QpICsgaGxlbik7CiAJdWRwNi0+dWhfc3BvcnQgPSBpbnAtPmlucF9scG9ydDsg LyogbHBvcnQgaXMgYWx3YXlzIHNldCBpbiB0aGUgUENCICovCiAJdWRwNi0+dWhfZHBvcnQgPSBm cG9ydDsKLQlpZiAocGxlbiA8PSAweGZmZmYpCisJaWYgKGlucC0+aW5wX3NvY2tldC0+c29fcHJv dG8tPnByX3Byb3RvY29sID09IElQUFJPVE9fVURQTElURSkgeworCQlzdHJ1Y3QgdWRwY2IgKnVw OworCisJCW54dCA9IElQUFJPVE9fVURQTElURTsKKwkJdXAgPSBpbnRvdWRwY2IoaW5wKTsKKwkJ Y3Njb3YgPSB1cC0+dV90eGNzbGVuOworCQlpZiAoY3Njb3YgPj0gcGxlbikKKwkJCWNzY292ID0g MDsKKwkJdWRwNi0+dWhfdWxlbiA9IGh0b25zKGNzY292KTsKKworCQkvKiBGb3IgVURQTGl0ZSwg Y2hlY2tzdW0gY292ZXJhZ2UgbGVuZ3RoIG9mIHplcm8gbWVhbnMKKwkJICogdGhlIGVudGlyZSBV RFBMaXRlIHBhY2tldCBpcyBjb3ZlcmVkIGJ5IHRoZSBjaGVja3N1bS4KKwkJICovCisJCWNzY292 X3BhcnRpYWwgPSAoY3Njb3YgPT0gMCkgPyAwIDogMTsKKwl9IGVsc2UgaWYgKHBsZW4gPD0gMHhm ZmZmKQogCQl1ZHA2LT51aF91bGVuID0gaHRvbnMoKHVfc2hvcnQpcGxlbik7CiAJZWxzZQogCQl1 ZHA2LT51aF91bGVuID0gMDsKKwogCXVkcDYtPnVoX3N1bSA9IDA7CiAKIAlzd2l0Y2ggKGFmKSB7 CkBAIC03NzEsMTcgKzgyOCwyMiBAQCB1ZHA2X291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3Ry dWN0IG1idWYgKm0sIHN0cgogCQlpcDYtPmlwNl9mbG93CT0gaW5wLT5pbnBfZmxvdyAmIElQVjZf RkxPV0lORk9fTUFTSzsKIAkJaXA2LT5pcDZfdmZjCSY9IH5JUFY2X1ZFUlNJT05fTUFTSzsKIAkJ aXA2LT5pcDZfdmZjCXw9IElQVjZfVkVSU0lPTjsKLSNpZiAwCQkJCS8qIGlwNl9wbGVuIHdpbGwg YmUgZmlsbGVkIGluIGlwNl9vdXRwdXQuICovCi0JCWlwNi0+aXA2X3BsZW4JPSBodG9ucygodV9z aG9ydClwbGVuKTsKLSNlbmRpZgotCQlpcDYtPmlwNl9ueHQJPSBJUFBST1RPX1VEUDsKKwkJaWYg KG54dCA9PSBJUFBST1RPX1VEUExJVEUpCisJCQlpcDYtPmlwNl9wbGVuID0gaHRvbnMoKHVfc2hv cnQpcGxlbik7CisJCWlwNi0+aXA2X254dAk9IG54dDsKIAkJaXA2LT5pcDZfaGxpbQk9IGluNl9z ZWxlY3RobGltKGlucCwgTlVMTCk7CiAJCWlwNi0+aXA2X3NyYwk9ICpsYWRkcjsKIAkJaXA2LT5p cDZfZHN0CT0gKmZhZGRyOwogCi0JCXVkcDYtPnVoX3N1bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2 LCBwbGVuLCBJUFBST1RPX1VEUCwgMCk7Ci0JCW0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgPSBDU1VN X1VEUF9JUFY2OwotCQltLT5tX3BrdGhkci5jc3VtX2RhdGEgPSBvZmZzZXRvZihzdHJ1Y3QgdWRw aGRyLCB1aF9zdW0pOworCQlpZiAoY3Njb3ZfcGFydGlhbCkgeworCQkJaWYgKCh1ZHA2LT51aF9z dW0gPSBpbjZfY2tzdW0obSwgMCwKKwkJCSAgICBzaXplb2Yoc3RydWN0IGlwNl9oZHIpLCBjc2Nv dikpID09IDApCisJCQkJdWRwNi0+dWhfc3VtID0gMHhmZmZmOworCQl9IGVsc2UgeworCQkJdWRw Ni0+dWhfc3VtID0gaW42X2Nrc3VtX3BzZXVkbyhpcDYsIHBsZW4sIG54dCwgMCk7CisJCQltLT5t X3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9VRFBfSVBWNjsKKwkJCW0tPm1fcGt0aGRyLmNzdW1f ZGF0YSA9IG9mZnNldG9mKHN0cnVjdCB1ZHBoZHIsIHVoX3N1bSk7CisJCX0KIAogCQlmbGFncyA9 IDA7CiAKQEAgLTgyNiwxMCArODg4LDEwIEBAIHVkcDZfYWJvcnQoc3RydWN0IHNvY2tldCAqc28p CiAKIAlJTlBfV0xPQ0soaW5wKTsKIAlpZiAoIUlONl9JU19BRERSX1VOU1BFQ0lGSUVEKCZpbnAt PmluNnBfZmFkZHIpKSB7Ci0JCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT SF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAkJaW42X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAkJ aW5wLT5pbjZwX2xhZGRyID0gaW42YWRkcl9hbnk7Ci0JCUlOUF9IQVNIX1dVTkxPQ0soJlZfdWRi aW5mbyk7CisJCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCXNvaXNkaXNj b25uZWN0ZWQoc28pOwogCX0KIAlJTlBfV1VOTE9DSyhpbnApOwpAQCAtODM5LDggKzkwMSwxMyBA QCBzdGF0aWMgaW50CiB1ZHA2X2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCBz dHJ1Y3QgdGhyZWFkICp0ZCkKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKKwlzdHJ1Y3QgaW5wY2Jp bmZvICpwY2JpbmZvOwogCWludCBlcnJvcjsKIAorCWlmIChzby0+c29fcHJvdG8tPnByX3Byb3Rv Y29sID09IElQUFJPVE9fVURQKQorCQlwY2JpbmZvID0gJlZfdWRiaW5mbzsKKwkgZWxzZQorCQlw Y2JpbmZvID0gJlZfdWxpdGVjYmluZm87CiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJU KGlucCA9PSBOVUxMLCAoInVkcDZfYXR0YWNoOiBpbnAgIT0gTlVMTCIpKTsKIApAQCAtODQ5LDEw ICs5MTYsMTAgQEAgdWRwNl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3Ry dWN0IHQKIAkJaWYgKGVycm9yKQogCQkJcmV0dXJuIChlcnJvcik7CiAJfQotCUlOUF9JTkZPX1dM T0NLKCZWX3VkYmluZm8pOwotCWVycm9yID0gaW5fcGNiYWxsb2Moc28sICZWX3VkYmluZm8pOwor CUlOUF9JTkZPX1dMT0NLKHBjYmluZm8pOworCWVycm9yID0gaW5fcGNiYWxsb2Moc28sIHBjYmlu Zm8pOwogCWlmIChlcnJvcikgewotCQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJ TlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm4gKGVycm9yKTsKIAl9CiAJaW5wID0g KHN0cnVjdCBpbnBjYiAqKXNvLT5zb19wY2I7CkBAIC04NzMsMTEgKzk0MCwxMSBAQCB1ZHA2X2F0 dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCBzdHJ1Y3QgdAogCWlmIChlcnJvcikg ewogCQlpbl9wY2JkZXRhY2goaW5wKTsKIAkJaW5fcGNiZnJlZShpbnApOwotCQlJTlBfSU5GT19X VU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1 cm4gKGVycm9yKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZW X3VkYmluZm8pOworCUlOUF9JTkZPX1dVTkxPQ0socGNiaW5mbyk7CiAJcmV0dXJuICgwKTsKIH0K IApAQCAtODkxLDcgKzk1OCw3IEBAIHVkcDZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0 IHNvY2thZGRyICpuYW0sCiAJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCJ1ZHA2X2JpbmQ6IGlucCA9 PSBOVUxMIikpOwogCiAJSU5QX1dMT0NLKGlucCk7Ci0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5m byk7CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaW5wLT5pbnBfdmZsYWcg Jj0gfklOUF9JUFY0OwogCWlucC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY2OwogCWlmICgoaW5wLT5p bnBfZmxhZ3MgJiBJTjZQX0lQVjZfVjZPTkxZKSA9PSAwKSB7CkBAIC05MTksNyArOTg2LDcgQEAg dWRwNl9iaW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwKICNpZmRl ZiBJTkVUCiBvdXQ6CiAjZW5kaWYKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCUlO UF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJSU5QX1dVTkxPQ0soaW5wKTsKIAly ZXR1cm4gKGVycm9yKTsKIH0KQEAgLTk0MywxMCArMTAxMCwxMCBAQCB1ZHA2X2Nsb3NlKHN0cnVj dCBzb2NrZXQgKnNvKQogI2VuZGlmCiAJSU5QX1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQURE Ul9VTlNQRUNJRklFRCgmaW5wLT5pbjZwX2ZhZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91 ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2Jk aXNjb25uZWN0KGlucCk7CiAJCWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBf SEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3Bj YmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsK QEAgLTk4NSwxMCArMTA1MiwxMCBAQCB1ZHA2X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0 cnVjdCBzb2NrYWRkciAqbgogCQllcnJvciA9IHByaXNvbl9yZW1vdGVfaXA0KHRkLT50ZF91Y3Jl ZCwgJnNpbi5zaW5fYWRkcik7CiAJCWlmIChlcnJvciAhPSAwKQogCQkJZ290byBvdXQ7Ci0JCUlO UF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2Jp bmZvKTsKIAkJZXJyb3IgPSBpbl9wY2Jjb25uZWN0KGlucCwgKHN0cnVjdCBzb2NrYWRkciAqKSZz aW4sCiAJCSAgICB0ZC0+dGRfdWNyZWQpOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8p OworCQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlpZiAoZXJyb3IgPT0g MCkKIAkJCXNvaXNjb25uZWN0ZWQoc28pOwogCQlnb3RvIG91dDsKQEAgLTEwMDMsOSArMTA3MCw5 IEBAIHVkcDZfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuCiAJ ZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNih0ZC0+dGRfdWNyZWQsICZzaW42LT5zaW42X2FkZHIp OwogCWlmIChlcnJvciAhPSAwKQogCQlnb3RvIG91dDsKLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJp bmZvKTsKKwlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAllcnJvciA9IGluNl9w Y2Jjb25uZWN0KGlucCwgbmFtLCB0ZC0+dGRfdWNyZWQpOwotCUlOUF9IQVNIX1dVTkxPQ0soJlZf dWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlpZiAoZXJy b3IgPT0gMCkKIAkJc29pc2Nvbm5lY3RlZChzbyk7CiBvdXQ6CkBAIC0xMDE4LDE4ICsxMDg1LDIx IEBAIHVkcDZfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogewogCXN0cnVjdCBpbnBjYiAqaW5w OwogCXN0cnVjdCB1ZHBjYiAqdXA7CisJaW50IGlzdWRwOwogCisJaXN1ZHAgPSAoc28tPnNvX3By b3RvLT5wcl9wcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgPyAxIDogMDsKKwogCWlucCA9IHNvdG9p bnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCJ1ZHA2X2RldGFjaDogaW5wID09IE5V TEwiKSk7CiAKLQlJTlBfSU5GT19XTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSU5GT19XTE9DSyhp bnAtPmlucF9wY2JpbmZvKTsKIAlJTlBfV0xPQ0soaW5wKTsKIAl1cCA9IGludG91ZHBjYihpbnAp OwogCUtBU1NFUlQodXAgIT0gTlVMTCwgKCIlczogdXAgPT0gTlVMTCIsIF9fZnVuY19fKSk7CiAJ aW5fcGNiZGV0YWNoKGlucCk7CiAJaW5fcGNiZnJlZShpbnApOwotCUlOUF9JTkZPX1dVTkxPQ0so JlZfdWRiaW5mbyk7Ci0JdWRwX2Rpc2NhcmRjYih1cCk7CisJSU5QX0lORk9fV1VOTE9DSyhpbnAt PmlucF9wY2JpbmZvKTsKKwl1ZHBfZGlzY2FyZGNiKHVwLCBpc3VkcCk7CiB9CiAKIHN0YXRpYyBp bnQKQEAgLTEwNTgsMTAgKzExMjgsMTAgQEAgdWRwNl9kaXNjb25uZWN0KHN0cnVjdCBzb2NrZXQg KnNvKQogCQlnb3RvIG91dDsKIAl9CiAKLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwlJ TlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlpbjZfcGNiZGlzY29ubmVjdChpbnAp OwogCWlucC0+aW42cF9sYWRkciA9IGluNmFkZHJfYW55OwotCUlOUF9IQVNIX1dVTkxPQ0soJlZf dWRiaW5mbyk7CisJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAlTT0NLX0xP Q0soc28pOwogCXNvLT5zb19zdGF0ZSAmPSB+U1NfSVNDT05ORUNURUQ7CQkvKiBYWFggKi8KIAlT T0NLX1VOTE9DSyhzbyk7CkBAIC0xMTI4LDkgKzExOTgsOSBAQCB1ZHA2X3NlbmQoc3RydWN0IHNv Y2tldCAqc28sIGludCBmbGFncywgc3RydWN0IG1idQogI2lmZGVmIE1BQwogCW1hY19pbnBjYl9j cmVhdGVfbWJ1ZihpbnAsIG0pOwogI2VuZGlmCi0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7 CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJZXJyb3IgPSB1ZHA2X291dHB1 dChpbnAsIG0sIGFkZHIsIGNvbnRyb2wsIHRkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmlu Zm8pOworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAjaWZkZWYgSU5FVAog I2VuZGlmCQogCUlOUF9XVU5MT0NLKGlucCk7CkluZGV4OiBzeXMvbmV0aW5ldDYvdWRwNl92YXIu aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvdWRwNl92YXIuaAkocmV2aXNpb24gMjQ4ODEx KQorKysgc3lzL25ldGluZXQ2L3VkcDZfdmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5 LDcgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0Nl91ZHA2KTsKIGV4dGVybiBzdHJ1Y3QgcHJfdXNy cmVxcwl1ZHA2X3VzcnJlcXM7CiAKIHZvaWQJdWRwNl9jdGxpbnB1dChpbnQsIHN0cnVjdCBzb2Nr YWRkciAqLCB2b2lkICopOwordm9pZAl1ZHBsaXRlNl9jdGxpbnB1dChpbnQsIHN0cnVjdCBzb2Nr YWRkciAqLCB2b2lkICopOwogaW50CXVkcDZfaW5wdXQoc3RydWN0IG1idWYgKiosIGludCAqLCBp bnQpOwogI2VuZGlmCiAK --047d7b5d58b4c09aa004f4c73c6e Content-Type: text/plain; charset=US-ASCII; name="udplite.diff" Content-Disposition: attachment; filename="udplite.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hsvl7cvo2 SW5kZXg6IGxpYi9saWJjL25ldC9nZXRhZGRyaW5mby5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9saWJj L25ldC9nZXRhZGRyaW5mby5jCShyZXZpc2lvbiAyNDg0NTgpCisrKyBsaWIvbGliYy9uZXQvZ2V0 YWRkcmluZm8uYwkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEyICsxNzAsMTQgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBleHBsb3JlIGV4cGxvcmVbXSA9IHsKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVB TSwgSVBQUk9UT19UQ1AsIDB4MDcgfSwKIAl7IFBGX0lORVQ2LCBTT0NLX1NUUkVBTSwgSVBQUk9U T19TQ1RQLCAweDAzIH0sCiAJeyBQRl9JTkVUNiwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9fU0NU UCwgMHgwNyB9LAorCXsgUEZfSU5FVDYsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQTElURSwgMHgw MyB9LAogCXsgUEZfSU5FVDYsIFNPQ0tfUkFXLCBBTlksIDB4MDUgfSwKICNlbmRpZgogCXsgUEZf SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFAsIDB4MDcgfSwKIAl7IFBGX0lORVQsIFNPQ0tf U1RSRUFNLCBJUFBST1RPX1RDUCwgMHgwNyB9LAogCXsgUEZfSU5FVCwgU09DS19TVFJFQU0sIElQ UFJPVE9fU0NUUCwgMHgwMyB9LAogCXsgUEZfSU5FVCwgU09DS19TRVFQQUNLRVQsIElQUFJPVE9f U0NUUCwgMHgwNyB9LAorCXsgUEZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFBMSVRFLCAw eDAzIH0sCiAJeyBQRl9JTkVULCBTT0NLX1JBVywgQU5ZLCAweDA1IH0sCiAJeyAtMSwgMCwgMCwg MCB9LAogfTsKQEAgLTE0NzYsNiArMTQ3OCw5IEBAIGdldF9wb3J0KHN0cnVjdCBhZGRyaW5mbyAq YWksIGNvbnN0IGNoYXIgKnNlcnZuYW1lCiAJCWNhc2UgSVBQUk9UT19TQ1RQOgogCQkJcHJvdG8g PSAic2N0cCI7CiAJCQlicmVhazsKKwkJY2FzZSBJUFBST1RPX1VEUExJVEU6CisJCQlwcm90byA9 ICJ1ZHBsaXRlIjsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJcHJvdG8gPSBOVUxMOwogCQkJ YnJlYWs7CkluZGV4OiBzeXMvbmV0aW5ldC9pbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0 L2luLmMJKHJldmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0L2luLmMJKHdvcmtpbmcgY29w eSkKQEAgLTEyMDUsNiArMTIwNSw3IEBAIGluX2lmZGV0YWNoKHN0cnVjdCBpZm5ldCAqaWZwKQog CiAJaW5fcGNicHVyZ2VpZjAoJlZfcmlwY2JpbmZvLCBpZnApOwogCWluX3BjYnB1cmdlaWYwKCZW X3VkYmluZm8sIGlmcCk7CisJaW5fcGNicHVyZ2VpZjAoJlZfdWxpdGVjYmluZm8sIGlmcCk7CiAJ aW5fcHVyZ2VtYWRkcnMoaWZwKTsKIH0KIApJbmRleDogc3lzL25ldGluZXQvaW4uaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzeXMvbmV0aW5ldC9pbi5oCShyZXZpc2lvbiAyNDg0NTgpCisrKyBzeXMvbmV0aW5l dC9pbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNiArMjM3LDcgQEAgX19FTkRfREVDTFMKICNk ZWZpbmUJSVBQUk9UT19JUENPTVAJCTEwOAkJLyogcGF5bG9hZCBjb21wcmVzc2lvbiAoSVBDb21w KSAqLwogI2RlZmluZQlJUFBST1RPX1NDVFAJCTEzMgkJLyogU0NUUCAqLwogI2RlZmluZQlJUFBS T1RPX01ICQkxMzUJCS8qIElQdjYgTW9iaWxpdHkgSGVhZGVyICovCisjZGVmaW5lCUlQUFJPVE9f VURQTElURQkJMTM2CQkvKiBVRFBMaXRlICovCiAvKiAxMDEtMjU0OiBQYXJ0bHkgVW5hc3NpZ25l ZCAqLwogI2RlZmluZQlJUFBST1RPX1BJTQkJMTAzCQkvKiBQcm90b2NvbCBJbmRlcGVuZGVudCBN Y2FzdCAqLwogI2RlZmluZQlJUFBST1RPX0NBUlAJCTExMgkJLyogQ0FSUCAqLwpJbmRleDogc3lz L25ldGluZXQvaW5fcGNiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQvaW5fcGNiLmMJKHJl dmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0L2luX3BjYi5jCSh3b3JraW5nIGNvcHkpCkBA IC0zOTAsMTMgKzM5MCwxNCBAQCBpbl9wY2JfbHBvcnQoc3RydWN0IGlucGNiICppbnAsIHN0cnVj dCBpbl9hZGRyICpsYQogCQlsYXN0cG9ydCA9ICZwY2JpbmZvLT5pcGlfbGFzdHBvcnQ7CiAJfQog CS8qCi0JICogRm9yIFVEUCwgdXNlIHJhbmRvbSBwb3J0IGFsbG9jYXRpb24gYXMgbG9uZyBhcyB0 aGUgdXNlcgorCSAqIEZvciBVRFAoLUxpdGUpLCB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBh cyBsb25nIGFzIHRoZSB1c2VyCiAJICogYWxsb3dzIGl0LiAgRm9yIFRDUCAoYW5kIGFzIG9mIHll dCB1bmtub3duKSBjb25uZWN0aW9ucywKIAkgKiB1c2UgcmFuZG9tIHBvcnQgYWxsb2NhdGlvbiBv bmx5IGlmIHRoZSB1c2VyIGFsbG93cyBpdCBBTkQKIAkgKiBpcHBvcnRfdGljaygpIGFsbG93cyBp dC4KIAkgKi8KIAlpZiAoVl9pcHBvcnRfcmFuZG9taXplZCAmJgotCQkoIVZfaXBwb3J0X3N0b3By YW5kb20gfHwgcGNiaW5mbyA9PSAmVl91ZGJpbmZvKSkKKwkJKCFWX2lwcG9ydF9zdG9wcmFuZG9t IHx8IHBjYmluZm8gPT0gJlZfdWRiaW5mbyB8fAorCQlwY2JpbmZvID09ICZWX3VsaXRlY2JpbmZv KSkKIAkJZG9yYW5kb20gPSAxOwogCWVsc2UKIAkJZG9yYW5kb20gPSAwOwpAQCAtNDA2LDggKzQw Nyw4IEBAIGluX3BjYl9scG9ydChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IGluX2FkZHIgKmxh CiAJICovCiAJaWYgKGZpcnN0ID09IGxhc3QpCiAJCWRvcmFuZG9tID0gMDsKLQkvKiBNYWtlIHN1 cmUgdG8gbm90IGluY2x1ZGUgVURQIHBhY2tldHMgaW4gdGhlIGNvdW50LiAqLwotCWlmIChwY2Jp bmZvICE9ICZWX3VkYmluZm8pCisJLyogTWFrZSBzdXJlIHRvIG5vdCBpbmNsdWRlIFVEUCgtTGl0 ZSkgcGFja2V0cyBpbiB0aGUgY291bnQuICovCisJaWYgKHBjYmluZm8gIT0gJlZfdWRiaW5mbyB8 fCBwY2JpbmZvICE9ICZWX3VsaXRlY2JpbmZvKQogCQlWX2lwcG9ydF90Y3BhbGxvY3MrKzsKIAkv KgogCSAqIEluc3RlYWQgb2YgaGF2aW5nIHR3byBsb29wcyBmdXJ0aGVyIGRvd24gY291bnRpbmcg dXAgb3IgZG93bgpJbmRleDogc3lzL25ldGluZXQvaW5fcHJvdG8uYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz eXMvbmV0aW5ldC9pbl9wcm90by5jCShyZXZpc2lvbiAyNDg0NTgpCisrKyBzeXMvbmV0aW5ldC9p bl9wcm90by5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDIwIEBAIHN0cnVjdCBwcm90 b3N3IGluZXRzd1tdID0gewogfSwKICNlbmRpZiAvKiBTQ1RQICovCiB7CisJLnByX3R5cGUgPQkJ U09DS19ER1JBTSwKKwkucHJfZG9tYWluID0JCSZpbmV0ZG9tYWluLAorCS5wcl9wcm90b2NvbCA9 CQlJUFBST1RPX1VEUExJVEUsCisJLnByX2ZsYWdzID0JCVBSX0FUT01JQ3xQUl9BRERSLAorCS5w cl9pbnB1dCA9CQl1ZHBfaW5wdXQsCisJLnByX2N0bGlucHV0ID0JCXVkcGxpdGVfY3RsaW5wdXQs CisJLnByX2N0bG91dHB1dCA9CQl1ZHBfY3Rsb3V0cHV0LAorCS5wcl9pbml0ID0JCXVkcGxpdGVf aW5pdCwKKyNpZmRlZiBWSU1BR0UKKwkucHJfZGVzdHJveSA9CQl1ZHBsaXRlX2Rlc3Ryb3ksCisj ZW5kaWYKKwkucHJfdXNycmVxcyA9CQkmdWRwX3VzcnJlcXMKK30sCit7CiAJLnByX3R5cGUgPQkJ U09DS19SQVcsCiAJLnByX2RvbWFpbiA9CQkmaW5ldGRvbWFpbiwKIAkucHJfcHJvdG9jb2wgPQkJ SVBQUk9UT19SQVcsCkBAIC0zNzAsNiArMzg0LDcgQEAgU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJ UFBST1RPX1RDUCwJdGNwLAlDVExGTEFHX1IKICNpZmRlZiBTQ1RQCiBTWVNDVExfTk9ERShfbmV0 X2luZXQsIElQUFJPVE9fU0NUUCwJc2N0cCwJQ1RMRkxBR19SVywgMCwJIlNDVFAiKTsKICNlbmRp ZgorU1lTQ1RMX05PREUoX25ldF9pbmV0LCBJUFBST1RPX1VEUExJVEUsCXVkcGxpdGUsQ1RMRkxB R19SVywgMCwJIlVEUExpdGUiKTsKIFNZU0NUTF9OT0RFKF9uZXRfaW5ldCwgSVBQUk9UT19JR01Q LAlpZ21wLAlDVExGTEFHX1JXLCAwLAkiSUdNUCIpOwogI2lmZGVmIElQU0VDCiAvKiBYWFggbm8g cHJvdG9jb2wgIyB0byB1c2UsIHBpY2sgc29tZXRoaW5nICJyZXNlcnZlZCIgKi8KSW5kZXg6IHN5 cy9uZXRpbmV0L3VkcF91c3JyZXEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldC91ZHBfdXNy cmVxLmMJKHJldmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0L3VkcF91c3JyZXEuYwkod29y a2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjZW5k aWYKICNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5o PgorI2luY2x1ZGUgPG5ldGluZXQvdWRwbGl0ZS5oPgogCiAjaWZkZWYgSVBTRUMKICNpbmNsdWRl IDxuZXRpcHNlYy9pcHNlYy5oPgpAQCAtMTMxLDEzICsxMzIsMTggQEAgdV9sb25nCXVkcF9yZWN2 c3BhY2UgPSA0MCAqICgxMDI0ICsKICNlbmRpZgogCQkJCSAgICAgICk7CiAKKwogU1lTQ1RMX1VM T05HKF9uZXRfaW5ldF91ZHAsIFVEUENUTF9SRUNWU1BBQ0UsIHJlY3ZzcGFjZSwgQ1RMRkxBR19S VywKICAgICAmdWRwX3JlY3ZzcGFjZSwgMCwgIk1heGltdW0gc3BhY2UgZm9yIGluY29taW5nIFVE UCBkYXRhZ3JhbXMiKTsKIAogVk5FVF9ERUZJTkUoc3RydWN0IGlucGNiaGVhZCwgdWRiKTsJCS8q IGZyb20gdWRwX3Zhci5oICovCiBWTkVUX0RFRklORShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZv KTsKK1ZORVRfREVGSU5FKHN0cnVjdCBpbnBjYmhlYWQsIHVsaXRlY2IpOworVk5FVF9ERUZJTkUo c3RydWN0IGlucGNiaW5mbywgdWxpdGVjYmluZm8pOwogc3RhdGljIFZORVRfREVGSU5FKHVtYV96 b25lX3QsIHVkcGNiX3pvbmUpOwotI2RlZmluZQlWX3VkcGNiX3pvbmUJCQlWTkVUKHVkcGNiX3pv bmUpCitzdGF0aWMgVk5FVF9ERUZJTkUodW1hX3pvbmVfdCwgdWRwbGl0ZWNiX3pvbmUpOworI2Rl ZmluZQlWX3VkcGNiX3pvbmUJCVZORVQodWRwY2Jfem9uZSkKKyNkZWZpbmUJVl91ZHBsaXRlY2Jf em9uZQlWTkVUKHVkcGxpdGVjYl96b25lKQogCiAjaWZuZGVmIFVEQkhBU0hTSVpFCiAjZGVmaW5l CVVEQkhBU0hTSVpFCTEyOApAQCAtMTcxLDYgKzE3NywxNCBAQCB1ZHBfem9uZV9jaGFuZ2Uodm9p ZCAqdGFnKQogCXVtYV96b25lX3NldF9tYXgoVl91ZHBjYl96b25lLCBtYXhzb2NrZXRzKTsKIH0K IAorc3RhdGljIHZvaWQKK3VkcGxpdGVfem9uZV9jaGFuZ2Uodm9pZCAqdGFnKQoreworCisJdW1h X3pvbmVfc2V0X21heChWX3VsaXRlY2JpbmZvLmlwaV96b25lLCBtYXhzb2NrZXRzKTsKKwl1bWFf em9uZV9zZXRfbWF4KFZfdWRwbGl0ZWNiX3pvbmUsIG1heHNvY2tldHMpOworfQorCiBzdGF0aWMg aW50CiB1ZHBfaW5wY2JfaW5pdCh2b2lkICptZW0sIGludCBzaXplLCBpbnQgZmxhZ3MpCiB7CkBA IC0xODEsNiArMTk1LDE2IEBAIHVkcF9pbnBjYl9pbml0KHZvaWQgKm1lbSwgaW50IHNpemUsIGlu dCBmbGFncykKIAlyZXR1cm4gKDApOwogfQogCitzdGF0aWMgaW50Cit1ZHBsaXRlX2lucGNiX2lu aXQodm9pZCAqbWVtLCBpbnQgc2l6ZSwgaW50IGZsYWdzKQoreworCXN0cnVjdCBpbnBjYiAqaW5w OworCisJaW5wID0gbWVtOworCUlOUF9MT0NLX0lOSVQoaW5wLCAiaW5wIiwgInVkcGxpdGVpbnAi KTsKKwlyZXR1cm4gKDApOworfQorCiB2b2lkCiB1ZHBfaW5pdCh2b2lkKQogewpAQCAtMTk2LDYg KzIyMCwyMiBAQCB1ZHBfaW5pdCh2b2lkKQogCSAgICBFVkVOVEhBTkRMRVJfUFJJX0FOWSk7CiB9 CiAKK3ZvaWQKK3VkcGxpdGVfaW5pdCh2b2lkKQoreworCisJaW5fcGNiaW5mb19pbml0KCZWX3Vs aXRlY2JpbmZvLCAidWRwbGl0ZSIsICZWX3VsaXRlY2IsIFVEQkhBU0hTSVpFLAorCSAgICBVREJI QVNIU0laRSwgInVkcGxpdGVfaW5wY2IiLCB1ZHBsaXRlX2lucGNiX2luaXQsIE5VTEwsCisJICAg IFVNQV9aT05FX05PRlJFRSwgSVBJX0hBU0hGSUVMRFNfMlRVUExFKTsKKwlWX3VkcGxpdGVjYl96 b25lID0gdW1hX3pjcmVhdGUoInVkcGxpdGVjYiIsIHNpemVvZihzdHJ1Y3QgdWRwY2IpLAorCSAg ICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBVTUFfQUxJR05fUFRSLCBVTUFfWk9ORV9OT0ZSRUUp OworCXVtYV96b25lX3NldF9tYXgoVl91ZHBsaXRlY2Jfem9uZSwgbWF4c29ja2V0cyk7CisJdW1h X3pvbmVfc2V0X3dhcm5pbmcoVl91ZHBsaXRlY2Jfem9uZSwKKwkgICAgImtlcm4uaXBjLm1heHNv Y2tldHMgbGltaXQgcmVhY2hlZCIpOworCUVWRU5USEFORExFUl9SRUdJU1RFUihtYXhzb2NrZXRz X2NoYW5nZSwgdWRwbGl0ZV96b25lX2NoYW5nZSwgTlVMTCwKKwkgICAgRVZFTlRIQU5ETEVSX1BS SV9BTlkpOworfQorCiAvKgogICogS2VybmVsIG1vZHVsZSBpbnRlcmZhY2UgZm9yIHVwZGF0aW5n IHVkcHN0YXQuICBUaGUgYXJndW1lbnQgaXMgYW4gaW5kZXgKICAqIGludG8gdWRwc3RhdCB0cmVh dGVkIGFzIGFuIGFycmF5IG9mIHVfbG9uZy4gIFdoaWxlIHRoaXMgZW5jb2RlcyB0aGUKQEAgLTIx NSw3ICsyNTUsMTAgQEAgdWRwX25ld3VkcGNiKHN0cnVjdCBpbnBjYiAqaW5wKQogewogCXN0cnVj dCB1ZHBjYiAqdXA7CiAKLQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96b25lLCBNX05PV0FJVCB8 IE1fWkVSTyk7CisJaWYgKGlucC0+aW5wX3NvY2tldC0+c29fcHJvdG8tPnByX3Byb3RvY29sID09 IElQUFJPVE9fVURQKQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBjYl96b25lLCBNX05PV0FJVCB8 IE1fWkVSTyk7CisJZWxzZQorCQl1cCA9IHVtYV96YWxsb2MoVl91ZHBsaXRlY2Jfem9uZSwgTV9O T1dBSVQgfCBNX1pFUk8pOwogCWlmICh1cCA9PSBOVUxMKQogCQlyZXR1cm4gKEVOT0JVRlMpOwog CWlucC0+aW5wX3BwY2IgPSB1cDsKQEAgLTIyMywxMCArMjY2LDEyIEBAIHVkcF9uZXd1ZHBjYihz dHJ1Y3QgaW5wY2IgKmlucCkKIH0KIAogdm9pZAotdWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2Ig KnVwKQordWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKnVwLCBpbnQgaXN1ZHApCiB7Ci0KLQl1 bWFfemZyZWUoVl91ZHBjYl96b25lLCB1cCk7CisJaWYgKGlzdWRwKQorCQl1bWFfemZyZWUoVl91 ZHBjYl96b25lLCB1cCk7CisJZWxzZQorCQl1bWFfemZyZWUoVl91ZHBsaXRlY2Jfem9uZSwgdXAp OwogfQogCiAjaWZkZWYgVklNQUdFCkBAIC0yMzcsNiArMjgyLDE0IEBAIHVkcF9kZXN0cm95KHZv aWQpCiAJaW5fcGNiaW5mb19kZXN0cm95KCZWX3VkYmluZm8pOwogCXVtYV96ZGVzdHJveShWX3Vk cGNiX3pvbmUpOwogfQorCit2b2lkCit1ZHBsaXRlX2Rlc3Ryb3kodm9pZCkKK3sKKworCWluX3Bj YmluZm9fZGVzdHJveSgmVl91bGl0ZWNiaW5mbyk7CisJdW1hX3pkZXN0cm95KFZfdWRwbGl0ZWNi X3pvbmUpOworfQogI2VuZGlmCiAKICNpZmRlZiBJTkVUCkBAIC0zMzksMTAgKzM5MiwxMyBAQCB1 ZHBfaW5wdXQoc3RydWN0IG1idWYgKm0sIGludCBvZmYpCiAJc3RydWN0IHVkcGhkciAqdWg7CiAJ c3RydWN0IGlmbmV0ICppZnA7CiAJc3RydWN0IGlucGNiICppbnA7CisJc3RydWN0IGlucGNiaW5m byAqcGNiaW5mbzsKIAl1aW50MTZfdCBsZW4sIGlwX2xlbjsKIAlzdHJ1Y3QgaXAgc2F2ZV9pcDsK IAlzdHJ1Y3Qgc29ja2FkZHJfaW4gdWRwX2luOwogCXN0cnVjdCBtX3RhZyAqZndkX3RhZzsKKwlp bnQgY3Njb3ZfcGFydGlhbDsKKwl1aW50OF90IHByOwogCiAJaWZwID0gbS0+bV9wa3RoZHIucmN2 aWY7CiAJVURQU1RBVF9JTkModWRwc19pcGFja2V0cyk7CkBAIC0zNjksNyArNDI1LDggQEAgdWRw X2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCQlpcCA9IG10b2QobSwgc3RydWN0IGlw ICopOwogCX0KIAl1aCA9IChzdHJ1Y3QgdWRwaGRyICopKChjYWRkcl90KWlwICsgaXBobGVuKTsK LQorCXByID0gaXAtPmlwX3A7CisJY3Njb3ZfcGFydGlhbCA9IChwciA9PSBJUFBST1RPX1VEUExJ VEUpID8gMSA6IDA7CiAJLyoKIAkgKiBEZXN0aW5hdGlvbiBwb3J0IG9mIDAgaXMgaWxsZWdhbCwg YmFzZWQgb24gUkZDNzY4LgogCSAqLwpAQCAtMzkyLDEyICs0NDksMTkgQEAgdWRwX2lucHV0KHN0 cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCSAqLwogCWxlbiA9IG50b2hzKCh1X3Nob3J0KXVoLT51 aF91bGVuKTsKIAlpcF9sZW4gPSBudG9ocyhpcC0+aXBfbGVuKSAtIGlwaGxlbjsKKwlpZiAocHIg PT0gSVBQUk9UT19VRFBMSVRFICYmIGxlbiA9PSAwKSB7CisJCS8qIFplcm8gbWVhbnMgY2hlY2tz dW0gb3ZlciB0aGUgY29tcGxldGUgcGFja2V0LiAqLworCQlsZW4gPSBpcF9sZW47CisJCWNzY292 X3BhcnRpYWwgPSAwOworCX0KKwogCWlmIChpcF9sZW4gIT0gbGVuKSB7CiAJCWlmIChsZW4gPiBp cF9sZW4gfHwgbGVuIDwgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKSB7CiAJCQlVRFBTVEFUX0lOQyh1 ZHBzX2JhZGxlbik7CiAJCQlnb3RvIGJhZHVubG9ja2VkOwogCQl9Ci0JCW1fYWRqKG0sIGxlbiAt IGlwX2xlbik7CisJCWlmIChwciA9PSBJUFBST1RPX1VEUCkKKwkJCW1fYWRqKG0sIGxlbiAtIGlw X2xlbik7CiAJfQogCiAJLyoKQEAgLTQxNSwyMCArNDc5LDI0IEBAIHVkcF9pbnB1dChzdHJ1Y3Qg bWJ1ZiAqbSwgaW50IG9mZikKIAlpZiAodWgtPnVoX3N1bSkgewogCQl1X3Nob3J0IHVoX3N1bTsK IAotCQlpZiAobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fREFUQV9WQUxJRCkgeworCQlp ZiAoKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX0RBVEFfVkFMSUQpICYmCisJCSAgICAh Y3Njb3ZfcGFydGlhbCkgewogCQkJaWYgKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1BT RVVET19IRFIpCiAJCQkJdWhfc3VtID0gbS0+bV9wa3RoZHIuY3N1bV9kYXRhOwogCQkJZWxzZQog CQkJCXVoX3N1bSA9IGluX3BzZXVkbyhpcC0+aXBfc3JjLnNfYWRkciwKIAkJCQkgICAgaXAtPmlw X2RzdC5zX2FkZHIsIGh0b25sKCh1X3Nob3J0KWxlbiArCi0JCQkJICAgIG0tPm1fcGt0aGRyLmNz dW1fZGF0YSArIElQUFJPVE9fVURQKSk7CisJCQkJICAgIG0tPm1fcGt0aGRyLmNzdW1fZGF0YSAr IHByKSk7CiAJCQl1aF9zdW0gXj0gMHhmZmZmOwogCQl9IGVsc2UgewogCQkJY2hhciBiWzldOwog CiAJCQliY29weSgoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX3gxLCBiLCA5KTsKIAkJCWJ6ZXJv KCgoc3RydWN0IGlwb3ZseSAqKWlwKS0+aWhfeDEsIDkpOwotCQkJKChzdHJ1Y3QgaXBvdmx5ICop aXApLT5paF9sZW4gPSB1aC0+dWhfdWxlbjsKKwkJCWlmIChwciA9PSBJUFBST1RPX1VEUCkKKwkJ CQkoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX2xlbiA9IHVoLT51aF91bGVuOworCQkJZWxzZQor CQkJCSgoc3RydWN0IGlwb3ZseSAqKWlwKS0+aWhfbGVuID0gaHRvbnMoaXBfbGVuKTsKIAkJCXVo X3N1bSA9IGluX2Nrc3VtKG0sIGxlbiArIHNpemVvZiAoc3RydWN0IGlwKSk7CiAJCQliY29weShi LCAoKHN0cnVjdCBpcG92bHkgKilpcCktPmloX3gxLCA5KTsKIAkJfQpAQCAtNDQwLDE0ICs1MDgs MTggQEAgdWRwX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogCX0gZWxzZQogCQlVRFBT VEFUX0lOQyh1ZHBzX25vc3VtKTsKIAorCXBjYmluZm8gPSAocHIgPT0gSVBQUk9UT19VRFApID8g JlZfdWRiaW5mbyA6ICZWX3VsaXRlY2JpbmZvOworCiAJaWYgKElOX01VTFRJQ0FTVChudG9obChp cC0+aXBfZHN0LnNfYWRkcikpIHx8CiAJICAgIGluX2Jyb2FkY2FzdChpcC0+aXBfZHN0LCBpZnAp KSB7CiAJCXN0cnVjdCBpbnBjYiAqbGFzdDsKKwkJc3RydWN0IGlucGNiaGVhZCAqcGNibGlzdDsK IAkJc3RydWN0IGlwX21vcHRpb25zICppbW87CiAKLQkJSU5QX0lORk9fUkxPQ0soJlZfdWRiaW5m byk7CisJCUlOUF9JTkZPX1JMT0NLKHBjYmluZm8pOworCQlwY2JsaXN0ID0gKHByID09IElQUFJP VE9fVURQKSA/ICZWX3VkYiA6ICZWX3VsaXRlY2I7CiAJCWxhc3QgPSBOVUxMOwotCQlMSVNUX0ZP UkVBQ0goaW5wLCAmVl91ZGIsIGlucF9saXN0KSB7CisJCUxJU1RfRk9SRUFDSChpbnAsIHBjYmxp c3QsIGlucF9saXN0KSB7CiAJCQlpZiAoaW5wLT5pbnBfbHBvcnQgIT0gdWgtPnVoX2Rwb3J0KQog CQkJCWNvbnRpbnVlOwogI2lmZGVmIElORVQ2CkBAIC01MzMsMTIgKzYwNSwxMiBAQCB1ZHBfaW5w dXQoc3RydWN0IG1idWYgKm0sIGludCBvZmYpCiAJCQlVRFBTVEFUX0lOQyh1ZHBzX25vcG9ydGJj YXN0KTsKIAkJCWlmIChpbnApCiAJCQkJSU5QX1JVTkxPQ0soaW5wKTsKLQkJCUlOUF9JTkZPX1JV TkxPQ0soJlZfdWRiaW5mbyk7CisJCQlJTlBfSU5GT19SVU5MT0NLKHBjYmluZm8pOwogCQkJZ290 byBiYWR1bmxvY2tlZDsKIAkJfQogCQl1ZHBfYXBwZW5kKGxhc3QsIGlwLCBtLCBpcGhsZW4sICZ1 ZHBfaW4pOwogCQlJTlBfUlVOTE9DSyhsYXN0KTsKLQkJSU5QX0lORk9fUlVOTE9DSygmVl91ZGJp bmZvKTsKKwkJSU5QX0lORk9fUlVOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuOwogCX0KIApAQCAt NTU5LDcgKzYzMSw3IEBAIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZikKIAkJICog VHJhbnNwYXJlbnRseSBmb3J3YXJkZWQuIFByZXRlbmQgdG8gYmUgdGhlIGRlc3RpbmF0aW9uLgog CQkgKiBBbHJlYWR5IGdvdCBvbmUgbGlrZSB0aGlzPwogCQkgKi8KLQkJaW5wID0gaW5fcGNibG9v a3VwX21idWYoJlZfdWRiaW5mbywgaXAtPmlwX3NyYywgdWgtPnVoX3Nwb3J0LAorCQlpbnAgPSBp bl9wY2Jsb29rdXBfbWJ1ZihwY2JpbmZvLCBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCiAJCSAg ICBpcC0+aXBfZHN0LCB1aC0+dWhfZHBvcnQsIElOUExPT0tVUF9STE9DS1BDQiwgaWZwLCBtKTsK IAkJaWYgKCFpbnApIHsKIAkJCS8qCkBAIC01NjcsNyArNjM5LDcgQEAgdWRwX2lucHV0KHN0cnVj dCBtYnVmICptLCBpbnQgb2ZmKQogCQkJICogQmVjYXVzZSB3ZSd2ZSByZXdyaXR0ZW4gdGhlIGRl c3RpbmF0aW9uIGFkZHJlc3MsCiAJCQkgKiBhbnkgaGFyZHdhcmUtZ2VuZXJhdGVkIGhhc2ggaXMg aWdub3JlZC4KIAkJCSAqLwotCQkJaW5wID0gaW5fcGNibG9va3VwKCZWX3VkYmluZm8sIGlwLT5p cF9zcmMsCisJCQlpbnAgPSBpbl9wY2Jsb29rdXAocGNiaW5mbywgaXAtPmlwX3NyYywKIAkJCSAg ICB1aC0+dWhfc3BvcnQsIG5leHRfaG9wLT5zaW5fYWRkciwKIAkJCSAgICBuZXh0X2hvcC0+c2lu X3BvcnQgPyBodG9ucyhuZXh0X2hvcC0+c2luX3BvcnQpIDoKIAkJCSAgICB1aC0+dWhfZHBvcnQs IElOUExPT0tVUF9XSUxEQ0FSRCB8CkBAIC01NzcsNyArNjQ5LDcgQEAgdWRwX2lucHV0KHN0cnVj dCBtYnVmICptLCBpbnQgb2ZmKQogCQltX3RhZ19kZWxldGUobSwgZndkX3RhZyk7CiAJCW0tPm1f ZmxhZ3MgJj0gfk1fSVBfTkVYVEhPUDsKIAl9IGVsc2UKLQkJaW5wID0gaW5fcGNibG9va3VwX21i dWYoJlZfdWRiaW5mbywgaXAtPmlwX3NyYywgdWgtPnVoX3Nwb3J0LAorCQlpbnAgPSBpbl9wY2Js b29rdXBfbWJ1ZihwY2JpbmZvLCBpcC0+aXBfc3JjLCB1aC0+dWhfc3BvcnQsCiAJCSAgICBpcC0+ aXBfZHN0LCB1aC0+dWhfZHBvcnQsIElOUExPT0tVUF9XSUxEQ0FSRCB8CiAJCSAgICBJTlBMT09L VVBfUkxPQ0tQQ0IsIGlmcCwgbSk7CiAJaWYgKGlucCA9PSBOVUxMKSB7CkBAIC02MTMsNiArNjg1 LDE2IEBAIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZikKIAkJbV9mcmVlbShtKTsK IAkJcmV0dXJuOwogCX0KKwlpZiAoY3Njb3ZfcGFydGlhbCkgeworCQlzdHJ1Y3QgdWRwY2IgKnVw OworCisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWlmICh1cC0+dV9yeGNzbGVuID4gbGVuKSB7 CisJCQlJTlBfUlVOTE9DSyhpbnApOworCQkJbV9mcmVlbShtKTsKKwkJCXJldHVybjsKKwkJfQor CX0KIAl1ZHBfYXBwZW5kKGlucCwgaXAsIG0sIGlwaGxlbiwgJnVkcF9pbik7CiAJSU5QX1JVTkxP Q0soaW5wKTsKIAlyZXR1cm47CkBAIC02NDQsOSArNzI2LDkgQEAgdWRwX25vdGlmeShzdHJ1Y3Qg aW5wY2IgKmlucCwgaW50IGVycm5vKQogCXJldHVybiAoaW5wKTsKIH0KIAotI2lmZGVmIElORVQK LXZvaWQKLXVkcF9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICp2 aXApCitzdGF0aWMgdm9pZAordWRwX2NvbW1vbl9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29j a2FkZHIgKnNhLCB2b2lkICp2aXAsCisgICAgc3RydWN0IGlucGNiaW5mbyAqcGNiaW5mbykKIHsK IAlzdHJ1Y3QgaXAgKmlwID0gdmlwOwogCXN0cnVjdCB1ZHBoZHIgKnVoOwpAQCAtNjc1LDcgKzc1 Nyw3IEBAIHVkcF9ub3RpZnkoc3RydWN0IGlucGNiICppbnAsIGludCBlcnJubykKIAkJcmV0dXJu OwogCWlmIChpcCAhPSBOVUxMKSB7CiAJCXVoID0gKHN0cnVjdCB1ZHBoZHIgKikoKGNhZGRyX3Qp aXAgKyAoaXAtPmlwX2hsIDw8IDIpKTsKLQkJaW5wID0gaW5fcGNibG9va3VwKCZWX3VkYmluZm8s IGZhZGRyLCB1aC0+dWhfZHBvcnQsCisJCWlucCA9IGluX3BjYmxvb2t1cChwY2JpbmZvLCBmYWRk ciwgdWgtPnVoX2Rwb3J0LAogCQkgICAgaXAtPmlwX3NyYywgdWgtPnVoX3Nwb3J0LCBJTlBMT09L VVBfUkxPQ0tQQ0IsIE5VTEwpOwogCQlpZiAoaW5wICE9IE5VTEwpIHsKIAkJCUlOUF9STE9DS19B U1NFUlQoaW5wKTsKQEAgLTY4NSw5ICs3NjcsMjMgQEAgdWRwX25vdGlmeShzdHJ1Y3QgaW5wY2Ig KmlucCwgaW50IGVycm5vKQogCQkJSU5QX1JVTkxPQ0soaW5wKTsKIAkJfQogCX0gZWxzZQotCQlp bl9wY2Jub3RpZnlhbGwoJlZfdWRiaW5mbywgZmFkZHIsIGluZXRjdGxlcnJtYXBbY21kXSwKKwkJ aW5fcGNibm90aWZ5YWxsKHBjYmluZm8sIGZhZGRyLCBpbmV0Y3RsZXJybWFwW2NtZF0sCiAJCSAg ICB1ZHBfbm90aWZ5KTsKKwlyZXR1cm47CiB9CisKKyNpZmRlZiBJTkVUCit2b2lkCit1ZHBfY3Rs aW5wdXQoaW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqdmlwKQoreworCXJldHVy biAodWRwX2NvbW1vbl9jdGxpbnB1dChjbWQsIHNhLCB2aXAsICZWX3VkYmluZm8pKTsKK30KKwor dm9pZAordWRwbGl0ZV9jdGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lk ICp2aXApCit7CisJcmV0dXJuICh1ZHBfY29tbW9uX2N0bGlucHV0KGNtZCwgc2EsIHZpcCwgJlZf dWxpdGVjYmluZm8pKTsKK30KICNlbmRpZiAvKiBJTkVUICovCiAKIHN0YXRpYyBpbnQKQEAgLTg0 MywxNiArOTM5LDE2IEBAIFNZU0NUTF9QUk9DKF9uZXRfaW5ldF91ZHAsIE9JRF9BVVRPLCBnZXRj cmVkLAogaW50CiB1ZHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja29w dCAqc29wdCkKIHsKLQlpbnQgZXJyb3IgPSAwLCBvcHR2YWw7CisJaW50IGlzdWRwbGl0ZSwgZXJy b3IsIG9wdHZhbDsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKLSNpZmRlZiBJUFNFQ19OQVRfVAogCXN0 cnVjdCB1ZHBjYiAqdXA7Ci0jZW5kaWYKIAorCWVycm9yID0gMDsKKwlpc3VkcGxpdGUgPSAoc28t PnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJUFBST1RPX1VEUExJVEUpID8gMSA6IDA7CiAJaW5w ID0gc290b2lucGNiKHNvKTsKIAlLQVNTRVJUKGlucCAhPSBOVUxMLCAoIiVzOiBpbnAgPT0gTlVM TCIsIF9fZnVuY19fKSk7CiAJSU5QX1dMT0NLKGlucCk7Ci0JaWYgKHNvcHQtPnNvcHRfbGV2ZWwg IT0gSVBQUk9UT19VRFApIHsKKwlpZiAoc29wdC0+c29wdF9sZXZlbCAhPSBzby0+c29fcHJvdG8t PnByX3Byb3RvY29sKSB7CiAjaWZkZWYgSU5FVDYKIAkJaWYgKElOUF9DSEVDS19TT0NLQUYoc28s IEFGX0lORVQ2KSkgewogCQkJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTkxMCw3ICsxMDA2LDMzIEBA IHVkcF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzCiAJCQl9 CiAJCQlJTlBfV1VOTE9DSyhpbnApOwogCQkJYnJlYWs7CisJCWNhc2UgVURQTElURV9TRU5EX0NT Q09WOgorCQljYXNlIFVEUExJVEVfUkVDVl9DU0NPVjoKKwkJCWlmICghaXN1ZHBsaXRlKQorCQkJ CWdvdG8gYmFkX3NldG9wdG5hbWU7CisJCQlJTlBfV1VOTE9DSyhpbnApOworCQkJZXJyb3IgPSBz b29wdGNvcHlpbihzb3B0LCAmb3B0dmFsLCBzaXplb2Yob3B0dmFsKSwKKwkJCSAgICBzaXplb2Yo b3B0dmFsKSk7CisJCQlpZiAoZXJyb3IpCisJCQkJYnJlYWs7CisJCQlpbnAgPSBzb3RvaW5wY2Io c28pOworCQkJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCIlczogaW5wID09IE5VTEwiLCBfX2Z1bmNf XykpOworCQkJSU5QX1dMT0NLKGlucCk7CisJCQl1cCA9IGludG91ZHBjYihpbnApOworCQkJS0FT U0VSVCh1cCAhPSBOVUxMLCAoIiVzOiB1cCA9PSBOVUxMIiwgX19mdW5jX18pKTsKKwkJCWlmIChv cHR2YWwgIT0gMCAmJiBvcHR2YWwgPCA4KSB7CisJCQkJZXJyb3IgPSBFSU5WQUw7CisJCQkJSU5Q X1dVTkxPQ0soaW5wKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmIChzb3B0LT5zb3B0X25hbWUg PT0gVURQTElURV9TRU5EX0NTQ09WKQorCQkJCXVwLT51X3R4Y3NsZW4gPSBvcHR2YWw7CisJCQll bHNlCisJCQkJdXAtPnVfcnhjc2xlbiA9IG9wdHZhbDsKKwkJCUlOUF9XVU5MT0NLKGlucCk7CisJ CQlicmVhazsKIAkJZGVmYXVsdDoKK2JhZF9zZXRvcHRuYW1lOgogCQkJSU5QX1dVTkxPQ0soaW5w KTsKIAkJCWVycm9yID0gRU5PUFJPVE9PUFQ7CiAJCQlicmVhazsKQEAgLTkyNyw3ICsxMDQ5LDIx IEBAIHVkcF9jdGxvdXRwdXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0ICpzCiAJ CQllcnJvciA9IHNvb3B0Y29weW91dChzb3B0LCAmb3B0dmFsLCBzaXplb2Ygb3B0dmFsKTsKIAkJ CWJyZWFrOwogI2VuZGlmCisJCWNhc2UgVURQTElURV9TRU5EX0NTQ09WOgorCQljYXNlIFVEUExJ VEVfUkVDVl9DU0NPVjoKKwkJCWlmICghaXN1ZHBsaXRlKQorCQkJCWdvdG8gYmFkX2dldG9wdG5h bWU7CisJCQl1cCA9IGludG91ZHBjYihpbnApOworCQkJS0FTU0VSVCh1cCAhPSBOVUxMLCAoIiVz OiB1cCA9PSBOVUxMIiwgX19mdW5jX18pKTsKKwkJCWlmIChzb3B0LT5zb3B0X25hbWUgPT0gVURQ TElURV9TRU5EX0NTQ09WKQorCQkJCW9wdHZhbCA9IHVwLT51X3R4Y3NsZW47CisJCQllbHNlCisJ CQkJb3B0dmFsID0gdXAtPnVfcnhjc2xlbjsKKwkJCUlOUF9XVU5MT0NLKGlucCk7CisJCQllcnJv ciA9IHNvb3B0Y29weW91dChzb3B0LCAmb3B0dmFsLCBzaXplb2Yob3B0dmFsKSk7CisJCQlicmVh azsKIAkJZGVmYXVsdDoKK2JhZF9nZXRvcHRuYW1lOgogCQkJSU5QX1dVTkxPQ0soaW5wKTsKIAkJ CWVycm9yID0gRU5PUFJPVE9PUFQ7CiAJCQlicmVhazsKQEAgLTk0OSwxMiArMTA4NSwxNiBAQCB1 ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCWludCBs ZW4gPSBtLT5tX3BrdGhkci5sZW47CiAJc3RydWN0IGluX2FkZHIgZmFkZHIsIGxhZGRyOwogCXN0 cnVjdCBjbXNnaGRyICpjbTsKKwlzdHJ1Y3QgaW5wY2JpbmZvICpwY2JpbmZvOwogCXN0cnVjdCBz b2NrYWRkcl9pbiAqc2luLCBzcmM7CisJaW50IGNzY292X3BhcnRpYWwgPSAwOwogCWludCBlcnJv ciA9IDA7CiAJaW50IGlwZmxhZ3M7CiAJdV9zaG9ydCBmcG9ydCwgbHBvcnQ7CiAJaW50IHVubG9j a191ZGJpbmZvOwogCXVfY2hhciB0b3M7CisJdWludDhfdCBwcjsKKwl1aW50MTZfdCBjc2NvdiA9 IDA7CiAKIAkvKgogCSAqIHVkcF9vdXRwdXQoKSBtYXkgbmVlZCB0byB0ZW1wb3JhcmlseSBiaW5k IG9yIGNvbm5lY3QgdGhlIGN1cnJlbnQKQEAgLTEwNDksMTIgKzExODksMTMgQEAgdWRwX291dHB1 dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0cnUKIAkgKgogCSAqIFhYWFJX OiBDaGVjayB0aGF0IGhhc2ggbG9ja2luZyB1cGRhdGUgaGVyZSBpcyBjb3JyZWN0LgogCSAqLwor CXBjYmluZm8gPSBpbnAtPmlucF9wY2JpbmZvOwogCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4g KilhZGRyOwogCWlmIChzaW4gIT0gTlVMTCAmJgogCSAgICAoaW5wLT5pbnBfbGFkZHIuc19hZGRy ID09IElOQUREUl9BTlkgJiYgaW5wLT5pbnBfbHBvcnQgPT0gMCkpIHsKIAkJSU5QX1JVTkxPQ0so aW5wKTsKIAkJSU5QX1dMT0NLKGlucCk7Ci0JCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOwor CQlJTlBfSEFTSF9XTE9DSyhwY2JpbmZvKTsKIAkJdW5sb2NrX3VkYmluZm8gPSBVSF9XTE9DS0VE OwogCX0gZWxzZSBpZiAoKHNpbiAhPSBOVUxMICYmICgKIAkgICAgKHNpbi0+c2luX2FkZHIuc19h ZGRyID09IElOQUREUl9BTlkpIHx8CkBAIC0xMDYyLDcgKzEyMDMsNyBAQCB1ZHBfb3V0cHV0KHN0 cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCSAgICAoaW5wLT5pbnBfbGFk ZHIuc19hZGRyID09IElOQUREUl9BTlkpIHx8CiAJICAgIChpbnAtPmlucF9scG9ydCA9PSAwKSkp IHx8CiAJICAgIChzcmMuc2luX2ZhbWlseSA9PSBBRl9JTkVUKSkgewotCQlJTlBfSEFTSF9STE9D SygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfUkxPQ0socGNiaW5mbyk7CiAJCXVubG9ja191ZGJp bmZvID0gVUhfUkxPQ0tFRDsKIAl9IGVsc2UKIAkJdW5sb2NrX3VkYmluZm8gPSBVSF9VTkxPQ0tF RDsKQEAgLTEwNzUsNyArMTIxNiw3IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0 cnVjdCBtYnVmICptLCBzdHJ1CiAJbGFkZHIgPSBpbnAtPmlucF9sYWRkcjsKIAlscG9ydCA9IGlu cC0+aW5wX2xwb3J0OwogCWlmIChzcmMuc2luX2ZhbWlseSA9PSBBRl9JTkVUKSB7Ci0JCUlOUF9I QVNIX0xPQ0tfQVNTRVJUKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9MT0NLX0FTU0VSVChwY2Jp bmZvKTsKIAkJaWYgKChscG9ydCA9PSAwKSB8fAogCQkgICAgKGxhZGRyLnNfYWRkciA9PSBJTkFE RFJfQU5ZICYmCiAJCSAgICAgc3JjLnNpbl9hZGRyLnNfYWRkciA9PSBJTkFERFJfQU5ZKSkgewpA QCAtMTEyNiw3ICsxMjY3LDcgQEAgdWRwX291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0 IG1idWYgKm0sIHN0cnUKIAkJICAgIGlucC0+aW5wX2xwb3J0ID09IDAgfHwKIAkJICAgIHNpbi0+ c2luX2FkZHIuc19hZGRyID09IElOQUREUl9BTlkgfHwKIAkJICAgIHNpbi0+c2luX2FkZHIuc19h ZGRyID09IElOQUREUl9CUk9BRENBU1QpIHsKLQkJCUlOUF9IQVNIX0xPQ0tfQVNTRVJUKCZWX3Vk YmluZm8pOworCQkJSU5QX0hBU0hfTE9DS19BU1NFUlQocGNiaW5mbyk7CiAJCQllcnJvciA9IGlu X3BjYmNvbm5lY3Rfc2V0dXAoaW5wLCBhZGRyLCAmbGFkZHIuc19hZGRyLAogCQkJICAgICZscG9y dCwgJmZhZGRyLnNfYWRkciwgJmZwb3J0LCBOVUxMLAogCQkJICAgIHRkLT50ZF91Y3JlZCk7CkBA IC0xMTQxLDcgKzEyODIsNyBAQCB1ZHBfb3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3Qg bWJ1ZiAqbSwgc3RydQogCQkJaWYgKGlucC0+aW5wX2xhZGRyLnNfYWRkciA9PSBJTkFERFJfQU5Z ICYmCiAJCQkgICAgaW5wLT5pbnBfbHBvcnQgPT0gMCkgewogCQkJCUlOUF9XTE9DS19BU1NFUlQo aW5wKTsKLQkJCQlJTlBfSEFTSF9XTE9DS19BU1NFUlQoJlZfdWRiaW5mbyk7CisJCQkJSU5QX0hB U0hfV0xPQ0tfQVNTRVJUKHBjYmluZm8pOwogCQkJCS8qCiAJCQkJICogUmVtZW1iZXIgYWRkciBp ZiBqYWlsZWQsIHRvIHByZXZlbnQKIAkJCQkgKiByZWJpbmRpbmcuCkBAIC0xMTg4LDE1ICsxMzI5 LDM1IEBAIHVkcF9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVmICptLCBzdHJ1 CiAJICogRmlsbCBpbiBtYnVmIHdpdGggZXh0ZW5kZWQgVURQIGhlYWRlciBhbmQgYWRkcmVzc2Vz IGFuZCBsZW5ndGggcHV0CiAJICogaW50byBuZXR3b3JrIGZvcm1hdC4KIAkgKi8KKwlwciA9IElQ UFJPVE9fVURQOwogCXVpID0gbXRvZChtLCBzdHJ1Y3QgdWRwaXBoZHIgKik7CiAJYnplcm8odWkt PnVpX3gxLCBzaXplb2YodWktPnVpX3gxKSk7CS8qIFhYWCBzdGlsbCBuZWVkZWQ/ICovCi0JdWkt PnVpX3ByID0gSVBQUk9UT19VRFA7CiAJdWktPnVpX3NyYyA9IGxhZGRyOwogCXVpLT51aV9kc3Qg PSBmYWRkcjsKIAl1aS0+dWlfc3BvcnQgPSBscG9ydDsKIAl1aS0+dWlfZHBvcnQgPSBmcG9ydDsK IAl1aS0+dWlfdWxlbiA9IGh0b25zKCh1X3Nob3J0KWxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRy KSk7CiAKKwlpZiAoaW5wLT5pbnBfc29ja2V0LT5zb19wcm90by0+cHJfcHJvdG9jb2wgPT0gSVBQ Uk9UT19VRFBMSVRFKSB7CisJCXN0cnVjdCB1ZHBjYiAqdXA7CisJCXVpbnQxNl90IHBsZW47CisK KwkJcHIgPSBJUFBST1RPX1VEUExJVEU7CisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWNzY292 ID0gdXAtPnVfdHhjc2xlbjsKKwkJcGxlbiA9ICh1X3Nob3J0KWxlbiArIHNpemVvZihzdHJ1Y3Qg dWRwaGRyKTsKKwkJaWYgKGNzY292ID49IHBsZW4pCisJCQljc2NvdiA9IDA7CisJCXVpLT51aV9s ZW4gPSBodG9ucyhwbGVuKTsKKwkJdWktPnVpX3VsZW4gPSBodG9ucyhjc2Nvdik7CisKKwkJLyog Rm9yIFVEUExpdGUsIGNoZWNrc3VtIGNvdmVyYWdlIGxlbmd0aCBvZiB6ZXJvIG1lYW5zCisJCSAq IHRoZSBlbnRpcmUgVURQTGl0ZSBwYWNrZXQgaXMgY292ZXJlZCBieSB0aGUgY2hlY2tzdW0uCisJ CSAqLworCQljc2Nvdl9wYXJ0aWFsID0gKGNzY292ID09IDApID8gMCA6IDE7CisJfQorCXVpLT51 aV9wciA9IHByOworCiAJLyoKIAkgKiBTZXQgdGhlIERvbid0IEZyYWdtZW50IGJpdCBpbiB0aGUg SVAgaGVhZGVyLgogCSAqLwpAQCAtMTIyMiwyNCArMTM4MywyOSBAQCB1ZHBfb3V0cHV0KHN0cnVj dCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCS8qCiAJICogU2V0IHVwIGNoZWNr c3VtIGFuZCBvdXRwdXQgZGF0YWdyYW0uCiAJICovCi0JaWYgKFZfdWRwX2Nrc3VtKSB7CisJdWkt PnVpX3N1bSA9IDA7CisJaWYgKGNzY292X3BhcnRpYWwpIHsKIAkJaWYgKGlucC0+aW5wX2ZsYWdz ICYgSU5QX09ORVNCQ0FTVCkKIAkJCWZhZGRyLnNfYWRkciA9IElOQUREUl9CUk9BRENBU1Q7CisJ CWlmICgodWktPnVpX3N1bSA9IGluX2Nrc3VtKG0sIHNpemVvZihzdHJ1Y3QgaXApICsgY3Njb3Yp KSA9PSAwKQorCQkJdWktPnVpX3N1bSA9IDB4ZmZmZjsKKwl9IGVsc2UgaWYgKFZfdWRwX2Nrc3Vt IHx8ICFjc2Nvdl9wYXJ0aWFsKSB7CisJCWlmIChpbnAtPmlucF9mbGFncyAmIElOUF9PTkVTQkNB U1QpCisJCQlmYWRkci5zX2FkZHIgPSBJTkFERFJfQlJPQURDQVNUOwogCQl1aS0+dWlfc3VtID0g aW5fcHNldWRvKHVpLT51aV9zcmMuc19hZGRyLCBmYWRkci5zX2FkZHIsCi0JCSAgICBodG9ucygo dV9zaG9ydClsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikgKyBJUFBST1RPX1VEUCkpOworCQkg ICAgaHRvbnMoKHVfc2hvcnQpbGVuICsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpICsgcHIpKTsKIAkJ bS0+bV9wa3RoZHIuY3N1bV9mbGFncyA9IENTVU1fVURQOwogCQltLT5tX3BrdGhkci5jc3VtX2Rh dGEgPSBvZmZzZXRvZihzdHJ1Y3QgdWRwaGRyLCB1aF9zdW0pOwotCX0gZWxzZQotCQl1aS0+dWlf c3VtID0gMDsKKwl9CiAJKChzdHJ1Y3QgaXAgKil1aSktPmlwX2xlbiA9IGh0b25zKHNpemVvZihz dHJ1Y3QgdWRwaXBoZHIpICsgbGVuKTsKIAkoKHN0cnVjdCBpcCAqKXVpKS0+aXBfdHRsID0gaW5w LT5pbnBfaXBfdHRsOwkvKiBYWFggKi8KIAkoKHN0cnVjdCBpcCAqKXVpKS0+aXBfdG9zID0gdG9z OwkJLyogWFhYICovCiAJVURQU1RBVF9JTkModWRwc19vcGFja2V0cyk7CiAKIAlpZiAodW5sb2Nr X3VkYmluZm8gPT0gVUhfV0xPQ0tFRCkKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsK KwkJSU5QX0hBU0hfV1VOTE9DSyhwY2JpbmZvKTsKIAllbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9 PSBVSF9STE9DS0VEKQotCQlJTlBfSEFTSF9SVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT SF9SVU5MT0NLKHBjYmluZm8pOwogCWVycm9yID0gaXBfb3V0cHV0KG0sIGlucC0+aW5wX29wdGlv bnMsIE5VTEwsIGlwZmxhZ3MsCiAJICAgIGlucC0+aW5wX21vcHRpb25zLCBpbnApOwogCWlmICh1 bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKQpAQCAtMTI1MCwxMCArMTQxNiwxMCBAQCB1ZHBf b3V0cHV0KHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgbWJ1ZiAqbSwgc3RydQogCiByZWxlYXNl OgogCWlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9XTE9DS0VEKSB7Ci0JCUlOUF9IQVNIX1dVTkxP Q0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1dVTkxPQ0socGNiaW5mbyk7CiAJCUlOUF9XVU5M T0NLKGlucCk7CiAJfSBlbHNlIGlmICh1bmxvY2tfdWRiaW5mbyA9PSBVSF9STE9DS0VEKSB7Ci0J CUlOUF9IQVNIX1JVTkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9IQVNIX1JVTkxPQ0socGNiaW5m byk7CiAJCUlOUF9SVU5MT0NLKGlucCk7CiAJfSBlbHNlCiAJCUlOUF9SVU5MT0NLKGlucCk7CkBA IC0xNDA1LDEwICsxNTcxLDEwIEBAIHVkcF9hYm9ydChzdHJ1Y3Qgc29ja2V0ICpzbykKIAlLQVNT RVJUKGlucCAhPSBOVUxMLCAoInVkcF9hYm9ydDogaW5wID09IE5VTEwiKSk7CiAJSU5QX1dMT0NL KGlucCk7CiAJaWYgKGlucC0+aW5wX2ZhZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKSB7Ci0JCUlO UF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2Jp bmZvKTsKIAkJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCQlpbnAtPmlucF9sYWRkci5zX2FkZHIg PSBJTkFERFJfQU5ZOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFT SF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNvKTsKIAl9 CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE0MTgsMTcgKzE1ODQsMjMgQEAgc3RhdGljIGludAog dWRwX2F0dGFjaChzdHJ1Y3Qgc29ja2V0ICpzbywgaW50IHByb3RvLCBzdHJ1Y3QgdGhyZWFkICp0 ZCkKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKKyAgICAgICAgc3RydWN0IGlucGNiaW5mbyAqcGNi aW5mbzsKIAlpbnQgZXJyb3I7CiAKKwlpZiAoc28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJ UFBST1RPX1VEUCkKKwkJcGNiaW5mbyA9ICZWX3VkYmluZm87CisJZWxzZQorCQlwY2JpbmZvID0g JlZfdWxpdGVjYmluZm87CisKIAlpbnAgPSBzb3RvaW5wY2Ioc28pOwogCUtBU1NFUlQoaW5wID09 IE5VTEwsICgidWRwX2F0dGFjaDogaW5wICE9IE5VTEwiKSk7CiAJZXJyb3IgPSBzb3Jlc2VydmUo c28sIHVkcF9zZW5kc3BhY2UsIHVkcF9yZWN2c3BhY2UpOwogCWlmIChlcnJvcikKIAkJcmV0dXJu IChlcnJvcik7Ci0JSU5QX0lORk9fV0xPQ0soJlZfdWRiaW5mbyk7Ci0JZXJyb3IgPSBpbl9wY2Jh bGxvYyhzbywgJlZfdWRiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0socGNiaW5mbyk7CisJZXJyb3Ig PSBpbl9wY2JhbGxvYyhzbywgcGNiaW5mbyk7CiAJaWYgKGVycm9yKSB7Ci0JCUlOUF9JTkZPX1dV TkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9JTkZPX1dVTkxPQ0socGNiaW5mbyk7CiAJCXJldHVy biAoZXJyb3IpOwogCX0KIApAQCAtMTQ0MCwxMyArMTYxMiwxNCBAQCB1ZHBfYXR0YWNoKHN0cnVj dCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHN0cnVjdCB0aAogCWlmIChlcnJvcikgewogCQlpbl9w Y2JkZXRhY2goaW5wKTsKIAkJaW5fcGNiZnJlZShpbnApOwotCQlJTlBfSU5GT19XVU5MT0NLKCZW X3VkYmluZm8pOworCQlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCQlyZXR1cm4gKGVycm9y KTsKIAl9CiAKIAlJTlBfV1VOTE9DSyhpbnApOwotCUlOUF9JTkZPX1dVTkxPQ0soJlZfdWRiaW5m byk7CisJSU5QX0lORk9fV1VOTE9DSyhwY2JpbmZvKTsKIAlyZXR1cm4gKDApOworCiB9CiAjZW5k aWYgLyogSU5FVCAqLwogCkBAIC0xNDgxLDkgKzE2NTQsOSBAQCB1ZHBfYmluZChzdHJ1Y3Qgc29j a2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sCiAJaW5wID0gc290b2lucGNiKHNvKTsKIAlL QVNTRVJUKGlucCAhPSBOVUxMLCAoInVkcF9iaW5kOiBpbnAgPT0gTlVMTCIpKTsKIAlJTlBfV0xP Q0soaW5wKTsKLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XTE9DSyhp bnAtPmlucF9wY2JpbmZvKTsKIAllcnJvciA9IGluX3BjYmJpbmQoaW5wLCBuYW0sIHRkLT50ZF91 Y3JlZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9XVU5MT0NL KGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuIChlcnJvcik7 CiB9CkBAIC0xNDk3LDEwICsxNjcwLDEwIEBAIHVkcF9jbG9zZShzdHJ1Y3Qgc29ja2V0ICpzbykK IAlLQVNTRVJUKGlucCAhPSBOVUxMLCAoInVkcF9jbG9zZTogaW5wID09IE5VTEwiKSk7CiAJSU5Q X1dMT0NLKGlucCk7CiAJaWYgKGlucC0+aW5wX2ZhZGRyLnNfYWRkciAhPSBJTkFERFJfQU5ZKSB7 Ci0JCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCQlJTlBfSEFTSF9XTE9DSyhpbnAtPmlu cF9wY2JpbmZvKTsKIAkJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCQlpbnAtPmlucF9sYWRkci5z X2FkZHIgPSBJTkFERFJfQU5ZOwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOworCQlJ TlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVkKHNv KTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTE1MjYsOSArMTY5OSw5IEBAIHVkcF9jb25u ZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hCiAJCUlOUF9XVU5MT0NL KGlucCk7CiAJCXJldHVybiAoZXJyb3IpOwogCX0KLQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZv KTsKKwlJTlBfSEFTSF9XTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAllcnJvciA9IGluX3BjYmNv bm5lY3QoaW5wLCBuYW0sIHRkLT50ZF91Y3JlZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJp bmZvKTsKKwlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlmIChlcnJvciA9 PSAwKQogCQlzb2lzY29ubmVjdGVkKHNvKTsKIAlJTlBfV1VOTE9DSyhpbnApOwpAQCAtMTU0MCwy MCArMTcxMywyMyBAQCB1ZHBfZGV0YWNoKHN0cnVjdCBzb2NrZXQgKnNvKQogewogCXN0cnVjdCBp bnBjYiAqaW5wOwogCXN0cnVjdCB1ZHBjYiAqdXA7CisJaW50IGlzdWRwOwogCisJaXN1ZHAgPSAo c28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgPyAxIDogMDsKKwogCWlu cCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVMTCwgKCJ1ZHBfZGV0YWNoOiBp bnAgPT0gTlVMTCIpKTsKIAlLQVNTRVJUKGlucC0+aW5wX2ZhZGRyLnNfYWRkciA9PSBJTkFERFJf QU5ZLAogCSAgICAoInVkcF9kZXRhY2g6IG5vdCBkaXNjb25uZWN0ZWQiKSk7Ci0JSU5QX0lORk9f V0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJ SU5QX1dMT0NLKGlucCk7CiAJdXAgPSBpbnRvdWRwY2IoaW5wKTsKIAlLQVNTRVJUKHVwICE9IE5V TEwsICgiJXM6IHVwID09IE5VTEwiLCBfX2Z1bmNfXykpOwogCWlucC0+aW5wX3BwY2IgPSBOVUxM OwogCWluX3BjYmRldGFjaChpbnApOwogCWluX3BjYmZyZWUoaW5wKTsKLQlJTlBfSU5GT19XVU5M T0NLKCZWX3VkYmluZm8pOwotCXVkcF9kaXNjYXJkY2IodXApOworCUlOUF9JTkZPX1dVTkxPQ0so aW5wLT5pbnBfcGNiaW5mbyk7CisJdWRwX2Rpc2NhcmRjYih1cCwgaXN1ZHApOwogfQogCiBzdGF0 aWMgaW50CkBAIC0xNTY4LDEwICsxNzQ0LDEwIEBAIHVkcF9kaXNjb25uZWN0KHN0cnVjdCBzb2Nr ZXQgKnNvKQogCQlJTlBfV1VOTE9DSyhpbnApOwogCQlyZXR1cm4gKEVOT1RDT05OKTsKIAl9Ci0J SU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNi aW5mbyk7CiAJaW5fcGNiZGlzY29ubmVjdChpbnApOwogCWlucC0+aW5wX2xhZGRyLnNfYWRkciA9 IElOQUREUl9BTlk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9X VU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCVNPQ0tfTE9DSyhzbyk7CiAJc28tPnNvX3N0YXRl ICY9IH5TU19JU0NPTk5FQ1RFRDsJCS8qIFhYWCAqLwogCVNPQ0tfVU5MT0NLKHNvKTsKQEAgLTE2 MjIsNCArMTc5OCw1IEBAIHN0cnVjdCBwcl91c3JyZXFzIHVkcF91c3JyZXFzID0gewogCS5wcnVf c29zZXRsYWJlbCA9CWluX3BjYnNvc2V0bGFiZWwsCiAJLnBydV9jbG9zZSA9CQl1ZHBfY2xvc2Us CiB9OworCiAjZW5kaWYgLyogSU5FVCAqLwpJbmRleDogc3lzL25ldGluZXQvdWRwX3Zhci5oCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHN5cy9uZXRpbmV0L3VkcF92YXIuaAkocmV2aXNpb24gMjQ4NDU4KQorKysg c3lzL25ldGluZXQvdWRwX3Zhci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsMTIgQEAg dHlwZWRlZiB2b2lkKCp1ZHBfdHVuX2Z1bmNfdCkoc3RydWN0IG1idWYgKiwgaW50IG8KIHN0cnVj dCB1ZHBjYiB7CiAJdWRwX3R1bl9mdW5jX3QJdV90dW5fZnVuYzsJLyogVURQIGtlcm5lbCB0dW5u ZWxpbmcgY2FsbGJhY2suICovCiAJdV9pbnQJCXVfZmxhZ3M7CS8qIEdlbmVyaWMgVURQIGZsYWdz LiAqLworCXVpbnQxNl90CXVfcnhjc2xlbjsJLyogQ292ZXJhZ2UgZm9yIGluY29taW5nIGRhdGFn cmFtcy4gKi8KKwl1aW50MTZfdAl1X3R4Y3NsZW47CS8qIENvdmVyYWdlIGZvciBvdXRnb2luZyBk YXRhZ3JhbXMuICovCiB9OwogCi0jZGVmaW5lCWludG91ZHBjYihpcCkJKChzdHJ1Y3QgdWRwY2Ig KikoaXApLT5pbnBfcHBjYikKLSNkZWZpbmUJc290b3VkcGNiKHNvKQkoaW50b3VkcGNiKHNvdG9p bnBjYihzbykpKQorI2RlZmluZQlpbnRvdWRwY2IoaXApCQkoKHN0cnVjdCB1ZHBjYiAqKShpcCkt PmlucF9wcGNiKQorI2RlZmluZQlzb3RvdWRwY2Ioc28pCQkoaW50b3VkcGNiKHNvdG9pbnBjYihz bykpKQogCiAJCQkJLyogSVBzZWM6IEVTUCBpbiBVRFAgdHVubmVsaW5nOiAqLwogI2RlZmluZQlV Rl9FU1BJTlVEUF9OT05fSUtFCTB4MDAwMDAwMDEJLyogdy8gbm9uLUlLRSBtYXJrZXIgLi4gKi8K QEAgLTEzNCw4ICsxMzYsMTIgQEAgU1lTQ1RMX0RFQ0woX25ldF9pbmV0X3VkcCk7CiBleHRlcm4g c3RydWN0IHByX3VzcnJlcXMJdWRwX3VzcnJlcXM7CiBWTkVUX0RFQ0xBUkUoc3RydWN0IGlucGNi aGVhZCwgdWRiKTsKIFZORVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JpbmZvLCB1ZGJpbmZvKTsKK1ZO RVRfREVDTEFSRShzdHJ1Y3QgaW5wY2JoZWFkLCB1bGl0ZWNiKTsKK1ZORVRfREVDTEFSRShzdHJ1 Y3QgaW5wY2JpbmZvLCB1bGl0ZWNiaW5mbyk7CiAjZGVmaW5lCVZfdWRiCQkJVk5FVCh1ZGIpCiAj ZGVmaW5lCVZfdWRiaW5mbwkJVk5FVCh1ZGJpbmZvKQorI2RlZmluZQlWX3VsaXRlY2IJCVZORVQo dWxpdGVjYikKKyNkZWZpbmUJVl91bGl0ZWNiaW5mbwkJVk5FVCh1bGl0ZWNiaW5mbykKIAogZXh0 ZXJuIHVfbG9uZwkJCXVkcF9zZW5kc3BhY2U7CiBleHRlcm4gdV9sb25nCQkJdWRwX3JlY3ZzcGFj ZTsKQEAgLTE0NywxNiArMTUzLDIwIEBAIFZORVRfREVDTEFSRShpbnQsIHVkcF9ibGFja2hvbGUp OwogI2RlZmluZQlWX3VkcF9ibGFja2hvbGUJCVZORVQodWRwX2JsYWNraG9sZSkKIGV4dGVybiBp bnQJCQl1ZHBfbG9nX2luX3ZhaW47CiAKLWludAkJIHVkcF9uZXd1ZHBjYihzdHJ1Y3QgaW5wY2Ig Kik7Ci12b2lkCQkgdWRwX2Rpc2NhcmRjYihzdHJ1Y3QgdWRwY2IgKik7CitpbnQJCXVkcF9uZXd1 ZHBjYihzdHJ1Y3QgaW5wY2IgKik7Cit2b2lkCQl1ZHBfZGlzY2FyZGNiKHN0cnVjdCB1ZHBjYiAq LCBpbnQpOwogCi12b2lkCQkgdWRwX2N0bGlucHV0KGludCwgc3RydWN0IHNvY2thZGRyICosIHZv aWQgKik7Ci1pbnQJCSB1ZHBfY3Rsb3V0cHV0KHN0cnVjdCBzb2NrZXQgKiwgc3RydWN0IHNvY2tv cHQgKik7Ci12b2lkCQkgdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1ZHBfY3RsaW5wdXQoaW50LCBz dHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKTsKK3ZvaWQJCXVkcGxpdGVfY3RsaW5wdXQoaW50LCBz dHJ1Y3Qgc29ja2FkZHIgKiwgdm9pZCAqKTsKK2ludAkJdWRwX2N0bG91dHB1dChzdHJ1Y3Qgc29j a2V0ICosIHN0cnVjdCBzb2Nrb3B0ICopOwordm9pZAkJdWRwX2luaXQodm9pZCk7Cit2b2lkCQl1 ZHBsaXRlX2luaXQodm9pZCk7CiAjaWZkZWYgVklNQUdFCi12b2lkCQkgdWRwX2Rlc3Ryb3kodm9p ZCk7Cit2b2lkCQl1ZHBfZGVzdHJveSh2b2lkKTsKK3ZvaWQJCXVkcGxpdGVfZGVzdHJveSh2b2lk KTsKICNlbmRpZgotdm9pZAkJIHVkcF9pbnB1dChzdHJ1Y3QgbWJ1ZiAqLCBpbnQpOwordm9pZAkJ dWRwX2lucHV0KHN0cnVjdCBtYnVmICosIGludCk7Cit2b2lkCQl1ZHBsaXRlX2lucHV0KHN0cnVj dCBtYnVmICosIGludCk7CiBzdHJ1Y3QgaW5wY2IJKnVkcF9ub3RpZnkoc3RydWN0IGlucGNiICpp bnAsIGludCBlcnJubyk7CiBpbnQJCSB1ZHBfc2h1dGRvd24oc3RydWN0IHNvY2tldCAqc28pOwog CkluZGV4OiBzeXMvbmV0aW5ldC91ZHBsaXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQv dWRwbGl0ZS5oCShyZXZpc2lvbiAwKQorKysgc3lzL25ldGluZXQvdWRwbGl0ZS5oCSh3b3JraW5n IGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDEzLCBLZXZp biBMbworICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycn IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUg TElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS VVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9V VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICoKKyAqICRGcmVlQlNEJAorICovCisKKyNp Zm5kZWYgX05FVElORVRfVURQTElURV9IXworI2RlZmluZQlfTkVUSU5FVF9VRFBMSVRFX0hfCisK Ky8qIAorICogVXNlci1zZXR0YWJsZSBvcHRpb25zICh1c2VkIHdpdGggc2V0c29ja29wdCkuCisg Ki8KKyNkZWZpbmUJVURQTElURV9TRU5EX0NTQ09WCTIJLyogU2VuZGVyIGNoZWNrc3VtIGNvdmVy YWdlLiAqLworI2RlZmluZQlVRFBMSVRFX1JFQ1ZfQ1NDT1YJNAkvKiBSZWNlaXZlciBjaGVja3N1 bSBjb3ZlcmFnZS4gKi8KKworI2VuZGlmCS8qICFfTkVUSU5FVF9VRFBMSVRFX0hfICovCkluZGV4 OiBzeXMvbmV0aW5ldDYvaW42X2lmYXR0YWNoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldGluZXQ2 L2luNl9pZmF0dGFjaC5jCShyZXZpc2lvbiAyNDg0NTgpCisrKyBzeXMvbmV0aW5ldDYvaW42X2lm YXR0YWNoLmMJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw2ICs4MzcsNyBAQCBpbjZfaWZkZXRhY2go c3RydWN0IGlmbmV0ICppZnApCiAJfQogCiAJaW42X3BjYnB1cmdlaWYwKCZWX3VkYmluZm8sIGlm cCk7CisJaW42X3BjYnB1cmdlaWYwKCZWX3VsaXRlY2JpbmZvLCBpZnApOwogCWluNl9wY2JwdXJn ZWlmMCgmVl9yaXBjYmluZm8sIGlmcCk7CiAJLyogbGVhdmUgZnJvbSBhbGwgbXVsdGljYXN0IGdy b3VwcyBqb2luZWQgKi8KIAlpbjZfcHVyZ2VtYWRkcnMoaWZwKTsKSW5kZXg6IHN5cy9uZXRpbmV0 Ni9pbjZfcHJvdG8uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0aW5ldDYvaW42X3Byb3RvLmMJKHJl dmlzaW9uIDI0ODQ1OCkKKysrIHN5cy9uZXRpbmV0Ni9pbjZfcHJvdG8uYwkod29ya2luZyBjb3B5 KQpAQCAtMjE4LDYgKzIxOCwxOSBAQCBzdHJ1Y3QgaXA2cHJvdG9zdyBpbmV0NnN3W10gPSB7CiB9 LAogI2VuZGlmIC8qIFNDVFAgKi8KIHsKKwkucHJfdHlwZSA9CQlTT0NLX0RHUkFNLAorCS5wcl9k b21haW4gPQkJJmluZXQ2ZG9tYWluLAorCS5wcl9wcm90b2NvbCA9CQlJUFBST1RPX1VEUExJVEUs CisJLnByX2ZsYWdzID0JCVBSX0FUT01JQ3xQUl9BRERSLAorCS5wcl9pbnB1dCA9CQl1ZHA2X2lu cHV0LAorCS5wcl9jdGxpbnB1dCA9CQl1ZHBsaXRlNl9jdGxpbnB1dCwKKwkucHJfY3Rsb3V0cHV0 ID0JCXVkcF9jdGxvdXRwdXQsCisjaWZuZGVmIElORVQJLyogRG8gbm90IGNhbGwgaW5pdGlhbGl6 YXRpb24gdHdpY2UuICovCisJLnByX2luaXQgPQkJdWRwbGl0ZV9pbml0LAorI2VuZGlmCisJLnBy X3VzcnJlcXMgPQkJJnVkcDZfdXNycmVxcywKK30sCit7CiAJLnByX3R5cGUgPQkJU09DS19SQVcs CiAJLnByX2RvbWFpbiA9CQkmaW5ldDZkb21haW4sCiAJLnByX3Byb3RvY29sID0JCUlQUFJPVE9f UkFXLApAQCAtNDY4LDYgKzQ4MSw3IEBAIFNZU0NUTF9OT0RFKF9uZXRfaW5ldDYsCUlQUFJPVE9f VENQLAl0Y3A2LAlDVExGTEFHCiAjaWZkZWYgU0NUUAogU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJ SVBQUk9UT19TQ1RQLAlzY3RwNiwJQ1RMRkxBR19SVywgMCwJIlNDVFA2Iik7CiAjZW5kaWYKK1NZ U0NUTF9OT0RFKF9uZXRfaW5ldDYsCUlQUFJPVE9fVURQTElURSx1ZHBsaXRlNixDVExGTEFHX1JX LCAwLAkiVURQTElURTYiKTsKICNpZmRlZiBJUFNFQwogU1lTQ1RMX05PREUoX25ldF9pbmV0NiwJ SVBQUk9UT19FU1AsCWlwc2VjNiwJQ1RMRkxBR19SVywgMCwJIklQU0VDNiIpOwogI2VuZGlmIC8q IElQU0VDICovCkluZGV4OiBzeXMvbmV0aW5ldDYvdWRwNl91c3JyZXEuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvbmV0aW5ldDYvdWRwNl91c3JyZXEuYwkocmV2aXNpb24gMjQ4NDU4KQorKysgc3lzL25l dGluZXQ2L3VkcDZfdXNycmVxLmMJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBf X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KICNpbmNs dWRlIDxuZXRpbmV0L3VkcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwX3Zhci5oPgorI2luY2x1 ZGUgPG5ldGluZXQvdWRwbGl0ZS5oPgogCiAjaW5jbHVkZSA8bmV0aW5ldDYvaXA2cHJvdG9zdy5o PgogI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4KQEAgLTE3OCwxMSArMTc5LDE0IEBAIHVk cDZfaW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJc3RydWN0 IGlwNl9oZHIgKmlwNjsKIAlzdHJ1Y3QgdWRwaGRyICp1aDsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsK LQlzdHJ1Y3QgdWRwY2IgKnVwOworCXN0cnVjdCBpbnBjYmluZm8gKnBjYmluZm87CisJc3RydWN0 IHVkcGNiICp1cCA9IE5VTEw7CiAJaW50IG9mZiA9ICpvZmZwOworCWludCBjc2Nvdl9wYXJ0aWFs OwogCWludCBwbGVuLCB1bGVuOwogCXN0cnVjdCBzb2NrYWRkcl9pbjYgZnJvbXNhOwogCXN0cnVj dCBtX3RhZyAqZndkX3RhZzsKKwl1aW50OF90IG54dDsKIAl1aW50MTZfdCB1aF9zdW07CiAKIAlp ZnAgPSBtLT5tX3BrdGhkci5yY3ZpZjsKQEAgLTIxNSw5ICsyMTksMTkgQEAgdWRwNl9pbnB1dChz dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAlwbGVuID0gbnRvaHMoaXA2 LT5pcDZfcGxlbikgLSBvZmYgKyBzaXplb2YoKmlwNik7CiAJdWxlbiA9IG50b2hzKCh1X3Nob3J0 KXVoLT51aF91bGVuKTsKIAorCW54dCA9IGlwNi0+aXA2X254dDsKKwljc2Nvdl9wYXJ0aWFsID0g KG54dCA9PSBJUFBST1RPX1VEUExJVEUpID8gMSA6IDA7CisJaWYgKG54dCA9PSBJUFBST1RPX1VE UExJVEUgJiYgdWxlbiA9PSAwKSB7CisJCS8qIFplcm8gbWVhbnMgY2hlY2tzdW0gb3ZlciB0aGUg Y29tcGxldGUgcGFja2V0LiAqLworCQl1bGVuID0gcGxlbjsKKwkJY3Njb3ZfcGFydGlhbCA9IDA7 CisJfQorCiAJaWYgKHBsZW4gIT0gdWxlbikgewotCQlVRFBTVEFUX0lOQyh1ZHBzX2JhZGxlbik7 Ci0JCWdvdG8gYmFkdW5sb2NrZWQ7CisJCWlmICh1bGVuID4gcGxlbiB8fCB1bGVuIDwgc2l6ZW9m KHN0cnVjdCB1ZHBoZHIpKSB7CisJCQlVRFBTVEFUX0lOQyh1ZHBzX2JhZGxlbik7CisJCQlnb3Rv IGJhZHVubG9ja2VkOworCQl9CiAJfQogCiAJLyoKQEAgLTIyOCwxNSArMjQyLDE2IEBAIHVkcDZf aW5wdXQoc3RydWN0IG1idWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCWdvdG8gYmFk dW5sb2NrZWQ7CiAJfQogCi0JaWYgKG0tPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX0RBVEFf VkFMSURfSVBWNikgeworCWlmICgobS0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1fREFUQV9W QUxJRF9JUFY2KSAmJgorCSAgICAhY3Njb3ZfcGFydGlhbCkgewogCQlpZiAobS0+bV9wa3RoZHIu Y3N1bV9mbGFncyAmIENTVU1fUFNFVURPX0hEUikKIAkJCXVoX3N1bSA9IG0tPm1fcGt0aGRyLmNz dW1fZGF0YTsKIAkJZWxzZQotCQkJdWhfc3VtID0gaW42X2Nrc3VtX3BzZXVkbyhpcDYsIHVsZW4s Ci0JCQkgICAgSVBQUk9UT19VRFAsIG0tPm1fcGt0aGRyLmNzdW1fZGF0YSk7CisJCQl1aF9zdW0g PSBpbjZfY2tzdW1fcHNldWRvKGlwNiwgdWxlbiwgbnh0LAorCQkJICAgIG0tPm1fcGt0aGRyLmNz dW1fZGF0YSk7CiAJCXVoX3N1bSBePSAweGZmZmY7CiAJfSBlbHNlCi0JCXVoX3N1bSA9IGluNl9j a3N1bShtLCBJUFBST1RPX1VEUCwgb2ZmLCB1bGVuKTsKKwkJdWhfc3VtID0gaW42X2Nrc3VtKG0s IG54dCwgb2ZmLCB1bGVuKTsKIAogCWlmICh1aF9zdW0gIT0gMCkgewogCQlVRFBTVEFUX0lOQyh1 ZHBzX2JhZHN1bSk7CkBAIC0yNDksMTEgKzI2NCwxMyBAQCB1ZHA2X2lucHV0KHN0cnVjdCBtYnVm ICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCWluaXRfc2luNigmZnJvbXNhLCBtKTsKIAlm cm9tc2Euc2luNl9wb3J0ID0gdWgtPnVoX3Nwb3J0OwogCisJcGNiaW5mbyA9IChueHQgPT0gSVBQ Uk9UT19VRFApID8gJlZfdWRiaW5mbyA6ICZWX3VsaXRlY2JpbmZvOwogCWlmIChJTjZfSVNfQURE Ul9NVUxUSUNBU1QoJmlwNi0+aXA2X2RzdCkpIHsKIAkJc3RydWN0IGlucGNiICpsYXN0OworCQlz dHJ1Y3QgaW5wY2JoZWFkICpwY2JsaXN0OwogCQlzdHJ1Y3QgaXA2X21vcHRpb25zICppbW87CiAK LQkJSU5QX0lORk9fUkxPQ0soJlZfdWRiaW5mbyk7CisJCUlOUF9JTkZPX1JMT0NLKHBjYmluZm8p OwogCQkvKgogCQkgKiBJbiB0aGUgZXZlbnQgdGhhdCBsYWRkciBzaG91bGQgYmUgc2V0IHRvIHRo ZSBsaW5rLWxvY2FsCiAJCSAqIGFkZHJlc3MgKHRoaXMgaGFwcGVucyBpbiBSSVBuZyksIHRoZSBt dWx0aWNhc3QgYWRkcmVzcwpAQCAtMjY5LDggKzI4Niw5IEBAIHVkcDZfaW5wdXQoc3RydWN0IG1i dWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCSAqIGhlcmUuICBXZSBuZWVkIHVkcGhk ciBmb3IgSVBzZWMgcHJvY2Vzc2luZyBzbyB3ZSBkbyB0aGF0CiAJCSAqIGxhdGVyLgogCQkgKi8K KwkJcGNibGlzdCA9IChueHQgPT0gSVBQUk9UT19VRFApID8gJlZfdWRiIDogJlZfdWxpdGVjYjsK IAkJbGFzdCA9IE5VTEw7Ci0JCUxJU1RfRk9SRUFDSChpbnAsICZWX3VkYiwgaW5wX2xpc3QpIHsK KwkJTElTVF9GT1JFQUNIKGlucCwgcGNibGlzdCwgaW5wX2xpc3QpIHsKIAkJCWlmICgoaW5wLT5p bnBfdmZsYWcgJiBJTlBfSVBWNikgPT0gMCkKIAkJCQljb250aW51ZTsKIAkJCWlmIChpbnAtPmlu cF9scG9ydCAhPSB1aC0+dWhfZHBvcnQpCkBAIC0zNzUsNyArMzkzLDcgQEAgdWRwNl9pbnB1dChz dHJ1Y3QgbWJ1ZiAqKm1wLCBpbnQgKm9mZnAsIGludCBwcm90bykKIAkJCWdvdG8gYmFkaGVhZGxv Y2tlZDsKIAkJfQogCQlJTlBfUkxPQ0sobGFzdCk7Ci0JCUlOUF9JTkZPX1JVTkxPQ0soJlZfdWRi aW5mbyk7CisJCUlOUF9JTkZPX1JVTkxPQ0socGNiaW5mbyk7CiAJCXVwID0gaW50b3VkcGNiKGxh c3QpOwogCQlpZiAodXAtPnVfdHVuX2Z1bmMgPT0gTlVMTCkgewogCQkJdWRwNl9hcHBlbmQobGFz dCwgbSwgb2ZmLCAmZnJvbXNhKTsKQEAgLTQwNSw4ICs0MjMsOCBAQCB1ZHA2X2lucHV0KHN0cnVj dCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCQkgKiBUcmFuc3BhcmVudGx5IGZv cndhcmRlZC4gUHJldGVuZCB0byBiZSB0aGUgZGVzdGluYXRpb24uCiAJCSAqIEFscmVhZHkgZ290 IG9uZSBsaWtlIHRoaXM/CiAJCSAqLwotCQlpbnAgPSBpbjZfcGNibG9va3VwX21idWYoJlZfdWRi aW5mbywKLQkJICAgICZpcDYtPmlwNl9zcmMsIHVoLT51aF9zcG9ydCwgJmlwNi0+aXA2X2RzdCwg dWgtPnVoX2Rwb3J0LAorCQlpbnAgPSBpbjZfcGNibG9va3VwX21idWYocGNiaW5mbywgJmlwNi0+ aXA2X3NyYywKKwkJICAgIHVoLT51aF9zcG9ydCwgJmlwNi0+aXA2X2RzdCwgdWgtPnVoX2Rwb3J0 LAogCQkgICAgSU5QTE9PS1VQX1JMT0NLUENCLCBtLT5tX3BrdGhkci5yY3ZpZiwgbSk7CiAJCWlm ICghaW5wKSB7CiAJCQkvKgpAQCAtNDE0LDcgKzQzMiw3IEBAIHVkcDZfaW5wdXQoc3RydWN0IG1i dWYgKiptcCwgaW50ICpvZmZwLCBpbnQgcHJvdG8pCiAJCQkgKiBCZWNhdXNlIHdlJ3ZlIHJld3Jp dHRlbiB0aGUgZGVzdGluYXRpb24gYWRkcmVzcywKIAkJCSAqIGFueSBoYXJkd2FyZS1nZW5lcmF0 ZWQgaGFzaCBpcyBpZ25vcmVkLgogCQkJICovCi0JCQlpbnAgPSBpbjZfcGNibG9va3VwKCZWX3Vk YmluZm8sICZpcDYtPmlwNl9zcmMsCisJCQlpbnAgPSBpbjZfcGNibG9va3VwKHBjYmluZm8sICZp cDYtPmlwNl9zcmMsCiAJCQkgICAgdWgtPnVoX3Nwb3J0LCAmbmV4dF9ob3A2LT5zaW42X2FkZHIs CiAJCQkgICAgbmV4dF9ob3A2LT5zaW42X3BvcnQgPyBodG9ucyhuZXh0X2hvcDYtPnNpbjZfcG9y dCkgOgogCQkJICAgIHVoLT51aF9kcG9ydCwgSU5QTE9PS1VQX1dJTERDQVJEIHwKQEAgLTQyNCw3 ICs0NDIsNyBAQCB1ZHA2X2lucHV0KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHBy b3RvKQogCQltX3RhZ19kZWxldGUobSwgZndkX3RhZyk7CiAJCW0tPm1fZmxhZ3MgJj0gfk1fSVA2 X05FWFRIT1A7CiAJfSBlbHNlCi0JCWlucCA9IGluNl9wY2Jsb29rdXBfbWJ1ZigmVl91ZGJpbmZv LCAmaXA2LT5pcDZfc3JjLAorCQlpbnAgPSBpbjZfcGNibG9va3VwX21idWYocGNiaW5mbywgJmlw Ni0+aXA2X3NyYywKIAkJICAgIHVoLT51aF9zcG9ydCwgJmlwNi0+aXA2X2RzdCwgdWgtPnVoX2Rw b3J0LAogCQkgICAgSU5QTE9PS1VQX1dJTERDQVJEIHwgSU5QTE9PS1VQX1JMT0NLUENCLAogCQkg ICAgbS0+bV9wa3RoZHIucmN2aWYsIG0pOwpAQCAtNDU0LDcgKzQ3MiwxNCBAQCB1ZHA2X2lucHV0 KHN0cnVjdCBtYnVmICoqbXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCQlyZXR1cm4gKElQUFJP VE9fRE9ORSk7CiAJfQogCUlOUF9STE9DS19BU1NFUlQoaW5wKTsKLQl1cCA9IGludG91ZHBjYihp bnApOworCWlmIChjc2Nvdl9wYXJ0aWFsKSB7CisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWlm ICh1cC0+dV9yeGNzbGVuID4gdWxlbikgeworCQkJSU5QX1JVTkxPQ0soaW5wKTsKKwkJCW1fZnJl ZW0obSk7CisJCQlyZXR1cm4gKElQUFJPVE9fRE9ORSk7CisJCX0KKwl9CiAJaWYgKHVwLT51X3R1 bl9mdW5jID09IE5VTEwpIHsKIAkJdWRwNl9hcHBlbmQoaW5wLCBtLCBvZmYsICZmcm9tc2EpOwog CX0gZWxzZSB7CkBAIC00NjgsMTUgKzQ5MywxNiBAQCB1ZHA2X2lucHV0KHN0cnVjdCBtYnVmICoq bXAsIGludCAqb2ZmcCwgaW50IHByb3RvKQogCXJldHVybiAoSVBQUk9UT19ET05FKTsKIAogYmFk aGVhZGxvY2tlZDoKLQlJTlBfSU5GT19SVU5MT0NLKCZWX3VkYmluZm8pOworCUlOUF9JTkZPX1JV TkxPQ0socGNiaW5mbyk7CiBiYWR1bmxvY2tlZDoKIAlpZiAobSkKIAkJbV9mcmVlbShtKTsKIAly ZXR1cm4gKElQUFJPVE9fRE9ORSk7CiB9CiAKLXZvaWQKLXVkcDZfY3RsaW5wdXQoaW50IGNtZCwg c3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCkKK3N0YXRpYyB2b2lkCit1ZHA2X2NvbW1vbl9j dGxpbnB1dChpbnQgY21kLCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLCB2b2lkICpkLAorICAgIHN0cnVj dCBpbnBjYmluZm8gKnBjYmluZm8pCiB7CiAJc3RydWN0IHVkcGhkciB1aDsKIAlzdHJ1Y3QgaXA2 X2hkciAqaXA2OwpAQCAtNTMyLDE0ICs1NTgsMjYgQEAgYmFkdW5sb2NrZWQ6CiAJCWJ6ZXJvKCZ1 aCwgc2l6ZW9mKHVoKSk7CiAJCW1fY29weWRhdGEobSwgb2ZmLCBzaXplb2YoKnVocCksIChjYWRk cl90KSZ1aCk7CiAKLQkJKHZvaWQpIGluNl9wY2Jub3RpZnkoJlZfdWRiaW5mbywgc2EsIHVoLnVo X2Rwb3J0LAorCQkodm9pZCkgaW42X3BjYm5vdGlmeShwY2JpbmZvLCBzYSwgdWgudWhfZHBvcnQs CiAJCSAgICAoc3RydWN0IHNvY2thZGRyICopaXA2Y3AtPmlwNmNfc3JjLCB1aC51aF9zcG9ydCwg Y21kLAogCQkgICAgY21kYXJnLCBub3RpZnkpOwogCX0gZWxzZQotCQkodm9pZCkgaW42X3BjYm5v dGlmeSgmVl91ZGJpbmZvLCBzYSwgMCwKKwkJKHZvaWQpIGluNl9wY2Jub3RpZnkocGNiaW5mbywg c2EsIDAsCiAJCSAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopc2E2X3NyYywgMCwgY21kLCBj bWRhcmcsIG5vdGlmeSk7CiB9CiAKK3ZvaWQKK3VkcDZfY3RsaW5wdXQoaW50IGNtZCwgc3RydWN0 IHNvY2thZGRyICpzYSwgdm9pZCAqZCkKK3sKKwlyZXR1cm4gKHVkcDZfY29tbW9uX2N0bGlucHV0 KGNtZCwgc2EsIGQsICZWX3VkYmluZm8pKTsKK30KKwordm9pZAordWRwbGl0ZTZfY3RsaW5wdXQo aW50IGNtZCwgc3RydWN0IHNvY2thZGRyICpzYSwgdm9pZCAqZCkKK3sKKwlyZXR1cm4gKHVkcDZf Y29tbW9uX2N0bGlucHV0KGNtZCwgc2EsIGQsICZWX3VsaXRlY2JpbmZvKSk7Cit9CisKIHN0YXRp YyBpbnQKIHVkcDZfZ2V0Y3JlZChTWVNDVExfSEFORExFUl9BUkdTKQogewpAQCAtNTk3LDkgKzYz NSwxMiBAQCB1ZHA2X291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0 cgogCXN0cnVjdCBpbjZfYWRkciAqbGFkZHIsICpmYWRkciwgaW42YTsKIAlzdHJ1Y3Qgc29ja2Fk ZHJfaW42ICpzaW42ID0gTlVMTDsKIAlzdHJ1Y3QgaWZuZXQgKm9pZnAgPSBOVUxMOworCWludCBj c2Nvdl9wYXJ0aWFsID0gMDsKIAlpbnQgc2NvcGVfYW1iaWd1b3VzID0gMDsKIAl1X3Nob3J0IGZw b3J0OwogCWludCBlcnJvciA9IDA7CisJdWludDhfdCBueHQ7CisJdWludDE2X3QgY3Njb3YgPSAw OwogCXN0cnVjdCBpcDZfcGt0b3B0cyAqb3B0cCwgb3B0OwogCWludCBhZiA9IEFGX0lORVQ2LCBo bGVuID0gc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKTsKIAlpbnQgZmxhZ3M7CkBAIC03NTYsMTMgKzc5 NywyOSBAQCB1ZHA2X291dHB1dChzdHJ1Y3QgaW5wY2IgKmlucCwgc3RydWN0IG1idWYgKm0sIHN0 cgogCS8qCiAJICogU3R1ZmYgY2hlY2tzdW0gYW5kIG91dHB1dCBkYXRhZ3JhbS4KIAkgKi8KKwlu eHQgPSBJUFBST1RPX1VEUDsKIAl1ZHA2ID0gKHN0cnVjdCB1ZHBoZHIgKikobXRvZChtLCBjYWRk cl90KSArIGhsZW4pOwogCXVkcDYtPnVoX3Nwb3J0ID0gaW5wLT5pbnBfbHBvcnQ7IC8qIGxwb3J0 IGlzIGFsd2F5cyBzZXQgaW4gdGhlIFBDQiAqLwogCXVkcDYtPnVoX2Rwb3J0ID0gZnBvcnQ7Ci0J aWYgKHBsZW4gPD0gMHhmZmZmKQorCWlmIChpbnAtPmlucF9zb2NrZXQtPnNvX3Byb3RvLT5wcl9w cm90b2NvbCA9PSBJUFBST1RPX1VEUExJVEUpIHsKKwkJc3RydWN0IHVkcGNiICp1cDsKKworCQlu eHQgPSBJUFBST1RPX1VEUExJVEU7CisJCXVwID0gaW50b3VkcGNiKGlucCk7CisJCWNzY292ID0g dXAtPnVfdHhjc2xlbjsKKwkJaWYgKGNzY292ID49IHBsZW4pCisJCQljc2NvdiA9IDA7CisJCXVk cDYtPnVoX3VsZW4gPSBodG9ucyhjc2Nvdik7CisKKwkJLyogRm9yIFVEUExpdGUsIGNoZWNrc3Vt IGNvdmVyYWdlIGxlbmd0aCBvZiB6ZXJvIG1lYW5zCisJCSAqIHRoZSBlbnRpcmUgVURQTGl0ZSBw YWNrZXQgaXMgY292ZXJlZCBieSB0aGUgY2hlY2tzdW0uCisJCSAqLworCQljc2Nvdl9wYXJ0aWFs ID0gKGNzY292ID09IDApID8gMCA6IDE7CisJfSBlbHNlIGlmIChwbGVuIDw9IDB4ZmZmZikKIAkJ dWRwNi0+dWhfdWxlbiA9IGh0b25zKCh1X3Nob3J0KXBsZW4pOwogCWVsc2UKIAkJdWRwNi0+dWhf dWxlbiA9IDA7CisKIAl1ZHA2LT51aF9zdW0gPSAwOwogCiAJc3dpdGNoIChhZikgewpAQCAtNzcx LDE3ICs4MjgsMjIgQEAgdWRwNl9vdXRwdXQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBtYnVm ICptLCBzdHIKIAkJaXA2LT5pcDZfZmxvdwk9IGlucC0+aW5wX2Zsb3cgJiBJUFY2X0ZMT1dJTkZP X01BU0s7CiAJCWlwNi0+aXA2X3ZmYwkmPSB+SVBWNl9WRVJTSU9OX01BU0s7CiAJCWlwNi0+aXA2 X3ZmYwl8PSBJUFY2X1ZFUlNJT047Ci0jaWYgMAkJCQkvKiBpcDZfcGxlbiB3aWxsIGJlIGZpbGxl ZCBpbiBpcDZfb3V0cHV0LiAqLwotCQlpcDYtPmlwNl9wbGVuCT0gaHRvbnMoKHVfc2hvcnQpcGxl bik7Ci0jZW5kaWYKLQkJaXA2LT5pcDZfbnh0CT0gSVBQUk9UT19VRFA7CisJCWlmIChueHQgPT0g SVBQUk9UT19VRFBMSVRFKQorCQkJaXA2LT5pcDZfcGxlbiA9IGh0b25zKCh1X3Nob3J0KXBsZW4p OworCQlpcDYtPmlwNl9ueHQJPSBueHQ7CiAJCWlwNi0+aXA2X2hsaW0JPSBpbjZfc2VsZWN0aGxp bShpbnAsIE5VTEwpOwogCQlpcDYtPmlwNl9zcmMJPSAqbGFkZHI7CiAJCWlwNi0+aXA2X2RzdAk9 ICpmYWRkcjsKIAotCQl1ZHA2LT51aF9zdW0gPSBpbjZfY2tzdW1fcHNldWRvKGlwNiwgcGxlbiwg SVBQUk9UT19VRFAsIDApOwotCQltLT5tX3BrdGhkci5jc3VtX2ZsYWdzID0gQ1NVTV9VRFBfSVBW NjsKLQkJbS0+bV9wa3RoZHIuY3N1bV9kYXRhID0gb2Zmc2V0b2Yoc3RydWN0IHVkcGhkciwgdWhf c3VtKTsKKwkJaWYgKGNzY292X3BhcnRpYWwpIHsKKwkJCWlmICgodWRwNi0+dWhfc3VtID0gaW42 X2Nrc3VtKG0sIDAsCisJCQkgICAgc2l6ZW9mKHN0cnVjdCBpcDZfaGRyKSwgY3Njb3YpKSA9PSAw KQorCQkJCXVkcDYtPnVoX3N1bSA9IDB4ZmZmZjsKKwkJfSBlbHNlIHsKKwkJCXVkcDYtPnVoX3N1 bSA9IGluNl9ja3N1bV9wc2V1ZG8oaXA2LCBwbGVuLCBueHQsIDApOworCQkJbS0+bV9wa3RoZHIu Y3N1bV9mbGFncyA9IENTVU1fVURQX0lQVjY7CisJCQltLT5tX3BrdGhkci5jc3VtX2RhdGEgPSBv ZmZzZXRvZihzdHJ1Y3QgdWRwaGRyLCB1aF9zdW0pOworCQl9CiAKIAkJZmxhZ3MgPSAwOwogCkBA IC04MjYsMTAgKzg4OCwxMCBAQCB1ZHA2X2Fib3J0KHN0cnVjdCBzb2NrZXQgKnNvKQogCiAJSU5Q X1dMT0NLKGlucCk7CiAJaWYgKCFJTjZfSVNfQUREUl9VTlNQRUNJRklFRCgmaW5wLT5pbjZwX2Zh ZGRyKSkgewotCQlJTlBfSEFTSF9XTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0so aW5wLT5pbnBfcGNiaW5mbyk7CiAJCWluNl9wY2JkaXNjb25uZWN0KGlucCk7CiAJCWlucC0+aW42 cF9sYWRkciA9IGluNmFkZHJfYW55OwotCQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8pOwor CQlJTlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlzb2lzZGlzY29ubmVjdGVk KHNvKTsKIAl9CiAJSU5QX1dVTkxPQ0soaW5wKTsKQEAgLTgzOSw4ICs5MDEsMTMgQEAgc3RhdGlj IGludAogdWRwNl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3RydWN0IHRo cmVhZCAqdGQpCiB7CiAJc3RydWN0IGlucGNiICppbnA7CisJc3RydWN0IGlucGNiaW5mbyAqcGNi aW5mbzsKIAlpbnQgZXJyb3I7CiAKKwlpZiAoc28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCA9PSBJ UFBST1RPX1VEUCkKKwkJcGNiaW5mbyA9ICZWX3VkYmluZm87CisJIGVsc2UKKwkJcGNiaW5mbyA9 ICZWX3VsaXRlY2JpbmZvOwogCWlucCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgPT0g TlVMTCwgKCJ1ZHA2X2F0dGFjaDogaW5wICE9IE5VTEwiKSk7CiAKQEAgLTg0OSwxMCArOTE2LDEw IEBAIHVkcDZfYXR0YWNoKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8sIHN0cnVjdCB0CiAJ CWlmIChlcnJvcikKIAkJCXJldHVybiAoZXJyb3IpOwogCX0KLQlJTlBfSU5GT19XTE9DSygmVl91 ZGJpbmZvKTsKLQllcnJvciA9IGluX3BjYmFsbG9jKHNvLCAmVl91ZGJpbmZvKTsKKwlJTlBfSU5G T19XTE9DSyhwY2JpbmZvKTsKKwllcnJvciA9IGluX3BjYmFsbG9jKHNvLCBwY2JpbmZvKTsKIAlp ZiAoZXJyb3IpIHsKLQkJSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0lORk9f V1VOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQogCWlucCA9IChzdHJ1Y3Qg aW5wY2IgKilzby0+c29fcGNiOwpAQCAtODczLDExICs5NDAsMTEgQEAgdWRwNl9hdHRhY2goc3Ry dWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3RydWN0IHQKIAlpZiAoZXJyb3IpIHsKIAkJaW5f cGNiZGV0YWNoKGlucCk7CiAJCWluX3BjYmZyZWUoaW5wKTsKLQkJSU5QX0lORk9fV1VOTE9DSygm Vl91ZGJpbmZvKTsKKwkJSU5QX0lORk9fV1VOTE9DSyhwY2JpbmZvKTsKIAkJcmV0dXJuIChlcnJv cik7CiAJfQogCUlOUF9XVU5MT0NLKGlucCk7Ci0JSU5QX0lORk9fV1VOTE9DSygmVl91ZGJpbmZv KTsKKwlJTlBfSU5GT19XVU5MT0NLKHBjYmluZm8pOwogCXJldHVybiAoMCk7CiB9CiAKQEAgLTg5 MSw3ICs5NTgsNyBAQCB1ZHA2X2JpbmQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRk ciAqbmFtLAogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwNl9iaW5kOiBpbnAgPT0gTlVMTCIp KTsKIAogCUlOUF9XTE9DSyhpbnApOwotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlO UF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWlucC0+aW5wX3ZmbGFnICY9IH5JTlBf SVBWNDsKIAlpbnAtPmlucF92ZmxhZyB8PSBJTlBfSVBWNjsKIAlpZiAoKGlucC0+aW5wX2ZsYWdz ICYgSU42UF9JUFY2X1Y2T05MWSkgPT0gMCkgewpAQCAtOTE5LDcgKzk4Niw3IEBAIHVkcDZfYmlu ZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sCiAjaWZkZWYgSU5FVAog b3V0OgogI2VuZGlmCi0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJTlBfSEFTSF9X VU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCUlOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuIChl cnJvcik7CiB9CkBAIC05NDMsMTAgKzEwMTAsMTAgQEAgdWRwNl9jbG9zZShzdHJ1Y3Qgc29ja2V0 ICpzbykKICNlbmRpZgogCUlOUF9XTE9DSyhpbnApOwogCWlmICghSU42X0lTX0FERFJfVU5TUEVD SUZJRUQoJmlucC0+aW42cF9mYWRkcikpIHsKLQkJSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7 CisJCUlOUF9IQVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCQlpbjZfcGNiZGlzY29ubmVj dChpbnApOwogCQlpbnAtPmluNnBfbGFkZHIgPSBpbjZhZGRyX2FueTsKLQkJSU5QX0hBU0hfV1VO TE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsK IAkJc29pc2Rpc2Nvbm5lY3RlZChzbyk7CiAJfQogCUlOUF9XVU5MT0NLKGlucCk7CkBAIC05ODUs MTAgKzEwNTIsMTAgQEAgdWRwNl9jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3Qgc29j a2FkZHIgKm4KIAkJZXJyb3IgPSBwcmlzb25fcmVtb3RlX2lwNCh0ZC0+dGRfdWNyZWQsICZzaW4u c2luX2FkZHIpOwogCQlpZiAoZXJyb3IgIT0gMCkKIAkJCWdvdG8gb3V0OwotCQlJTlBfSEFTSF9X TE9DSygmVl91ZGJpbmZvKTsKKwkJSU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJ CWVycm9yID0gaW5fcGNiY29ubmVjdChpbnAsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luLAogCQkg ICAgdGQtPnRkX3VjcmVkKTsKLQkJSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwkJSU5Q X0hBU0hfV1VOTE9DSyhpbnAtPmlucF9wY2JpbmZvKTsKIAkJaWYgKGVycm9yID09IDApCiAJCQlz b2lzY29ubmVjdGVkKHNvKTsKIAkJZ290byBvdXQ7CkBAIC0xMDAzLDkgKzEwNzAsOSBAQCB1ZHA2 X2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2NrYWRkciAqbgogCWVycm9yID0g cHJpc29uX3JlbW90ZV9pcDYodGQtPnRkX3VjcmVkLCAmc2luNi0+c2luNl9hZGRyKTsKIAlpZiAo ZXJyb3IgIT0gMCkKIAkJZ290byBvdXQ7Ci0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJ SU5QX0hBU0hfV0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJZXJyb3IgPSBpbjZfcGNiY29ubmVj dChpbnAsIG5hbSwgdGQtPnRkX3VjcmVkKTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8p OworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaWYgKGVycm9yID09IDAp CiAJCXNvaXNjb25uZWN0ZWQoc28pOwogb3V0OgpAQCAtMTAxOCwxOCArMTA4NSwyMSBAQCB1ZHA2 X2RldGFjaChzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKIAlzdHJ1Y3QgaW5wY2IgKmlucDsKIAlzdHJ1 Y3QgdWRwY2IgKnVwOworCWludCBpc3VkcDsKIAorCWlzdWRwID0gKHNvLT5zb19wcm90by0+cHJf cHJvdG9jb2wgPT0gSVBQUk9UT19VRFApID8gMSA6IDA7CisKIAlpbnAgPSBzb3RvaW5wY2Ioc28p OwogCUtBU1NFUlQoaW5wICE9IE5VTEwsICgidWRwNl9kZXRhY2g6IGlucCA9PSBOVUxMIikpOwog Ci0JSU5QX0lORk9fV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0soaW5wLT5pbnBf cGNiaW5mbyk7CiAJSU5QX1dMT0NLKGlucCk7CiAJdXAgPSBpbnRvdWRwY2IoaW5wKTsKIAlLQVNT RVJUKHVwICE9IE5VTEwsICgiJXM6IHVwID09IE5VTEwiLCBfX2Z1bmNfXykpOwogCWluX3BjYmRl dGFjaChpbnApOwogCWluX3BjYmZyZWUoaW5wKTsKLQlJTlBfSU5GT19XVU5MT0NLKCZWX3VkYmlu Zm8pOwotCXVkcF9kaXNjYXJkY2IodXApOworCUlOUF9JTkZPX1dVTkxPQ0soaW5wLT5pbnBfcGNi aW5mbyk7CisJdWRwX2Rpc2NhcmRjYih1cCwgaXN1ZHApOwogfQogCiBzdGF0aWMgaW50CkBAIC0x MDU4LDEwICsxMTI4LDEwIEBAIHVkcDZfZGlzY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzbykKIAkJ Z290byBvdXQ7CiAJfQogCi0JSU5QX0hBU0hfV0xPQ0soJlZfdWRiaW5mbyk7CisJSU5QX0hBU0hf V0xPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJaW42X3BjYmRpc2Nvbm5lY3QoaW5wKTsKIAlpbnAt PmluNnBfbGFkZHIgPSBpbjZhZGRyX2FueTsKLQlJTlBfSEFTSF9XVU5MT0NLKCZWX3VkYmluZm8p OworCUlOUF9IQVNIX1dVTkxPQ0soaW5wLT5pbnBfcGNiaW5mbyk7CiAJU09DS19MT0NLKHNvKTsK IAlzby0+c29fc3RhdGUgJj0gflNTX0lTQ09OTkVDVEVEOwkJLyogWFhYICovCiAJU09DS19VTkxP Q0soc28pOwpAQCAtMTEyOCw5ICsxMTk4LDkgQEAgdWRwNl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNv LCBpbnQgZmxhZ3MsIHN0cnVjdCBtYnUKICNpZmRlZiBNQUMKIAltYWNfaW5wY2JfY3JlYXRlX21i dWYoaW5wLCBtKTsKICNlbmRpZgotCUlOUF9IQVNIX1dMT0NLKCZWX3VkYmluZm8pOworCUlOUF9I QVNIX1dMT0NLKGlucC0+aW5wX3BjYmluZm8pOwogCWVycm9yID0gdWRwNl9vdXRwdXQoaW5wLCBt LCBhZGRyLCBjb250cm9sLCB0ZCk7Ci0JSU5QX0hBU0hfV1VOTE9DSygmVl91ZGJpbmZvKTsKKwlJ TlBfSEFTSF9XVU5MT0NLKGlucC0+aW5wX3BjYmluZm8pOwogI2lmZGVmIElORVQKICNlbmRpZgkK IAlJTlBfV1VOTE9DSyhpbnApOwpJbmRleDogc3lzL25ldGluZXQ2L3VkcDZfdmFyLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3lzL25ldGluZXQ2L3VkcDZfdmFyLmgJKHJldmlzaW9uIDI0ODQ1OCkKKysrIHN5 cy9uZXRpbmV0Ni91ZHA2X3Zhci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIFNZ U0NUTF9ERUNMKF9uZXRfaW5ldDZfdWRwNik7CiBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMJdWRw Nl91c3JyZXFzOwogCiB2b2lkCXVkcDZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwg dm9pZCAqKTsKK3ZvaWQJdWRwbGl0ZTZfY3RsaW5wdXQoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwg dm9pZCAqKTsKIGludAl1ZHA2X2lucHV0KHN0cnVjdCBtYnVmICoqLCBpbnQgKiwgaW50KTsKICNl bmRpZgogCg== --047d7b5d58b4c09aa004f4c73c6e--