From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1422662AbWJKVsg (ORCPT ); Wed, 11 Oct 2006 17:48:36 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1422667AbWJKVsf (ORCPT ); Wed, 11 Oct 2006 17:48:35 -0400 Received: from smtp-out.google.com ([216.239.45.12]:46601 "EHLO smtp-out.google.com") by vger.kernel.org with ESMTP id S1422666AbWJKVs3 (ORCPT ); Wed, 11 Oct 2006 17:48:29 -0400 DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=received:message-id:date:from:to:subject:cc:in-reply-to: mime-version:content-type:references; b=xx14zs3jT7HyzptUmrmW5Yic2zRxMqt/I6iUZ948DI1gtOz7iDUmwwFHRWilE/qyp nekwocxgyYXkFn+YgeyKQ== Message-ID: <65dd6fd50610111448q7ff210e1nb5f14917c311c8d4@mail.gmail.com> Date: Wed, 11 Oct 2006 14:48:14 -0700 From: "Ollie Wild" To: "Peter Zijlstra" Subject: Re: Removing MAX_ARG_PAGES (request for comments/assistance) Cc: linux-kernel@vger.kernel.org, parisc-linux@lists.parisc-linux.org, "Linus Torvalds" , "Arjan van de Ven" , "Ingo Molnar" , linux-mm@kvack.org, "Andrew Morton" , "Andi Kleen" , linux-arch@vger.kernel.org, "David Howells" In-Reply-To: <1160572460.2006.79.camel@taijtu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_15902_18081752.1160603294502" References: <65dd6fd50610101705t3db93a72sc0847cd120aa05d3@mail.gmail.com> <1160572460.2006.79.camel@taijtu> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org ------=_Part_15902_18081752.1160603294502 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline > Yeah, you'll need to change the PTEs for those pages you created by > calling get_user_page() by calling an mprotect like function; perhaps > something like: Thanks. I've incorporated your changes (updated patch attached). > > + /* Move stack pages down in memory. */ > > + if (stack_shift) { > > + // FIXME: Verify the shift is OK. > > + > > What exactly are you wondering about? the call to move_vma looks sane to > me My concern was that the binfmt handler may have setup other vm areas which overlap the new range. The move_vma() function doesn't do overlap checking. I'm not sure if this is something I need to guard against, or if it falls in the "Don't do that!" category. Ollie ------=_Part_15902_18081752.1160603294502 Content-Type: application/octet-stream; name=no_MAX_ARG_PAGES.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_et68xy6a Content-Disposition: attachment; filename="no_MAX_ARG_PAGES.patch" ZGlmZiAtLWdpdCBhL2FyY2gveDg2XzY0L2lhMzIvaWEzMl9iaW5mbXQuYyBiL2FyY2gveDg2XzY0 L2lhMzIvaWEzMl9iaW5mbXQuYwppbmRleCA4MmVmMTgyLi4yZTVhOTM0IDEwMDY0NAotLS0gYS9h cmNoL3g4Nl82NC9pYTMyL2lhMzJfYmluZm10LmMKKysrIGIvYXJjaC94ODZfNjQvaWEzMi9pYTMy X2JpbmZtdC5jCkBAIC0yNzksOSArMjc5LDYgQEAgI2RlZmluZSBleGl0X2VsZl9iaW5mbXQJCQll eGl0X2VsZjMyX2JpbgogI2RlZmluZSBsb2FkX2VsZl9iaW5hcnkgbG9hZF9lbGYzMl9iaW5hcnkK IAogI2RlZmluZSBFTEZfUExBVF9JTklUKHIsIGxvYWRfYWRkcikJZWxmMzJfaW5pdChyKQotI2Rl ZmluZSBzZXR1cF9hcmdfcGFnZXMoYnBybSwgc3RhY2tfdG9wLCBleGVjX3N0YWNrKSBcCi0JaWEz Ml9zZXR1cF9hcmdfcGFnZXMoYnBybSwgc3RhY2tfdG9wLCBleGVjX3N0YWNrKQotaW50IGlhMzJf c2V0dXBfYXJnX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHVuc2lnbmVkIGxvbmcg c3RhY2tfdG9wLCBpbnQgZXhlY3V0YWJsZV9zdGFjayk7CiAKICN1bmRlZiBzdGFydF90aHJlYWQK ICNkZWZpbmUgc3RhcnRfdGhyZWFkKHJlZ3MsbmV3X3JpcCxuZXdfcnNwKSBkbyB7IFwKQEAgLTMz OCw1NyArMzM1LDcgQEAgc3RhdGljIHZvaWQgZWxmMzJfaW5pdChzdHJ1Y3QgcHRfcmVncyAqcgog aW50IGlhMzJfc2V0dXBfYXJnX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHVuc2ln bmVkIGxvbmcgc3RhY2tfdG9wLAogCQkJIGludCBleGVjdXRhYmxlX3N0YWNrKQogewotCXVuc2ln bmVkIGxvbmcgc3RhY2tfYmFzZTsKLQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKm1wbnQ7Ci0Jc3Ry dWN0IG1tX3N0cnVjdCAqbW0gPSBjdXJyZW50LT5tbTsKLQlpbnQgaSwgcmV0OwotCi0Jc3RhY2tf YmFzZSA9IHN0YWNrX3RvcCAtIE1BWF9BUkdfUEFHRVMgKiBQQUdFX1NJWkU7Ci0JbW0tPmFyZ19z dGFydCA9IGJwcm0tPnAgKyBzdGFja19iYXNlOwotCi0JYnBybS0+cCArPSBzdGFja19iYXNlOwot CWlmIChicHJtLT5sb2FkZXIpCi0JCWJwcm0tPmxvYWRlciArPSBzdGFja19iYXNlOwotCWJwcm0t PmV4ZWMgKz0gc3RhY2tfYmFzZTsKLQotCW1wbnQgPSBrbWVtX2NhY2hlX2FsbG9jKHZtX2FyZWFf Y2FjaGVwLCBTTEFCX0tFUk5FTCk7Ci0JaWYgKCFtcG50KSAKLQkJcmV0dXJuIC1FTk9NRU07IAot Ci0JbWVtc2V0KG1wbnQsIDAsIHNpemVvZigqbXBudCkpOwotCi0JZG93bl93cml0ZSgmbW0tPm1t YXBfc2VtKTsKLQl7Ci0JCW1wbnQtPnZtX21tID0gbW07Ci0JCW1wbnQtPnZtX3N0YXJ0ID0gUEFH RV9NQVNLICYgKHVuc2lnbmVkIGxvbmcpIGJwcm0tPnA7Ci0JCW1wbnQtPnZtX2VuZCA9IHN0YWNr X3RvcDsKLQkJaWYgKGV4ZWN1dGFibGVfc3RhY2sgPT0gRVhTVEFDS19FTkFCTEVfWCkKLQkJCW1w bnQtPnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1MgfCAgVk1fRVhFQzsKLQkJZWxzZSBpZiAoZXhl Y3V0YWJsZV9zdGFjayA9PSBFWFNUQUNLX0RJU0FCTEVfWCkKLQkJCW1wbnQtPnZtX2ZsYWdzID0g Vk1fU1RBQ0tfRkxBR1MgJiB+Vk1fRVhFQzsKLQkJZWxzZQotCQkJbXBudC0+dm1fZmxhZ3MgPSBW TV9TVEFDS19GTEFHUzsKLSAJCW1wbnQtPnZtX3BhZ2VfcHJvdCA9IChtcG50LT52bV9mbGFncyAm IFZNX0VYRUMpID8gCi0gCQkJUEFHRV9DT1BZX0VYRUMgOiBQQUdFX0NPUFk7Ci0JCWlmICgocmV0 ID0gaW5zZXJ0X3ZtX3N0cnVjdChtbSwgbXBudCkpKSB7Ci0JCQl1cF93cml0ZSgmbW0tPm1tYXBf c2VtKTsKLQkJCWttZW1fY2FjaGVfZnJlZSh2bV9hcmVhX2NhY2hlcCwgbXBudCk7Ci0JCQlyZXR1 cm4gcmV0OwotCQl9Ci0JCW1tLT5zdGFja192bSA9IG1tLT50b3RhbF92bSA9IHZtYV9wYWdlcyht cG50KTsKLQl9IAotCi0JZm9yIChpID0gMCA7IGkgPCBNQVhfQVJHX1BBR0VTIDsgaSsrKSB7Ci0J CXN0cnVjdCBwYWdlICpwYWdlID0gYnBybS0+cGFnZVtpXTsKLQkJaWYgKHBhZ2UpIHsKLQkJCWJw cm0tPnBhZ2VbaV0gPSBOVUxMOwotCQkJaW5zdGFsbF9hcmdfcGFnZShtcG50LCBwYWdlLCBzdGFj a19iYXNlKTsKLQkJfQotCQlzdGFja19iYXNlICs9IFBBR0VfU0laRTsKLQl9Ci0JdXBfd3JpdGUo Jm1tLT5tbWFwX3NlbSk7Ci0JCi0JcmV0dXJuIDA7CisJcmV0dXJuIHNldHVwX2FyZ19wYWdlcyhi cHJtLCBzdGFja190b3AsIGV4ZWN1dGFibGVfc3RhY2spOwogfQogRVhQT1JUX1NZTUJPTChpYTMy X3NldHVwX2FyZ19wYWdlcyk7CiAKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2Jp bmZtdF9lbGYuYwppbmRleCAwNjQzNWYzLi5kMGUyMjkyIDEwMDY0NAotLS0gYS9mcy9iaW5mbXRf ZWxmLmMKKysrIGIvZnMvYmluZm10X2VsZi5jCkBAIC0yNTUsOCArMjU1LDggQEAgI2VuZGlmCiAJ d2hpbGUgKGFyZ2MtLSA+IDApIHsKIAkJc2l6ZV90IGxlbjsKIAkJX19wdXRfdXNlcigoZWxmX2Fk ZHJfdClwLCBhcmd2KyspOwotCQlsZW4gPSBzdHJubGVuX3VzZXIoKHZvaWQgX191c2VyICopcCwg UEFHRV9TSVpFKk1BWF9BUkdfUEFHRVMpOwotCQlpZiAoIWxlbiB8fCBsZW4gPiBQQUdFX1NJWkUq TUFYX0FSR19QQUdFUykKKwkJbGVuID0gc3Rybmxlbl91c2VyKCh2b2lkIF9fdXNlciAqKXAsIE1B WF9BUkdfU1RSTEVOKTsKKwkJaWYgKCFsZW4gfHwgbGVuID4gTUFYX0FSR19TVFJMRU4pCiAJCQly ZXR1cm4gMDsKIAkJcCArPSBsZW47CiAJfQpAQCAtMjY2LDggKzI2Niw4IEBAICNlbmRpZgogCXdo aWxlIChlbnZjLS0gPiAwKSB7CiAJCXNpemVfdCBsZW47CiAJCV9fcHV0X3VzZXIoKGVsZl9hZGRy X3QpcCwgZW52cCsrKTsKLQkJbGVuID0gc3Rybmxlbl91c2VyKCh2b2lkIF9fdXNlciAqKXAsIFBB R0VfU0laRSpNQVhfQVJHX1BBR0VTKTsKLQkJaWYgKCFsZW4gfHwgbGVuID4gUEFHRV9TSVpFKk1B WF9BUkdfUEFHRVMpCisJCWxlbiA9IHN0cm5sZW5fdXNlcigodm9pZCBfX3VzZXIgKilwLCBNQVhf QVJHX1NUUkxFTik7CisJCWlmICghbGVuIHx8IGxlbiA+IE1BWF9BUkdfU1RSTEVOKQogCQkJcmV0 dXJuIDA7CiAJCXAgKz0gbGVuOwogCX0KQEAgLTc2OSwxMCArNzY5LDYgQEAgc3RhdGljIGludCBs b2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4XwogCX0KIAogCS8qIE9LLCBUaGlzIGlzIHRoZSBw b2ludCBvZiBubyByZXR1cm4gKi8KLQljdXJyZW50LT5tbS0+c3RhcnRfZGF0YSA9IDA7Ci0JY3Vy cmVudC0+bW0tPmVuZF9kYXRhID0gMDsKLQljdXJyZW50LT5tbS0+ZW5kX2NvZGUgPSAwOwotCWN1 cnJlbnQtPm1tLT5tbWFwID0gTlVMTDsKIAljdXJyZW50LT5mbGFncyAmPSB+UEZfRk9SS05PRVhF QzsKIAljdXJyZW50LT5tbS0+ZGVmX2ZsYWdzID0gZGVmX2ZsYWdzOwogCmRpZmYgLS1naXQgYS9m cy9iaW5mbXRfbWlzYy5jIGIvZnMvYmluZm10X21pc2MuYwppbmRleCAxNzEzYzQ4Li4xMzc4YmEz IDEwMDY0NAotLS0gYS9mcy9iaW5mbXRfbWlzYy5jCisrKyBiL2ZzL2JpbmZtdF9taXNjLmMKQEAg LTEyNiw3ICsxMjYsOSBAQCBzdGF0aWMgaW50IGxvYWRfbWlzY19iaW5hcnkoc3RydWN0IGxpbnV4 CiAJCWdvdG8gX3JldDsKIAogCWlmICghKGZtdC0+ZmxhZ3MgJiBNSVNDX0ZNVF9QUkVTRVJWRV9B UkdWMCkpIHsKLQkJcmVtb3ZlX2FyZ196ZXJvKGJwcm0pOworCQlyZXR2YWwgPSByZW1vdmVfYXJn X3plcm8oYnBybSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIF9yZXQ7CiAJfQogCiAJaWYgKGZt dC0+ZmxhZ3MgJiBNSVNDX0ZNVF9PUEVOX0JJTkFSWSkgewpkaWZmIC0tZ2l0IGEvZnMvYmluZm10 X3NjcmlwdC5jIGIvZnMvYmluZm10X3NjcmlwdC5jCmluZGV4IDFlZGJjY2EuLjViNjMwOWYgMTAw NjQ0Ci0tLSBhL2ZzL2JpbmZtdF9zY3JpcHQuYworKysgYi9mcy9iaW5mbXRfc2NyaXB0LmMKQEAg LTY4LDcgKzY4LDkgQEAgc3RhdGljIGludCBsb2FkX3NjcmlwdChzdHJ1Y3QgbGludXhfYmlucAog CSAqIFRoaXMgaXMgZG9uZSBpbiByZXZlcnNlIG9yZGVyLCBiZWNhdXNlIG9mIGhvdyB0aGUKIAkg KiB1c2VyIGVudmlyb25tZW50IGFuZCBhcmd1bWVudHMgYXJlIHN0b3JlZC4KIAkgKi8KLQlyZW1v dmVfYXJnX3plcm8oYnBybSk7CisJcmV0dmFsID0gcmVtb3ZlX2FyZ196ZXJvKGJwcm0pOworCWlm IChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CiAJcmV0dmFsID0gY29weV9zdHJpbmdzX2tlcm5l bCgxLCAmYnBybS0+aW50ZXJwLCBicHJtKTsKIAlpZiAocmV0dmFsIDwgMCkgcmV0dXJuIHJldHZh bDsgCiAJYnBybS0+YXJnYysrOwpkaWZmIC0tZ2l0IGEvZnMvY29tcGF0LmMgYi9mcy9jb21wYXQu YwppbmRleCA1MDYyNGQ0Li4zNTk4MzZiIDEwMDY0NAotLS0gYS9mcy9jb21wYXQuYworKysgYi9m cy9jb21wYXQuYwpAQCAtMTM4NSw2ICsxMzg1LDcgQEAgc3RhdGljIGludCBjb21wYXRfY29weV9z dHJpbmdzKGludCBhcmdjLAogewogCXN0cnVjdCBwYWdlICprbWFwcGVkX3BhZ2UgPSBOVUxMOwog CWNoYXIgKmthZGRyID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGtwb3MgPSAwOwogCWludCByZXQ7 CiAKIAl3aGlsZSAoYXJnYy0tID4gMCkgewpAQCAtMTM5Myw5MiArMTM5NCw3MiBAQCBzdGF0aWMg aW50IGNvbXBhdF9jb3B5X3N0cmluZ3MoaW50IGFyZ2MsCiAJCXVuc2lnbmVkIGxvbmcgcG9zOwog CiAJCWlmIChnZXRfdXNlcihzdHIsIGFyZ3YrYXJnYykgfHwKLQkJCSEobGVuID0gc3Rybmxlbl91 c2VyKGNvbXBhdF9wdHIoc3RyKSwgYnBybS0+cCkpKSB7CisJCSAgICAhKGxlbiA9IHN0cm5sZW5f dXNlcihjb21wYXRfcHRyKHN0ciksIE1BWF9BUkdfU1RSTEVOKSkpIHsKIAkJCXJldCA9IC1FRkFV TFQ7CiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCWlmIChicHJtLT5wIDwgbGVuKSAgeworCQlpZiAo TUFYX0FSR19TVFJMRU4gPCBsZW4pIHsKIAkJCXJldCA9IC1FMkJJRzsKIAkJCWdvdG8gb3V0Owog CQl9CiAKLQkJYnBybS0+cCAtPSBsZW47Ci0JCS8qIFhYWDogYWRkIGFyY2hpdGVjdHVyZSBzcGVj aWZpYyBvdmVyZmxvdyBjaGVjayBoZXJlLiAqLworCQkvKiBXZSdyZSBnb2luZyB0byB3b3JrIG91 ciB3YXkgYmFja3dvcmRzLiAqLwogCQlwb3MgPSBicHJtLT5wOworCQlzdHIgKz0gbGVuOworCQli cHJtLT5wIC09IGxlbjsKIAogCQl3aGlsZSAobGVuID4gMCkgewotCQkJaW50IGksIG5ldywgZXJy OwogCQkJaW50IG9mZnNldCwgYnl0ZXNfdG9fY29weTsKLQkJCXN0cnVjdCBwYWdlICpwYWdlOwog CiAJCQlvZmZzZXQgPSBwb3MgJSBQQUdFX1NJWkU7Ci0JCQlpID0gcG9zL1BBR0VfU0laRTsKLQkJ CXBhZ2UgPSBicHJtLT5wYWdlW2ldOwotCQkJbmV3ID0gMDsKLQkJCWlmICghcGFnZSkgewotCQkJ CXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9ISUdIVVNFUik7Ci0JCQkJYnBybS0+cGFnZVtpXSA9IHBh Z2U7Ci0JCQkJaWYgKCFwYWdlKSB7Ci0JCQkJCXJldCA9IC1FTk9NRU07CisJCQlpZiAob2Zmc2V0 ID09IDApCisJCQkJb2Zmc2V0ID0gUEFHRV9TSVpFOworCisJCQlieXRlc190b19jb3B5ID0gb2Zm c2V0OworCQkJaWYgKGJ5dGVzX3RvX2NvcHkgPiBsZW4pCisJCQkJYnl0ZXNfdG9fY29weSA9IGxl bjsKKworCQkJb2Zmc2V0IC09IGJ5dGVzX3RvX2NvcHk7CisJCQlwb3MgLT0gYnl0ZXNfdG9fY29w eTsKKwkJCXN0ciAtPSBieXRlc190b19jb3B5OworCQkJbGVuIC09IGJ5dGVzX3RvX2NvcHk7CisK KwkJCWlmICgha21hcHBlZF9wYWdlIHx8IGtwb3MgIT0gKHBvcyAmIFBBR0VfTUFTSykpIHsKKwkJ CQlzdHJ1Y3QgcGFnZSAqcGFnZTsKKworCQkJCXJldCA9IGdldF91c2VyX3BhZ2VzKGN1cnJlbnQs IGJwcm0tPm1tLCBwb3MsCisJCQkJCQkgICAgIDEsIDEsIDEsICZwYWdlLCBOVUxMKTsKKwkJCQlp ZiAocmV0IDw9IDApIHsKKwkJCQkJLyogV2UndmUgZXhjZWVkIHRoZSBzdGFjayBybGltaXQuICov CisJCQkJCXJldCA9IC1FMkJJRzsKIAkJCQkJZ290byBvdXQ7CiAJCQkJfQotCQkJCW5ldyA9IDE7 Ci0JCQl9CiAKLQkJCWlmIChwYWdlICE9IGttYXBwZWRfcGFnZSkgewotCQkJCWlmIChrbWFwcGVk X3BhZ2UpCisJCQkJaWYgKGttYXBwZWRfcGFnZSkgewogCQkJCQlrdW5tYXAoa21hcHBlZF9wYWdl KTsKKwkJCQkJcHV0X3BhZ2Uoa21hcHBlZF9wYWdlKTsKKwkJCQl9CiAJCQkJa21hcHBlZF9wYWdl ID0gcGFnZTsKIAkJCQlrYWRkciA9IGttYXAoa21hcHBlZF9wYWdlKTsKKwkJCQlrcG9zID0gcG9z ICYgUEFHRV9NQVNLOwogCQkJfQotCQkJaWYgKG5ldyAmJiBvZmZzZXQpCi0JCQkJbWVtc2V0KGth ZGRyLCAwLCBvZmZzZXQpOwotCQkJYnl0ZXNfdG9fY29weSA9IFBBR0VfU0laRSAtIG9mZnNldDsK LQkJCWlmIChieXRlc190b19jb3B5ID4gbGVuKSB7Ci0JCQkJYnl0ZXNfdG9fY29weSA9IGxlbjsK LQkJCQlpZiAobmV3KQotCQkJCQltZW1zZXQoa2FkZHIrb2Zmc2V0K2xlbiwgMCwKLQkJCQkJCVBB R0VfU0laRS1vZmZzZXQtbGVuKTsKLQkJCX0KLQkJCWVyciA9IGNvcHlfZnJvbV91c2VyKGthZGRy K29mZnNldCwgY29tcGF0X3B0cihzdHIpLAotCQkJCQkJYnl0ZXNfdG9fY29weSk7Ci0JCQlpZiAo ZXJyKSB7CisJCQlpZiAoY29weV9mcm9tX3VzZXIoa2FkZHIrb2Zmc2V0LCBjb21wYXRfcHRyKHN0 ciksCisJCQkJCQlieXRlc190b19jb3B5KSkgewogCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQkJZ290 byBvdXQ7CiAJCQl9Ci0KLQkJCXBvcyArPSBieXRlc190b19jb3B5OwotCQkJc3RyICs9IGJ5dGVz X3RvX2NvcHk7Ci0JCQlsZW4gLT0gYnl0ZXNfdG9fY29weTsKIAkJfQogCX0KIAlyZXQgPSAwOwog b3V0OgotCWlmIChrbWFwcGVkX3BhZ2UpCisJaWYgKGttYXBwZWRfcGFnZSkgewogCQlrdW5tYXAo a21hcHBlZF9wYWdlKTsKLQlyZXR1cm4gcmV0OwotfQotCi0jaWZkZWYgQ09ORklHX01NVQotCi0j ZGVmaW5lIGZyZWVfYXJnX3BhZ2VzKGJwcm0pIGRvIHsgfSB3aGlsZSAoMCkKLQotI2Vsc2UKLQot c3RhdGljIGlubGluZSB2b2lkIGZyZWVfYXJnX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJw cm0pCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0FSR19QQUdFUzsgaSsrKSB7 Ci0JCWlmIChicHJtLT5wYWdlW2ldKQotCQkJX19mcmVlX3BhZ2UoYnBybS0+cGFnZVtpXSk7Ci0J CWJwcm0tPnBhZ2VbaV0gPSBOVUxMOworCQlwdXRfcGFnZShrbWFwcGVkX3BhZ2UpOwogCX0KKwly ZXR1cm4gcmV0OwogfQogCi0jZW5kaWYgLyogQ09ORklHX01NVSAqLwotCiAvKgogICogY29tcGF0 X2RvX2V4ZWN2ZSgpIGlzIG1vc3RseSBhIGNvcHkgb2YgZG9fZXhlY3ZlKCksIHdpdGggdGhlIGV4 Y2VwdGlvbgogICogdGhhdCBpdCBwcm9jZXNzZXMgMzIgYml0IGFyZ3YgYW5kIGVudnAgcG9pbnRl cnMuCkBAIC0xNDkxLDcgKzE0NzIsNiBAQCBpbnQgY29tcGF0X2RvX2V4ZWN2ZShjaGFyICogZmls ZW5hbWUsCiAJc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybTsKIAlzdHJ1Y3QgZmlsZSAqZmlsZTsK IAlpbnQgcmV0dmFsOwotCWludCBpOwogCiAJcmV0dmFsID0gLUVOT01FTTsKIAlicHJtID0ga3ph bGxvYyhzaXplb2YoKmJwcm0pLCBHRlBfS0VSTkVMKTsKQEAgLTE1MDUsMjQgKzE0ODUsMTkgQEAg aW50IGNvbXBhdF9kb19leGVjdmUoY2hhciAqIGZpbGVuYW1lLAogCiAJc2NoZWRfZXhlYygpOwog Ci0JYnBybS0+cCA9IFBBR0VfU0laRSpNQVhfQVJHX1BBR0VTLXNpemVvZih2b2lkICopOwogCWJw cm0tPmZpbGUgPSBmaWxlOwogCWJwcm0tPmZpbGVuYW1lID0gZmlsZW5hbWU7CiAJYnBybS0+aW50 ZXJwID0gZmlsZW5hbWU7Ci0JYnBybS0+bW0gPSBtbV9hbGxvYygpOwotCXJldHZhbCA9IC1FTk9N RU07Ci0JaWYgKCFicHJtLT5tbSkKLQkJZ290byBvdXRfZmlsZTsKIAotCXJldHZhbCA9IGluaXRf bmV3X2NvbnRleHQoY3VycmVudCwgYnBybS0+bW0pOwotCWlmIChyZXR2YWwgPCAwKQotCQlnb3Rv IG91dF9tbTsKKwlyZXR2YWwgPSBicHJtX21tX2luaXQoYnBybSk7CisJaWYgKHJldHZhbCkKKwkJ Z290byBvdXRfZmlsZTsKIAotCWJwcm0tPmFyZ2MgPSBjb21wYXRfY291bnQoYXJndiwgYnBybS0+ cCAvIHNpemVvZihjb21wYXRfdXB0cl90KSk7CisJYnBybS0+YXJnYyA9IGNvbXBhdF9jb3VudChh cmd2LCBNQVhfQVJHX1NUUklOR1MpOwogCWlmICgocmV0dmFsID0gYnBybS0+YXJnYykgPCAwKQog CQlnb3RvIG91dF9tbTsKIAotCWJwcm0tPmVudmMgPSBjb21wYXRfY291bnQoZW52cCwgYnBybS0+ cCAvIHNpemVvZihjb21wYXRfdXB0cl90KSk7CisJYnBybS0+ZW52YyA9IGNvbXBhdF9jb3VudChl bnZwLCBNQVhfQVJHX1NUUklOR1MpOwogCWlmICgocmV0dmFsID0gYnBybS0+ZW52YykgPCAwKQog CQlnb3RvIG91dF9tbTsKIApAQCAtMTU0NywxMCArMTUyMiw4IEBAIGludCBjb21wYXRfZG9fZXhl Y3ZlKGNoYXIgKiBmaWxlbmFtZSwKIAlpZiAocmV0dmFsIDwgMCkKIAkJZ290byBvdXQ7CiAKLQly ZXR2YWwgPSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIoYnBybSwgcmVncyk7CisJcmV0dmFsID0gc2Vh cmNoX2JpbmFyeV9oYW5kbGVyKGJwcm0scmVncyk7CiAJaWYgKHJldHZhbCA+PSAwKSB7Ci0JCWZy ZWVfYXJnX3BhZ2VzKGJwcm0pOwotCiAJCS8qIGV4ZWN2ZSBzdWNjZXNzICovCiAJCXNlY3VyaXR5 X2Jwcm1fZnJlZShicHJtKTsKIAkJYWNjdF91cGRhdGVfaW50ZWdyYWxzKGN1cnJlbnQpOwpAQCAt MTU1OSwxOSArMTUzMiwxMiBAQCBpbnQgY29tcGF0X2RvX2V4ZWN2ZShjaGFyICogZmlsZW5hbWUs CiAJfQogCiBvdXQ6Ci0JLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHJldHVybiB0aGUgaW5vZGUg YW5kIGZyZWUgdGhlIGFyZ3VtZW50IHBhZ2VzKi8KLQlmb3IgKGkgPSAwIDsgaSA8IE1BWF9BUkdf UEFHRVMgOyBpKyspIHsKLQkJc3RydWN0IHBhZ2UgKiBwYWdlID0gYnBybS0+cGFnZVtpXTsKLQkJ aWYgKHBhZ2UpCi0JCQlfX2ZyZWVfcGFnZShwYWdlKTsKLQl9Ci0KIAlpZiAoYnBybS0+c2VjdXJp dHkpCiAJCXNlY3VyaXR5X2Jwcm1fZnJlZShicHJtKTsKIAogb3V0X21tOgogCWlmIChicHJtLT5t bSkKLQkJbW1kcm9wKGJwcm0tPm1tKTsKKwkJbW1wdXQgKGJwcm0tPm1tKTsKIAogb3V0X2ZpbGU6 CiAJaWYgKGJwcm0tPmZpbGUpIHsKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwpp bmRleCBkOTkzZWExLi4zNzM5YzI2IDEwMDY0NAotLS0gYS9mcy9leGVjLmMKKysrIGIvZnMvZXhl Yy5jCkBAIC0xNzIsNiArMTcyLDc5IEBAIGV4aXQ6CiAJZ290byBvdXQ7CiB9CiAKKyNpZmRlZiBD T05GSUdfU1RBQ0tfR1JPV1NVUAorI2Vycm9yCUkgYnJva2UgeW91ciBidWlsZCBiZWNhdXNlIEkg cmVhcmNoaXRlY3RlZCB0aGUgc3RhY2sgY29kZSwgYW5kIEkgXAorCWRvbid0IGhhdmUgYWNjZXNz IHRvIGFuIGFyY2hpdGVjdHVyZSB3aGVyZSBDT05GSUdfU1RBQ0tfR1JPV1NVUCBpcyBcCisJc2V0 LiAgUGxlYXNlIGZpeGUgdGhpcyBvciBzZW5kIG1lIGEgbWFjaGluZSB3aGljaCBJIGNhbiB0ZXN0 IHRoaXMgb24uIFwKKwlcCisJLS0gT2xsaWUgV2lsZCA8YWF3QGdvb2dsZS5jb20+CisjZW5kaWYK KworLyogQ3JlYXRlIGEgbmV3IG1tX3N0cnVjdCBhbmQgcG9wdWxhdGUgaXQgd2l0aCBhIHRlbXBv cmFyeSBzdGFjaworICogdm1fYXJlYV9zdHJ1Y3QuICBXZSBkb24ndCBoYXZlIGVub3VnaCBjb250 ZXh0IGF0IHRoaXMgcG9pbnQgdG8gc2V0IHRoZQorICogc3RhY2sgZmxhZ3MsIHBlcm1pc3Npb25z LCBhbmQgb2Zmc2V0LCBzbyB3ZSB1c2UgdGVtcG9yYXJ5IHZhbHVlcy4gIFdlJ2xsCisgKiB1cGRh dGUgdGhlbSBsYXRlciBpbiBzZXR1cF9hcmdfcGFnZXMoKS4gKi8KK2ludCBicHJtX21tX2luaXQo c3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKK3sKKwlpbnQgZXJyOworCXN0cnVjdCBtbV9zdHJ1 Y3QgKm1tID0gTlVMTDsKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IE5VTEw7CisKKwli cHJtLT5tbSA9IG1tID0gbW1fYWxsb2MoKTsKKwllcnIgPSAtRU5PTUVNOworCWlmICghbW0pCisJ CWdvdG8gZXJyOworCisJaWYgKChlcnIgPSBpbml0X25ld19jb250ZXh0KGN1cnJlbnQsIG1tKSkp CisJCWdvdG8gZXJyOworCisJYnBybS0+dm1hID0gdm1hID0ga21lbV9jYWNoZV96YWxsb2Modm1f YXJlYV9jYWNoZXAsIFNMQUJfS0VSTkVMKTsKKwllcnIgPSAtRU5PTUVNOworCWlmICghdm1hKQor CQlnb3RvIGVycjsKKworCWRvd25fd3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJeworCQl2bWEtPnZt X21tID0gbW07CisKKwkJLyogUGxhY2UgdGhlIHN0YWNrIGF0IHRoZSB0b3Agb2YgdXNlciBtZW1v cnkuICBMYXRlciwgd2UnbGwKKwkJICogbW92ZSB0aGlzIHRvIGFuIGFwcHJvcHJpYXRlIHBsYWNl LiAgV2UgZG9uJ3QgdXNlIFNUQUNLX1RPUAorCQkgKiBiZWNhdXNlIHRoYXQgY2FuIGRlcGVuZCBv biBhdHRyaWJ1dGVzIHdoaWNoIGFyZW4ndAorCQkgKiBjb25maWd1cmVkIHlldC4gKi8KKwkJdm1h LT52bV9lbmQgPSBUQVNLX1NJWkU7CisJCXZtYS0+dm1fc3RhcnQgPSB2bWEtPnZtX2VuZCAtIFBB R0VfU0laRTsKKworCQl2bWEtPnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1M7CisJCXZtYS0+dm1f cGFnZV9wcm90ID0gcHJvdGVjdGlvbl9tYXBbdm1hLT52bV9mbGFncyAmIDB4N107CisJCWlmICgo ZXJyID0gaW5zZXJ0X3ZtX3N0cnVjdChtbSwgdm1hKSkpIHsKKwkJCXVwX3dyaXRlKCZtbS0+bW1h cF9zZW0pOworCQkJZ290byBlcnI7CisJCX0KKworCQltbS0+c3RhY2tfdm0gPSBtbS0+dG90YWxf dm0gPSAxOworCX0KKwl1cF93cml0ZSgmbW0tPm1tYXBfc2VtKTsKKworCWJwcm0tPnAgPSB2bWEt PnZtX2VuZCAtIHNpemVvZih2b2lkICopOworCisJcmV0dXJuIDA7CisKK2VycjoKKwlpZiAodm1h KSB7CisJCWJwcm0tPnZtYSA9IE5VTEw7CisJCWttZW1fY2FjaGVfZnJlZSh2bV9hcmVhX2NhY2hl cCwgdm1hKTsKKwl9CisKKwlpZiAobW0pIHsKKwkJYnBybS0+bW0gPSBOVUxMOworCQltbWRyb3Ao bW0pOworCX0KKworCXJldHVybiBlcnI7Cit9CisKK0VYUE9SVF9TWU1CT0woYnBybV9tbV9pbml0 KTsKKwogLyoKICAqIGNvdW50KCkgY291bnRzIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBhcnJh eSBBUkdWLgogICovCkBAIC0xOTcsMTUgKzI3MCwxNiBAQCBzdGF0aWMgaW50IGNvdW50KGNoYXIg X191c2VyICogX191c2VyICogCiB9CiAKIC8qCi0gKiAnY29weV9zdHJpbmdzKCknIGNvcGllcyBh cmd1bWVudC9lbnZpcm9ubWVudCBzdHJpbmdzIGZyb20gdXNlcgotICogbWVtb3J5IHRvIGZyZWUg cGFnZXMgaW4ga2VybmVsIG1lbS4gVGhlc2UgYXJlIGluIGEgZm9ybWF0IHJlYWR5Ci0gKiB0byBi ZSBwdXQgZGlyZWN0bHkgaW50byB0aGUgdG9wIG9mIG5ldyB1c2VyIG1lbW9yeS4KKyAqICdjb3B5 X3N0cmluZ3MoKScgY29waWVzIGFyZ3VtZW50L2Vudmlyb25tZW50IHN0cmluZ3MgZnJvbSB0aGUg b2xkCisgKiBwcm9jZXNzZXMncyBtZW1vcnkgdG8gdGhlIG5ldyBwcm9jZXNzJ3Mgc3RhY2suICBU aGUgY2FsbCB0byBnZXRfdXNlcl9wYWdlcygpCisgKiBlbnN1cmVzIHRoZSBkZXN0aW5hdGlvbiBw YWdlIGlzIGNyZWF0ZWQgYW5kIG5vdCBzd2FwcGVkIG91dC4KICAqLwogc3RhdGljIGludCBjb3B5 X3N0cmluZ3MoaW50IGFyZ2MsIGNoYXIgX191c2VyICogX191c2VyICogYXJndiwKIAkJCXN0cnVj dCBsaW51eF9iaW5wcm0gKmJwcm0pCiB7CiAJc3RydWN0IHBhZ2UgKmttYXBwZWRfcGFnZSA9IE5V TEw7CiAJY2hhciAqa2FkZHIgPSBOVUxMOworCXVuc2lnbmVkIGxvbmcga3BvcyA9IDA7CiAJaW50 IHJldDsKIAogCXdoaWxlIChhcmdjLS0gPiAwKSB7CkBAIC0yMTQsNjkgKzI4OCw2OCBAQCBzdGF0 aWMgaW50IGNvcHlfc3RyaW5ncyhpbnQgYXJnYywgY2hhciBfCiAJCXVuc2lnbmVkIGxvbmcgcG9z OwogCiAJCWlmIChnZXRfdXNlcihzdHIsIGFyZ3YrYXJnYykgfHwKLQkJCQkhKGxlbiA9IHN0cm5s ZW5fdXNlcihzdHIsIGJwcm0tPnApKSkgeworCQkJCSEobGVuID0gc3Rybmxlbl91c2VyKHN0ciwg TUFYX0FSR19TVFJMRU4pKSkgewogCQkJcmV0ID0gLUVGQVVMVDsKIAkJCWdvdG8gb3V0OwogCQl9 CiAKLQkJaWYgKGJwcm0tPnAgPCBsZW4pICB7CisJCWlmIChNQVhfQVJHX1NUUkxFTiA8IGxlbikg ewogCQkJcmV0ID0gLUUyQklHOwogCQkJZ290byBvdXQ7CiAJCX0KIAotCQlicHJtLT5wIC09IGxl bjsKLQkJLyogWFhYOiBhZGQgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIG92ZXJmbG93IGNoZWNrIGhl cmUuICovCisJCS8qIFdlJ3JlIGdvaW5nIHRvIHdvcmsgb3VyIHdheSBiYWNrd29yZHMuICovCiAJ CXBvcyA9IGJwcm0tPnA7CisJCXN0ciArPSBsZW47CisJCWJwcm0tPnAgLT0gbGVuOwogCiAJCXdo aWxlIChsZW4gPiAwKSB7Ci0JCQlpbnQgaSwgbmV3LCBlcnI7CiAJCQlpbnQgb2Zmc2V0LCBieXRl c190b19jb3B5OwotCQkJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKIAkJCW9mZnNldCA9IHBvcyAlIFBB R0VfU0laRTsKLQkJCWkgPSBwb3MvUEFHRV9TSVpFOwotCQkJcGFnZSA9IGJwcm0tPnBhZ2VbaV07 Ci0JCQluZXcgPSAwOwotCQkJaWYgKCFwYWdlKSB7Ci0JCQkJcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQ X0hJR0hVU0VSKTsKLQkJCQlicHJtLT5wYWdlW2ldID0gcGFnZTsKLQkJCQlpZiAoIXBhZ2UpIHsK LQkJCQkJcmV0ID0gLUVOT01FTTsKKwkJCWlmIChvZmZzZXQgPT0gMCkKKwkJCQlvZmZzZXQgPSBQ QUdFX1NJWkU7CisKKwkJCWJ5dGVzX3RvX2NvcHkgPSBvZmZzZXQ7CisJCQlpZiAoYnl0ZXNfdG9f Y29weSA+IGxlbikKKwkJCQlieXRlc190b19jb3B5ID0gbGVuOworCisJCQlvZmZzZXQgLT0gYnl0 ZXNfdG9fY29weTsKKwkJCXBvcyAtPSBieXRlc190b19jb3B5OworCQkJc3RyIC09IGJ5dGVzX3Rv X2NvcHk7CisJCQlsZW4gLT0gYnl0ZXNfdG9fY29weTsKKworCQkJaWYgKCFrbWFwcGVkX3BhZ2Ug fHwga3BvcyAhPSAocG9zICYgUEFHRV9NQVNLKSkgeworCQkJCXN0cnVjdCBwYWdlICpwYWdlOwor CisJCQkJcmV0ID0gZ2V0X3VzZXJfcGFnZXMoY3VycmVudCwgYnBybS0+bW0sIHBvcywKKwkJCQkJ CSAgICAgMSwgMSwgMSwgJnBhZ2UsIE5VTEwpOworCQkJCWlmIChyZXQgPD0gMCkgeworCQkJCQkv KiBXZSd2ZSBleGNlZWQgdGhlIHN0YWNrIHJsaW1pdC4gKi8KKwkJCQkJcmV0ID0gLUUyQklHOwog CQkJCQlnb3RvIG91dDsKIAkJCQl9Ci0JCQkJbmV3ID0gMTsKLQkJCX0KIAotCQkJaWYgKHBhZ2Ug IT0ga21hcHBlZF9wYWdlKSB7Ci0JCQkJaWYgKGttYXBwZWRfcGFnZSkKKwkJCQlpZiAoa21hcHBl ZF9wYWdlKSB7CiAJCQkJCWt1bm1hcChrbWFwcGVkX3BhZ2UpOworCQkJCQlwdXRfcGFnZShrbWFw cGVkX3BhZ2UpOworCQkJCX0KIAkJCQlrbWFwcGVkX3BhZ2UgPSBwYWdlOwogCQkJCWthZGRyID0g a21hcChrbWFwcGVkX3BhZ2UpOworCQkJCWtwb3MgPSBwb3MgJiBQQUdFX01BU0s7CiAJCQl9Ci0J CQlpZiAobmV3ICYmIG9mZnNldCkKLQkJCQltZW1zZXQoa2FkZHIsIDAsIG9mZnNldCk7Ci0JCQli eXRlc190b19jb3B5ID0gUEFHRV9TSVpFIC0gb2Zmc2V0OwotCQkJaWYgKGJ5dGVzX3RvX2NvcHkg PiBsZW4pIHsKLQkJCQlieXRlc190b19jb3B5ID0gbGVuOwotCQkJCWlmIChuZXcpCi0JCQkJCW1l bXNldChrYWRkcitvZmZzZXQrbGVuLCAwLAotCQkJCQkJUEFHRV9TSVpFLW9mZnNldC1sZW4pOwot CQkJfQotCQkJZXJyID0gY29weV9mcm9tX3VzZXIoa2FkZHIrb2Zmc2V0LCBzdHIsIGJ5dGVzX3Rv X2NvcHkpOwotCQkJaWYgKGVycikgeworCQkJaWYgKGNvcHlfZnJvbV91c2VyKGthZGRyK29mZnNl dCwgc3RyLCBieXRlc190b19jb3B5KSkgewogCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQkJZ290byBv dXQ7CiAJCQl9Ci0KLQkJCXBvcyArPSBieXRlc190b19jb3B5OwotCQkJc3RyICs9IGJ5dGVzX3Rv X2NvcHk7Ci0JCQlsZW4gLT0gYnl0ZXNfdG9fY29weTsKIAkJfQogCX0KIAlyZXQgPSAwOwogb3V0 OgotCWlmIChrbWFwcGVkX3BhZ2UpCisJaWYgKGttYXBwZWRfcGFnZSkgewogCQlrdW5tYXAoa21h cHBlZF9wYWdlKTsKKwkJcHV0X3BhZ2Uoa21hcHBlZF9wYWdlKTsKKwl9CiAJcmV0dXJuIHJldDsK IH0KIApAQCAtMjk1LDE1NyArMzY4LDc5IEBAIGludCBjb3B5X3N0cmluZ3Nfa2VybmVsKGludCBh cmdjLGNoYXIgKioKIAogRVhQT1JUX1NZTUJPTChjb3B5X3N0cmluZ3Nfa2VybmVsKTsKIAotI2lm ZGVmIENPTkZJR19NTVUKLS8qCi0gKiBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byBtYXAgaW4gYSBw YWdlIGludG8gYW4gYWRkcmVzcyBzcGFjZTogbmVlZGVkIGJ5Ci0gKiBleGVjdmUoKSBmb3IgdGhl IGluaXRpYWwgc3RhY2sgYW5kIGVudmlyb25tZW50IHBhZ2VzLgotICoKLSAqIHZtYS0+dm1fbW0t Pm1tYXBfc2VtIGlzIGhlbGQgZm9yIHdyaXRpbmcuCi0gKi8KLXZvaWQgaW5zdGFsbF9hcmdfcGFn ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKLQkJCXN0cnVjdCBwYWdlICpwYWdlLCB1bnNp Z25lZCBsb25nIGFkZHJlc3MpCi17Ci0Jc3RydWN0IG1tX3N0cnVjdCAqbW0gPSB2bWEtPnZtX21t OwotCXB0ZV90ICogcHRlOwotCXNwaW5sb2NrX3QgKnB0bDsKLQotCWlmICh1bmxpa2VseShhbm9u X3ZtYV9wcmVwYXJlKHZtYSkpKQotCQlnb3RvIG91dDsKLQotCWZsdXNoX2RjYWNoZV9wYWdlKHBh Z2UpOwotCXB0ZSA9IGdldF9sb2NrZWRfcHRlKG1tLCBhZGRyZXNzLCAmcHRsKTsKLQlpZiAoIXB0 ZSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFwdGVfbm9uZSgqcHRlKSkgewotCQlwdGVfdW5tYXBfdW5s b2NrKHB0ZSwgcHRsKTsKLQkJZ290byBvdXQ7Ci0JfQotCWluY19tbV9jb3VudGVyKG1tLCBhbm9u X3Jzcyk7Ci0JbHJ1X2NhY2hlX2FkZF9hY3RpdmUocGFnZSk7Ci0Jc2V0X3B0ZV9hdChtbSwgYWRk cmVzcywgcHRlLCBwdGVfbWtkaXJ0eShwdGVfbWt3cml0ZShta19wdGUoCi0JCQkJCXBhZ2UsIHZt YS0+dm1fcGFnZV9wcm90KSkpKTsKLQlwYWdlX2FkZF9uZXdfYW5vbl9ybWFwKHBhZ2UsIHZtYSwg YWRkcmVzcyk7Ci0JcHRlX3VubWFwX3VubG9jayhwdGUsIHB0bCk7Ci0KLQkvKiBubyBuZWVkIGZv ciBmbHVzaF90bGIgKi8KLQlyZXR1cm47Ci1vdXQ6Ci0JX19mcmVlX3BhZ2UocGFnZSk7Ci0JZm9y Y2Vfc2lnKFNJR0tJTEwsIGN1cnJlbnQpOwotfQotCiAjZGVmaW5lIEVYVFJBX1NUQUNLX1ZNX1BB R0VTCTIwCS8qIHJhbmRvbSAqLwogCisvKiBGaW5hbGl6ZXMgdGhlIHN0YWNrIHZtX2FyZWFfc3Ry dWN0LiAgVGhlIGZsYWdzIGFuZCBwZXJtaXNzaW9ucyBhcmUgdXBkYXRlZCwKKyAqIHRoZSBzdGFj ayBpcyBvcHRpb25hbGx5IHJlbG9jYXRlZCwgYW5kIHNvbWUgZXh0cmEgc3BhY2UgaXMgYWRkZWQu CisgKi8KIGludCBzZXR1cF9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwKIAkJ ICAgIHVuc2lnbmVkIGxvbmcgc3RhY2tfdG9wLAogCQkgICAgaW50IGV4ZWN1dGFibGVfc3RhY2sp CiB7Ci0JdW5zaWduZWQgbG9uZyBzdGFja19iYXNlOwotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq bXBudDsKKwl1bnNpZ25lZCBsb25nIHJldDsKKwl1bnNpZ25lZCBsb25nIHN0YWNrX2Jhc2UsIHN0 YWNrX3NoaWZ0OwogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gY3VycmVudC0+bW07Ci0JaW50IGks IHJldDsKLQlsb25nIGFyZ19zaXplOwogCi0jaWZkZWYgQ09ORklHX1NUQUNLX0dST1dTVVAKLQkv KiBNb3ZlIHRoZSBhcmd1bWVudCBhbmQgZW52aXJvbm1lbnQgc3RyaW5ncyB0byB0aGUgYm90dG9t IG9mIHRoZQotCSAqIHN0YWNrIHNwYWNlLgotCSAqLwotCWludCBvZmZzZXQsIGo7Ci0JY2hhciAq dG8sICpmcm9tOwotCi0JLyogU3RhcnQgYnkgc2hpZnRpbmcgYWxsIHRoZSBwYWdlcyBkb3duICov Ci0JaSA9IDA7Ci0JZm9yIChqID0gMDsgaiA8IE1BWF9BUkdfUEFHRVM7IGorKykgewotCQlzdHJ1 Y3QgcGFnZSAqcGFnZSA9IGJwcm0tPnBhZ2Vbal07Ci0JCWlmICghcGFnZSkKLQkJCWNvbnRpbnVl OwotCQlicHJtLT5wYWdlW2krK10gPSBwYWdlOwotCX0KKwlCVUdfT04oc3RhY2tfdG9wID4gVEFT S19TSVpFKTsKKwlCVUdfT04oc3RhY2tfdG9wICYgflBBR0VfTUFTSyk7CiAKLQkvKiBOb3cgbW92 ZSB0aGVtIHdpdGhpbiB0aGVpciBwYWdlcyAqLwotCW9mZnNldCA9IGJwcm0tPnAgJSBQQUdFX1NJ WkU7Ci0JdG8gPSBrbWFwKGJwcm0tPnBhZ2VbMF0pOwotCWZvciAoaiA9IDE7IGogPCBpOyBqKysp IHsKLQkJbWVtbW92ZSh0bywgdG8gKyBvZmZzZXQsIFBBR0VfU0laRSAtIG9mZnNldCk7Ci0JCWZy b20gPSBrbWFwKGJwcm0tPnBhZ2Vbal0pOwotCQltZW1jcHkodG8gKyBQQUdFX1NJWkUgLSBvZmZz ZXQsIGZyb20sIG9mZnNldCk7Ci0JCWt1bm1hcChicHJtLT5wYWdlW2ogLSAxXSk7Ci0JCXRvID0g ZnJvbTsKLQl9Ci0JbWVtbW92ZSh0bywgdG8gKyBvZmZzZXQsIFBBR0VfU0laRSAtIG9mZnNldCk7 Ci0Ja3VubWFwKGJwcm0tPnBhZ2VbaiAtIDFdKTsKLQotCS8qIExpbWl0IHN0YWNrIHNpemUgdG8g MUdCICovCi0Jc3RhY2tfYmFzZSA9IGN1cnJlbnQtPnNpZ25hbC0+cmxpbVtSTElNSVRfU1RBQ0td LnJsaW1fbWF4OwotCWlmIChzdGFja19iYXNlID4gKDEgPDwgMzApKQotCQlzdGFja19iYXNlID0g MSA8PCAzMDsKLQlzdGFja19iYXNlID0gUEFHRV9BTElHTihzdGFja190b3AgLSBzdGFja19iYXNl KTsKLQotCS8qIEFkanVzdCBicHJtLT5wIHRvIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIHN0cmlu Z3MuICovCi0JYnBybS0+cCA9IHN0YWNrX2Jhc2UgKyBQQUdFX1NJWkUgKiBpIC0gb2Zmc2V0Owot Ci0JbW0tPmFyZ19zdGFydCA9IHN0YWNrX2Jhc2U7Ci0JYXJnX3NpemUgPSBpIDw8IFBBR0VfU0hJ RlQ7Ci0KLQkvKiB6ZXJvIHBhZ2VzIHRoYXQgd2VyZSBjb3BpZWQgYWJvdmUgKi8KLQl3aGlsZSAo aSA8IE1BWF9BUkdfUEFHRVMpCi0JCWJwcm0tPnBhZ2VbaSsrXSA9IE5VTEw7Ci0jZWxzZQotCXN0 YWNrX2Jhc2UgPSBhcmNoX2FsaWduX3N0YWNrKHN0YWNrX3RvcCAtIE1BWF9BUkdfUEFHRVMqUEFH RV9TSVpFKTsKKwlzdGFja19iYXNlID0gYXJjaF9hbGlnbl9zdGFjayhzdGFja190b3AgLSBtbS0+ c3RhY2tfdm0qUEFHRV9TSVpFKTsKIAlzdGFja19iYXNlID0gUEFHRV9BTElHTihzdGFja19iYXNl KTsKLQlicHJtLT5wICs9IHN0YWNrX2Jhc2U7Ci0JbW0tPmFyZ19zdGFydCA9IGJwcm0tPnA7Ci0J YXJnX3NpemUgPSBzdGFja190b3AgLSAoUEFHRV9NQVNLICYgKHVuc2lnbmVkIGxvbmcpIG1tLT5h cmdfc3RhcnQpOwotI2VuZGlmCiAKLQlhcmdfc2l6ZSArPSBFWFRSQV9TVEFDS19WTV9QQUdFUyAq IFBBR0VfU0laRTsKKwlzdGFja19zaGlmdCA9IChicHJtLT5wICYgUEFHRV9NQVNLKSAtIHN0YWNr X2Jhc2U7CisJQlVHX09OKHN0YWNrX3NoaWZ0IDwgMCk7CisJYnBybS0+cCAtPSBzdGFja19zaGlm dDsKKwltbS0+YXJnX3N0YXJ0ID0gYnBybS0+cDsKIAogCWlmIChicHJtLT5sb2FkZXIpCi0JCWJw cm0tPmxvYWRlciArPSBzdGFja19iYXNlOwotCWJwcm0tPmV4ZWMgKz0gc3RhY2tfYmFzZTsKLQot CW1wbnQgPSBrbWVtX2NhY2hlX2FsbG9jKHZtX2FyZWFfY2FjaGVwLCBTTEFCX0tFUk5FTCk7Ci0J aWYgKCFtcG50KQotCQlyZXR1cm4gLUVOT01FTTsKLQotCW1lbXNldChtcG50LCAwLCBzaXplb2Yo Km1wbnQpKTsKKwkJYnBybS0+bG9hZGVyIC09IHN0YWNrX3NoaWZ0OworCWJwcm0tPmV4ZWMgLT0g c3RhY2tfc2hpZnQ7CiAKIAlkb3duX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwogCXsKLQkJbXBudC0+ dm1fbW0gPSBtbTsKLSNpZmRlZiBDT05GSUdfU1RBQ0tfR1JPV1NVUAotCQltcG50LT52bV9zdGFy dCA9IHN0YWNrX2Jhc2U7Ci0JCW1wbnQtPnZtX2VuZCA9IHN0YWNrX2Jhc2UgKyBhcmdfc2l6ZTsK LSNlbHNlCi0JCW1wbnQtPnZtX2VuZCA9IHN0YWNrX3RvcDsKLQkJbXBudC0+dm1fc3RhcnQgPSBt cG50LT52bV9lbmQgLSBhcmdfc2l6ZTsKLSNlbmRpZgorCQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSA9IGJwcm0tPnZtYTsKKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICpwcmV2ID0gTlVMTDsK KwkJdW5zaWduZWQgbG9uZyB2bV9mbGFncyA9IHZtYS0+dm1fZmxhZ3M7CisKIAkJLyogQWRqdXN0 IHN0YWNrIGV4ZWN1dGUgcGVybWlzc2lvbnM7IGV4cGxpY2l0bHkgZW5hYmxlCiAJCSAqIGZvciBF WFNUQUNLX0VOQUJMRV9YLCBkaXNhYmxlIGZvciBFWFNUQUNLX0RJU0FCTEVfWAogCQkgKiBhbmQg bGVhdmUgYWxvbmUgKGFyY2ggZGVmYXVsdCkgb3RoZXJ3aXNlLiAqLwogCQlpZiAodW5saWtlbHko ZXhlY3V0YWJsZV9zdGFjayA9PSBFWFNUQUNLX0VOQUJMRV9YKSkKLQkJCW1wbnQtPnZtX2ZsYWdz ID0gVk1fU1RBQ0tfRkxBR1MgfCAgVk1fRVhFQzsKKwkJCXZtX2ZsYWdzIHw9IFZNX0VYRUM7CiAJ CWVsc2UgaWYgKGV4ZWN1dGFibGVfc3RhY2sgPT0gRVhTVEFDS19ESVNBQkxFX1gpCi0JCQltcG50 LT52bV9mbGFncyA9IFZNX1NUQUNLX0ZMQUdTICYgflZNX0VYRUM7Ci0JCWVsc2UKLQkJCW1wbnQt PnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1M7Ci0JCW1wbnQtPnZtX2ZsYWdzIHw9IG1tLT5kZWZf ZmxhZ3M7Ci0JCW1wbnQtPnZtX3BhZ2VfcHJvdCA9IHByb3RlY3Rpb25fbWFwW21wbnQtPnZtX2Zs YWdzICYgMHg3XTsKLQkJaWYgKChyZXQgPSBpbnNlcnRfdm1fc3RydWN0KG1tLCBtcG50KSkpIHsK KwkJCXZtX2ZsYWdzICY9IH5WTV9FWEVDOworCQl2bV9mbGFncyB8PSBtbS0+ZGVmX2ZsYWdzOwor CisJCXJldCA9IG1wcm90ZWN0X2ZpeHVwKHZtYSwgJnByZXYsIHZtYS0+dm1fc3RhcnQsIHZtYS0+ dm1fZW5kLAorCQkJCXZtX2ZsYWdzKTsKKwkJaWYgKHJldCkgewogCQkJdXBfd3JpdGUoJm1tLT5t bWFwX3NlbSk7Ci0JCQlrbWVtX2NhY2hlX2ZyZWUodm1fYXJlYV9jYWNoZXAsIG1wbnQpOwogCQkJ cmV0dXJuIHJldDsKIAkJfQotCQltbS0+c3RhY2tfdm0gPSBtbS0+dG90YWxfdm0gPSB2bWFfcGFn ZXMobXBudCk7Ci0JfQorCQlCVUdfT04ocHJldiAhPSB2bWEpOworCisJCS8qIE1vdmUgc3RhY2sg cGFnZXMgZG93biBpbiBtZW1vcnkuICovCisJCWlmIChzdGFja19zaGlmdCkgeworCQkJLyogVGhp cyBzaG91bGQgYmUgc2FmZSBldmVuIHdpdGggb3ZlcmxhcCBiZWNhdXNlIHdlCisJCQkgKiBhcmUg c2hpZnRpbmcgZG93bi4gKi8KKwkJCXJldCA9IG1vdmVfdm1hKHZtYSwgdm1hLT52bV9zdGFydCwK KwkJCQkJdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0LAorCQkJCQl2bWEtPnZtX2VuZCAtIHZt YS0+dm1fc3RhcnQsCisJCQkJCXZtYS0+dm1fc3RhcnQgLSBzdGFja19zaGlmdCk7CisJCQlpZiAo cmV0ICYgflBBR0VfTUFTSykgeworCQkJCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOworCQkJCXJl dHVybiByZXQ7CisJCQl9CisJCX0KIAotCWZvciAoaSA9IDAgOyBpIDwgTUFYX0FSR19QQUdFUyA7 IGkrKykgewotCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGJwcm0tPnBhZ2VbaV07Ci0JCWlmIChwYWdl KSB7Ci0JCQlicHJtLT5wYWdlW2ldID0gTlVMTDsKLQkJCWluc3RhbGxfYXJnX3BhZ2UobXBudCwg cGFnZSwgc3RhY2tfYmFzZSk7CisJCS8vIEV4cGFuZCB0aGUgc3RhY2suCisJCXZtYSA9IGZpbmRf dm1hKG1tLCBicHJtLT5wKTsKKwkJQlVHX09OKCF2bWEgfHwgYnBybS0+cCA8IHZtYS0+dm1fc3Rh cnQpOworCQlpZiAoZXhwYW5kX3N0YWNrKHZtYSwgc3RhY2tfYmFzZSAtCisJCQkJCUVYVFJBX1NU QUNLX1ZNX1BBR0VTICogUEFHRV9TSVpFKSkgeworCQkJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7 CisJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQotCQlzdGFja19iYXNlICs9IFBBR0VfU0laRTsKIAl9 CiAJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7CiAJCkBAIC00NTQsMjMgKzQ0OSw2IEBAICNlbmRp ZgogCiBFWFBPUlRfU1lNQk9MKHNldHVwX2FyZ19wYWdlcyk7CiAKLSNkZWZpbmUgZnJlZV9hcmdf cGFnZXMoYnBybSkgZG8geyB9IHdoaWxlICgwKQotCi0jZWxzZQotCi1zdGF0aWMgaW5saW5lIHZv aWQgZnJlZV9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKLXsKLQlpbnQgaTsK LQotCWZvciAoaSA9IDA7IGkgPCBNQVhfQVJHX1BBR0VTOyBpKyspIHsKLQkJaWYgKGJwcm0tPnBh Z2VbaV0pCi0JCQlfX2ZyZWVfcGFnZShicHJtLT5wYWdlW2ldKTsKLQkJYnBybS0+cGFnZVtpXSA9 IE5VTEw7Ci0JfQotfQotCi0jZW5kaWYgLyogQ09ORklHX01NVSAqLwotCiBzdHJ1Y3QgZmlsZSAq b3Blbl9leGVjKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJc3RydWN0IG5hbWVpZGF0YSBuZDsKQEAg LTk4Niw4ICs5NjQsMTAgQEAgdm9pZCBjb21wdXRlX2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0g KgogCiBFWFBPUlRfU1lNQk9MKGNvbXB1dGVfY3JlZHMpOwogCi12b2lkIHJlbW92ZV9hcmdfemVy byhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQoraW50IHJlbW92ZV9hcmdfemVybyhzdHJ1Y3Qg bGludXhfYmlucHJtICpicHJtKQogeworCWludCByZXQgPSAwOworCiAJaWYgKGJwcm0tPmFyZ2Mp IHsKIAkJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJCWNoYXIgKiBrYWRkcjsKQEAgLTEwMDEsMTMg Kzk4MSwyMyBAQCB2b2lkIHJlbW92ZV9hcmdfemVybyhzdHJ1Y3QgbGludXhfYmlucHJtCiAJCQkJ Y29udGludWU7CiAJCQlvZmZzZXQgPSAwOwogCQkJa3VubWFwX2F0b21pYyhrYWRkciwgS01fVVNF UjApOworCQkJcHV0X3BhZ2UocGFnZSk7CiBpbnNpZGU6Ci0JCQlwYWdlID0gYnBybS0+cGFnZVti cHJtLT5wL1BBR0VfU0laRV07CisJCQlyZXQgPSBnZXRfdXNlcl9wYWdlcyhjdXJyZW50LCBicHJt LT5tbSwgYnBybS0+cCwKKwkJCQkJICAgICAxLCAwLCAxLCAmcGFnZSwgTlVMTCk7CisJCQlpZiAo cmV0IDw9IDApIHsKKwkJCQlyZXQgPSAtRUZBVUxUOworCQkJCWdvdG8gb3V0OworCQkJfQogCQkJ a2FkZHIgPSBrbWFwX2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7CiAJCX0KIAkJa3VubWFwX2F0b21p YyhrYWRkciwgS01fVVNFUjApOwogCQlicHJtLT5hcmdjLS07CisJCXJldCA9IDA7CiAJfQorCitv dXQ6CisJcmV0dXJuIHJldDsKIH0KIAogRVhQT1JUX1NZTUJPTChyZW1vdmVfYXJnX3plcm8pOwpA QCAtMTAzNCw3ICsxMDI0LDcgQEAgI2lmZGVmIF9fYWxwaGFfXwogCQlmcHV0KGJwcm0tPmZpbGUp OwogCQlicHJtLT5maWxlID0gTlVMTDsKIAotCSAgICAgICAgbG9hZGVyID0gUEFHRV9TSVpFKk1B WF9BUkdfUEFHRVMtc2l6ZW9mKHZvaWQgKik7CisJICAgICAgICBsb2FkZXIgPSBicHJtLT52bWEt PnZtX2VuZCAtIHNpemVvZih2b2lkICopOwogCiAJCWZpbGUgPSBvcGVuX2V4ZWMoIi9zYmluL2xv YWRlciIpOwogCQlyZXR2YWwgPSBQVFJfRVJSKGZpbGUpOwpAQCAtMTEyNyw3ICsxMTE3LDYgQEAg aW50IGRvX2V4ZWN2ZShjaGFyICogZmlsZW5hbWUsCiAJc3RydWN0IGxpbnV4X2JpbnBybSAqYnBy bTsKIAlzdHJ1Y3QgZmlsZSAqZmlsZTsKIAlpbnQgcmV0dmFsOwotCWludCBpOwogCiAJcmV0dmFs ID0gLUVOT01FTTsKIAlicHJtID0ga3phbGxvYyhzaXplb2YoKmJwcm0pLCBHRlBfS0VSTkVMKTsK QEAgLTExNDEsMjUgKzExMzAsMTkgQEAgaW50IGRvX2V4ZWN2ZShjaGFyICogZmlsZW5hbWUsCiAK IAlzY2hlZF9leGVjKCk7CiAKLQlicHJtLT5wID0gUEFHRV9TSVpFKk1BWF9BUkdfUEFHRVMtc2l6 ZW9mKHZvaWQgKik7Ci0KIAlicHJtLT5maWxlID0gZmlsZTsKIAlicHJtLT5maWxlbmFtZSA9IGZp bGVuYW1lOwogCWJwcm0tPmludGVycCA9IGZpbGVuYW1lOwotCWJwcm0tPm1tID0gbW1fYWxsb2Mo KTsKLQlyZXR2YWwgPSAtRU5PTUVNOwotCWlmICghYnBybS0+bW0pCi0JCWdvdG8gb3V0X2ZpbGU7 CiAKLQlyZXR2YWwgPSBpbml0X25ld19jb250ZXh0KGN1cnJlbnQsIGJwcm0tPm1tKTsKLQlpZiAo cmV0dmFsIDwgMCkKLQkJZ290byBvdXRfbW07CisJcmV0dmFsID0gYnBybV9tbV9pbml0KGJwcm0p OworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0X2ZpbGU7CiAKLQlicHJtLT5hcmdjID0gY291bnQo YXJndiwgYnBybS0+cCAvIHNpemVvZih2b2lkICopKTsKKwlicHJtLT5hcmdjID0gY291bnQoYXJn diwgTUFYX0FSR19TVFJJTkdTKTsKIAlpZiAoKHJldHZhbCA9IGJwcm0tPmFyZ2MpIDwgMCkKIAkJ Z290byBvdXRfbW07CiAKLQlicHJtLT5lbnZjID0gY291bnQoZW52cCwgYnBybS0+cCAvIHNpemVv Zih2b2lkICopKTsKKwlicHJtLT5lbnZjID0gY291bnQoZW52cCwgTUFYX0FSR19TVFJJTkdTKTsK IAlpZiAoKHJldHZhbCA9IGJwcm0tPmVudmMpIDwgMCkKIAkJZ290byBvdXRfbW07CiAKQEAgLTEx ODYsOCArMTE2OSw2IEBAIGludCBkb19leGVjdmUoY2hhciAqIGZpbGVuYW1lLAogCiAJcmV0dmFs ID0gc2VhcmNoX2JpbmFyeV9oYW5kbGVyKGJwcm0scmVncyk7CiAJaWYgKHJldHZhbCA+PSAwKSB7 Ci0JCWZyZWVfYXJnX3BhZ2VzKGJwcm0pOwotCiAJCS8qIGV4ZWN2ZSBzdWNjZXNzICovCiAJCXNl Y3VyaXR5X2Jwcm1fZnJlZShicHJtKTsKIAkJYWNjdF91cGRhdGVfaW50ZWdyYWxzKGN1cnJlbnQp OwpAQCAtMTE5NiwxOSArMTE3NywxMiBAQCBpbnQgZG9fZXhlY3ZlKGNoYXIgKiBmaWxlbmFtZSwK IAl9CiAKIG91dDoKLQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgcmV0dXJuIHRoZSBpbm9kZSBh bmQgZnJlZSB0aGUgYXJndW1lbnQgcGFnZXMqLwotCWZvciAoaSA9IDAgOyBpIDwgTUFYX0FSR19Q QUdFUyA7IGkrKykgewotCQlzdHJ1Y3QgcGFnZSAqIHBhZ2UgPSBicHJtLT5wYWdlW2ldOwotCQlp ZiAocGFnZSkKLQkJCV9fZnJlZV9wYWdlKHBhZ2UpOwotCX0KLQogCWlmIChicHJtLT5zZWN1cml0 eSkKIAkJc2VjdXJpdHlfYnBybV9mcmVlKGJwcm0pOwogCiBvdXRfbW06CiAJaWYgKGJwcm0tPm1t KQotCQltbWRyb3AoYnBybS0+bW0pOworCQltbXB1dCAoYnBybS0+bW0pOwogCiBvdXRfZmlsZToK IAlpZiAoYnBybS0+ZmlsZSkgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgg Yi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaAppbmRleCBjMWU4MmM1Li4zZTExNTkxIDEwMDY0NAot LS0gYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMu aApAQCAtNSwxMiArNSw5IEBAICNpbmNsdWRlIDxsaW51eC9jYXBhYmlsaXR5Lmg+CiAKIHN0cnVj dCBwdF9yZWdzOwogCi0vKgotICogTUFYX0FSR19QQUdFUyBkZWZpbmVzIHRoZSBudW1iZXIgb2Yg cGFnZXMgYWxsb2NhdGVkIGZvciBhcmd1bWVudHMKLSAqIGFuZCBlbnZlbG9wZSBmb3IgdGhlIG5l dyBwcm9ncmFtLiAzMiBzaG91bGQgc3VmZmljZSwgdGhpcyBnaXZlcwotICogYSBtYXhpbXVtIGVu dithcmcgb2YgMTI4a0Igdy80S0IgcGFnZXMhCi0gKi8KLSNkZWZpbmUgTUFYX0FSR19QQUdFUyAz MgorLyogRklYTUU6IEZpbmQgcmVhbCBsaW1pdHMsIG9yIG5vbmUuICovCisjZGVmaW5lIE1BWF9B UkdfU1RSTEVOIChQQUdFX1NJWkUgKiAzMikKKyNkZWZpbmUgTUFYX0FSR19TVFJJTkdTIDB4N0ZG RkZGRkYKIAogLyogc2l6ZW9mKGxpbnV4X2JpbnBybS0+YnVmKSAqLwogI2RlZmluZSBCSU5QUk1f QlVGX1NJWkUgMTI4CkBAIC0yMiw3ICsxOSw3IEBAICNpZmRlZiBfX0tFUk5FTF9fCiAgKi8KIHN0 cnVjdCBsaW51eF9iaW5wcm17CiAJY2hhciBidWZbQklOUFJNX0JVRl9TSVpFXTsKLQlzdHJ1Y3Qg cGFnZSAqcGFnZVtNQVhfQVJHX1BBR0VTXTsKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsK IAlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKIAl1bnNpZ25lZCBsb25nIHA7IC8qIGN1cnJlbnQgdG9w IG9mIG1lbSAqLwogCWludCBzaF9iYW5nOwpAQCAtNjUsNyArNjIsNyBAQCBleHRlcm4gaW50IHJl Z2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhfCiBleHRlcm4gaW50IHVucmVnaXN0ZXJfYmluZm10 KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CiAKIGV4dGVybiBpbnQgcHJlcGFyZV9iaW5wcm0oc3Ry dWN0IGxpbnV4X2JpbnBybSAqKTsKLWV4dGVybiB2b2lkIHJlbW92ZV9hcmdfemVybyhzdHJ1Y3Qg bGludXhfYmlucHJtICopOworZXh0ZXJuIGludCBfX211c3RfY2hlY2sgcmVtb3ZlX2FyZ196ZXJv KHN0cnVjdCBsaW51eF9iaW5wcm0gKik7CiBleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxl cihzdHJ1Y3QgbGludXhfYmlucHJtICosc3RydWN0IHB0X3JlZ3MgKik7CiBleHRlcm4gaW50IGZs dXNoX29sZF9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKIApAQCAtODIsNiArNzks NyBAQCAjZGVmaW5lIEVYU1RBQ0tfRU5BQkxFX1ggIDIJLyogRW5hYmxlIGV4CiBleHRlcm4gaW50 IHNldHVwX2FyZ19wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSwKIAkJCSAgIHVuc2ln bmVkIGxvbmcgc3RhY2tfdG9wLAogCQkJICAgaW50IGV4ZWN1dGFibGVfc3RhY2spOworZXh0ZXJu IGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CiBleHRlcm4gaW50 IGNvcHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9i aW5wcm0gKmJwcm0pOwogZXh0ZXJuIHZvaWQgY29tcHV0ZV9jcmVkcyhzdHJ1Y3QgbGludXhfYmlu cHJtICpiaW5wcm0pOwogZXh0ZXJuIGludCBkb19jb3JlZHVtcChsb25nIHNpZ25yLCBpbnQgZXhp dF9jb2RlLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4IDI2MTQ2NjIuLmJiMWQ0YzkgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTcz OCw3ICs3MzgsNiBAQCAjZW5kaWYKIAogZXh0ZXJuIGludCBtYWtlX3BhZ2VzX3ByZXNlbnQodW5z aWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCk7CiBleHRlcm4gaW50IGFjY2Vzc19w cm9jZXNzX3ZtKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIGFkZHIsIHZv aWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKTsKLXZvaWQgaW5zdGFsbF9hcmdfcGFnZShzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZyk7CiAKIGlu dCBnZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVj dCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCWludCBsZW4sIGludCB3cml0ZSwgaW50IGZv cmNlLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKip2bWFzKTsK QEAgLTc1NCw5ICs3NTMsMTUgQEAgaW50IEZBU1RDQUxMKHNldF9wYWdlX2RpcnR5KHN0cnVjdCBw YWdlIAogaW50IHNldF9wYWdlX2RpcnR5X2xvY2soc3RydWN0IHBhZ2UgKnBhZ2UpOwogaW50IGNs ZWFyX3BhZ2VfZGlydHlfZm9yX2lvKHN0cnVjdCBwYWdlICpwYWdlKTsKIAorZXh0ZXJuIHVuc2ln bmVkIGxvbmcgbW92ZV92bWEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJCXVuc2lnbmVk IGxvbmcgb2xkX2FkZHIsIHVuc2lnbmVkIGxvbmcgb2xkX2xlbiwKKwkJdW5zaWduZWQgbG9uZyBu ZXdfbGVuLCB1bnNpZ25lZCBsb25nIG5ld19hZGRyKTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIGRv X21yZW1hcCh1bnNpZ25lZCBsb25nIGFkZHIsCiAJCQkgICAgICAgdW5zaWduZWQgbG9uZyBvbGRf bGVuLCB1bnNpZ25lZCBsb25nIG5ld19sZW4sCiAJCQkgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn cywgdW5zaWduZWQgbG9uZyBuZXdfYWRkcik7CitleHRlcm4gaW50IG1wcm90ZWN0X2ZpeHVwKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKipw cHJldiwgdW5zaWduZWQgbG9uZyBzdGFydCwKKwkJCSAgdW5zaWduZWQgbG9uZyBlbmQsIHVuc2ln bmVkIGxvbmcgbmV3ZmxhZ3MpOwogCiAvKgogICogUHJvdG90eXBlIHRvIGFkZCBhIHNocmlua2Vy IGNhbGxiYWNrIGZvciBhZ2VhYmxlIGNhY2hlcy4KZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdHNj LmMgYi9rZXJuZWwvYXVkaXRzYy5jCmluZGV4IDQyZjJmMTEuLmQyNWM3M2UgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9hdWRpdHNjLmMKKysrIGIva2VybmVsL2F1ZGl0c2MuYwpAQCAtMTc0OCw2ICsxNzQ4 LDEwIEBAIGludCBfX2F1ZGl0X2lwY19zZXRfcGVybSh1bnNpZ25lZCBsb25nIHEKIAogaW50IGF1 ZGl0X2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIHsKKwkvKiBGSVhNRTogRG9uJ3Qg ZG8gYW55dGhpbmcgZm9yIG5vdyB1bnRpbCBJIGZpZ3VyZSBvdXQgaG93IHRvIGhhbmRsZQorCSAq IHRoaXMuICBXaXRoIHRoZSBsYXRlc3QgY2hhbmdlcywga21hbGxvYyBjb3VsZCB3ZWxsIGZhaWwg dW5kZXIgZ29vZAorCSAqIHNjZW5hcmlvcy4gKi8KKyNpZiAwCiAJc3RydWN0IGF1ZGl0X2F1eF9k YXRhX2V4ZWN2ZSAqYXg7CiAJc3RydWN0IGF1ZGl0X2NvbnRleHQgKmNvbnRleHQgPSBjdXJyZW50 LT5hdWRpdF9jb250ZXh0OwogCXVuc2lnbmVkIGxvbmcgcCwgbmV4dDsKQEAgLTE3NzUsNiArMTc3 OSw3IEBAIGludCBhdWRpdF9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0KIAlheC0+ZC50 eXBlID0gQVVESVRfRVhFQ1ZFOwogCWF4LT5kLm5leHQgPSBjb250ZXh0LT5hdXg7CiAJY29udGV4 dC0+YXV4ID0gKHZvaWQgKilheDsKKyNlbmRpZgogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQg YS9tbS9tcHJvdGVjdC5jIGIvbW0vbXByb3RlY3QuYwppbmRleCAzYjhmM2MwLi5lODM0NmMzIDEw MDY0NAotLS0gYS9tbS9tcHJvdGVjdC5jCisrKyBiL21tL21wcm90ZWN0LmMKQEAgLTEyOCw3ICsx MjgsNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VfcHJvdGVjdGlvbihzdHJ1Y3Qgdm1fCiAJZmx1c2hf dGxiX3JhbmdlKHZtYSwgc3RhcnQsIGVuZCk7CiB9CiAKLXN0YXRpYyBpbnQKK2ludAogbXByb3Rl Y3RfZml4dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqKnBwcmV2LAogCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCB1bnNp Z25lZCBsb25nIG5ld2ZsYWdzKQogewpkaWZmIC0tZ2l0IGEvbW0vbXJlbWFwLmMgYi9tbS9tcmVt YXAuYwppbmRleCA5Yzc2OWZhLi45NTdiNmFmIDEwMDY0NAotLS0gYS9tbS9tcmVtYXAuYworKysg Yi9tbS9tcmVtYXAuYwpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIG1v dmVfcGFnZV90YWJsZXMoc3QKIAlyZXR1cm4gbGVuICsgb2xkX2FkZHIgLSBvbGRfZW5kOwkvKiBo b3cgbXVjaCBkb25lICovCiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1vdmVfdm1hKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAordW5zaWduZWQgbG9uZyBtb3ZlX3ZtYShzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwKIAkJdW5zaWduZWQgbG9uZyBvbGRfYWRkciwgdW5zaWduZWQgbG9u ZyBvbGRfbGVuLAogCQl1bnNpZ25lZCBsb25nIG5ld19sZW4sIHVuc2lnbmVkIGxvbmcgbmV3X2Fk ZHIpCiB7Cg== ------=_Part_15902_18081752.1160603294502--