Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932398AbXEFIvq (ORCPT ); Sun, 6 May 2007 04:51:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932819AbXEFIvq (ORCPT ); Sun, 6 May 2007 04:51:46 -0400 Received: from smtp-out.google.com ([216.239.45.13]:11880 "EHLO smtp-out.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932398AbXEFIvm (ORCPT ); Sun, 6 May 2007 04:51:42 -0400 DomainKey-Signature: a=rsa-sha1; s=beta; d=google.com; c=nofws; q=dns; h=received:message-id:date:from:to:subject:mime-version:content-type; b=sN2GNcOUWUdUZ0QjuaDE6rcq4JBtJk2l+cPAMNQoyioUMCStOLM8i8+kLsf0GRbL5 +Feo1cffY9cwjFwY1NHyg== Message-ID: <65dd6fd50705060151m78bb9b4fpcb941b16a8c4709e@mail.gmail.com> Date: Sun, 6 May 2007 01:51:34 -0700 From: "Ollie Wild" To: "Peter Zijlstra" , linux-kernel@vger.kernel.org, parisc-linux@lists.parisc-linux.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, "Andrew Morton" , "Ingo Molnar" , "Andi Kleen" Subject: [patch] removes MAX_ARG_PAGES MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_33774_26921243.1178441494253" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 65183 Lines: 867 ------=_Part_33774_26921243.1178441494253 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline A while back, I sent out a preliminary patch (http://thread.gmane.org/gmane.linux.ports.hppa/752) to remove the MAX_ARG_PAGES limit on command line sizes. Since then, Peter Zijlstra and I have fixed a number of bugs and addressed the various outstanding issues. The attached patch incorporates the following changes: - Fixes a BUG_ON() assertion failure discovered by Ingo Molnar. - Adds CONFIG_STACK_GROWSUP (parisc) support. - Adds auditing support. - Reverts to the old behavior on architectures with no MMU. - Fixes broken execution of 64-bit binaries from 32-bit binaries. - Adds elf_fdpic support. - Fixes cache coherency bugs. We've tested the following architectures: i386, x86_64, um/i386, parisc, and frv. These are representative of the various scenarios which this patch addresses, but other architecture teams should try it out to make sure there aren't any unexpected gotchas. Ollie ------=_Part_33774_26921243.1178441494253 Content-Type: text/x-patch; name=no_MAX_ARG_PAGES.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f1d7no2u Content-Disposition: attachment; filename="no_MAX_ARG_PAGES.patch" ZGlmZiAtLWdpdCBhL2FyY2gvdW0va2VybmVsL3RyYXAuYyBiL2FyY2gvdW0va2VybmVsL3RyYXAu YwppbmRleCAyNmYxNWM0Li4wMjIwNDNlIDEwMDY0NAotLS0gYS9hcmNoL3VtL2tlcm5lbC90cmFw LmMKKysrIGIvYXJjaC91bS9rZXJuZWwvdHJhcC5jCkBAIC02MCw4ICs2MCw2IEBAIGludCBoYW5k bGVfcGFnZV9mYXVsdCh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgaXAsCiAJ CWdvdG8gZ29vZF9hcmVhOwogCWVsc2UgaWYoISh2bWEtPnZtX2ZsYWdzICYgVk1fR1JPV1NET1dO KSkKIAkJZ290byBvdXQ7Ci0JZWxzZSBpZihpc191c2VyICYmICFBUkNIX0lTX1NUQUNLR1JPVyhh ZGRyZXNzKSkKLQkJZ290byBvdXQ7CiAJZWxzZSBpZihleHBhbmRfc3RhY2sodm1hLCBhZGRyZXNz KSkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2XzY0L2lhMzIvaWEzMl9iaW5m bXQuYyBiL2FyY2gveDg2XzY0L2lhMzIvaWEzMl9iaW5mbXQuYwppbmRleCAxODUzOTliLi5hMjcz MWZjIDEwMDY0NAotLS0gYS9hcmNoL3g4Nl82NC9pYTMyL2lhMzJfYmluZm10LmMKKysrIGIvYXJj aC94ODZfNjQvaWEzMi9pYTMyX2JpbmZtdC5jCkBAIC0yMzIsOSArMjMyLDYgQEAgZG8gewkJCQkJ CQlcCiAjZGVmaW5lIGxvYWRfZWxmX2JpbmFyeSBsb2FkX2VsZjMyX2JpbmFyeQogCiAjZGVmaW5l IEVMRl9QTEFUX0lOSVQociwgbG9hZF9hZGRyKQllbGYzMl9pbml0KHIpCi0jZGVmaW5lIHNldHVw X2FyZ19wYWdlcyhicHJtLCBzdGFja190b3AsIGV4ZWNfc3RhY2spIFwKLQlpYTMyX3NldHVwX2Fy Z19wYWdlcyhicHJtLCBzdGFja190b3AsIGV4ZWNfc3RhY2spCi1pbnQgaWEzMl9zZXR1cF9hcmdf cGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgdW5zaWduZWQgbG9uZyBzdGFja190b3As IGludCBleGVjdXRhYmxlX3N0YWNrKTsKIAogI3VuZGVmIHN0YXJ0X3RocmVhZAogI2RlZmluZSBz dGFydF90aHJlYWQocmVncyxuZXdfcmlwLG5ld19yc3ApIGRvIHsgXApAQCAtMjg5LDU1ICsyODYs NyBAQCBzdGF0aWMgdm9pZCBlbGYzMl9pbml0KHN0cnVjdCBwdF9yZWdzICpyZWdzKQogaW50IGlh MzJfc2V0dXBfYXJnX3BhZ2VzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHVuc2lnbmVkIGxv bmcgc3RhY2tfdG9wLAogCQkJIGludCBleGVjdXRhYmxlX3N0YWNrKQogewotCXVuc2lnbmVkIGxv bmcgc3RhY2tfYmFzZTsKLQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKm1wbnQ7Ci0Jc3RydWN0IG1t X3N0cnVjdCAqbW0gPSBjdXJyZW50LT5tbTsKLQlpbnQgaSwgcmV0OwotCi0Jc3RhY2tfYmFzZSA9 IHN0YWNrX3RvcCAtIE1BWF9BUkdfUEFHRVMgKiBQQUdFX1NJWkU7Ci0JbW0tPmFyZ19zdGFydCA9 IGJwcm0tPnAgKyBzdGFja19iYXNlOwotCi0JYnBybS0+cCArPSBzdGFja19iYXNlOwotCWlmIChi cHJtLT5sb2FkZXIpCi0JCWJwcm0tPmxvYWRlciArPSBzdGFja19iYXNlOwotCWJwcm0tPmV4ZWMg Kz0gc3RhY2tfYmFzZTsKLQotCW1wbnQgPSBrbWVtX2NhY2hlX3phbGxvYyh2bV9hcmVhX2NhY2hl cCwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFtcG50KSAKLQkJcmV0dXJuIC1FTk9NRU07IAotCi0JZG93 bl93cml0ZSgmbW0tPm1tYXBfc2VtKTsKLQl7Ci0JCW1wbnQtPnZtX21tID0gbW07Ci0JCW1wbnQt PnZtX3N0YXJ0ID0gUEFHRV9NQVNLICYgKHVuc2lnbmVkIGxvbmcpIGJwcm0tPnA7Ci0JCW1wbnQt PnZtX2VuZCA9IHN0YWNrX3RvcDsKLQkJaWYgKGV4ZWN1dGFibGVfc3RhY2sgPT0gRVhTVEFDS19F TkFCTEVfWCkKLQkJCW1wbnQtPnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1MgfCAgVk1fRVhFQzsK LQkJZWxzZSBpZiAoZXhlY3V0YWJsZV9zdGFjayA9PSBFWFNUQUNLX0RJU0FCTEVfWCkKLQkJCW1w bnQtPnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1MgJiB+Vk1fRVhFQzsKLQkJZWxzZQotCQkJbXBu dC0+dm1fZmxhZ3MgPSBWTV9TVEFDS19GTEFHUzsKLSAJCW1wbnQtPnZtX3BhZ2VfcHJvdCA9ICht cG50LT52bV9mbGFncyAmIFZNX0VYRUMpID8gCi0gCQkJUEFHRV9DT1BZX0VYRUMgOiBQQUdFX0NP UFk7Ci0JCWlmICgocmV0ID0gaW5zZXJ0X3ZtX3N0cnVjdChtbSwgbXBudCkpKSB7Ci0JCQl1cF93 cml0ZSgmbW0tPm1tYXBfc2VtKTsKLQkJCWttZW1fY2FjaGVfZnJlZSh2bV9hcmVhX2NhY2hlcCwg bXBudCk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9Ci0JCW1tLT5zdGFja192bSA9IG1tLT50b3RhbF92 bSA9IHZtYV9wYWdlcyhtcG50KTsKLQl9IAotCi0JZm9yIChpID0gMCA7IGkgPCBNQVhfQVJHX1BB R0VTIDsgaSsrKSB7Ci0JCXN0cnVjdCBwYWdlICpwYWdlID0gYnBybS0+cGFnZVtpXTsKLQkJaWYg KHBhZ2UpIHsKLQkJCWJwcm0tPnBhZ2VbaV0gPSBOVUxMOwotCQkJaW5zdGFsbF9hcmdfcGFnZSht cG50LCBwYWdlLCBzdGFja19iYXNlKTsKLQkJfQotCQlzdGFja19iYXNlICs9IFBBR0VfU0laRTsK LQl9Ci0JdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7Ci0JCi0JcmV0dXJuIDA7CisJcmV0dXJuIHNl dHVwX2FyZ19wYWdlcyhicHJtLCBzdGFja190b3AsIGV4ZWN1dGFibGVfc3RhY2spOwogfQogRVhQ T1JUX1NZTUJPTChpYTMyX3NldHVwX2FyZ19wYWdlcyk7CiAKZGlmZiAtLWdpdCBhL2ZzL2JpbmZt dF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuYwppbmRleCA5Y2M0ZjBhLi5mYTBjZjc3IDEwMDY0NAot LS0gYS9mcy9iaW5mbXRfZWxmLmMKKysrIGIvZnMvYmluZm10X2VsZi5jCkBAIC0yNTQsOCArMjU0 LDggQEAgY3JlYXRlX2VsZl90YWJsZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgc3RydWN0 IGVsZmhkciAqZXhlYywKIAkJc2l6ZV90IGxlbjsKIAkJaWYgKF9fcHV0X3VzZXIoKGVsZl9hZGRy X3QpcCwgYXJndisrKSkKIAkJCXJldHVybiAtRUZBVUxUOwotCQlsZW4gPSBzdHJubGVuX3VzZXIo KHZvaWQgX191c2VyICopcCwgUEFHRV9TSVpFKk1BWF9BUkdfUEFHRVMpOwotCQlpZiAoIWxlbiB8 fCBsZW4gPiBQQUdFX1NJWkUqTUFYX0FSR19QQUdFUykKKwkJbGVuID0gc3Rybmxlbl91c2VyKCh2 b2lkIF9fdXNlciAqKXAsIE1BWF9BUkdfU1RSTEVOKTsKKwkJaWYgKCFsZW4gfHwgbGVuID4gTUFY X0FSR19TVFJMRU4pCiAJCQlyZXR1cm4gMDsKIAkJcCArPSBsZW47CiAJfQpAQCAtMjY2LDggKzI2 Niw4IEBAIGNyZWF0ZV9lbGZfdGFibGVzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIHN0cnVj dCBlbGZoZHIgKmV4ZWMsCiAJCXNpemVfdCBsZW47CiAJCWlmIChfX3B1dF91c2VyKChlbGZfYWRk cl90KXAsIGVudnArKykpCiAJCQlyZXR1cm4gLUVGQVVMVDsKLQkJbGVuID0gc3Rybmxlbl91c2Vy KCh2b2lkIF9fdXNlciAqKXAsIFBBR0VfU0laRSpNQVhfQVJHX1BBR0VTKTsKLQkJaWYgKCFsZW4g fHwgbGVuID4gUEFHRV9TSVpFKk1BWF9BUkdfUEFHRVMpCisJCWxlbiA9IHN0cm5sZW5fdXNlcigo dm9pZCBfX3VzZXIgKilwLCBNQVhfQVJHX1NUUkxFTik7CisJCWlmICghbGVuIHx8IGxlbiA+IE1B WF9BUkdfU1RSTEVOKQogCQkJcmV0dXJuIDA7CiAJCXAgKz0gbGVuOwogCX0KQEAgLTc3NywxMCAr Nzc3LDYgQEAgc3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAq YnBybSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJfQogCiAJLyogT0ssIFRoaXMgaXMgdGhlIHBv aW50IG9mIG5vIHJldHVybiAqLwotCWN1cnJlbnQtPm1tLT5zdGFydF9kYXRhID0gMDsKLQljdXJy ZW50LT5tbS0+ZW5kX2RhdGEgPSAwOwotCWN1cnJlbnQtPm1tLT5lbmRfY29kZSA9IDA7Ci0JY3Vy cmVudC0+bW0tPm1tYXAgPSBOVUxMOwogCWN1cnJlbnQtPmZsYWdzICY9IH5QRl9GT1JLTk9FWEVD OwogCWN1cnJlbnQtPm1tLT5kZWZfZmxhZ3MgPSBkZWZfZmxhZ3M7CiAKQEAgLTk4NSw5ICs5ODEs MTMgQEAgc3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBy bSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAKIAljb21wdXRlX2NyZWRzKGJwcm0pOwogCWN1cnJl bnQtPmZsYWdzICY9IH5QRl9GT1JLTk9FWEVDOwotCWNyZWF0ZV9lbGZfdGFibGVzKGJwcm0sICZs b2MtPmVsZl9leCwKKwlyZXR2YWwgPSBjcmVhdGVfZWxmX3RhYmxlcyhicHJtLCAmbG9jLT5lbGZf ZXgsCiAJCQkgIChpbnRlcnByZXRlcl90eXBlID09IElOVEVSUFJFVEVSX0FPVVQpLAogCQkJICBs b2FkX2FkZHIsIGludGVycF9sb2FkX2FkZHIpOworCWlmIChyZXR2YWwgPCAwKSB7CisJCXNlbmRf c2lnKFNJR1NFR1YsIGN1cnJlbnQsIDApOworCQlnb3RvIG91dDsKKwl9CiAJLyogTi5CLiBwYXNz ZWRfZmlsZW5vIG1pZ2h0IG5vdCBiZSBpbml0aWFsaXplZD8gKi8KIAlpZiAoaW50ZXJwcmV0ZXJf dHlwZSA9PSBJTlRFUlBSRVRFUl9BT1VUKQogCQljdXJyZW50LT5tbS0+YXJnX3N0YXJ0ICs9IHN0 cmxlbihwYXNzZWRfZmlsZW5vKSArIDE7CmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmX2ZkcGlj LmMgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmMKaW5kZXggZjNkZGNhNC4uZjNkYzNjYSAxMDA2NDQK LS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jCisrKyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwpA QCAtNjIyLDggKzYyMiw4IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2VsZl9mZHBpY190YWJsZXMoc3Ry dWN0IGxpbnV4X2JpbnBybSAqYnBybSwKIAlwID0gKGNoYXIgX191c2VyICopIGN1cnJlbnQtPm1t LT5hcmdfc3RhcnQ7CiAJZm9yIChsb29wID0gYnBybS0+YXJnYzsgbG9vcCA+IDA7IGxvb3AtLSkg ewogCQlfX3B1dF91c2VyKChlbGZfY2FkZHJfdCkgcCwgYXJndisrKTsKLQkJbGVuID0gc3Rybmxl bl91c2VyKHAsIFBBR0VfU0laRSAqIE1BWF9BUkdfUEFHRVMpOwotCQlpZiAoIWxlbiB8fCBsZW4g PiBQQUdFX1NJWkUgKiBNQVhfQVJHX1BBR0VTKQorCQlsZW4gPSBzdHJubGVuX3VzZXIocCwgTUFY X0FSR19TVFJMRU4pOworCQlpZiAoIWxlbiB8fCBsZW4gPiBNQVhfQVJHX1NUUkxFTikKIAkJCXJl dHVybiAtRUlOVkFMOwogCQlwICs9IGxlbjsKIAl9CkBAIC02MzQsOCArNjM0LDggQEAgc3RhdGlj IGludCBjcmVhdGVfZWxmX2ZkcGljX3RhYmxlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAog CWN1cnJlbnQtPm1tLT5lbnZfc3RhcnQgPSAodW5zaWduZWQgbG9uZykgcDsKIAlmb3IgKGxvb3Ag PSBicHJtLT5lbnZjOyBsb29wID4gMDsgbG9vcC0tKSB7CiAJCV9fcHV0X3VzZXIoKGVsZl9jYWRk cl90KSh1bnNpZ25lZCBsb25nKSBwLCBlbnZwKyspOwotCQlsZW4gPSBzdHJubGVuX3VzZXIocCwg UEFHRV9TSVpFICogTUFYX0FSR19QQUdFUyk7Ci0JCWlmICghbGVuIHx8IGxlbiA+IFBBR0VfU0la RSAqIE1BWF9BUkdfUEFHRVMpCisJCWxlbiA9IHN0cm5sZW5fdXNlcihwLCBNQVhfQVJHX1NUUkxF Tik7CisJCWlmICghbGVuIHx8IGxlbiA+IE1BWF9BUkdfU1RSTEVOKQogCQkJcmV0dXJuIC1FSU5W QUw7CiAJCXAgKz0gbGVuOwogCX0KZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9taXNjLmMgYi9mcy9i aW5mbXRfbWlzYy5jCmluZGV4IGU2ZjU3OTkuLmFhOWFlOTkgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZt dF9taXNjLmMKKysrIGIvZnMvYmluZm10X21pc2MuYwpAQCAtMTI2LDcgKzEyNiw5IEBAIHN0YXRp YyBpbnQgbG9hZF9taXNjX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBzdHJ1Y3Qg cHRfcmVncyAqcmVncykKIAkJZ290byBfcmV0OwogCiAJaWYgKCEoZm10LT5mbGFncyAmIE1JU0Nf Rk1UX1BSRVNFUlZFX0FSR1YwKSkgewotCQlyZW1vdmVfYXJnX3plcm8oYnBybSk7CisJCXJldHZh bCA9IHJlbW92ZV9hcmdfemVybyhicHJtKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gX3JldDsK IAl9CiAKIAlpZiAoZm10LT5mbGFncyAmIE1JU0NfRk1UX09QRU5fQklOQVJZKSB7CmRpZmYgLS1n aXQgYS9mcy9iaW5mbXRfc2NyaXB0LmMgYi9mcy9iaW5mbXRfc2NyaXB0LmMKaW5kZXggMWVkYmNj YS4uNWI2MzA5ZiAxMDA2NDQKLS0tIGEvZnMvYmluZm10X3NjcmlwdC5jCisrKyBiL2ZzL2JpbmZt dF9zY3JpcHQuYwpAQCAtNjgsNyArNjgsOSBAQCBzdGF0aWMgaW50IGxvYWRfc2NyaXB0KHN0cnVj dCBsaW51eF9iaW5wcm0gKmJwcm0sc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJICogVGhpcyBpcyBk b25lIGluIHJldmVyc2Ugb3JkZXIsIGJlY2F1c2Ugb2YgaG93IHRoZQogCSAqIHVzZXIgZW52aXJv bm1lbnQgYW5kIGFyZ3VtZW50cyBhcmUgc3RvcmVkLgogCSAqLwotCXJlbW92ZV9hcmdfemVybyhi cHJtKTsKKwlyZXR2YWwgPSByZW1vdmVfYXJnX3plcm8oYnBybSk7CisJaWYgKHJldHZhbCkKKwkJ cmV0dXJuIHJldHZhbDsKIAlyZXR2YWwgPSBjb3B5X3N0cmluZ3Nfa2VybmVsKDEsICZicHJtLT5p bnRlcnAsIGJwcm0pOwogCWlmIChyZXR2YWwgPCAwKSByZXR1cm4gcmV0dmFsOyAKIAlicHJtLT5h cmdjKys7CmRpZmYgLS1naXQgYS9mcy9jb21wYXQuYyBiL2ZzL2NvbXBhdC5jCmluZGV4IDcyZTVl NjkuLjUyNzk3NDUgMTAwNjQ0Ci0tLSBhL2ZzL2NvbXBhdC5jCisrKyBiL2ZzL2NvbXBhdC5jCkBA IC0xMzkxLDYgKzEzOTEsNyBAQCBzdGF0aWMgaW50IGNvbXBhdF9jb3B5X3N0cmluZ3MoaW50IGFy Z2MsIGNvbXBhdF91cHRyX3QgX191c2VyICphcmd2LAogewogCXN0cnVjdCBwYWdlICprbWFwcGVk X3BhZ2UgPSBOVUxMOwogCWNoYXIgKmthZGRyID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGtwb3Mg PSAwOwogCWludCByZXQ7CiAKIAl3aGlsZSAoYXJnYy0tID4gMCkgewpAQCAtMTM5OSw5MiArMTQw MCw4NCBAQCBzdGF0aWMgaW50IGNvbXBhdF9jb3B5X3N0cmluZ3MoaW50IGFyZ2MsIGNvbXBhdF91 cHRyX3QgX191c2VyICphcmd2LAogCQl1bnNpZ25lZCBsb25nIHBvczsKIAogCQlpZiAoZ2V0X3Vz ZXIoc3RyLCBhcmd2K2FyZ2MpIHx8Ci0JCQkhKGxlbiA9IHN0cm5sZW5fdXNlcihjb21wYXRfcHRy KHN0ciksIGJwcm0tPnApKSkgeworCQkgICAgIShsZW4gPSBzdHJubGVuX3VzZXIoY29tcGF0X3B0 cihzdHIpLCBNQVhfQVJHX1NUUkxFTikpKSB7CiAJCQlyZXQgPSAtRUZBVUxUOwogCQkJZ290byBv dXQ7CiAJCX0KIAotCQlpZiAoYnBybS0+cCA8IGxlbikgIHsKKwkJaWYgKE1BWF9BUkdfU1RSTEVO IDwgbGVuKSB7CiAJCQlyZXQgPSAtRTJCSUc7CiAJCQlnb3RvIG91dDsKIAkJfQogCi0JCWJwcm0t PnAgLT0gbGVuOwotCQkvKiBYWFg6IGFkZCBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgb3ZlcmZsb3cg Y2hlY2sgaGVyZS4gKi8KKwkJLyogV2UncmUgZ29pbmcgdG8gd29yayBvdXIgd2F5IGJhY2t3b3Jk cy4gKi8KIAkJcG9zID0gYnBybS0+cDsKKwkJc3RyICs9IGxlbjsKKwkJYnBybS0+cCAtPSBsZW47 CiAKIAkJd2hpbGUgKGxlbiA+IDApIHsKLQkJCWludCBpLCBuZXcsIGVycjsKIAkJCWludCBvZmZz ZXQsIGJ5dGVzX3RvX2NvcHk7Ci0JCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAogCQkJb2Zmc2V0ID0g cG9zICUgUEFHRV9TSVpFOwotCQkJaSA9IHBvcy9QQUdFX1NJWkU7Ci0JCQlwYWdlID0gYnBybS0+ cGFnZVtpXTsKLQkJCW5ldyA9IDA7Ci0JCQlpZiAoIXBhZ2UpIHsKLQkJCQlwYWdlID0gYWxsb2Nf cGFnZShHRlBfSElHSFVTRVIpOwotCQkJCWJwcm0tPnBhZ2VbaV0gPSBwYWdlOwotCQkJCWlmICgh cGFnZSkgewotCQkJCQlyZXQgPSAtRU5PTUVNOworCQkJaWYgKG9mZnNldCA9PSAwKQorCQkJCW9m ZnNldCA9IFBBR0VfU0laRTsKKworCQkJYnl0ZXNfdG9fY29weSA9IG9mZnNldDsKKwkJCWlmIChi eXRlc190b19jb3B5ID4gbGVuKQorCQkJCWJ5dGVzX3RvX2NvcHkgPSBsZW47CisKKwkJCW9mZnNl dCAtPSBieXRlc190b19jb3B5OworCQkJcG9zIC09IGJ5dGVzX3RvX2NvcHk7CisJCQlzdHIgLT0g Ynl0ZXNfdG9fY29weTsKKwkJCWxlbiAtPSBieXRlc190b19jb3B5OworCisJCQlpZiAoIWttYXBw ZWRfcGFnZSB8fCBrcG9zICE9IChwb3MgJiBQQUdFX01BU0spKSB7CisJCQkJc3RydWN0IHBhZ2Ug KnBhZ2U7CisKKyNpZmRlZiBDT05GSUdfU1RBQ0tfR1JPV1NVUAorCQkJCXJldCA9IGV4cGFuZF9k b3dud2FyZHMoYnBybS0+dm1hLCBwb3MpOworCQkJCWlmIChyZXQgPCAwKSB7CisJCQkJCS8qIFdl J3ZlIGV4Y2VlZCB0aGUgc3RhY2sgcmxpbWl0LiAqLworCQkJCQlyZXQgPSAtRTJCSUc7CisJCQkJ CWdvdG8gb3V0OworCQkJCX0KKyNlbmRpZgorCQkJCXJldCA9IGdldF91c2VyX3BhZ2VzKGN1cnJl bnQsIGJwcm0tPm1tLCBwb3MsCisJCQkJCQkgICAgIDEsIDEsIDEsICZwYWdlLCBOVUxMKTsKKwkJ CQlpZiAocmV0IDw9IDApIHsKKwkJCQkJLyogV2UndmUgZXhjZWVkIHRoZSBzdGFjayBybGltaXQu ICovCisJCQkJCXJldCA9IC1FMkJJRzsKIAkJCQkJZ290byBvdXQ7CiAJCQkJfQotCQkJCW5ldyA9 IDE7Ci0JCQl9CiAKLQkJCWlmIChwYWdlICE9IGttYXBwZWRfcGFnZSkgewotCQkJCWlmIChrbWFw cGVkX3BhZ2UpCisJCQkJaWYgKGttYXBwZWRfcGFnZSkgeworCQkJCQlmbHVzaF9rZXJuZWxfZGNh Y2hlX3BhZ2Uoa21hcHBlZF9wYWdlKTsKIAkJCQkJa3VubWFwKGttYXBwZWRfcGFnZSk7CisJCQkJ CXB1dF9wYWdlKGttYXBwZWRfcGFnZSk7CisJCQkJfQogCQkJCWttYXBwZWRfcGFnZSA9IHBhZ2U7 CiAJCQkJa2FkZHIgPSBrbWFwKGttYXBwZWRfcGFnZSk7CisJCQkJa3BvcyA9IHBvcyAmIFBBR0Vf TUFTSzsKKwkJCQlmbHVzaF9jYWNoZV9wYWdlKGJwcm0tPnZtYSwga3BvcywKKwkJCQkJCSBwYWdl X3RvX3BmbihrbWFwcGVkX3BhZ2UpKTsKIAkJCX0KLQkJCWlmIChuZXcgJiYgb2Zmc2V0KQotCQkJ CW1lbXNldChrYWRkciwgMCwgb2Zmc2V0KTsKLQkJCWJ5dGVzX3RvX2NvcHkgPSBQQUdFX1NJWkUg LSBvZmZzZXQ7Ci0JCQlpZiAoYnl0ZXNfdG9fY29weSA+IGxlbikgewotCQkJCWJ5dGVzX3RvX2Nv cHkgPSBsZW47Ci0JCQkJaWYgKG5ldykKLQkJCQkJbWVtc2V0KGthZGRyK29mZnNldCtsZW4sIDAs Ci0JCQkJCQlQQUdFX1NJWkUtb2Zmc2V0LWxlbik7Ci0JCQl9Ci0JCQllcnIgPSBjb3B5X2Zyb21f dXNlcihrYWRkcitvZmZzZXQsIGNvbXBhdF9wdHIoc3RyKSwKLQkJCQkJCWJ5dGVzX3RvX2NvcHkp OwotCQkJaWYgKGVycikgeworCQkJaWYgKGNvcHlfZnJvbV91c2VyKGthZGRyK29mZnNldCwgY29t cGF0X3B0cihzdHIpLAorCQkJCQkJYnl0ZXNfdG9fY29weSkpIHsKIAkJCQlyZXQgPSAtRUZBVUxU OwogCQkJCWdvdG8gb3V0OwogCQkJfQotCi0JCQlwb3MgKz0gYnl0ZXNfdG9fY29weTsKLQkJCXN0 ciArPSBieXRlc190b19jb3B5OwotCQkJbGVuIC09IGJ5dGVzX3RvX2NvcHk7CiAJCX0KIAl9CiAJ cmV0ID0gMDsKIG91dDoKLQlpZiAoa21hcHBlZF9wYWdlKQorCWlmIChrbWFwcGVkX3BhZ2UpIHsK KwkJZmx1c2hfa2VybmVsX2RjYWNoZV9wYWdlKGttYXBwZWRfcGFnZSk7CiAJCWt1bm1hcChrbWFw cGVkX3BhZ2UpOwotCXJldHVybiByZXQ7Ci19Ci0KLSNpZmRlZiBDT05GSUdfTU1VCi0KLSNkZWZp bmUgZnJlZV9hcmdfcGFnZXMoYnBybSkgZG8geyB9IHdoaWxlICgwKQotCi0jZWxzZQotCi1zdGF0 aWMgaW5saW5lIHZvaWQgZnJlZV9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkK LXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBNQVhfQVJHX1BBR0VTOyBpKyspIHsKLQkJ aWYgKGJwcm0tPnBhZ2VbaV0pCi0JCQlfX2ZyZWVfcGFnZShicHJtLT5wYWdlW2ldKTsKLQkJYnBy bS0+cGFnZVtpXSA9IE5VTEw7CisJCXB1dF9wYWdlKGttYXBwZWRfcGFnZSk7CiAJfQorCXJldHVy biByZXQ7CiB9CiAKLSNlbmRpZiAvKiBDT05GSUdfTU1VICovCi0KIC8qCiAgKiBjb21wYXRfZG9f ZXhlY3ZlKCkgaXMgbW9zdGx5IGEgY29weSBvZiBkb19leGVjdmUoKSwgd2l0aCB0aGUgZXhjZXB0 aW9uCiAgKiB0aGF0IGl0IHByb2Nlc3NlcyAzMiBiaXQgYXJndiBhbmQgZW52cCBwb2ludGVycy4K QEAgLTE0OTcsNyArMTQ5MCw2IEBAIGludCBjb21wYXRfZG9fZXhlY3ZlKGNoYXIgKiBmaWxlbmFt ZSwKIAlzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtOwogCXN0cnVjdCBmaWxlICpmaWxlOwogCWlu dCByZXR2YWw7Ci0JaW50IGk7CiAKIAlyZXR2YWwgPSAtRU5PTUVNOwogCWJwcm0gPSBremFsbG9j KHNpemVvZigqYnBybSksIEdGUF9LRVJORUwpOwpAQCAtMTUxMSwyNCArMTUwMywxOSBAQCBpbnQg Y29tcGF0X2RvX2V4ZWN2ZShjaGFyICogZmlsZW5hbWUsCiAKIAlzY2hlZF9leGVjKCk7CiAKLQli cHJtLT5wID0gUEFHRV9TSVpFKk1BWF9BUkdfUEFHRVMtc2l6ZW9mKHZvaWQgKik7CiAJYnBybS0+ ZmlsZSA9IGZpbGU7CiAJYnBybS0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKIAlicHJtLT5pbnRlcnAg PSBmaWxlbmFtZTsKLQlicHJtLT5tbSA9IG1tX2FsbG9jKCk7Ci0JcmV0dmFsID0gLUVOT01FTTsK LQlpZiAoIWJwcm0tPm1tKQotCQlnb3RvIG91dF9maWxlOwogCi0JcmV0dmFsID0gaW5pdF9uZXdf Y29udGV4dChjdXJyZW50LCBicHJtLT5tbSk7Ci0JaWYgKHJldHZhbCA8IDApCi0JCWdvdG8gb3V0 X21tOworCXJldHZhbCA9IGJwcm1fbW1faW5pdChicHJtKTsKKwlpZiAocmV0dmFsKQorCQlnb3Rv IG91dF9maWxlOwogCi0JYnBybS0+YXJnYyA9IGNvbXBhdF9jb3VudChhcmd2LCBicHJtLT5wIC8g c2l6ZW9mKGNvbXBhdF91cHRyX3QpKTsKKwlicHJtLT5hcmdjID0gY29tcGF0X2NvdW50KGFyZ3Ys IE1BWF9BUkdfU1RSSU5HUyk7CiAJaWYgKChyZXR2YWwgPSBicHJtLT5hcmdjKSA8IDApCiAJCWdv dG8gb3V0X21tOwogCi0JYnBybS0+ZW52YyA9IGNvbXBhdF9jb3VudChlbnZwLCBicHJtLT5wIC8g c2l6ZW9mKGNvbXBhdF91cHRyX3QpKTsKKwlicHJtLT5lbnZjID0gY29tcGF0X2NvdW50KGVudnAs IE1BWF9BUkdfU1RSSU5HUyk7CiAJaWYgKChyZXR2YWwgPSBicHJtLT5lbnZjKSA8IDApCiAJCWdv dG8gb3V0X21tOwogCkBAIC0xNTUzLDEwICsxNTQwLDggQEAgaW50IGNvbXBhdF9kb19leGVjdmUo Y2hhciAqIGZpbGVuYW1lLAogCWlmIChyZXR2YWwgPCAwKQogCQlnb3RvIG91dDsKIAotCXJldHZh bCA9IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihicHJtLCByZWdzKTsKKwlyZXR2YWwgPSBzZWFyY2hf YmluYXJ5X2hhbmRsZXIoYnBybSxyZWdzKTsKIAlpZiAocmV0dmFsID49IDApIHsKLQkJZnJlZV9h cmdfcGFnZXMoYnBybSk7Ci0KIAkJLyogZXhlY3ZlIHN1Y2Nlc3MgKi8KIAkJc2VjdXJpdHlfYnBy bV9mcmVlKGJwcm0pOwogCQlhY2N0X3VwZGF0ZV9pbnRlZ3JhbHMoY3VycmVudCk7CkBAIC0xNTY1 LDE5ICsxNTUwLDEyIEBAIGludCBjb21wYXRfZG9fZXhlY3ZlKGNoYXIgKiBmaWxlbmFtZSwKIAl9 CiAKIG91dDoKLQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgcmV0dXJuIHRoZSBpbm9kZSBhbmQg ZnJlZSB0aGUgYXJndW1lbnQgcGFnZXMqLwotCWZvciAoaSA9IDAgOyBpIDwgTUFYX0FSR19QQUdF UyA7IGkrKykgewotCQlzdHJ1Y3QgcGFnZSAqIHBhZ2UgPSBicHJtLT5wYWdlW2ldOwotCQlpZiAo cGFnZSkKLQkJCV9fZnJlZV9wYWdlKHBhZ2UpOwotCX0KLQogCWlmIChicHJtLT5zZWN1cml0eSkK IAkJc2VjdXJpdHlfYnBybV9mcmVlKGJwcm0pOwogCiBvdXRfbW06CiAJaWYgKGJwcm0tPm1tKQot CQltbWRyb3AoYnBybS0+bW0pOworCQltbXB1dCAoYnBybS0+bW0pOwogCiBvdXRfZmlsZToKIAlp ZiAoYnBybS0+ZmlsZSkgewpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jCmluZGV4 IDMxNTVlOTEuLjg2Mzc2MzAgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYworKysgYi9mcy9leGVjLmMK QEAgLTUzLDYgKzUzLDcgQEAKIAogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CiAjaW5jbHVkZSA8 YXNtL21tdV9jb250ZXh0Lmg+CisjaW5jbHVkZSA8YXNtL3RsYi5oPgogCiAjaWZkZWYgQ09ORklH X0tNT0QKICNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CkBAIC0xNzMsNiArMTc0LDE1MyBAQCBleGl0 OgogCWdvdG8gb3V0OwogfQogCisjaWZkZWYgQ09ORklHX01NVQorCitzdGF0aWMgc3RydWN0IHBh Z2UgKmdldF9hcmdfcGFnZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCB1bnNpZ25lZCBsb25n IHBvcywKKwkJaW50IHdyaXRlKQoreworCXN0cnVjdCBwYWdlICpwYWdlOworCWludCByZXQ7CisK KyNpZmRlZiBDT05GSUdfU1RBQ0tfR1JPV1NVUAorCWlmICh3cml0ZSkgeworCQlyZXQgPSBleHBh bmRfZG93bndhcmRzKGJwcm0tPnZtYSwgcG9zKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4g TlVMTDsKKwl9CisjZW5kaWYKKwlyZXQgPSBnZXRfdXNlcl9wYWdlcyhjdXJyZW50LCBicHJtLT5t bSwgcG9zLAorCQkJMSwgd3JpdGUsIDEsICZwYWdlLCBOVUxMKTsKKwlpZiAocmV0IDw9IDApCisJ CXJldHVybiBOVUxMOworCisJcmV0dXJuIHBhZ2U7Cit9CisKK3N0YXRpYyB2b2lkIHB1dF9hcmdf cGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKKwlwdXRfcGFnZShwYWdlKTsKK30KKworc3RhdGlj IHZvaWQgZnJlZV9hcmdfcGFnZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQgaSkKK3sK K30KKworc3RhdGljIHZvaWQgZnJlZV9hcmdfcGFnZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBy bSkKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHN0cnVjdCBwYWdlICpnZXRfYXJnX3BhZ2Uoc3Ry dWN0IGxpbnV4X2JpbnBybSAqYnBybSwgdW5zaWduZWQgbG9uZyBwb3MsCisJCWludCB3cml0ZSkK K3sKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKworCXBhZ2UgPSBicHJtLT5wYWdlW3BvcyAvIFBBR0Vf U0laRV07CisJaWYgKCFwYWdlICYmIHdyaXRlKSB7CisJCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9I SUdIVVNFUnxfX0dGUF9aRVJPKTsKKwkJaWYgKCFwYWdlKQorCQkJcmV0dXJuIE5VTEw7CisJCWJw cm0tPnBhZ2VbcG9zIC8gUEFHRV9TSVpFXSA9IHBhZ2U7CisJfQorCisJcmV0dXJuIHBhZ2U7Cit9 CisKK3N0YXRpYyB2b2lkIHB1dF9hcmdfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKK3sKK30KKwor c3RhdGljIHZvaWQgZnJlZV9hcmdfcGFnZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBpbnQg aSkKK3sKKwlpZiAoYnBybS0+cGFnZVtpXSkgeworCQlfX2ZyZWVfcGFnZShicHJtLT5wYWdlW2ld KTsKKwkJYnBybS0+cGFnZVtpXSA9IE5VTEw7CisJfQorfQorCitzdGF0aWMgdm9pZCBmcmVlX2Fy Z19wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQoreworCWludCBpOworCisJZm9yIChp ID0gMDsgaSA8IE1BWF9BUkdfUEFHRVM7IGkrKykKKwkJZnJlZV9hcmdfcGFnZShicHJtLCBpKTsK K30KKworI2VuZGlmIC8qIENPTkZJR19NTVUgKi8KKworLyogQ3JlYXRlIGEgbmV3IG1tX3N0cnVj dCBhbmQgcG9wdWxhdGUgaXQgd2l0aCBhIHRlbXBvcmFyeSBzdGFjaworICogdm1fYXJlYV9zdHJ1 Y3QuICBXZSBkb24ndCBoYXZlIGVub3VnaCBjb250ZXh0IGF0IHRoaXMgcG9pbnQgdG8gc2V0IHRo ZQorICogc3RhY2sgZmxhZ3MsIHBlcm1pc3Npb25zLCBhbmQgb2Zmc2V0LCBzbyB3ZSB1c2UgdGVt cG9yYXJ5IHZhbHVlcy4gIFdlJ2xsCisgKiB1cGRhdGUgdGhlbSBsYXRlciBpbiBzZXR1cF9hcmdf cGFnZXMoKS4gKi8KK2ludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkK K3sKKwlpbnQgZXJyOworCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gTlVMTDsKKwlzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSA9IE5VTEw7CisKKwlicHJtLT5tbSA9IG1tID0gbW1fYWxsb2MoKTsK KwllcnIgPSAtRU5PTUVNOworCWlmICghbW0pCisJCWdvdG8gZXJyOworCisJaWYgKChlcnIgPSBp bml0X25ld19jb250ZXh0KGN1cnJlbnQsIG1tKSkpCisJCWdvdG8gZXJyOworCisjaWZkZWYgQ09O RklHX01NVQorCWJwcm0tPnZtYSA9IHZtYSA9IGttZW1fY2FjaGVfemFsbG9jKHZtX2FyZWFfY2Fj aGVwLCBHRlBfS0VSTkVMKTsKKwllcnIgPSAtRU5PTUVNOworCWlmICghdm1hKQorCQlnb3RvIGVy cjsKKworCWRvd25fd3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJeworCQl2bWEtPnZtX21tID0gbW07 CisKKwkJLyogUGxhY2UgdGhlIHN0YWNrIGF0IHRoZSB0b3Agb2YgdXNlciBtZW1vcnkuICBMYXRl ciwgd2UnbGwKKwkJICogbW92ZSB0aGlzIHRvIGFuIGFwcHJvcHJpYXRlIHBsYWNlLiAgV2UgZG9u J3QgdXNlIFNUQUNLX1RPUAorCQkgKiBiZWNhdXNlIHRoYXQgY2FuIGRlcGVuZCBvbiBhdHRyaWJ1 dGVzIHdoaWNoIGFyZW4ndAorCQkgKiBjb25maWd1cmVkIHlldC4gKi8KKwkJdm1hLT52bV9lbmQg PSBUQVNLX1NJWkU7CisJCXZtYS0+dm1fc3RhcnQgPSB2bWEtPnZtX2VuZCAtIFBBR0VfU0laRTsK KworCQl2bWEtPnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1M7CisJCXZtYS0+dm1fcGFnZV9wcm90 ID0gcHJvdGVjdGlvbl9tYXBbdm1hLT52bV9mbGFncyAmIDB4N107CisJCWlmICgoZXJyID0gaW5z ZXJ0X3ZtX3N0cnVjdChtbSwgdm1hKSkpIHsKKwkJCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwor CQkJZ290byBlcnI7CisJCX0KKworCQltbS0+c3RhY2tfdm0gPSBtbS0+dG90YWxfdm0gPSAxOwor CX0KKwl1cF93cml0ZSgmbW0tPm1tYXBfc2VtKTsKKworCWJwcm0tPnAgPSB2bWEtPnZtX2VuZCAt IHNpemVvZih2b2lkICopOworI2Vsc2UKKwlicHJtLT5wID0gUEFHRV9TSVpFICogTUFYX0FSR19Q QUdFUyAtIHNpemVvZih2b2lkICopOworI2VuZGlmCisKKwlyZXR1cm4gMDsKKworZXJyOgorI2lm ZGVmIENPTkZJR19NTVUKKwlpZiAodm1hKSB7CisJCWJwcm0tPnZtYSA9IE5VTEw7CisJCWttZW1f Y2FjaGVfZnJlZSh2bV9hcmVhX2NhY2hlcCwgdm1hKTsKKwl9CisjZW5kaWYKKworCWlmIChtbSkg eworCQlicHJtLT5tbSA9IE5VTEw7CisJCW1tZHJvcChtbSk7CisJfQorCisJcmV0dXJuIGVycjsK K30KKworRVhQT1JUX1NZTUJPTChicHJtX21tX2luaXQpOworCiAvKgogICogY291bnQoKSBjb3Vu dHMgdGhlIG51bWJlciBvZiBzdHJpbmdzIGluIGFycmF5IEFSR1YuCiAgKi8KQEAgLTE5OCwxNSAr MzQ2LDE2IEBAIHN0YXRpYyBpbnQgY291bnQoY2hhciBfX3VzZXIgKiBfX3VzZXIgKiBhcmd2LCBp bnQgbWF4KQogfQogCiAvKgotICogJ2NvcHlfc3RyaW5ncygpJyBjb3BpZXMgYXJndW1lbnQvZW52 aXJvbm1lbnQgc3RyaW5ncyBmcm9tIHVzZXIKLSAqIG1lbW9yeSB0byBmcmVlIHBhZ2VzIGluIGtl cm5lbCBtZW0uIFRoZXNlIGFyZSBpbiBhIGZvcm1hdCByZWFkeQotICogdG8gYmUgcHV0IGRpcmVj dGx5IGludG8gdGhlIHRvcCBvZiBuZXcgdXNlciBtZW1vcnkuCisgKiAnY29weV9zdHJpbmdzKCkn IGNvcGllcyBhcmd1bWVudC9lbnZpcm9ubWVudCBzdHJpbmdzIGZyb20gdGhlIG9sZAorICogcHJv Y2Vzc2VzJ3MgbWVtb3J5IHRvIHRoZSBuZXcgcHJvY2VzcydzIHN0YWNrLiAgVGhlIGNhbGwgdG8g Z2V0X3VzZXJfcGFnZXMoKQorICogZW5zdXJlcyB0aGUgZGVzdGluYXRpb24gcGFnZSBpcyBjcmVh dGVkIGFuZCBub3Qgc3dhcHBlZCBvdXQuCiAgKi8KIHN0YXRpYyBpbnQgY29weV9zdHJpbmdzKGlu dCBhcmdjLCBjaGFyIF9fdXNlciAqIF9fdXNlciAqIGFyZ3YsCiAJCQlzdHJ1Y3QgbGludXhfYmlu cHJtICpicHJtKQogewogCXN0cnVjdCBwYWdlICprbWFwcGVkX3BhZ2UgPSBOVUxMOwogCWNoYXIg KmthZGRyID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGtwb3MgPSAwOwogCWludCByZXQ7CiAKIAl3 aGlsZSAoYXJnYy0tID4gMCkgewpAQCAtMjE1LDY5ICszNjQsNzcgQEAgc3RhdGljIGludCBjb3B5 X3N0cmluZ3MoaW50IGFyZ2MsIGNoYXIgX191c2VyICogX191c2VyICogYXJndiwKIAkJdW5zaWdu ZWQgbG9uZyBwb3M7CiAKIAkJaWYgKGdldF91c2VyKHN0ciwgYXJndithcmdjKSB8fAotCQkJCSEo bGVuID0gc3Rybmxlbl91c2VyKHN0ciwgYnBybS0+cCkpKSB7CisJCQkJIShsZW4gPSBzdHJubGVu X3VzZXIoc3RyLCBNQVhfQVJHX1NUUkxFTikpKSB7CiAJCQlyZXQgPSAtRUZBVUxUOwogCQkJZ290 byBvdXQ7CiAJCX0KIAotCQlpZiAoYnBybS0+cCA8IGxlbikgIHsKKyNpZmRlZiBDT05GSUdfTU1V CisJCWlmIChNQVhfQVJHX1NUUkxFTiA8IGxlbikgewogCQkJcmV0ID0gLUUyQklHOwogCQkJZ290 byBvdXQ7CiAJCX0KKyNlbHNlCisJCWlmIChicHJtLT5wIDwgbGVuKSB7CisJCQlyZXQgPSAtRTJC SUc7CisJCQlnb3RvIG91dDsKKwkJfQorI2VuZGlmCiAKLQkJYnBybS0+cCAtPSBsZW47Ci0JCS8q IFhYWDogYWRkIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBvdmVyZmxvdyBjaGVjayBoZXJlLiAqLwor CQkvKiBXZSdyZSBnb2luZyB0byB3b3JrIG91ciB3YXkgYmFja3dvcmRzLiAqLwogCQlwb3MgPSBi cHJtLT5wOworCQlzdHIgKz0gbGVuOworCQlicHJtLT5wIC09IGxlbjsKIAogCQl3aGlsZSAobGVu ID4gMCkgewotCQkJaW50IGksIG5ldywgZXJyOwogCQkJaW50IG9mZnNldCwgYnl0ZXNfdG9fY29w eTsKLQkJCXN0cnVjdCBwYWdlICpwYWdlOwogCiAJCQlvZmZzZXQgPSBwb3MgJSBQQUdFX1NJWkU7 Ci0JCQlpID0gcG9zL1BBR0VfU0laRTsKLQkJCXBhZ2UgPSBicHJtLT5wYWdlW2ldOwotCQkJbmV3 ID0gMDsKLQkJCWlmICghcGFnZSkgewotCQkJCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9ISUdIVVNF Uik7Ci0JCQkJYnBybS0+cGFnZVtpXSA9IHBhZ2U7CisJCQlpZiAob2Zmc2V0ID09IDApCisJCQkJ b2Zmc2V0ID0gUEFHRV9TSVpFOworCisJCQlieXRlc190b19jb3B5ID0gb2Zmc2V0OworCQkJaWYg KGJ5dGVzX3RvX2NvcHkgPiBsZW4pCisJCQkJYnl0ZXNfdG9fY29weSA9IGxlbjsKKworCQkJb2Zm c2V0IC09IGJ5dGVzX3RvX2NvcHk7CisJCQlwb3MgLT0gYnl0ZXNfdG9fY29weTsKKwkJCXN0ciAt PSBieXRlc190b19jb3B5OworCQkJbGVuIC09IGJ5dGVzX3RvX2NvcHk7CisKKwkJCWlmICgha21h cHBlZF9wYWdlIHx8IGtwb3MgIT0gKHBvcyAmIFBBR0VfTUFTSykpIHsKKwkJCQlzdHJ1Y3QgcGFn ZSAqcGFnZTsKKworCQkJCXBhZ2UgPSBnZXRfYXJnX3BhZ2UoYnBybSwgcG9zLCAxKTsKIAkJCQlp ZiAoIXBhZ2UpIHsKLQkJCQkJcmV0ID0gLUVOT01FTTsKKwkJCQkJcmV0ID0gLUUyQklHOwogCQkJ CQlnb3RvIG91dDsKIAkJCQl9Ci0JCQkJbmV3ID0gMTsKLQkJCX0KIAotCQkJaWYgKHBhZ2UgIT0g a21hcHBlZF9wYWdlKSB7Ci0JCQkJaWYgKGttYXBwZWRfcGFnZSkKKwkJCQlpZiAoa21hcHBlZF9w YWdlKSB7CisJCQkJCWZsdXNoX2tlcm5lbF9kY2FjaGVfcGFnZShrbWFwcGVkX3BhZ2UpOwogCQkJ CQlrdW5tYXAoa21hcHBlZF9wYWdlKTsKKwkJCQkJcHV0X2FyZ19wYWdlKGttYXBwZWRfcGFnZSk7 CisJCQkJfQogCQkJCWttYXBwZWRfcGFnZSA9IHBhZ2U7CiAJCQkJa2FkZHIgPSBrbWFwKGttYXBw ZWRfcGFnZSk7CisJCQkJa3BvcyA9IHBvcyAmIFBBR0VfTUFTSzsKKwkJCQlmbHVzaF9jYWNoZV9w YWdlKGJwcm0tPnZtYSwga3BvcywKKwkJCQkJCSBwYWdlX3RvX3BmbihrbWFwcGVkX3BhZ2UpKTsK IAkJCX0KLQkJCWlmIChuZXcgJiYgb2Zmc2V0KQotCQkJCW1lbXNldChrYWRkciwgMCwgb2Zmc2V0 KTsKLQkJCWJ5dGVzX3RvX2NvcHkgPSBQQUdFX1NJWkUgLSBvZmZzZXQ7Ci0JCQlpZiAoYnl0ZXNf dG9fY29weSA+IGxlbikgewotCQkJCWJ5dGVzX3RvX2NvcHkgPSBsZW47Ci0JCQkJaWYgKG5ldykK LQkJCQkJbWVtc2V0KGthZGRyK29mZnNldCtsZW4sIDAsCi0JCQkJCQlQQUdFX1NJWkUtb2Zmc2V0 LWxlbik7Ci0JCQl9Ci0JCQllcnIgPSBjb3B5X2Zyb21fdXNlcihrYWRkcitvZmZzZXQsIHN0ciwg Ynl0ZXNfdG9fY29weSk7Ci0JCQlpZiAoZXJyKSB7CisJCQlpZiAoY29weV9mcm9tX3VzZXIoa2Fk ZHIrb2Zmc2V0LCBzdHIsIGJ5dGVzX3RvX2NvcHkpKSB7CiAJCQkJcmV0ID0gLUVGQVVMVDsKIAkJ CQlnb3RvIG91dDsKIAkJCX0KLQotCQkJcG9zICs9IGJ5dGVzX3RvX2NvcHk7Ci0JCQlzdHIgKz0g Ynl0ZXNfdG9fY29weTsKLQkJCWxlbiAtPSBieXRlc190b19jb3B5OwogCQl9CiAJfQogCXJldCA9 IDA7CiBvdXQ6Ci0JaWYgKGttYXBwZWRfcGFnZSkKKwlpZiAoa21hcHBlZF9wYWdlKSB7CisJCWZs dXNoX2tlcm5lbF9kY2FjaGVfcGFnZShrbWFwcGVkX3BhZ2UpOwogCQlrdW5tYXAoa21hcHBlZF9w YWdlKTsKKwkJcHV0X2FyZ19wYWdlKGttYXBwZWRfcGFnZSk7CisJfQogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTI5NywxNTQgKzQ1NCwxNTcgQEAgaW50IGNvcHlfc3RyaW5nc19rZXJuZWwoaW50IGFy Z2MsY2hhciAqKiBhcmd2LCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQogRVhQT1JUX1NZTUJP TChjb3B5X3N0cmluZ3Nfa2VybmVsKTsKIAogI2lmZGVmIENPTkZJR19NTVUKLS8qCi0gKiBUaGlz IHJvdXRpbmUgaXMgdXNlZCB0byBtYXAgaW4gYSBwYWdlIGludG8gYW4gYWRkcmVzcyBzcGFjZTog bmVlZGVkIGJ5Ci0gKiBleGVjdmUoKSBmb3IgdGhlIGluaXRpYWwgc3RhY2sgYW5kIGVudmlyb25t ZW50IHBhZ2VzLgotICoKLSAqIHZtYS0+dm1fbW0tPm1tYXBfc2VtIGlzIGhlbGQgZm9yIHdyaXRp bmcuCi0gKi8KLXZvaWQgaW5zdGFsbF9hcmdfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSwKLQkJCXN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCisKK3N0YXRp YyBpbnQgc2hpZnRfYXJnX3BhZ2VzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25l ZCBsb25nIHNoaWZ0KQogewogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tID0gdm1hLT52bV9tbTsKLQlw dGVfdCAqIHB0ZTsKLQlzcGlubG9ja190ICpwdGw7CisJdW5zaWduZWQgbG9uZyBvbGRfc3RhcnQg PSB2bWEtPnZtX3N0YXJ0OworCXVuc2lnbmVkIGxvbmcgb2xkX2VuZCA9IHZtYS0+dm1fZW5kOwor CXVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gb2xkX2VuZCAtIG9sZF9zdGFydDsKKwl1bnNpZ25lZCBs b25nIG5ld19zdGFydCA9IG9sZF9zdGFydCArIHNoaWZ0OworCXVuc2lnbmVkIGxvbmcgbmV3X2Vu ZCA9IG9sZF9lbmQgKyBzaGlmdDsKKwlzdHJ1Y3QgbW11X2dhdGhlciAqdGxiOworCisJQlVHX09O KG5ld19zdGFydCA+IG5ld19lbmQpOworCisJaWYgKG5ld19zdGFydCA8IG9sZF9zdGFydCkgewor CQlpZiAodm1hICE9IGZpbmRfdm1hKG1tLCBuZXdfc3RhcnQpKQorCQkJcmV0dXJuIC1FRkFVTFQ7 CisKKwkJdm1hX2FkanVzdCh2bWEsIG5ld19zdGFydCwgb2xkX2VuZCwKKwkJCSAgIHZtYS0+dm1f cGdvZmYgLSAoLXNoaWZ0ID4+IFBBR0VfU0hJRlQpLCBOVUxMKTsKKworCQlpZiAobGVuZ3RoICE9 IG1vdmVfcGFnZV90YWJsZXModm1hLCBvbGRfc3RhcnQsCisJCQkJCSAgICAgICB2bWEsIG5ld19z dGFydCwgbGVuZ3RoKSkKKwkJCXJldHVybiAtRU5PTUVNOworCQkKKwkJbHJ1X2FkZF9kcmFpbigp OworCQl0bGIgPSB0bGJfZ2F0aGVyX21tdShtbSwgMCk7CisJCWZyZWVfcGdkX3JhbmdlKCZ0bGIs IG5ld19lbmQsIG9sZF9lbmQsIG5ld19lbmQsCisJCQkgICAgICAgdm1hLT52bV9uZXh0ID8gdm1h LT52bV9uZXh0LT52bV9zdGFydCA6IDApOworCQl0bGJfZmluaXNoX21tdSh0bGIsIG5ld19lbmQs IG9sZF9lbmQpOworCisJCXZtYV9hZGp1c3Qodm1hLCBuZXdfc3RhcnQsIG5ld19lbmQsIHZtYS0+ dm1fcGdvZmYsIE5VTEwpOworCX0gZWxzZSB7CisJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdG1w LCAqcHJldjsKKwkJCisJCXRtcCA9IGZpbmRfdm1hX3ByZXYobW0sIG5ld19lbmQsICZwcmV2KTsK KwkJaWYgKCh0bXAgJiYgdG1wLT52bV9zdGFydCA8IG5ld19lbmQpIHx8IHByZXYgIT0gdm1hKQor CQkJcmV0dXJuIC1FRkFVTFQ7CiAKLQlpZiAodW5saWtlbHkoYW5vbl92bWFfcHJlcGFyZSh2bWEp KSkKLQkJZ290byBvdXQ7CisJCWZpbmRfdm1hX3ByZXYobW0sIHZtYS0+dm1fc3RhcnQsICZwcmV2 KTsKIAotCWZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpOwotCXB0ZSA9IGdldF9sb2NrZWRfcHRlKG1t LCBhZGRyZXNzLCAmcHRsKTsKLQlpZiAoIXB0ZSkKLQkJZ290byBvdXQ7Ci0JaWYgKCFwdGVfbm9u ZSgqcHRlKSkgewotCQlwdGVfdW5tYXBfdW5sb2NrKHB0ZSwgcHRsKTsKLQkJZ290byBvdXQ7CisJ CXZtYV9hZGp1c3Qodm1hLCBvbGRfc3RhcnQsIG5ld19lbmQsIHZtYS0+dm1fcGdvZmYsIE5VTEwp OworCisJCWlmIChsZW5ndGggIT0gbW92ZV9wYWdlX3RhYmxlc191cCh2bWEsIG9sZF9zdGFydCwK KwkJCQkJICAgICAgIHZtYSwgbmV3X3N0YXJ0LCBsZW5ndGgpKQorCQkJcmV0dXJuIC1FTk9NRU07 CisKKwkJbHJ1X2FkZF9kcmFpbigpOworCQl0bGIgPSB0bGJfZ2F0aGVyX21tdShtbSwgMCk7CisJ CWZyZWVfcGdkX3JhbmdlKCZ0bGIsIG9sZF9zdGFydCwgbmV3X3N0YXJ0LCAKKwkJCSAgICAgICBw cmV2ID8gcHJldi0+dm1fZW5kOiAwLCBuZXdfc3RhcnQpOworCQl0bGJfZmluaXNoX21tdSh0bGIs IG9sZF9zdGFydCwgbmV3X3N0YXJ0KTsKKworCQl2bWFfYWRqdXN0KHZtYSwgbmV3X3N0YXJ0LCBu ZXdfZW5kLAorCQkJICAgdm1hLT52bV9wZ29mZiArIChzaGlmdCA+PiBQQUdFX1NISUZUKSwgTlVM TCk7CiAJfQotCWluY19tbV9jb3VudGVyKG1tLCBhbm9uX3Jzcyk7Ci0JbHJ1X2NhY2hlX2FkZF9h Y3RpdmUocGFnZSk7Ci0Jc2V0X3B0ZV9hdChtbSwgYWRkcmVzcywgcHRlLCBwdGVfbWtkaXJ0eShw dGVfbWt3cml0ZShta19wdGUoCi0JCQkJCXBhZ2UsIHZtYS0+dm1fcGFnZV9wcm90KSkpKTsKLQlw YWdlX2FkZF9uZXdfYW5vbl9ybWFwKHBhZ2UsIHZtYSwgYWRkcmVzcyk7Ci0JcHRlX3VubWFwX3Vu bG9jayhwdGUsIHB0bCk7Ci0KLQkvKiBubyBuZWVkIGZvciBmbHVzaF90bGIgKi8KLQlyZXR1cm47 Ci1vdXQ6Ci0JX19mcmVlX3BhZ2UocGFnZSk7Ci0JZm9yY2Vfc2lnKFNJR0tJTEwsIGN1cnJlbnQp OworCisJcmV0dXJuIDA7CiB9CiAKICNkZWZpbmUgRVhUUkFfU1RBQ0tfVk1fUEFHRVMJMjAJLyog cmFuZG9tICovCiAKKy8qIEZpbmFsaXplcyB0aGUgc3RhY2sgdm1fYXJlYV9zdHJ1Y3QuICBUaGUg ZmxhZ3MgYW5kIHBlcm1pc3Npb25zIGFyZSB1cGRhdGVkLAorICogdGhlIHN0YWNrIGlzIG9wdGlv bmFsbHkgcmVsb2NhdGVkLCBhbmQgc29tZSBleHRyYSBzcGFjZSBpcyBhZGRlZC4KKyAqLwogaW50 IHNldHVwX2FyZ19wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAogCQkgICAgdW5zaWdu ZWQgbG9uZyBzdGFja190b3AsCiAJCSAgICBpbnQgZXhlY3V0YWJsZV9zdGFjaykKIHsKLQl1bnNp Z25lZCBsb25nIHN0YWNrX2Jhc2U7Ci0Jc3RydWN0IHZtX2FyZWFfc3RydWN0ICptcG50OworCXVu c2lnbmVkIGxvbmcgcmV0OworCXVuc2lnbmVkIGxvbmcgc3RhY2tfYmFzZSwgc3RhY2tfc2hpZnQ7 CiAJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBjdXJyZW50LT5tbTsKLQlpbnQgaSwgcmV0OwotCWxv bmcgYXJnX3NpemU7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSBicHJtLT52bWE7CiAK ICNpZmRlZiBDT05GSUdfU1RBQ0tfR1JPV1NVUAotCS8qIE1vdmUgdGhlIGFyZ3VtZW50IGFuZCBl bnZpcm9ubWVudCBzdHJpbmdzIHRvIHRoZSBib3R0b20gb2YgdGhlCi0JICogc3RhY2sgc3BhY2Uu Ci0JICovCi0JaW50IG9mZnNldCwgajsKLQljaGFyICp0bywgKmZyb207Ci0KLQkvKiBTdGFydCBi eSBzaGlmdGluZyBhbGwgdGhlIHBhZ2VzIGRvd24gKi8KLQlpID0gMDsKLQlmb3IgKGogPSAwOyBq IDwgTUFYX0FSR19QQUdFUzsgaisrKSB7Ci0JCXN0cnVjdCBwYWdlICpwYWdlID0gYnBybS0+cGFn ZVtqXTsKLQkJaWYgKCFwYWdlKQotCQkJY29udGludWU7Ci0JCWJwcm0tPnBhZ2VbaSsrXSA9IHBh Z2U7Ci0JfQotCi0JLyogTm93IG1vdmUgdGhlbSB3aXRoaW4gdGhlaXIgcGFnZXMgKi8KLQlvZmZz ZXQgPSBicHJtLT5wICUgUEFHRV9TSVpFOwotCXRvID0ga21hcChicHJtLT5wYWdlWzBdKTsKLQlm b3IgKGogPSAxOyBqIDwgaTsgaisrKSB7Ci0JCW1lbW1vdmUodG8sIHRvICsgb2Zmc2V0LCBQQUdF X1NJWkUgLSBvZmZzZXQpOwotCQlmcm9tID0ga21hcChicHJtLT5wYWdlW2pdKTsKLQkJbWVtY3B5 KHRvICsgUEFHRV9TSVpFIC0gb2Zmc2V0LCBmcm9tLCBvZmZzZXQpOwotCQlrdW5tYXAoYnBybS0+ cGFnZVtqIC0gMV0pOwotCQl0byA9IGZyb207Ci0JfQotCW1lbW1vdmUodG8sIHRvICsgb2Zmc2V0 LCBQQUdFX1NJWkUgLSBvZmZzZXQpOwotCWt1bm1hcChicHJtLT5wYWdlW2ogLSAxXSk7Ci0KIAkv KiBMaW1pdCBzdGFjayBzaXplIHRvIDFHQiAqLwogCXN0YWNrX2Jhc2UgPSBjdXJyZW50LT5zaWdu YWwtPnJsaW1bUkxJTUlUX1NUQUNLXS5ybGltX21heDsKIAlpZiAoc3RhY2tfYmFzZSA+ICgxIDw8 IDMwKSkKIAkJc3RhY2tfYmFzZSA9IDEgPDwgMzA7CiAJc3RhY2tfYmFzZSA9IFBBR0VfQUxJR04o c3RhY2tfdG9wIC0gc3RhY2tfYmFzZSk7CiAKLQkvKiBBZGp1c3QgYnBybS0+cCB0byBwb2ludCB0 byB0aGUgZW5kIG9mIHRoZSBzdHJpbmdzLiAqLwotCWJwcm0tPnAgPSBzdGFja19iYXNlICsgUEFH RV9TSVpFICogaSAtIG9mZnNldDsKLQotCW1tLT5hcmdfc3RhcnQgPSBzdGFja19iYXNlOwotCWFy Z19zaXplID0gaSA8PCBQQUdFX1NISUZUOworCS8qIE1ha2Ugc3VyZSB3ZSBkaWRuJ3QgbGV0IHRo ZSBhcmd1bWVudCBhcnJheSBncm93IHRvbyBsYXJnZS4gKi8KKwlpZiAodm1hLT52bV9lbmQgLSB2 bWEtPnZtX3N0YXJ0ID4gU1RBQ0tfVE9QIC0gc3RhY2tfYmFzZSkKKwkJcmV0dXJuIC1FTk9NRU07 CiAKLQkvKiB6ZXJvIHBhZ2VzIHRoYXQgd2VyZSBjb3BpZWQgYWJvdmUgKi8KLQl3aGlsZSAoaSA8 IE1BWF9BUkdfUEFHRVMpCi0JCWJwcm0tPnBhZ2VbaSsrXSA9IE5VTEw7CisJc3RhY2tfc2hpZnQg PSBzdGFja19iYXNlIC0gdm1hLT52bV9zdGFydDsKKwltbS0+YXJnX3N0YXJ0ID0gYnBybS0+cCAr IHN0YWNrX3NoaWZ0OworCWJwcm0tPnAgPSB2bWEtPnZtX2VuZCArIHN0YWNrX3NoaWZ0OwogI2Vs c2UKLQlzdGFja19iYXNlID0gYXJjaF9hbGlnbl9zdGFjayhzdGFja190b3AgLSBNQVhfQVJHX1BB R0VTKlBBR0VfU0laRSk7CisJQlVHX09OKHN0YWNrX3RvcCA+IFNUQUNLX1RPUCk7CisJQlVHX09O KHN0YWNrX3RvcCAmIH5QQUdFX01BU0spOworCisJc3RhY2tfYmFzZSA9IGFyY2hfYWxpZ25fc3Rh Y2soc3RhY2tfdG9wIC0gbW0tPnN0YWNrX3ZtKlBBR0VfU0laRSk7CiAJc3RhY2tfYmFzZSA9IFBB R0VfQUxJR04oc3RhY2tfYmFzZSk7Ci0JYnBybS0+cCArPSBzdGFja19iYXNlOworCisJLyogTWFr ZSBzdXJlIHdlIGRpZG4ndCBsZXQgdGhlIGFyZ3VtZW50IGFycmF5IGdyb3cgdG9vIGxhcmdlLiAq LworCWlmIChzdGFja19iYXNlID4gc3RhY2tfdG9wKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXN0 YWNrX3NoaWZ0ID0gc3RhY2tfYmFzZSAtIChicHJtLT5wICYgUEFHRV9NQVNLKTsKKwlicHJtLT5w ICs9IHN0YWNrX3NoaWZ0OwogCW1tLT5hcmdfc3RhcnQgPSBicHJtLT5wOwotCWFyZ19zaXplID0g c3RhY2tfdG9wIC0gKFBBR0VfTUFTSyAmICh1bnNpZ25lZCBsb25nKSBtbS0+YXJnX3N0YXJ0KTsK ICNlbmRpZgogCi0JYXJnX3NpemUgKz0gRVhUUkFfU1RBQ0tfVk1fUEFHRVMgKiBQQUdFX1NJWkU7 Ci0KIAlpZiAoYnBybS0+bG9hZGVyKQotCQlicHJtLT5sb2FkZXIgKz0gc3RhY2tfYmFzZTsKLQli cHJtLT5leGVjICs9IHN0YWNrX2Jhc2U7Ci0KLQltcG50ID0ga21lbV9jYWNoZV96YWxsb2Modm1f YXJlYV9jYWNoZXAsIEdGUF9LRVJORUwpOwotCWlmICghbXBudCkKLQkJcmV0dXJuIC1FTk9NRU07 CisJCWJwcm0tPmxvYWRlciArPSBzdGFja19zaGlmdDsKKwlicHJtLT5leGVjICs9IHN0YWNrX3No aWZ0OwogCiAJZG93bl93cml0ZSgmbW0tPm1tYXBfc2VtKTsKIAl7Ci0JCW1wbnQtPnZtX21tID0g bW07Ci0jaWZkZWYgQ09ORklHX1NUQUNLX0dST1dTVVAKLQkJbXBudC0+dm1fc3RhcnQgPSBzdGFj a19iYXNlOwotCQltcG50LT52bV9lbmQgPSBzdGFja19iYXNlICsgYXJnX3NpemU7Ci0jZWxzZQot CQltcG50LT52bV9lbmQgPSBzdGFja190b3A7Ci0JCW1wbnQtPnZtX3N0YXJ0ID0gbXBudC0+dm1f ZW5kIC0gYXJnX3NpemU7Ci0jZW5kaWYKKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICpwcmV2ID0g TlVMTDsKKwkJdW5zaWduZWQgbG9uZyB2bV9mbGFncyA9IHZtYS0+dm1fZmxhZ3M7CisKIAkJLyog QWRqdXN0IHN0YWNrIGV4ZWN1dGUgcGVybWlzc2lvbnM7IGV4cGxpY2l0bHkgZW5hYmxlCiAJCSAq IGZvciBFWFNUQUNLX0VOQUJMRV9YLCBkaXNhYmxlIGZvciBFWFNUQUNLX0RJU0FCTEVfWAogCQkg KiBhbmQgbGVhdmUgYWxvbmUgKGFyY2ggZGVmYXVsdCkgb3RoZXJ3aXNlLiAqLwogCQlpZiAodW5s aWtlbHkoZXhlY3V0YWJsZV9zdGFjayA9PSBFWFNUQUNLX0VOQUJMRV9YKSkKLQkJCW1wbnQtPnZt X2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1MgfCAgVk1fRVhFQzsKKwkJCXZtX2ZsYWdzIHw9IFZNX0VY RUM7CiAJCWVsc2UgaWYgKGV4ZWN1dGFibGVfc3RhY2sgPT0gRVhTVEFDS19ESVNBQkxFX1gpCi0J CQltcG50LT52bV9mbGFncyA9IFZNX1NUQUNLX0ZMQUdTICYgflZNX0VYRUM7Ci0JCWVsc2UKLQkJ CW1wbnQtPnZtX2ZsYWdzID0gVk1fU1RBQ0tfRkxBR1M7Ci0JCW1wbnQtPnZtX2ZsYWdzIHw9IG1t LT5kZWZfZmxhZ3M7Ci0JCW1wbnQtPnZtX3BhZ2VfcHJvdCA9IHByb3RlY3Rpb25fbWFwW21wbnQt PnZtX2ZsYWdzICYgMHg3XTsKLQkJaWYgKChyZXQgPSBpbnNlcnRfdm1fc3RydWN0KG1tLCBtcG50 KSkpIHsKKwkJCXZtX2ZsYWdzICY9IH5WTV9FWEVDOworCQl2bV9mbGFncyB8PSBtbS0+ZGVmX2Zs YWdzOworCisJCXJldCA9IG1wcm90ZWN0X2ZpeHVwKHZtYSwgJnByZXYsIHZtYS0+dm1fc3RhcnQs IHZtYS0+dm1fZW5kLAorCQkJCXZtX2ZsYWdzKTsKKwkJaWYgKHJldCkgewogCQkJdXBfd3JpdGUo Jm1tLT5tbWFwX3NlbSk7Ci0JCQlrbWVtX2NhY2hlX2ZyZWUodm1fYXJlYV9jYWNoZXAsIG1wbnQp OwogCQkJcmV0dXJuIHJldDsKIAkJfQotCQltbS0+c3RhY2tfdm0gPSBtbS0+dG90YWxfdm0gPSB2 bWFfcGFnZXMobXBudCk7Ci0JfQorCQlCVUdfT04ocHJldiAhPSB2bWEpOworCisJCS8qIE1vdmUg c3RhY2sgcGFnZXMgZG93biBpbiBtZW1vcnkuICovCisJCWlmIChzdGFja19zaGlmdCkgeworCQkJ cmV0ID0gc2hpZnRfYXJnX3BhZ2VzKHZtYSwgc3RhY2tfc2hpZnQpOworCQkJaWYgKHJldCkgewor CQkJCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOworCQkJCXJldHVybiByZXQ7CisJCQl9CisJCX0K IAotCWZvciAoaSA9IDAgOyBpIDwgTUFYX0FSR19QQUdFUyA7IGkrKykgewotCQlzdHJ1Y3QgcGFn ZSAqcGFnZSA9IGJwcm0tPnBhZ2VbaV07Ci0JCWlmIChwYWdlKSB7Ci0JCQlicHJtLT5wYWdlW2ld ID0gTlVMTDsKLQkJCWluc3RhbGxfYXJnX3BhZ2UobXBudCwgcGFnZSwgc3RhY2tfYmFzZSk7Cisj aWZkZWYgQ09ORklHX1NUQUNLX0dST1dTVVAKKwkJaWYgKGV4cGFuZF9zdGFjayh2bWEsIHZtYS0+ dm1fZW5kICsKKwkJCQkJRVhUUkFfU1RBQ0tfVk1fUEFHRVMgKiBQQUdFX1NJWkUpKSB7CisJCQl1 cF93cml0ZSgmbW0tPm1tYXBfc2VtKTsKKwkJCXJldHVybiAtRUZBVUxUOworCQl9CisjZWxzZQor CQlpZiAoZXhwYW5kX3N0YWNrKHZtYSwgc3RhY2tfYmFzZSAtCisJCQkJCUVYVFJBX1NUQUNLX1ZN X1BBR0VTICogUEFHRV9TSVpFKSkgeworCQkJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJCQly ZXR1cm4gLUVGQVVMVDsKIAkJfQotCQlzdGFja19iYXNlICs9IFBBR0VfU0laRTsKKyNlbmRpZgog CX0KIAl1cF93cml0ZSgmbW0tPm1tYXBfc2VtKTsKIAkKQEAgLTQ1MywyMSArNjEzLDYgQEAgaW50 IHNldHVwX2FyZ19wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAogCiBFWFBPUlRfU1lN Qk9MKHNldHVwX2FyZ19wYWdlcyk7CiAKLSNkZWZpbmUgZnJlZV9hcmdfcGFnZXMoYnBybSkgZG8g eyB9IHdoaWxlICgwKQotCi0jZWxzZQotCi1zdGF0aWMgaW5saW5lIHZvaWQgZnJlZV9hcmdfcGFn ZXMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7 IGkgPCBNQVhfQVJHX1BBR0VTOyBpKyspIHsKLQkJaWYgKGJwcm0tPnBhZ2VbaV0pCi0JCQlfX2Zy ZWVfcGFnZShicHJtLT5wYWdlW2ldKTsKLQkJYnBybS0+cGFnZVtpXSA9IE5VTEw7Ci0JfQotfQot CiAjZW5kaWYgLyogQ09ORklHX01NVSAqLwogCiBzdHJ1Y3QgZmlsZSAqb3Blbl9leGVjKGNvbnN0 IGNoYXIgKm5hbWUpCkBAIC05ODUsMjggKzExMzAsNDcgQEAgdm9pZCBjb21wdXRlX2NyZWRzKHN0 cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAKIEVYUE9SVF9TWU1CT0woY29tcHV0ZV9jcmVkcyk7 CiAKLXZvaWQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCisvKgor ICogQXJndW1lbnRzIGFyZSAnXDAnIHNlcGFyYXRlZCBzdHJpbmdzIGZvdW5kIGF0IHRoZSBsb2Nh dGlvbiBicHJtLT5wCisgKiBwb2ludHMgdG87IGNob3Agb2ZmIHRoZSBmaXJzdCBieSByZWxvY2F0 aW5nIGJycG0tPnAgdG8gcmlnaHQgYWZ0ZXIKKyAqIHRoZSBmaXJzdCAnXDAnIGVuY291bnRlcmVk LgorICovCitpbnQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiB7 Ci0JaWYgKGJwcm0tPmFyZ2MpIHsKLQkJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0JCWNoYXIgKiBr YWRkcjsKLQkJc3RydWN0IHBhZ2UgKnBhZ2U7CisJaW50IHJldCA9IDA7CisJdW5zaWduZWQgbG9u ZyBvZmZzZXQ7CisJY2hhciAqa2FkZHI7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CiAKLQkJb2Zmc2V0 ID0gYnBybS0+cCAlIFBBR0VfU0laRTsKLQkJZ290byBpbnNpZGU7CisJaWYgKCFicHJtLT5hcmdj KQorCQlyZXR1cm4gMDsKIAotCQl3aGlsZSAoYnBybS0+cCsrLCAqKGthZGRyK29mZnNldCsrKSkg ewotCQkJaWYgKG9mZnNldCAhPSBQQUdFX1NJWkUpCi0JCQkJY29udGludWU7Ci0JCQlvZmZzZXQg PSAwOwotCQkJa3VubWFwX2F0b21pYyhrYWRkciwgS01fVVNFUjApOwotaW5zaWRlOgotCQkJcGFn ZSA9IGJwcm0tPnBhZ2VbYnBybS0+cC9QQUdFX1NJWkVdOwotCQkJa2FkZHIgPSBrbWFwX2F0b21p YyhwYWdlLCBLTV9VU0VSMCk7CisJZG8geworCQlvZmZzZXQgPSBicHJtLT5wICYgflBBR0VfTUFT SzsKKwkJcGFnZSA9IGdldF9hcmdfcGFnZShicHJtLCBicHJtLT5wLCAwKTsKKwkJaWYgKCFwYWdl KSB7CisJCQlyZXQgPSAtRUZBVUxUOworCQkJZ290byBvdXQ7CiAJCX0KKwkJa2FkZHIgPSBrbWFw X2F0b21pYyhwYWdlLCBLTV9VU0VSMCk7CisKKwkJZm9yICg7IG9mZnNldCA8IFBBR0VfU0laRSAm JiBrYWRkcltvZmZzZXRdOworCQkJCW9mZnNldCsrLCBicHJtLT5wKyspCisJCQk7CisKIAkJa3Vu bWFwX2F0b21pYyhrYWRkciwgS01fVVNFUjApOwotCQlicHJtLT5hcmdjLS07Ci0JfQorCQlwdXRf YXJnX3BhZ2UocGFnZSk7CisKKwkJaWYgKG9mZnNldCA9PSBQQUdFX1NJWkUpCisJCQlmcmVlX2Fy Z19wYWdlKGJwcm0sIChicHJtLT5wID4+IFBBR0VfU0hJRlQpIC0gMSk7CisJfSB3aGlsZSAob2Zm c2V0ID09IFBBR0VfU0laRSk7CisKKwlicHJtLT5wKys7CisJYnBybS0+YXJnYy0tOworCXJldCA9 IDA7CisKK291dDoKKwlyZXR1cm4gcmV0OwogfQogCiBFWFBPUlRfU1lNQk9MKHJlbW92ZV9hcmdf emVybyk7CkBAIC0xMDMzLDcgKzExOTcsNyBAQCBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0 cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCiAJCWZwdXQoYnBy bS0+ZmlsZSk7CiAJCWJwcm0tPmZpbGUgPSBOVUxMOwogCi0JICAgICAgICBsb2FkZXIgPSBQQUdF X1NJWkUqTUFYX0FSR19QQUdFUy1zaXplb2Yodm9pZCAqKTsKKwkgICAgICAgIGxvYWRlciA9IGJw cm0tPnZtYS0+dm1fZW5kIC0gc2l6ZW9mKHZvaWQgKik7CiAKIAkJZmlsZSA9IG9wZW5fZXhlYygi L3NiaW4vbG9hZGVyIik7CiAJCXJldHZhbCA9IFBUUl9FUlIoZmlsZSk7CkBAIC0xMTI1LDggKzEy ODksOCBAQCBpbnQgZG9fZXhlY3ZlKGNoYXIgKiBmaWxlbmFtZSwKIHsKIAlzdHJ1Y3QgbGludXhf YmlucHJtICpicHJtOwogCXN0cnVjdCBmaWxlICpmaWxlOworCXVuc2lnbmVkIGxvbmcgdG1wOwog CWludCByZXR2YWw7Ci0JaW50IGk7CiAKIAlyZXR2YWwgPSAtRU5PTUVNOwogCWJwcm0gPSBremFs bG9jKHNpemVvZigqYnBybSksIEdGUF9LRVJORUwpOwpAQCAtMTE0MCwyNSArMTMwNCwxOSBAQCBp bnQgZG9fZXhlY3ZlKGNoYXIgKiBmaWxlbmFtZSwKIAogCXNjaGVkX2V4ZWMoKTsKIAotCWJwcm0t PnAgPSBQQUdFX1NJWkUqTUFYX0FSR19QQUdFUy1zaXplb2Yodm9pZCAqKTsKLQogCWJwcm0tPmZp bGUgPSBmaWxlOwogCWJwcm0tPmZpbGVuYW1lID0gZmlsZW5hbWU7CiAJYnBybS0+aW50ZXJwID0g ZmlsZW5hbWU7Ci0JYnBybS0+bW0gPSBtbV9hbGxvYygpOwotCXJldHZhbCA9IC1FTk9NRU07Ci0J aWYgKCFicHJtLT5tbSkKLQkJZ290byBvdXRfZmlsZTsKIAotCXJldHZhbCA9IGluaXRfbmV3X2Nv bnRleHQoY3VycmVudCwgYnBybS0+bW0pOwotCWlmIChyZXR2YWwgPCAwKQotCQlnb3RvIG91dF9t bTsKKwlyZXR2YWwgPSBicHJtX21tX2luaXQoYnBybSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBv dXRfZmlsZTsKIAotCWJwcm0tPmFyZ2MgPSBjb3VudChhcmd2LCBicHJtLT5wIC8gc2l6ZW9mKHZv aWQgKikpOworCWJwcm0tPmFyZ2MgPSBjb3VudChhcmd2LCBNQVhfQVJHX1NUUklOR1MpOwogCWlm ICgocmV0dmFsID0gYnBybS0+YXJnYykgPCAwKQogCQlnb3RvIG91dF9tbTsKIAotCWJwcm0tPmVu dmMgPSBjb3VudChlbnZwLCBicHJtLT5wIC8gc2l6ZW9mKHZvaWQgKikpOworCWJwcm0tPmVudmMg PSBjb3VudChlbnZwLCBNQVhfQVJHX1NUUklOR1MpOwogCWlmICgocmV0dmFsID0gYnBybS0+ZW52 YykgPCAwKQogCQlnb3RvIG91dF9tbTsKIApAQCAtMTE3OSwxNSArMTMzNywxNiBAQCBpbnQgZG9f ZXhlY3ZlKGNoYXIgKiBmaWxlbmFtZSwKIAlpZiAocmV0dmFsIDwgMCkKIAkJZ290byBvdXQ7CiAK Kwl0bXAgPSBicHJtLT5wOwogCXJldHZhbCA9IGNvcHlfc3RyaW5ncyhicHJtLT5hcmdjLCBhcmd2 LCBicHJtKTsKIAlpZiAocmV0dmFsIDwgMCkKIAkJZ290byBvdXQ7CisJYnBybS0+YXJndl9sZW4g PSB0bXAgLSBicHJtLT5wOwogCiAJcmV0dmFsID0gc2VhcmNoX2JpbmFyeV9oYW5kbGVyKGJwcm0s cmVncyk7CiAJaWYgKHJldHZhbCA+PSAwKSB7Ci0JCWZyZWVfYXJnX3BhZ2VzKGJwcm0pOwotCiAJ CS8qIGV4ZWN2ZSBzdWNjZXNzICovCisJCWZyZWVfYXJnX3BhZ2VzKGJwcm0pOwogCQlzZWN1cml0 eV9icHJtX2ZyZWUoYnBybSk7CiAJCWFjY3RfdXBkYXRlX2ludGVncmFscyhjdXJyZW50KTsKIAkJ a2ZyZWUoYnBybSk7CkBAIC0xMTk1LDI2ICsxMzU0LDE5IEBAIGludCBkb19leGVjdmUoY2hhciAq IGZpbGVuYW1lLAogCX0KIAogb3V0OgotCS8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCByZXR1cm4g dGhlIGlub2RlIGFuZCBmcmVlIHRoZSBhcmd1bWVudCBwYWdlcyovCi0JZm9yIChpID0gMCA7IGkg PCBNQVhfQVJHX1BBR0VTIDsgaSsrKSB7Ci0JCXN0cnVjdCBwYWdlICogcGFnZSA9IGJwcm0tPnBh Z2VbaV07Ci0JCWlmIChwYWdlKQotCQkJX19mcmVlX3BhZ2UocGFnZSk7Ci0JfQotCisJZnJlZV9h cmdfcGFnZXMoYnBybSk7CiAJaWYgKGJwcm0tPnNlY3VyaXR5KQogCQlzZWN1cml0eV9icHJtX2Zy ZWUoYnBybSk7CiAKIG91dF9tbToKIAlpZiAoYnBybS0+bW0pCi0JCW1tZHJvcChicHJtLT5tbSk7 CisJCW1tcHV0IChicHJtLT5tbSk7CiAKIG91dF9maWxlOgogCWlmIChicHJtLT5maWxlKSB7CiAJ CWFsbG93X3dyaXRlX2FjY2VzcyhicHJtLT5maWxlKTsKIAkJZnB1dChicHJtLT5maWxlKTsKIAl9 Ci0KIG91dF9rZnJlZToKIAlrZnJlZShicHJtKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20t dW0vcHJvY2Vzc29yLWkzODYuaCBiL2luY2x1ZGUvYXNtLXVtL3Byb2Nlc3Nvci1pMzg2LmgKaW5k ZXggNTk1ZjFjMy4uODY5YzIzNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tdW0vcHJvY2Vzc29y LWkzODYuaAorKysgYi9pbmNsdWRlL2FzbS11bS9wcm9jZXNzb3ItaTM4Ni5oCkBAIC02Nyw5ICs2 Nyw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXBfbm9wKHZvaWQpCiAjZGVmaW5lIGN1cnJlbnRf dGV4dF9hZGRyKCkgXAogCSh7IHZvaWQgKnBjOyBfX2FzbV9fKCJtb3ZsICQxZiwlMFxuMToiOiI9 ZyIgKHBjKSk7IHBjOyB9KQogCi0jZGVmaW5lIEFSQ0hfSVNfU1RBQ0tHUk9XKGFkZHJlc3MpIFwK LSAgICAgICAoYWRkcmVzcyArIDMyID49IFVQVF9TUCgmY3VycmVudC0+dGhyZWFkLnJlZ3MucmVn cykpCi0KICNkZWZpbmUgS1NUS19FSVAodHNrKSBLU1RLX1JFRyh0c2ssIEVJUCkKICNkZWZpbmUg S1NUS19FU1AodHNrKSBLU1RLX1JFRyh0c2ssIFVFU1ApCiAjZGVmaW5lIEtTVEtfRUJQKHRzaykg S1NUS19SRUcodHNrLCBFQlApCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS11bS9wcm9jZXNzb3It eDg2XzY0LmggYi9pbmNsdWRlL2FzbS11bS9wcm9jZXNzb3IteDg2XzY0LmgKaW5kZXggMzFjMmQ0 ZC4uNjRkN2JkZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tdW0vcHJvY2Vzc29yLXg4Nl82NC5o CisrKyBiL2luY2x1ZGUvYXNtLXVtL3Byb2Nlc3Nvci14ODZfNjQuaApAQCAtNDQsOSArNDQsNiBA QCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9jb3B5X3RocmVhZChzdHJ1Y3QgYXJjaF90aHJlYWQg KmZyb20sCiAjZGVmaW5lIGN1cnJlbnRfdGV4dF9hZGRyKCkgXAogCSh7IHZvaWQgKnBjOyBfX2Fz bV9fKCJtb3ZxICQxZiwlMFxuMToiOiI9ZyIgKHBjKSk7IHBjOyB9KQogCi0jZGVmaW5lIEFSQ0hf SVNfU1RBQ0tHUk9XKGFkZHJlc3MpIFwKLSAgICAgICAgKGFkZHJlc3MgKyAxMjggPj0gVVBUX1NQ KCZjdXJyZW50LT50aHJlYWQucmVncy5yZWdzKSkKLQogI2RlZmluZSBLU1RLX0VJUCh0c2spIEtT VEtfUkVHKHRzaywgUklQKQogI2RlZmluZSBLU1RLX0VTUCh0c2spIEtTVEtfUkVHKHRzaywgUlNQ KQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCBiL2luY2x1ZGUvbGludXgv YmluZm10cy5oCmluZGV4IDJkOTU2Y2QuLjhhYzIyNzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvYmluZm10cy5oCisrKyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oCkBAIC01LDEyICs1LDkg QEAKIAogc3RydWN0IHB0X3JlZ3M7CiAKLS8qCi0gKiBNQVhfQVJHX1BBR0VTIGRlZmluZXMgdGhl IG51bWJlciBvZiBwYWdlcyBhbGxvY2F0ZWQgZm9yIGFyZ3VtZW50cwotICogYW5kIGVudmVsb3Bl IGZvciB0aGUgbmV3IHByb2dyYW0uIDMyIHNob3VsZCBzdWZmaWNlLCB0aGlzIGdpdmVzCi0gKiBh IG1heGltdW0gZW52K2FyZyBvZiAxMjhrQiB3LzRLQiBwYWdlcyEKLSAqLwotI2RlZmluZSBNQVhf QVJHX1BBR0VTIDMyCisvKiBGSVhNRTogRmluZCByZWFsIGxpbWl0cywgb3Igbm9uZS4gKi8KKyNk ZWZpbmUgTUFYX0FSR19TVFJMRU4gKFBBR0VfU0laRSAqIDMyKQorI2RlZmluZSBNQVhfQVJHX1NU UklOR1MgMHg3RkZGRkZGRgogCiAvKiBzaXplb2YobGludXhfYmlucHJtLT5idWYpICovCiAjZGVm aW5lIEJJTlBSTV9CVUZfU0laRSAxMjgKQEAgLTIyLDcgKzE5LDEyIEBAIHN0cnVjdCBwdF9yZWdz OwogICovCiBzdHJ1Y3QgbGludXhfYmlucHJtewogCWNoYXIgYnVmW0JJTlBSTV9CVUZfU0laRV07 CisjaWZkZWYgQ09ORklHX01NVQorCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOworI2Vsc2UK KyMgZGVmaW5lIE1BWF9BUkdfUEFHRVMJMzIKIAlzdHJ1Y3QgcGFnZSAqcGFnZVtNQVhfQVJHX1BB R0VTXTsKKyNlbmRpZgogCXN0cnVjdCBtbV9zdHJ1Y3QgKm1tOwogCXVuc2lnbmVkIGxvbmcgcDsg LyogY3VycmVudCB0b3Agb2YgbWVtICovCiAJaW50IHNoX2Jhbmc7CkBAIC0zOCw2ICs0MCw3IEBA IHN0cnVjdCBsaW51eF9iaW5wcm17CiAJdW5zaWduZWQgaW50ZXJwX2ZsYWdzOwogCXVuc2lnbmVk IGludGVycF9kYXRhOwogCXVuc2lnbmVkIGxvbmcgbG9hZGVyLCBleGVjOworCXVuc2lnbmVkIGxv bmcgYXJndl9sZW47CiB9OwogCiAjZGVmaW5lIEJJTlBSTV9GTEFHU19FTkZPUkNFX05PTkRVTVBf QklUIDAKQEAgLTY2LDcgKzY5LDcgQEAgZXh0ZXJuIGludCByZWdpc3Rlcl9iaW5mbXQoc3RydWN0 IGxpbnV4X2JpbmZtdCAqKTsKIGV4dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQoc3RydWN0IGxp bnV4X2JpbmZtdCAqKTsKIAogZXh0ZXJuIGludCBwcmVwYXJlX2JpbnBybShzdHJ1Y3QgbGludXhf YmlucHJtICopOwotZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51eF9iaW5w cm0gKik7CitleHRlcm4gaW50IF9fbXVzdF9jaGVjayByZW1vdmVfYXJnX3plcm8oc3RydWN0IGxp bnV4X2JpbnBybSAqKTsKIGV4dGVybiBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBs aW51eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsKIGV4dGVybiBpbnQgZmx1c2hfb2xkX2V4 ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwogCkBAIC04Myw2ICs4Niw3IEBAIGV4dGVy biBpbnQgc3VpZF9kdW1wYWJsZTsKIGV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0cnVjdCBs aW51eF9iaW5wcm0gKiBicHJtLAogCQkJICAgdW5zaWduZWQgbG9uZyBzdGFja190b3AsCiAJCQkg ICBpbnQgZXhlY3V0YWJsZV9zdGFjayk7CitleHRlcm4gaW50IGJwcm1fbW1faW5pdChzdHJ1Y3Qg bGludXhfYmlucHJtICpicHJtKTsKIGV4dGVybiBpbnQgY29weV9zdHJpbmdzX2tlcm5lbChpbnQg YXJnYyxjaGFyICoqIGFyZ3Ysc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CiBleHRlcm4gdm9p ZCBjb21wdXRlX2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJpbnBybSk7CiBleHRlcm4gaW50 IGRvX2NvcmVkdW1wKGxvbmcgc2lnbnIsIGludCBleGl0X2NvZGUsIHN0cnVjdCBwdF9yZWdzICog cmVncyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tLmggYi9pbmNsdWRlL2xpbnV4L21t LmgKaW5kZXggNjBlMGU0YS4uY2VlZTA2MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbS5o CisrKyBiL2luY2x1ZGUvbGludXgvbW0uaApAQCAtNzcxLDcgKzc3MSw2IEBAIHN0YXRpYyBpbmxp bmUgaW50IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAogZXh0ZXJuIGlu dCBtYWtlX3BhZ2VzX3ByZXNlbnQodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVu ZCk7CiBleHRlcm4gaW50IGFjY2Vzc19wcm9jZXNzX3ZtKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNr LCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKTsKLXZv aWQgaW5zdGFsbF9hcmdfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgc3RydWN0IHBhZ2Ug KiwgdW5zaWduZWQgbG9uZyk7CiAKIGludCBnZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCWlu dCBsZW4sIGludCB3cml0ZSwgaW50IGZvcmNlLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKip2bWFzKTsKQEAgLTc4OCw5ICs3ODcsMTggQEAgaW50IEZBU1RDQUxM KHNldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSk7CiBpbnQgc2V0X3BhZ2VfZGlydHlf bG9jayhzdHJ1Y3QgcGFnZSAqcGFnZSk7CiBpbnQgY2xlYXJfcGFnZV9kaXJ0eV9mb3JfaW8oc3Ry dWN0IHBhZ2UgKnBhZ2UpOwogCitleHRlcm4gdW5zaWduZWQgbG9uZyBtb3ZlX3BhZ2VfdGFibGVz KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQl1bnNpZ25lZCBsb25nIG9sZF9hZGRyLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKm5ld192bWEsCisJCXVuc2lnbmVkIGxvbmcgbmV3X2FkZHIs IHVuc2lnbmVkIGxvbmcgbGVuKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIG1vdmVfcGFnZV90YWJs ZXNfdXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJCXVuc2lnbmVkIGxvbmcgb2xkX2Fk ZHIsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqbmV3X3ZtYSwKKwkJdW5zaWduZWQgbG9uZyBuZXdf YWRkciwgdW5zaWduZWQgbG9uZyBsZW4pOwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbXJlbWFw KHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCSAgICAgICB1bnNpZ25lZCBsb25nIG9sZF9sZW4sIHVu c2lnbmVkIGxvbmcgbmV3X2xlbiwKIAkJCSAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLCB1bnNp Z25lZCBsb25nIG5ld19hZGRyKTsKK2V4dGVybiBpbnQgbXByb3RlY3RfZml4dXAoc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEsCisJCQkgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnBwcmV2LCB1 bnNpZ25lZCBsb25nIHN0YXJ0LAorCQkJICB1bnNpZ25lZCBsb25nIGVuZCwgdW5zaWduZWQgbG9u ZyBuZXdmbGFncyk7CiAKIC8qCiAgKiBQcm90b3R5cGUgdG8gYWRkIGEgc2hyaW5rZXIgY2FsbGJh Y2sgZm9yIGFnZWFibGUgY2FjaGVzLgpAQCAtMTA5MSw2ICsxMDk5LDkgQEAgZXh0ZXJuIGludCBl eHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRk cmVzcyk7CiAjaWZkZWYgQ09ORklHX0lBNjQKIGV4dGVybiBpbnQgZXhwYW5kX3Vwd2FyZHMoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7CiAjZW5kaWYK KyNpZmRlZiBDT05GSUdfU1RBQ0tfR1JPV1NVUAorZXh0ZXJuIGludCBleHBhbmRfZG93bndhcmRz KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpOworI2Vu ZGlmCiAKIC8qIExvb2sgdXAgdGhlIGZpcnN0IFZNQSB3aGljaCBzYXRpc2ZpZXMgIGFkZHIgPCB2 bV9lbmQsICBOVUxMIGlmIG5vbmUuICovCiBleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICog ZmluZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zeXNjdGwuaCBiL2luY2x1ZGUvbGludXgvc3lzY3RsLmgK aW5kZXggNDdmMWM1My4uYjk3Y2ExMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zeXNjdGwu aAorKysgYi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oCkBAIC0xNjUsNiArMTY1LDcgQEAgZW51bQog CUtFUk5fTUFYX0xPQ0tfREVQVEg9NzQsCiAJS0VSTl9OTUlfV0FUQ0hET0c9NzUsIC8qIGludDog ZW5hYmxlL2Rpc2FibGUgbm1pIHdhdGNoZG9nICovCiAJS0VSTl9QQU5JQ19PTl9OTUk9NzYsIC8q IGludDogd2hldGhlciB3ZSB3aWxsIHBhbmljIG9uIGFuIHVucmVjb3ZlcmVkICovCisJS0VSTl9B VURJVF9BUkdWPTc3LCAvKiBpbnQ6IG1heCBzaXplIG9mIGFyZ3YgYXJyYXkgZm9yIGF1ZGl0IGxv Z2dpbmcgKi8KIH07CiAKIApkaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0LmMgYi9rZXJuZWwvYXVk aXQuYwppbmRleCA0ZTlkMjA4Li45YjA4ZjU1IDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXQuYwor KysgYi9rZXJuZWwvYXVkaXQuYwpAQCAtMTcwLDYgKzE3MCwyMiBAQCB2b2lkIGF1ZGl0X3Bhbmlj KGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiAJfQogfQogCit2b2lkIGF1ZGl0X2tpbGwoY29uc3QgY2hh ciAqbWVzc2FnZSkKK3sKKwlzd2l0Y2ggKGF1ZGl0X2ZhaWx1cmUpCisJeworCWNhc2UgQVVESVRf RkFJTF9TSUxFTlQ6CisJCWJyZWFrOworCWNhc2UgQVVESVRfRkFJTF9QUklOVEs6CisJCXByaW50 ayhLRVJOX0VSUiAiYXVkaXQ6ICVzXG4iLCBtZXNzYWdlKTsKKwkJYnJlYWs7CisJY2FzZSBBVURJ VF9GQUlMX1BBTklDOgorCQlwcmludGsoS0VSTl9FUlIgImF1ZGl0OiAlc1xuIiwgbWVzc2FnZSk7 CisJCXNlbmRfc2lnKFNJR0tJTEwsIGN1cnJlbnQsIDApOworCQlicmVhazsKKwl9Cit9CisKIHN0 YXRpYyBpbmxpbmUgaW50IGF1ZGl0X3JhdGVfY2hlY2sodm9pZCkKIHsKIAlzdGF0aWMgdW5zaWdu ZWQgbG9uZwlsYXN0X2NoZWNrID0gMDsKZGlmZiAtLWdpdCBhL2tlcm5lbC9hdWRpdC5oIGIva2Vy bmVsL2F1ZGl0LmgKaW5kZXggYTMzNzAyMy4uOWNhZDVjZSAxMDA2NDQKLS0tIGEva2VybmVsL2F1 ZGl0LmgKKysrIGIva2VybmVsL2F1ZGl0LmgKQEAgLTExNiw2ICsxMTYsNyBAQCBleHRlcm4gdm9p ZAkJICAgIGF1ZGl0X3NlbmRfcmVwbHkoaW50IHBpZCwgaW50IHNlcSwgaW50IHR5cGUsCiAJCQkJ CSAgICAgdm9pZCAqcGF5bG9hZCwgaW50IHNpemUpOwogZXh0ZXJuIHZvaWQJCSAgICBhdWRpdF9s b2dfbG9zdChjb25zdCBjaGFyICptZXNzYWdlKTsKIGV4dGVybiB2b2lkCQkgICAgYXVkaXRfcGFu aWMoY29uc3QgY2hhciAqbWVzc2FnZSk7CitleHRlcm4gdm9pZAkJICAgIGF1ZGl0X2tpbGwoY29u c3QgY2hhciAqbWVzc2FnZSk7CiAKIHN0cnVjdCBhdWRpdF9uZXRsaW5rX2xpc3QgewogCWludCBw aWQ7CmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuYwppbmRl eCA2MjhjN2FjLi40MDIyNTJlIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXRzYy5jCisrKyBiL2tl cm5lbC9hdWRpdHNjLmMKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgYXVkaXRfYXV4X2RhdGFf ZXhlY3ZlIHsKIAlzdHJ1Y3QgYXVkaXRfYXV4X2RhdGEJZDsKIAlpbnQgYXJnYzsKIAlpbnQgZW52 YzsKLQljaGFyIG1lbVswXTsKKwlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKIH07CiAKIHN0cnVjdCBh dWRpdF9hdXhfZGF0YV9zb2NrZXRjYWxsIHsKQEAgLTc5NSw2ICs3OTUsNDggQEAgc3RhdGljIHZv aWQgYXVkaXRfbG9nX3Rhc2tfaW5mbyhzdHJ1Y3QgYXVkaXRfYnVmZmVyICphYiwgc3RydWN0IHRh c2tfc3RydWN0ICp0c2sKIAlhdWRpdF9sb2dfdGFza19jb250ZXh0KGFiKTsKIH0KIAorc3RhdGlj IHZvaWQgYXVkaXRfbG9nX2V4ZWN2ZV9pbmZvKHN0cnVjdCBhdWRpdF9idWZmZXIgKmFiLAorCQlz dHJ1Y3QgYXVkaXRfYXV4X2RhdGFfZXhlY3ZlICpheGkpCit7CisJaW50IGk7CisJbG9uZyBsZW47 CisJY29uc3QgY2hhciBfX3VzZXIgKnAgPSAoY29uc3QgY2hhciBfX3VzZXIgKilheGktPm1tLT5h cmdfc3RhcnQ7CisKKwlpZiAoYXhpLT5tbSAhPSBjdXJyZW50LT5tbSkKKwkJcmV0dXJuOyAvKiBl eGVjdmUgZmFpbGVkLCBubyBhZGRpdGlvbmFsIGluZm8gKi8KKworCWZvciAoaSA9IDA7IGkgPCBh eGktPmFyZ2M7IGkrKywgcCArPSBsZW4pIHsKKwkJbG9uZyByZXQ7CisJCWNoYXIgKnRtcDsKKwor CQlsZW4gPSBzdHJubGVuX3VzZXIocCwgTUFYX0FSR19TVFJMRU4pOworCQkvKgorCQkgKiBXZSBq dXN0IGNyZWF0ZWQgdGhpcyBtbSwgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc3RyaW5ncworCQkgKiB3 ZSBqdXN0IGNvcGllZCBpbiBzb21ldGhpbmcgaXMgX3ZlcnlfIHdyb25nLgorCQkgKi8KKwkJQlVH X09OKCFsZW4pOworCisJCXRtcCA9IGttYWxsb2MobGVuLCBHRlBfS0VSTkVMKTsKKwkJaWYgKCF0 bXApIHsKKwkJCWF1ZGl0X2tpbGwoIm91dCBvZiBtZW1vcnkgZm9yIGFyZ3Ygc3RyaW5nLCIKKwkJ CQkJIiB0ZXJtaW5hdGluZyBwcm9jZXNzXG4iKTsKKwkJCWJyZWFrOworCQl9CisKKwkJcmV0ID0g Y29weV9mcm9tX3VzZXIodG1wLCBwLCBsZW4pOworCQkvKgorCQkgKiBUaGVyZSBpcyBubyByZWFz b24gZm9yIHRoaXMgY29weSB0byBiZSBzaG9ydC4KKwkJICovCisJCUJVR19PTihyZXQpOworCisJ CWF1ZGl0X2xvZ19mb3JtYXQoYWIsICJhJWQ9IiwgaSk7CisJCWF1ZGl0X2xvZ191bnRydXN0ZWRz dHJpbmcoYWIsIHRtcCk7CisJCWF1ZGl0X2xvZ19mb3JtYXQoYWIsICJcbiIpOworCisJCWtmcmVl KHRtcCk7CisJfQorfQorCiBzdGF0aWMgdm9pZCBhdWRpdF9sb2dfZXhpdChzdHJ1Y3QgYXVkaXRf Y29udGV4dCAqY29udGV4dCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCiB7CiAJaW50IGksIGNh bGxfcGFuaWMgPSAwOwpAQCAtOTM1LDEzICs5NzcsNyBAQCBzdGF0aWMgdm9pZCBhdWRpdF9sb2df ZXhpdChzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY29udGV4dCwgc3RydWN0IHRhc2tfc3RydWN0ICp0 cwogCiAJCWNhc2UgQVVESVRfRVhFQ1ZFOiB7CiAJCQlzdHJ1Y3QgYXVkaXRfYXV4X2RhdGFfZXhl Y3ZlICpheGkgPSAodm9pZCAqKWF1eDsKLQkJCWludCBpOwotCQkJY29uc3QgY2hhciAqcDsKLQkJ CWZvciAoaSA9IDAsIHAgPSBheGktPm1lbTsgaSA8IGF4aS0+YXJnYzsgaSsrKSB7Ci0JCQkJYXVk aXRfbG9nX2Zvcm1hdChhYiwgImElZD0iLCBpKTsKLQkJCQlwID0gYXVkaXRfbG9nX3VudHJ1c3Rl ZHN0cmluZyhhYiwgcCk7Ci0JCQkJYXVkaXRfbG9nX2Zvcm1hdChhYiwgIlxuIik7Ci0JCQl9CisJ CQlhdWRpdF9sb2dfZXhlY3ZlX2luZm8oYWIsIGF4aSk7CiAJCQlicmVhazsgfQogCiAJCWNhc2Ug QVVESVRfU09DS0VUQ0FMTDogewpAQCAtMTc2MSwzMiArMTc5NywzMSBAQCBpbnQgX19hdWRpdF9p cGNfc2V0X3Blcm0odW5zaWduZWQgbG9uZyBxYnl0ZXMsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBt b2RlX3QgbW9kZQogCXJldHVybiAwOwogfQogCitpbnQgYXVkaXRfYXJndl9rYiA9IDMyOworCiBp bnQgYXVkaXRfYnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQogewogCXN0cnVjdCBhdWRp dF9hdXhfZGF0YV9leGVjdmUgKmF4OwogCXN0cnVjdCBhdWRpdF9jb250ZXh0ICpjb250ZXh0ID0g Y3VycmVudC0+YXVkaXRfY29udGV4dDsKLQl1bnNpZ25lZCBsb25nIHAsIG5leHQ7Ci0Jdm9pZCAq dG87CiAKIAlpZiAobGlrZWx5KCFhdWRpdF9lbmFibGVkIHx8ICFjb250ZXh0IHx8IGNvbnRleHQt PmR1bW15KSkKIAkJcmV0dXJuIDA7CiAKLQlheCA9IGttYWxsb2Moc2l6ZW9mKCpheCkgKyBQQUdF X1NJWkUgKiBNQVhfQVJHX1BBR0VTIC0gYnBybS0+cCwKLQkJCQlHRlBfS0VSTkVMKTsKKwkvKgor CSAqIEV2ZW4gdGhvdWdoIHRoZSBzdGFjayBjb2RlIGRvZXNuJ3QgbGltaXQgdGhlIGFyZytlbnYg c2l6ZSBhbnkgbW9yZSwKKwkgKiB0aGUgYXVkaXQgY29kZSByZXF1aXJlcyB0aGF0IF9hbGxfIGFy Z3VtZW50cyBiZSBsb2dnZWQgaW4gYSBzaW5nbGUKKwkgKiBuZXRsaW5rIHNrYi4gSGVuY2UgY2Fw IGl0IDotKAorCSAqLworCWlmIChicHJtLT5hcmd2X2xlbiA+IChhdWRpdF9hcmd2X2tiIDw8IDEw KSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCWF4ID0ga21hbGxvYyhzaXplb2YoKmF4KSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFheCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlheC0+YXJnYyA9IGJwcm0t PmFyZ2M7CiAJYXgtPmVudmMgPSBicHJtLT5lbnZjOwotCWZvciAocCA9IGJwcm0tPnAsIHRvID0g YXgtPm1lbTsgcCA8IE1BWF9BUkdfUEFHRVMqUEFHRV9TSVpFOyBwID0gbmV4dCkgewotCQlzdHJ1 Y3QgcGFnZSAqcGFnZSA9IGJwcm0tPnBhZ2VbcCAvIFBBR0VfU0laRV07Ci0JCXZvaWQgKmthZGRy ID0ga21hcChwYWdlKTsKLQkJbmV4dCA9IChwICsgUEFHRV9TSVpFKSAmIH4oUEFHRV9TSVpFIC0g MSk7Ci0JCW1lbWNweSh0bywga2FkZHIgKyAocCAmIChQQUdFX1NJWkUgLSAxKSksIG5leHQgLSBw KTsKLQkJdG8gKz0gbmV4dCAtIHA7Ci0JCWt1bm1hcChwYWdlKTsKLQl9Ci0KKwlheC0+bW0gPSBi cHJtLT5tbTsKIAlheC0+ZC50eXBlID0gQVVESVRfRVhFQ1ZFOwogCWF4LT5kLm5leHQgPSBjb250 ZXh0LT5hdXg7CiAJY29udGV4dC0+YXV4ID0gKHZvaWQgKilheDsKZGlmZiAtLWdpdCBhL2tlcm5l bC9zeXNjdGwuYyBiL2tlcm5lbC9zeXNjdGwuYwppbmRleCBjOTA0NzQ4Li41ZGZkNGQ3IDEwMDY0 NAotLS0gYS9rZXJuZWwvc3lzY3RsLmMKKysrIGIva2VybmVsL3N5c2N0bC5jCkBAIC03Niw2ICs3 Niw3IEBAIGV4dGVybiBpbnQgcGlkX21heF9taW4sIHBpZF9tYXhfbWF4OwogZXh0ZXJuIGludCBz eXNjdGxfZHJvcF9jYWNoZXM7CiBleHRlcm4gaW50IHBlcmNwdV9wYWdlbGlzdF9mcmFjdGlvbjsK IGV4dGVybiBpbnQgY29tcGF0X2xvZzsKK2V4dGVybiBpbnQgYXVkaXRfYXJndl9rYjsKIAogLyog dGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBwcm9jX2RvaW50dmVjX21pbm1heCBmb3IgW2ZzX11vdmVy ZmxvdyBVSUQgYW5kIEdJRCAqLwogc3RhdGljIGludCBtYXhvbGR1aWQgPSA2NTUzNTsKQEAgLTYw Myw2ICs2MDQsMTYgQEAgc3RhdGljIGN0bF90YWJsZSBrZXJuX3RhYmxlW10gPSB7CiAJCS5wcm9j X2hhbmRsZXIJPSAmcHJvY19kb2ludHZlYywKIAl9LAogI2VuZGlmCisjaWZkZWYgQ09ORklHX0FV RElUU1lTQ0FMTAorCXsKKwkJLmN0bF9uYW1lCT0gS0VSTl9BVURJVF9BUkdWLAorCQkucHJvY25h bWUJPSAiYXVkaXRfYXJndl9rYiIsCisJCS5kYXRhCQk9ICZhdWRpdF9hcmd2X2tiLAorCQkubWF4 bGVuCQk9IHNpemVvZihpbnQpLAorCQkubW9kZQkJPSAwNjQ0LAorCQkucHJvY19oYW5kbGVyCT0g JnByb2NfZG9pbnR2ZWMsCisJfSwKKyNlbmRpZgogCiAJeyAuY3RsX25hbWUgPSAwIH0KIH07CmRp ZmYgLS1naXQgYS9tbS9tbWFwLmMgYi9tbS9tbWFwLmMKaW5kZXggODhkYTY4Ny4uOGM2Y2ViNSAx MDA2NDQKLS0tIGEvbW0vbW1hcC5jCisrKyBiL21tL21tYXAuYwpAQCAtMTU2OSwzMyArMTU2OSwx MyBAQCBpbnQgZXhwYW5kX3Vwd2FyZHMoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2ln bmVkIGxvbmcgYWRkcmVzcykKIH0KICNlbmRpZiAvKiBDT05GSUdfU1RBQ0tfR1JPV1NVUCB8fCBD T05GSUdfSUE2NCAqLwogCi0jaWZkZWYgQ09ORklHX1NUQUNLX0dST1dTVVAKLWludCBleHBhbmRf c3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykK LXsKLQlyZXR1cm4gZXhwYW5kX3Vwd2FyZHModm1hLCBhZGRyZXNzKTsKLX0KLQotc3RydWN0IHZt X2FyZWFfc3RydWN0ICoKLWZpbmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5z aWduZWQgbG9uZyBhZGRyKQotewotCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCAqcHJldjsK LQotCWFkZHIgJj0gUEFHRV9NQVNLOwotCXZtYSA9IGZpbmRfdm1hX3ByZXYobW0sIGFkZHIsICZw cmV2KTsKLQlpZiAodm1hICYmICh2bWEtPnZtX3N0YXJ0IDw9IGFkZHIpKQotCQlyZXR1cm4gdm1h OwotCWlmICghcHJldiB8fCBleHBhbmRfc3RhY2socHJldiwgYWRkcikpCi0JCXJldHVybiBOVUxM OwotCWlmIChwcmV2LT52bV9mbGFncyAmIFZNX0xPQ0tFRCkgewotCQltYWtlX3BhZ2VzX3ByZXNl bnQoYWRkciwgcHJldi0+dm1fZW5kKTsKLQl9Ci0JcmV0dXJuIHByZXY7Ci19Ci0jZWxzZQogLyoK ICAqIHZtYSBpcyB0aGUgZmlyc3Qgb25lIHdpdGggYWRkcmVzcyA8IHZtYS0+dm1fc3RhcnQuICBI YXZlIHRvIGV4dGVuZCB2bWEuCiAgKi8KLWludCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKKyNpZm5kZWYgQ09ORklHX1NUQUNL X0dST1dTVVAKK3N0YXRpYyBpbmxpbmUKKyNlbmRpZgoraW50IGV4cGFuZF9kb3dud2FyZHMoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKIHsKIAlpbnQg ZXJyb3I7CiAKQEAgLTE2MzIsNiArMTYxMiwzNCBAQCBpbnQgZXhwYW5kX3N0YWNrKHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCiAJcmV0dXJuIGVycm9y OwogfQogCisjaWZkZWYgQ09ORklHX1NUQUNLX0dST1dTVVAKK2ludCBleHBhbmRfc3RhY2soc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKK3sKKwlyZXR1 cm4gZXhwYW5kX3Vwd2FyZHModm1hLCBhZGRyZXNzKTsKK30KKworc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICoKK2ZpbmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9u ZyBhZGRyKQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCAqcHJldjsKKworCWFkZHIg Jj0gUEFHRV9NQVNLOworCXZtYSA9IGZpbmRfdm1hX3ByZXYobW0sIGFkZHIsICZwcmV2KTsKKwlp ZiAodm1hICYmICh2bWEtPnZtX3N0YXJ0IDw9IGFkZHIpKQorCQlyZXR1cm4gdm1hOworCWlmICgh cHJldiB8fCBleHBhbmRfc3RhY2socHJldiwgYWRkcikpCisJCXJldHVybiBOVUxMOworCWlmIChw cmV2LT52bV9mbGFncyAmIFZNX0xPQ0tFRCkgeworCQltYWtlX3BhZ2VzX3ByZXNlbnQoYWRkciwg cHJldi0+dm1fZW5kKTsKKwl9CisJcmV0dXJuIHByZXY7Cit9CisjZWxzZQoraW50IGV4cGFuZF9z dGFjayhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQor eworCXJldHVybiBleHBhbmRfZG93bndhcmRzKHZtYSwgYWRkcmVzcyk7Cit9CisKIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqCiBmaW5kX2V4dGVuZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1 bnNpZ25lZCBsb25nIGFkZHIpCiB7CmRpZmYgLS1naXQgYS9tbS9tcHJvdGVjdC5jIGIvbW0vbXBy b3RlY3QuYwppbmRleCAzYjhmM2MwLi5lODM0NmMzIDEwMDY0NAotLS0gYS9tbS9tcHJvdGVjdC5j CisrKyBiL21tL21wcm90ZWN0LmMKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9pZCBjaGFu Z2VfcHJvdGVjdGlvbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlmbHVzaF90bGJfcmFu Z2Uodm1hLCBzdGFydCwgZW5kKTsKIH0KIAotc3RhdGljIGludAoraW50CiBtcHJvdGVjdF9maXh1 cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqcHBy ZXYsCiAJdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIHVuc2lnbmVkIGxv bmcgbmV3ZmxhZ3MpCiB7CmRpZmYgLS1naXQgYS9tbS9tcmVtYXAuYyBiL21tL21yZW1hcC5jCmlu ZGV4IDVkNGJkNGYuLjg1OGEzNmIgMTAwNjQ0Ci0tLSBhL21tL21yZW1hcC5jCisrKyBiL21tL21y ZW1hcC5jCkBAIC0xMTgsOSArMTE4LDYzIEBAIHN0YXRpYyB2b2lkIG1vdmVfcHRlcyhzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKm9sZF9wbWQsCiAJCXNwaW5fdW5sb2NrKCZtYXBw aW5nLT5pX21tYXBfbG9jayk7CiB9CiAKK3N0YXRpYyB2b2lkIG1vdmVfcHRlc191cChzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwgcG1kX3QgKm9sZF9wbWQsCisJCXVuc2lnbmVkIGxvbmcgb2xk X2FkZHIsIHVuc2lnbmVkIGxvbmcgb2xkX2VuZCwKKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICpu ZXdfdm1hLCBwbWRfdCAqbmV3X3BtZCwKKwkJdW5zaWduZWQgbG9uZyBuZXdfYWRkcikKK3sKKwlz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IE5VTEw7CisJc3RydWN0IG1tX3N0cnVjdCAq bW0gPSB2bWEtPnZtX21tOworCXB0ZV90ICpvbGRfcHRlLCAqbmV3X3B0ZSwgcHRlOworCXNwaW5s b2NrX3QgKm9sZF9wdGwsICpuZXdfcHRsOworCXVuc2lnbmVkIGxvbmcgbmV3X2VuZCA9IG5ld19h ZGRyICsgKG9sZF9lbmQgLSBvbGRfYWRkcik7CisKKwlpZiAodm1hLT52bV9maWxlKSB7CisJCS8q CisJCSAqIFN1YnRsZSBwb2ludCBmcm9tIFJhamVzaCBWZW5rYXRhc3VicmFtYW5pYW46IGJlZm9y ZQorCQkgKiBtb3ZpbmcgZmlsZS1iYXNlZCBwdGVzLCB3ZSBtdXN0IGxvY2sgdm10cnVuY2F0ZSBv dXQsCisJCSAqIHNpbmNlIGl0IG1pZ2h0IGNsZWFuIHRoZSBkc3Qgdm1hIGJlZm9yZSB0aGUgc3Jj IHZtYSwKKwkJICogYW5kIHdlIHByb3BhZ2F0ZSBzdGFsZSBwYWdlcyBpbnRvIHRoZSBkc3QgYWZ0 ZXJ3YXJkLgorCQkgKi8KKwkJbWFwcGluZyA9IHZtYS0+dm1fZmlsZS0+Zl9tYXBwaW5nOworCQlz cGluX2xvY2soJm1hcHBpbmctPmlfbW1hcF9sb2NrKTsKKwkJaWYgKG5ld192bWEtPnZtX3RydW5j YXRlX2NvdW50ICYmCisJCSAgICBuZXdfdm1hLT52bV90cnVuY2F0ZV9jb3VudCAhPSB2bWEtPnZt X3RydW5jYXRlX2NvdW50KQorCQkJbmV3X3ZtYS0+dm1fdHJ1bmNhdGVfY291bnQgPSAwOworCX0K KworCS8qCisJICogV2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgb3JkZXJpbmcgb2Yg c3JjIGFuZCBkc3QKKwkgKiBwdGUgbG9ja3MgYmVjYXVzZSBleGNsdXNpdmUgbW1hcF9zZW0gcHJl dmVudHMgZGVhZGxvY2suCisJICovCisJb2xkX3B0ZSA9IHB0ZV9vZmZzZXRfbWFwX2xvY2sobW0s IG9sZF9wbWQsIG9sZF9lbmQtMSwgJm9sZF9wdGwpOworIAluZXdfcHRlID0gcHRlX29mZnNldF9t YXBfbmVzdGVkKG5ld19wbWQsIG5ld19lbmQtMSk7CisJbmV3X3B0bCA9IHB0ZV9sb2NrcHRyKG1t LCBuZXdfcG1kKTsKKwlpZiAobmV3X3B0bCAhPSBvbGRfcHRsKQorCQlzcGluX2xvY2tfbmVzdGVk KG5ld19wdGwsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKKwlhcmNoX2VudGVyX2xhenlfbW11X21v ZGUoKTsKKworCWZvciAoOyBvbGRfZW5kID4gb2xkX2FkZHI7IG9sZF9wdGUtLSwgb2xkX2VuZCAt PSBQQUdFX1NJWkUsCisJCQkJICAgbmV3X3B0ZS0tLCBuZXdfZW5kIC09IFBBR0VfU0laRSkgewor CQlpZiAocHRlX25vbmUoKm9sZF9wdGUpKQorCQkJY29udGludWU7CisJCXB0ZSA9IHB0ZXBfY2xl YXJfZmx1c2godm1hLCBvbGRfZW5kLTEsIG9sZF9wdGUpOworCQlwdGUgPSBtb3ZlX3B0ZShwdGUs IG5ld192bWEtPnZtX3BhZ2VfcHJvdCwgb2xkX2VuZC0xLCBuZXdfZW5kLTEpOworCQlzZXRfcHRl X2F0KG1tLCBuZXdfZW5kLTEsIG5ld19wdGUsIHB0ZSk7CisJfQorCisJYXJjaF9sZWF2ZV9sYXp5 X21tdV9tb2RlKCk7CisJaWYgKG5ld19wdGwgIT0gb2xkX3B0bCkKKwkJc3Bpbl91bmxvY2sobmV3 X3B0bCk7CisJcHRlX3VubWFwX25lc3RlZChuZXdfcHRlIC0gMSk7CisJcHRlX3VubWFwX3VubG9j ayhvbGRfcHRlIC0gMSwgb2xkX3B0bCk7CisJaWYgKG1hcHBpbmcpCisJCXNwaW5fdW5sb2NrKCZt YXBwaW5nLT5pX21tYXBfbG9jayk7Cit9CisKICNkZWZpbmUgTEFURU5DWV9MSU1JVAkoNjQgKiBQ QUdFX1NJWkUpCiAKLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1vdmVfcGFnZV90YWJsZXMoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCit1bnNpZ25lZCBsb25nIG1vdmVfcGFnZV90YWJsZXMoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCXVuc2lnbmVkIGxvbmcgb2xkX2FkZHIsIHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqbmV3X3ZtYSwKIAkJdW5zaWduZWQgbG9uZyBuZXdfYWRkciwgdW5z aWduZWQgbG9uZyBsZW4pCiB7CkBAIC0xMzIsMjEgKzE4NiwyNSBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBtb3ZlX3BhZ2VfdGFibGVzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCiAJZm9y ICg7IG9sZF9hZGRyIDwgb2xkX2VuZDsgb2xkX2FkZHIgKz0gZXh0ZW50LCBuZXdfYWRkciArPSBl eHRlbnQpIHsKIAkJY29uZF9yZXNjaGVkKCk7CisKIAkJbmV4dCA9IChvbGRfYWRkciArIFBNRF9T SVpFKSAmIFBNRF9NQVNLOwogCQlpZiAobmV4dCAtIDEgPiBvbGRfZW5kKQogCQkJbmV4dCA9IG9s ZF9lbmQ7CiAJCWV4dGVudCA9IG5leHQgLSBvbGRfYWRkcjsKKwogCQlvbGRfcG1kID0gZ2V0X29s ZF9wbWQodm1hLT52bV9tbSwgb2xkX2FkZHIpOwogCQlpZiAoIW9sZF9wbWQpCiAJCQljb250aW51 ZTsKIAkJbmV3X3BtZCA9IGFsbG9jX25ld19wbWQodm1hLT52bV9tbSwgbmV3X2FkZHIpOwogCQlp ZiAoIW5ld19wbWQpCiAJCQlicmVhazsKKwogCQluZXh0ID0gKG5ld19hZGRyICsgUE1EX1NJWkUp ICYgUE1EX01BU0s7CiAJCWlmIChleHRlbnQgPiBuZXh0IC0gbmV3X2FkZHIpCiAJCQlleHRlbnQg PSBuZXh0IC0gbmV3X2FkZHI7CiAJCWlmIChleHRlbnQgPiBMQVRFTkNZX0xJTUlUKQogCQkJZXh0 ZW50ID0gTEFURU5DWV9MSU1JVDsKKwogCQltb3ZlX3B0ZXModm1hLCBvbGRfcG1kLCBvbGRfYWRk ciwgb2xkX2FkZHIgKyBleHRlbnQsCiAJCQkJbmV3X3ZtYSwgbmV3X3BtZCwgbmV3X2FkZHIpOwog CX0KQEAgLTE1NCw2ICsyMTIsNTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbW92ZV9wYWdlX3Rh YmxlcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAlyZXR1cm4gbGVuICsgb2xkX2FkZHIg LSBvbGRfZW5kOwkvKiBob3cgbXVjaCBkb25lICovCiB9CiAKK3Vuc2lnbmVkIGxvbmcgbW92ZV9w YWdlX3RhYmxlc191cChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJdW5zaWduZWQgbG9u ZyBvbGRfYWRkciwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpuZXdfdm1hLAorCQl1bnNpZ25lZCBs b25nIG5ld19hZGRyLCB1bnNpZ25lZCBsb25nIGxlbikKK3sKKwl1bnNpZ25lZCBsb25nIGV4dGVu dCwgcHJldiwgb2xkX2VuZCwgbmV3X2VuZDsKKwlwbWRfdCAqb2xkX3BtZCwgKm5ld19wbWQ7CisK KwlvbGRfZW5kID0gb2xkX2FkZHIgKyBsZW47CisJbmV3X2VuZCA9IG5ld19hZGRyICsgbGVuOwor CWZsdXNoX2NhY2hlX3JhbmdlKHZtYSwgb2xkX2FkZHIsIG9sZF9lbmQpOworCisJZm9yICg7IG9s ZF9lbmQgPiBvbGRfYWRkcjsgb2xkX2VuZCAtPSBleHRlbnQsIG5ld19lbmQgLT0gZXh0ZW50KSB7 CisJCWNvbmRfcmVzY2hlZCgpOworCisJCS8qCisJCSAqIGNhbGN1bGF0ZSBob3cgZmFyIHRpbGwg cHJldiBQTUQgYm91bmRhcnkgZm9yIG9sZAorCQkgKi8KKwkJcHJldiA9IChvbGRfZW5kIC0gMSkg JiBQTURfTUFTSzsKKwkJaWYgKHByZXYgPCBvbGRfYWRkcikKKwkJCXByZXYgPSBvbGRfYWRkcjsK KwkJZXh0ZW50ID0gb2xkX2VuZCAtIHByZXY7CisKKwkJb2xkX3BtZCA9IGdldF9vbGRfcG1kKHZt YS0+dm1fbW0sIG9sZF9lbmQtMSk7CisJCWlmICghb2xkX3BtZCkKKwkJCWNvbnRpbnVlOworCQlu ZXdfcG1kID0gYWxsb2NfbmV3X3BtZCh2bWEtPnZtX21tLCBuZXdfZW5kLTEpOworCQlpZiAoIW5l d19wbWQpCisJCQlicmVhazsKKworCQkvKgorCQkgKiBjYWxjdWxhdGUgYW5kIGNsaXAgdG8gcHJl diBQTUQgYm91bmRhcnkgZm9yIG5ldworCQkgKi8KKwkJcHJldiA9IChuZXdfZW5kIC0gMSkgJiBQ TURfTUFTSzsKKwkJaWYgKGV4dGVudCA+IG5ld19lbmQgLSBwcmV2KQorCQkJZXh0ZW50ID0gbmV3 X2VuZCAtIHByZXY7CisJCWlmIChleHRlbnQgPiBMQVRFTkNZX0xJTUlUKQorCQkJZXh0ZW50ID0g TEFURU5DWV9MSU1JVDsKKworCQltb3ZlX3B0ZXNfdXAodm1hLCBvbGRfcG1kLCBvbGRfZW5kIC0g ZXh0ZW50LCBvbGRfZW5kLAorCQkJCW5ld192bWEsIG5ld19wbWQsIG5ld19lbmQgLSBleHRlbnQp OworCX0KKworCXJldHVybiBvbGRfYWRkciArIGxlbiAtIG9sZF9lbmQ7Cit9CisKIHN0YXRpYyB1 bnNpZ25lZCBsb25nIG1vdmVfdm1hKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQl1bnNp Z25lZCBsb25nIG9sZF9hZGRyLCB1bnNpZ25lZCBsb25nIG9sZF9sZW4sCiAJCXVuc2lnbmVkIGxv bmcgbmV3X2xlbiwgdW5zaWduZWQgbG9uZyBuZXdfYWRkcikK ------=_Part_33774_26921243.1178441494253-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/