From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2841 invoked by alias); 17 Aug 2012 07:04:11 -0000 Received: (qmail 2827 invoked by uid 22791); 17 Aug 2012 07:04:09 -0000 X-SWARE-Spam-Status: No, hits=-4.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-lpp01m010-f47.google.com (HELO mail-lpp01m010-f47.google.com) (209.85.215.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 17 Aug 2012 07:03:56 +0000 Received: by lagv3 with SMTP id v3so1921306lag.20 for ; Fri, 17 Aug 2012 00:03:54 -0700 (PDT) Received: by 10.152.146.163 with SMTP id td3mr3882087lab.26.1345187034754; Fri, 17 Aug 2012 00:03:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.32.42 with HTTP; Fri, 17 Aug 2012 00:03:34 -0700 (PDT) From: Steven Bosscher Date: Fri, 17 Aug 2012 07:04:00 -0000 Message-ID: Subject: [patch] more bitmap obstacks To: GCC Patches Content-Type: multipart/mixed; boundary=e89a8f2345675cf0e004c770c3f1 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2012-08/txt/msg01123.txt.bz2 --e89a8f2345675cf0e004c770c3f1 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 443 Hello, This reduces peak memory usage for the small test case of PR54146 by 2GB. 24hrs ago peak memory was 9.4 GB in top, but with Richi's patches from yesterday and with this one, peak memory is now "only" 5.2GB. About 40% of that is in IRA and reload so there is still room for improvement, but cutting peak mem almost in half in one day is not a bad result :-) Bootstrapped&tested on x86_64-unknown-linux-gnu. OK for trunk? Ciao! Steven --e89a8f2345675cf0e004c770c3f1 Content-Type: application/octet-stream; name="PR54146_bitmap_obstacks.diff" Content-Disposition: attachment; filename="PR54146_bitmap_obstacks.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5yxixq60 Content-length: 45921 CVBSIG1pZGRsZS1lbmQvNTQxNDYKCSogdHJlZS1zc2EtbG9vcC1pbS5jIChs aW1fYml0bWFwX29ic3RhY2spOiBOZXcgYml0bWFwX29ic3RhY2suCgkobWVt cmVmX2ZyZWUpOiBEb24ndCBmcmVlIHRoZSBiaXRtYXBzIGluZGl2aWR1YWxs eSBoZXJlLgoJKG1lbV9yZWZfYWxsb2MpOiBBbGxvY2F0ZSB0aGUgYml0bWFw cyBvbiB0aGUgbmV3IGJpdG1hcCBvYnN0YWNrLgoJKGFuYWx5emVfbWVtb3J5 X3JlZmVyZW5jZXMpOiBMaWtld2lzZS4KCSh0cmVlX3NzYV9saW1faW5pdGlh bGl6ZSk6IEluaXRpYWxpemUgdGhlIG5ldyBiaXRtYXAgb2JzdGFjay4KCSh0 cmVlX3NzYV9saW1fZmluYWxpemUpOiBSZWxlYXNlIGl0LgoJKiBkc2UuYyAo ZHNlX2JpdG1hcF9vYnN0YWNrKTogTmV3IGJpdG1hcCBvYnN0YWNrLgoJKGRz ZV9vYnN0YWNrKTogTmV3IG9ic3RhY2suCgkoZ2V0X2dyb3VwX2luZm8pOiBB bGxvY2F0ZSB0aGUgYml0bWFwcyBvbiB0aGUgbmV3IGJpdG1hcCBvYnN0YWNr LgoJKGRzZV9zdGVwMCk6IEFsbG9jYXRlIHRoZSBzY3JhdGNoIGJpdG1hcCBv biByZWdfb2JzdGFjay4gIEluaXRpYWxpemUKCXRoZSBuZXcgYml0bWFwIG9i c3RhY2sgYW5kIG5vcm1hbCBvYnN0YWNrLiAgVXNlIFhORVdWRUMgZm9yIGJi X3RhYmxlLgoJKHJlY29yZF9zdG9yZSk6IEFsbG9jYXRlIHJlZ3Nfc2V0IG9u IHJlZ19vYnN0YWNrLgoJKGRzZV9zdGVwMSk6IEFsbG9jYXRlIHJlZ3NfbGl2 ZSBvbiByZWdfb2JzdGFjay4KCShkc2Vfc3RlcDJfaW5pdCk6IEFsbG9jYXRl IG9mZnNldF9tYXBfbiBhbmQgb2Zmc2V0X21hcF9wIG9uIHRoZSBuZXcKCW9i c3RhY2suCgkoZHNlX3N0ZXAzX3NjYW4pOiBBbGxvY2F0ZSBiaXRtYXBzIG9u IHRoZSBuZXcgYml0bWFwIG9ic3RhY2suCgkoZHNlX3N0ZXAzKTogTGlrZXdp c2UuCgkoZHNlX2NvbmZsdWVuY2VfMCk6IExpa2V3aXNlLgoJKGRzZV9jb25m bHVlbmNlX24pOiBMaWtld2lzZS4KCShkc2VfdHJhbnNmZXJfZnVuY3Rpb24p OiBMaWtld2lzZS4KCShkc2Vfc3RlcDcpOiBEZXN0cm95IHRoZSBuZXcgb2Jz dGFja3MsIGFuZCBldmVyeXRoaW5nIGFsbG9jYXRlZCBvbgoJdGhlbSwgaW4g b25lIGJpZyBzd2VlcC4KCShyZXN0X29mX2hhbmRsZV9kc2UpOiBVcGRhdGUu CgkqIGNmZ2V4cGFuZC5jIChzdGFja192YXJfYml0bWFwX29ic3RhY2spOiBO ZXcgYml0bWFwIG9ic3RhY2suCgkoYWRkX3N0YWNrX3Zhcl9jb25mbGljdCk6 IEFsbG9jYXRlIGJpdG1hcHMgb24gaXQuCgkoYWRkX3Njb3BlX2NvbmZsaWN0 c18xKTogTGlrZXdpc2UuCgkoYWRkX3Njb3BlX2NvbmZsaWN0cyk6IExpa2V3 aXNlLgoJKHVwZGF0ZV9hbGlhc19pbmZvX3dpdGhfc3RhY2tfdmFycyk6IExp a2V3aXNlLgoJKGluaXRfdmFyc19leHBhbnNpb24pOiBNb3ZlIFRSRUVfVVNF RCBmaWRkbGluZyBleHBhbmRfdXNlZF92YXJzLgoJSW5pdGlhbGl6ZSB0aGUg bmV3IGJpdG1hcCBvYnN0YWNrLgoJKGZpbmlfdmFyc19leHBhbnNpb24pOiBS ZWxlYXNlIGl0LgoJKGVzdGltYXRlZF9zdGFja19mcmFtZV9zaXplKTogVXNl IGluaXRfdmFyc19leHBhbnNpb24gdG8gc2V0IHRoaW5ncyB1cAoJYW5kIGFs d2F5cyBjbGVhbiB1cCBhdCB0aGUgZW5kLgoJKGV4cGFuZF91c2VkX3ZhcnMp OiBEbyB0aGUgVFJFRV9VU0VEIHRyaWNrZXJ5IGhlcmUuICBBbHdheXMgY2Fs bAoJZmluaV92YXJzX2V4cGFuc2lvbi4KCSogdHJlZS1zc2EtbGl2ZS5oIChz dHJ1Y3QgdHJlZV9saXZlX2luZm9fZCk6IE1ha2UgbGl2ZWluIGFuZCBsaXZl b3V0CglhcnJheXMgb2YgYml0bWFwX2hlYWQgdG8gYXZvaWQgb25lIGluZGly ZWN0aW9uIHBlciBiaXRtYXAgYWNjZXNzLgoJKGxpdmVfb25fZW50cnksIGxp dmVfb25fZXhpdCwgbGl2ZV92YXJfbWFwLCBsaXZlX21lcmdlX2FuZF9jbGVh ciwKCW1ha2VfbGl2ZV9vbl9lbnRyeSk6IFVwZGF0ZS4KCSogdHJlZS1zc2Et bGl2ZS5jIChwYXJ0aXRpb25fdmlld19iaXRtYXApOiBEb24ndCBkb3VibGUt ZnJlZSAndXNlZCcuCgkobGl2ZW5lc3NfYml0bWFwX29ic3RhY2spOiBOZXcg Yml0bWFwIG9ic3RhY2suCgkocmVtb3ZlX3VudXNlZF9sb2NhbHMpOiBVc2Ug aXQgdG8gYWxsb2NhdGUgYWxsIGJpdG1hcHMgb24uICBVcGRhdGUKCWZvciBs aXZlaW4vbGl2ZW91dCBjaGFuZ2VzIGluIHRyZWUtc3NhLWxpdmUuaC4KCShk ZWxldGVfdHJlZV9saXZlX2luZm8pOiBSZWxlYXNlIHRoZSBiaXRtYXAgb2Jz dGFjay4KCShsb2VfdmlzaXRfYmxvY2ssIGxpdmVfd29ya2xpc3QsIHNldF92 YXJfbGl2ZV9vbl9lbnRyeSwKCWNhbGN1bGF0ZV9saXZlX29uX2V4aXQsIGR1 bXBfbGl2ZV9pbmZvKTogVXBkYXRlLgoJKGNhbGN1bGF0ZV9saXZlX3Jhbmdl cyk6IEluaXRpYWxpemUgdGhlIGJpdG1hcC4KCSogdHJlZS1zc2EtdGVyLmMg KHRlcl9iaXRtYXBfb2JzdGFjayk6IE5ldyBiaXRtYXAgb2JzdGFjay4KCShu ZXdfdGVtcF9leHByX3RhYmxlKTogQWxsb2NhdGUgYml0bWFwIG9uIGl0LgoJ KG1ha2VfZGVwZW5kZW50X29uX3BhcnRpdGlvbiwgYWRkX3RvX3BhcnRpdGlv bl9raWxsX2xpc3QsCglhZGRfZGVwZW5kZW5jZSwgcHJvY2Vzc19yZXBsYWNl YWJsZSk6IExpa2V3aXNlLgoJKGZpbmRfcmVwbGFjZWFibGVfZXhwcnMpOiBJ bml0aWFsaXplIGFuZCByZWxlYXNlIHRoZSBuZXcgb2JzdGFjayBoZXJlLgoJ KiBkZi1wcm9ibGVtcy5jIChkZl9scl9hZGRfcHJvYmxlbSk6IEFsbG9jYXRl IHBlcnNpc3RlbnQgYml0bWFwCglmb3Igb3V0X29mX2RhdGVfdHJhbnNmZXJf ZnVuY3Rpb25zIG9uIGRmX2JpdG1hcF9vYnN0YWNrLgoJKGRmX2xpdmVfYWRk X3Byb2JsZW0pOiBMaWtld2lzZS4KCShkZl9jaGFpbl9hZGRfcHJvYmxlbSk6 IExpa2V3aXNlLgoJKGRmX3dvcmRfbHJfYWRkX3Byb2JsZW0pOiBMaWtld2lz ZS4KCkluZGV4OiB0cmVlLXNzYS1sb29wLW1hbmlwLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gdHJlZS1zc2EtbG9vcC1tYW5pcC5jCShyZXZpc2lv biAxOTA0NDgpCisrKyB0cmVlLXNzYS1sb29wLW1hbmlwLmMJKHdvcmtpbmcg Y29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBjcmVhdGVfaXYgKHRyZWUgYmFz ZSwgdHJlZSBzdGVwLCB0cmVlIHZhCiAgIGFkZF9waGlfYXJnIChzdG10LCB2 YSwgbG9vcF9sYXRjaF9lZGdlIChsb29wKSwgVU5LTk9XTl9MT0NBVElPTik7 CiB9CiAKLS8qIFJldHVybiB0aGUgb3V0ZXJtb3N0IHN1cGVybG9vcCBMT09Q IG9mIFVTRV9MT09QIHRoYXQgaXMgYSBzdXBlcmxvb3Agb2YKKy8qIFJldHVy biB0aGUgaW5uZXJtb3N0IHN1cGVybG9vcCBMT09QIG9mIFVTRV9MT09QIHRo YXQgaXMgYSBzdXBlcmxvb3Agb2YKICAgIGJvdGggREVGX0xPT1AgYW5kIFVT RV9MT09QLiAgKi8KIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgbG9vcCAqCklu ZGV4OiB0cmVlLXNzYS1sb29wLWltLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gdHJlZS1zc2EtbG9vcC1pbS5jCShyZXZpc2lvbiAxOTA0NDgpCisr KyB0cmVlLXNzYS1sb29wLWltLmMJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2 ICsxODMsOSBAQCBzdGF0aWMgc3RydWN0CiAgIHN0cnVjdCBwb2ludGVyX21h cF90ICp0dGFlX2NhY2hlOwogfSBtZW1vcnlfYWNjZXNzZXM7CiAKKy8qIE9i c3RhY2sgZm9yIHRoZSBiaXRtYXBzIGluIHRoZSBhYm92ZSBkYXRhIHN0cnVj dHVyZXMuICAqLworc3RhdGljIGJpdG1hcF9vYnN0YWNrIGxpbV9iaXRtYXBf b2JzdGFjazsKKwogc3RhdGljIGJvb2wgcmVmX2luZGVwX2xvb3BfcCAoc3Ry dWN0IGxvb3AgKiwgbWVtX3JlZl9wKTsKIAogLyogTWluaW11bSBjb3N0IG9m IGFuIGV4cGVuc2l2ZSBleHByZXNzaW9uLiAgKi8KQEAgLTE0OTEsMTIgKzE0 OTQsNiBAQCBtZW1yZWZfZnJlZSAoc3RydWN0IG1lbV9yZWYgKm1lbSkKICAg dW5zaWduZWQgaTsKICAgbWVtX3JlZl9sb2NzX3AgYWNjczsKIAotICBCSVRN QVBfRlJFRSAobWVtLT5zdG9yZWQpOwotICBCSVRNQVBfRlJFRSAobWVtLT5p bmRlcF9sb29wKTsKLSAgQklUTUFQX0ZSRUUgKG1lbS0+ZGVwX2xvb3ApOwot ICBCSVRNQVBfRlJFRSAobWVtLT5pbmRlcF9yZWYpOwotICBCSVRNQVBfRlJF RSAobWVtLT5kZXBfcmVmKTsKLQogICBGT1JfRUFDSF9WRUNfRUxUIChtZW1f cmVmX2xvY3NfcCwgbWVtLT5hY2Nlc3Nlc19pbl9sb29wLCBpLCBhY2NzKQog ICAgIGZyZWVfbWVtX3JlZl9sb2NzIChhY2NzKTsKICAgVkVDX2ZyZWUgKG1l bV9yZWZfbG9jc19wLCBoZWFwLCBtZW0tPmFjY2Vzc2VzX2luX2xvb3ApOwpA QCAtMTUxNCwxMSArMTUxMSwxMSBAQCBtZW1fcmVmX2FsbG9jICh0cmVlIG1l bSwgdW5zaWduZWQgaGFzaCwgCiAgIHJlZi0+bWVtID0gbWVtOwogICByZWYt PmlkID0gaWQ7CiAgIHJlZi0+aGFzaCA9IGhhc2g7Ci0gIHJlZi0+c3RvcmVk ID0gQklUTUFQX0FMTE9DIChOVUxMKTsKLSAgcmVmLT5pbmRlcF9sb29wID0g QklUTUFQX0FMTE9DIChOVUxMKTsKLSAgcmVmLT5kZXBfbG9vcCA9IEJJVE1B UF9BTExPQyAoTlVMTCk7Ci0gIHJlZi0+aW5kZXBfcmVmID0gQklUTUFQX0FM TE9DIChOVUxMKTsKLSAgcmVmLT5kZXBfcmVmID0gQklUTUFQX0FMTE9DIChO VUxMKTsKKyAgcmVmLT5zdG9yZWQgPSBCSVRNQVBfQUxMT0MgKCZsaW1fYml0 bWFwX29ic3RhY2spOworICByZWYtPmluZGVwX2xvb3AgPSBCSVRNQVBfQUxM T0MgKCZsaW1fYml0bWFwX29ic3RhY2spOworICByZWYtPmRlcF9sb29wID0g QklUTUFQX0FMTE9DICgmbGltX2JpdG1hcF9vYnN0YWNrKTsKKyAgcmVmLT5p bmRlcF9yZWYgPSBCSVRNQVBfQUxMT0MgKCZsaW1fYml0bWFwX29ic3RhY2sp OworICByZWYtPmRlcF9yZWYgPSBCSVRNQVBfQUxMT0MgKCZsaW1fYml0bWFw X29ic3RhY2spOwogICByZWYtPmFjY2Vzc2VzX2luX2xvb3AgPSBOVUxMOwog CiAgIHJldHVybiByZWY7CkBAIC0xNzM4LDExICsxNzM1LDExIEBAIGFuYWx5 emVfbWVtb3J5X3JlZmVyZW5jZXMgKHZvaWQpCiAKICAgZm9yIChpID0gMDsg aSA8IG51bWJlcl9vZl9sb29wcyAoKTsgaSsrKQogICAgIHsKLSAgICAgIGVt cHR5ID0gQklUTUFQX0FMTE9DIChOVUxMKTsKKyAgICAgIGVtcHR5ID0gQklU TUFQX0FMTE9DICgmbGltX2JpdG1hcF9vYnN0YWNrKTsKICAgICAgIFZFQ19x dWlja19wdXNoIChiaXRtYXAsIG1lbW9yeV9hY2Nlc3Nlcy5yZWZzX2luX2xv b3AsIGVtcHR5KTsKLSAgICAgIGVtcHR5ID0gQklUTUFQX0FMTE9DIChOVUxM KTsKKyAgICAgIGVtcHR5ID0gQklUTUFQX0FMTE9DICgmbGltX2JpdG1hcF9v YnN0YWNrKTsKICAgICAgIFZFQ19xdWlja19wdXNoIChiaXRtYXAsIG1lbW9y eV9hY2Nlc3Nlcy5hbGxfcmVmc19pbl9sb29wLCBlbXB0eSk7Ci0gICAgICBl bXB0eSA9IEJJVE1BUF9BTExPQyAoTlVMTCk7CisgICAgICBlbXB0eSA9IEJJ VE1BUF9BTExPQyAoJmxpbV9iaXRtYXBfb2JzdGFjayk7CiAgICAgICBWRUNf cXVpY2tfcHVzaCAoYml0bWFwLCBtZW1vcnlfYWNjZXNzZXMuYWxsX3JlZnNf c3RvcmVkX2luX2xvb3AsIGVtcHR5KTsKICAgICB9CiAKQEAgLTI1ODEsNiAr MjU3OCw4IEBAIHRyZWVfc3NhX2xpbV9pbml0aWFsaXplICh2b2lkKQogICBz dHJ1Y3QgbG9vcCAqbG9vcDsKICAgYmFzaWNfYmxvY2sgYmI7CiAKKyAgYml0 bWFwX29ic3RhY2tfaW5pdGlhbGl6ZSAoJmxpbV9iaXRtYXBfb2JzdGFjayk7 CisKICAgc2JpdG1hcF96ZXJvIChjb250YWluc19jYWxsKTsKICAgRk9SX0VB Q0hfQkIgKGJiKQogICAgIHsKQEAgLTI2MTQsNyArMjYxMyw2IEBAIHRyZWVf c3NhX2xpbV9maW5hbGl6ZSAodm9pZCkKIHsKICAgYmFzaWNfYmxvY2sgYmI7 CiAgIHVuc2lnbmVkIGk7Ci0gIGJpdG1hcCBiOwogICBtZW1fcmVmX3AgcmVm OwogCiAgIGZyZWVfYXV4X2Zvcl9lZGdlcyAoKTsKQEAgLTI2MjIsNiArMjYy MCw3IEBAIHRyZWVfc3NhX2xpbV9maW5hbGl6ZSAodm9pZCkKICAgRk9SX0VB Q0hfQkIgKGJiKQogICAgIFNFVF9BTFdBWVNfRVhFQ1VURURfSU4gKGJiLCBO VUxMKTsKIAorICBiaXRtYXBfb2JzdGFja19yZWxlYXNlICgmbGltX2JpdG1h cF9vYnN0YWNrKTsKICAgcG9pbnRlcl9tYXBfZGVzdHJveSAobGltX2F1eF9k YXRhX21hcCk7CiAKICAgaHRhYl9kZWxldGUgKG1lbW9yeV9hY2Nlc3Nlcy5y ZWZzKTsKQEAgLTI2MzAsMTYgKzI2MjksOCBAQCB0cmVlX3NzYV9saW1fZmlu YWxpemUgKHZvaWQpCiAgICAgbWVtcmVmX2ZyZWUgKHJlZik7CiAgIFZFQ19m cmVlIChtZW1fcmVmX3AsIGhlYXAsIG1lbW9yeV9hY2Nlc3Nlcy5yZWZzX2xp c3QpOwogCi0gIEZPUl9FQUNIX1ZFQ19FTFQgKGJpdG1hcCwgbWVtb3J5X2Fj Y2Vzc2VzLnJlZnNfaW5fbG9vcCwgaSwgYikKLSAgICBCSVRNQVBfRlJFRSAo Yik7CiAgIFZFQ19mcmVlIChiaXRtYXAsIGhlYXAsIG1lbW9yeV9hY2Nlc3Nl cy5yZWZzX2luX2xvb3ApOwotCi0gIEZPUl9FQUNIX1ZFQ19FTFQgKGJpdG1h cCwgbWVtb3J5X2FjY2Vzc2VzLmFsbF9yZWZzX2luX2xvb3AsIGksIGIpCi0g ICAgQklUTUFQX0ZSRUUgKGIpOwogICBWRUNfZnJlZSAoYml0bWFwLCBoZWFw LCBtZW1vcnlfYWNjZXNzZXMuYWxsX3JlZnNfaW5fbG9vcCk7Ci0KLSAgRk9S X0VBQ0hfVkVDX0VMVCAoYml0bWFwLCBtZW1vcnlfYWNjZXNzZXMuYWxsX3Jl ZnNfc3RvcmVkX2luX2xvb3AsIGksIGIpCi0gICAgQklUTUFQX0ZSRUUgKGIp OwogICBWRUNfZnJlZSAoYml0bWFwLCBoZWFwLCBtZW1vcnlfYWNjZXNzZXMu YWxsX3JlZnNfc3RvcmVkX2luX2xvb3ApOwogCiAgIGlmIChtZW1vcnlfYWNj ZXNzZXMudHRhZV9jYWNoZSkKSW5kZXg6IGRzZS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGRzZS5jCShyZXZpc2lvbiAxOTA0NDgpCisrKyBkc2Uu Ywkod29ya2luZyBjb3B5KQpAQCAtMjAwLDggKzIwMCwyMSBAQCBhbG9uZyB3 aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgCiAgICB0aGF0IHJl YWxseSBoYXZlIGNvbnN0YW50IG9mZnNldHMgdGhpcyBzaXplLiAgKi8KICNk ZWZpbmUgTUFYX09GRlNFVCAoNjQgKiAxMDI0KQogCisvKiBPYnN0YWNrIGZv ciB0aGUgRFNFIGRhdGFmbG93IGJpdG1hcHMuICBXZSBkb24ndCB3YW50IHRv IHB1dCB0aGVzZQorICAgb24gdGhlIGRlZmF1bHQgb2JzdGFjayBiZWNhdXNl IHRoZXNlIGJpdG1hcHMgY2FuIGdyb3cgcXVpdGUgbGFyZ2UKKyAgICh+MkdC IGZvciB0aGUgc21hbGwgKCEpIHRlc3QgY2FzZSBvZiBQUjU0MTQ2KSBhbmQg d2UnbGwgaG9sZCBvbiB0bworICAgYWxsIHRoYXQgbWVtb3J5IHVudGlsIHRo ZSBlbmQgb2YgdGhlIGNvbXBpbGVyIHJ1bi4KKyAgIEFzIGEgYm9udXMsIGRl bGV0ZV90cmVlX2xpdmVfaW5mbyBjYW4gZGVzdHJveSBhbGwgdGhlIGJpdG1h cHMgYnkganVzdAorICAgcmVsZWFzaW5nIHRoZSB3aG9sZSBvYnN0YWNrLiAg Ki8KK3N0YXRpYyBiaXRtYXBfb2JzdGFjayBkc2VfYml0bWFwX29ic3RhY2s7 CisKKy8qIE9ic3RhY2sgZm9yIG90aGVyIGRhdGEuICBBcyBmb3IgYWJvdmU6 IEtpbmRhIG5pY2UgdG8gYmUgYWJsZSB0bworICAgdGhyb3cgaXQgYWxsIGF3 YXkgYXQgdGhlIGVuZCBpbiBvbmUgYmlnIHN3ZWVwLiAgKi8KK3N0YXRpYyBz dHJ1Y3Qgb2JzdGFjayBkc2Vfb2JzdGFjazsKIAorLyogU2NyYXRjaCBiaXRt YXAgZm9yIGNzZWxpYidzIGNzZWxpYl9leHBhbmRfdmFsdWVfcnR4LiAgKi8K IHN0YXRpYyBiaXRtYXAgc2NyYXRjaCA9IE5VTEw7CisKIHN0cnVjdCBpbnNu X2luZm87CiAKIC8qIFRoaXMgc3RydWN0dXJlIGhvbGRzIGluZm9ybWF0aW9u IGFib3V0IGEgY2FuZGlkYXRlIHN0b3JlLiAgKi8KQEAgLTY4NSwxMyArNjk4 LDEzIEBAIGdldF9ncm91cF9pbmZvIChydHggYmFzZSkKIAkgICAgKGdyb3Vw X2luZm9fdCkgcG9vbF9hbGxvYyAocnR4X2dyb3VwX2luZm9fcG9vbCk7CiAJ ICBtZW1zZXQgKGdpLCAwLCBzaXplb2YgKHN0cnVjdCBncm91cF9pbmZvKSk7 CiAJICBnaS0+aWQgPSBydHhfZ3JvdXBfbmV4dF9pZCsrOwotCSAgZ2ktPnN0 b3JlMV9uID0gQklUTUFQX0FMTE9DIChOVUxMKTsKLQkgIGdpLT5zdG9yZTFf cCA9IEJJVE1BUF9BTExPQyAoTlVMTCk7Ci0JICBnaS0+c3RvcmUyX24gPSBC SVRNQVBfQUxMT0MgKE5VTEwpOwotCSAgZ2ktPnN0b3JlMl9wID0gQklUTUFQ X0FMTE9DIChOVUxMKTsKLQkgIGdpLT5lc2NhcGVkX3AgPSBCSVRNQVBfQUxM T0MgKE5VTEwpOwotCSAgZ2ktPmVzY2FwZWRfbiA9IEJJVE1BUF9BTExPQyAo TlVMTCk7Ci0JICBnaS0+Z3JvdXBfa2lsbCA9IEJJVE1BUF9BTExPQyAoTlVM TCk7CisJICBnaS0+c3RvcmUxX24gPSBCSVRNQVBfQUxMT0MgKCZkc2VfYml0 bWFwX29ic3RhY2spOworCSAgZ2ktPnN0b3JlMV9wID0gQklUTUFQX0FMTE9D ICgmZHNlX2JpdG1hcF9vYnN0YWNrKTsKKwkgIGdpLT5zdG9yZTJfbiA9IEJJ VE1BUF9BTExPQyAoJmRzZV9iaXRtYXBfb2JzdGFjayk7CisJICBnaS0+c3Rv cmUyX3AgPSBCSVRNQVBfQUxMT0MgKCZkc2VfYml0bWFwX29ic3RhY2spOwor CSAgZ2ktPmVzY2FwZWRfcCA9IEJJVE1BUF9BTExPQyAoJmRzZV9iaXRtYXBf b2JzdGFjayk7CisJICBnaS0+ZXNjYXBlZF9uID0gQklUTUFQX0FMTE9DICgm ZHNlX2JpdG1hcF9vYnN0YWNrKTsKKwkgIGdpLT5ncm91cF9raWxsID0gQklU TUFQX0FMTE9DICgmZHNlX2JpdG1hcF9vYnN0YWNrKTsKIAkgIGdpLT5wcm9j ZXNzX2dsb2JhbGx5ID0gZmFsc2U7CiAJICBnaS0+b2Zmc2V0X21hcF9zaXpl X24gPSAwOwogCSAgZ2ktPm9mZnNldF9tYXBfc2l6ZV9wID0gMDsKQEAgLTcw OSwxMyArNzIyLDEzIEBAIGdldF9ncm91cF9pbmZvIChydHggYmFzZSkKICAg ICAgIGdpLT5pZCA9IHJ0eF9ncm91cF9uZXh0X2lkKys7CiAgICAgICBnaS0+ YmFzZV9tZW0gPSBnZW5fcnR4X01FTSAoQkxLbW9kZSwgYmFzZSk7CiAgICAg ICBnaS0+Y2Fub25fYmFzZV9hZGRyID0gY2Fub25fcnR4IChiYXNlKTsKLSAg ICAgIGdpLT5zdG9yZTFfbiA9IEJJVE1BUF9BTExPQyAoTlVMTCk7Ci0gICAg ICBnaS0+c3RvcmUxX3AgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOwotICAgICAg Z2ktPnN0b3JlMl9uID0gQklUTUFQX0FMTE9DIChOVUxMKTsKLSAgICAgIGdp LT5zdG9yZTJfcCA9IEJJVE1BUF9BTExPQyAoTlVMTCk7Ci0gICAgICBnaS0+ ZXNjYXBlZF9wID0gQklUTUFQX0FMTE9DIChOVUxMKTsKLSAgICAgIGdpLT5l c2NhcGVkX24gPSBCSVRNQVBfQUxMT0MgKE5VTEwpOwotICAgICAgZ2ktPmdy b3VwX2tpbGwgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICAgICAgZ2ktPnN0 b3JlMV9uID0gQklUTUFQX0FMTE9DICgmZHNlX2JpdG1hcF9vYnN0YWNrKTsK KyAgICAgIGdpLT5zdG9yZTFfcCA9IEJJVE1BUF9BTExPQyAoJmRzZV9iaXRt YXBfb2JzdGFjayk7CisgICAgICBnaS0+c3RvcmUyX24gPSBCSVRNQVBfQUxM T0MgKCZkc2VfYml0bWFwX29ic3RhY2spOworICAgICAgZ2ktPnN0b3JlMl9w ID0gQklUTUFQX0FMTE9DICgmZHNlX2JpdG1hcF9vYnN0YWNrKTsKKyAgICAg IGdpLT5lc2NhcGVkX3AgPSBCSVRNQVBfQUxMT0MgKCZkc2VfYml0bWFwX29i c3RhY2spOworICAgICAgZ2ktPmVzY2FwZWRfbiA9IEJJVE1BUF9BTExPQyAo JmRzZV9iaXRtYXBfb2JzdGFjayk7CisgICAgICBnaS0+Z3JvdXBfa2lsbCA9 IEJJVE1BUF9BTExPQyAoJmRzZV9iaXRtYXBfb2JzdGFjayk7CiAgICAgICBn aS0+cHJvY2Vzc19nbG9iYWxseSA9IGZhbHNlOwogICAgICAgZ2ktPmZyYW1l X3JlbGF0ZWQgPQogCShiYXNlID09IGZyYW1lX3BvaW50ZXJfcnR4KSB8fCAo YmFzZSA9PSBoYXJkX2ZyYW1lX3BvaW50ZXJfcnR4KTsKQEAgLTczOSw4ICs3 NTIsMTEgQEAgZHNlX3N0ZXAwICh2b2lkKQogICBnbG9iYWxseV9kZWxldGVk ID0gMDsKICAgc3BpbGxfZGVsZXRlZCA9IDA7CiAKLSAgc2NyYXRjaCA9IEJJ VE1BUF9BTExPQyAoTlVMTCk7Ci0gIGtpbGxfb25fY2FsbHMgPSBCSVRNQVBf QUxMT0MgKE5VTEwpOworICBiaXRtYXBfb2JzdGFja19pbml0aWFsaXplICgm ZHNlX2JpdG1hcF9vYnN0YWNrKTsKKyAgZ2NjX29ic3RhY2tfaW5pdCAoJmRz ZV9vYnN0YWNrKTsKKworICBzY3JhdGNoID0gQklUTUFQX0FMTE9DICgmcmVn X29ic3RhY2spOworICBraWxsX29uX2NhbGxzID0gQklUTUFQX0FMTE9DICgm ZHNlX2JpdG1hcF9vYnN0YWNrKTsKIAogICBydHhfc3RvcmVfaW5mb19wb29s CiAgICAgPSBjcmVhdGVfYWxsb2NfcG9vbCAoInJ0eF9zdG9yZV9pbmZvX3Bv b2wiLApAQCAtNzY0LDcgKzc4MCw3IEBAIGRzZV9zdGVwMCAodm9pZCkKICAg cnR4X2dyb3VwX3RhYmxlID0gaHRhYl9jcmVhdGUgKDExLCBpbnZhcmlhbnRf Z3JvdXBfYmFzZV9oYXNoLAogCQkJCSBpbnZhcmlhbnRfZ3JvdXBfYmFzZV9l cSwgTlVMTCk7CiAKLSAgYmJfdGFibGUgPSBYQ05FV1ZFQyAoYmJfaW5mb190 LCBsYXN0X2Jhc2ljX2Jsb2NrKTsKKyAgYmJfdGFibGUgPSBYTkVXVkVDIChi Yl9pbmZvX3QsIGxhc3RfYmFzaWNfYmxvY2spOwogICBydHhfZ3JvdXBfbmV4 dF9pZCA9IDA7CiAKICAgc3RvcmVzX29mZl9mcmFtZV9kZWFkX2F0X3JldHVy biA9ICFjZnVuLT5zdGRhcmc7CkBAIC0xNjk0LDcgKzE3MTAsNyBAQCByZWNv cmRfc3RvcmUgKHJ0eCBib2R5LCBiYl9pbmZvX3QgYmJfaW5mCiAgICAgewog ICAgICAgc3RvcmVfaW5mby0+aXNfbGFyZ2UgPSB0cnVlOwogICAgICAgc3Rv cmVfaW5mby0+cG9zaXRpb25zX25lZWRlZC5sYXJnZS5jb3VudCA9IDA7Ci0g ICAgICBzdG9yZV9pbmZvLT5wb3NpdGlvbnNfbmVlZGVkLmxhcmdlLmJtYXAg PSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICAgICAgc3RvcmVfaW5mby0+cG9z aXRpb25zX25lZWRlZC5sYXJnZS5ibWFwID0gQklUTUFQX0FMTE9DICgmZHNl X2JpdG1hcF9vYnN0YWNrKTsKICAgICB9CiAgIGVsc2UKICAgICB7CkBAIC0y MDIwLDcgKzIwMzYsNyBAQCByZXBsYWNlX3JlYWQgKHN0b3JlX2luZm9fdCBz dG9yZV9pbmZvLCBpCiAJIGxpdmUgYXQgdGhpcyBwb2ludC4gIEZvciBpbnN0 YW5jZSwgdGhpcyBjYW4gaGFwcGVuIGlmIG9uZSBvZgogCSB0aGUgaW5zbnMg c2V0cyB0aGUgQ0MgYW5kIHRoZSBDQyBoYXBwZW5lZCB0byBiZSBsaXZlIGF0 IHRoYXQKIAkgcG9pbnQuICBUaGlzIGRvZXMgb2NjYXNpb25hbGx5IGhhcHBl biwgc2VlIFBSIDM3OTIyLiAgKi8KLSAgICAgIGJpdG1hcCByZWdzX3NldCA9 IEJJVE1BUF9BTExPQyAoTlVMTCk7CisgICAgICBiaXRtYXAgcmVnc19zZXQg PSBCSVRNQVBfQUxMT0MgKCZyZWdfb2JzdGFjayk7CiAKICAgICAgIGZvciAo dGhpc19pbnNuID0gaW5zbnM7IHRoaXNfaW5zbiAhPSBOVUxMX1JUWDsgdGhp c19pbnNuID0gTkVYVF9JTlNOICh0aGlzX2luc24pKQogCW5vdGVfc3RvcmVz IChQQVRURVJOICh0aGlzX2luc24pLCBsb29rX2Zvcl9oYXJkcmVncywgcmVn c19zZXQpOwpAQCAtMjcxOCw3ICsyNzM0LDcgQEAgc3RhdGljIHZvaWQKIGRz ZV9zdGVwMSAodm9pZCkKIHsKICAgYmFzaWNfYmxvY2sgYmI7Ci0gIGJpdG1h cCByZWdzX2xpdmUgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICBiaXRtYXAg cmVnc19saXZlID0gQklUTUFQX0FMTE9DICgmcmVnX29ic3RhY2spOwogCiAg IGNzZWxpYl9pbml0ICgwKTsKICAgYWxsX2Jsb2NrcyA9IEJJVE1BUF9BTExP QyAoTlVMTCk7CkBAIC0yOTA2LDkgKzI5MjIsMTEgQEAgZHNlX3N0ZXAyX2lu aXQgKHZvaWQpCiAJfQogCiAgICAgICBncm91cC0+b2Zmc2V0X21hcF9zaXpl X24rKzsKLSAgICAgIGdyb3VwLT5vZmZzZXRfbWFwX24gPSBYTkVXVkVDIChp bnQsIGdyb3VwLT5vZmZzZXRfbWFwX3NpemVfbik7CisgICAgICBncm91cC0+ b2Zmc2V0X21hcF9uID0gWE9CTkVXVkVDICgmZHNlX29ic3RhY2ssIGludCwK KwkJCQkgICAgICAgZ3JvdXAtPm9mZnNldF9tYXBfc2l6ZV9uKTsKICAgICAg IGdyb3VwLT5vZmZzZXRfbWFwX3NpemVfcCsrOwotICAgICAgZ3JvdXAtPm9m ZnNldF9tYXBfcCA9IFhORVdWRUMgKGludCwgZ3JvdXAtPm9mZnNldF9tYXBf c2l6ZV9wKTsKKyAgICAgIGdyb3VwLT5vZmZzZXRfbWFwX3AgPSBYT0JORVdW RUMgKCZkc2Vfb2JzdGFjaywgaW50LAorCQkJCSAgICAgICBncm91cC0+b2Zm c2V0X21hcF9zaXplX3ApOwogICAgICAgZ3JvdXAtPnByb2Nlc3NfZ2xvYmFs bHkgPSBmYWxzZTsKICAgICAgIGlmIChkdW1wX2ZpbGUpCiAJewpAQCAtMzI2 MSw3ICszMjc5LDcgQEAgZHNlX3N0ZXAzX3NjYW4gKGJvb2wgZm9yX3NwaWxs cywgYmFzaWNfYgogICAgICAgaWYgKGJiX2luZm8tPmtpbGwpCiAJYml0bWFw X2NsZWFyIChiYl9pbmZvLT5raWxsKTsKICAgICAgIGVsc2UKLQliYl9pbmZv LT5raWxsID0gQklUTUFQX0FMTE9DIChOVUxMKTsKKwliYl9pbmZvLT5raWxs ID0gQklUTUFQX0FMTE9DICgmZHNlX2JpdG1hcF9vYnN0YWNrKTsKICAgICB9 CiAgIGVsc2UKICAgICBpZiAoYmJfaW5mby0+a2lsbCkKQEAgLTMzNTQsNyAr MzM3Miw3IEBAIGRzZV9zdGVwMyAoYm9vbCBmb3Jfc3BpbGxzKQogICAgICAg aWYgKGJiX2luZm8tPmdlbikKIAliaXRtYXBfY2xlYXIgKGJiX2luZm8tPmdl bik7CiAgICAgICBlbHNlCi0JYmJfaW5mby0+Z2VuID0gQklUTUFQX0FMTE9D IChOVUxMKTsKKwliYl9pbmZvLT5nZW4gPSBCSVRNQVBfQUxMT0MgKCZkc2Vf Yml0bWFwX29ic3RhY2spOwogCiAgICAgICBpZiAoYmItPmluZGV4ID09IEVO VFJZX0JMT0NLKQogCTsKQEAgLTMzODYsMTMgKzM0MDQsMTMgQEAgZHNlX3N0 ZXAzIChib29sIGZvcl9zcGlsbHMpCiAJICAgICAgdW5zaWduZWQgaW50IGo7 CiAJICAgICAgZ3JvdXBfaW5mb190IGdyb3VwOwogCi0JICAgICAgYWxsX29u ZXMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworCSAgICAgIGFsbF9vbmVzID0g QklUTUFQX0FMTE9DICgmZHNlX2JpdG1hcF9vYnN0YWNrKTsKIAkgICAgICBG T1JfRUFDSF9WRUNfRUxUIChncm91cF9pbmZvX3QsIHJ0eF9ncm91cF92ZWMs IGosIGdyb3VwKQogCQliaXRtYXBfaW9yX2ludG8gKGFsbF9vbmVzLCBncm91 cC0+Z3JvdXBfa2lsbCk7CiAJICAgIH0KIAkgIGlmICghYmJfaW5mby0+b3V0 KQogCSAgICB7Ci0JICAgICAgYmJfaW5mby0+b3V0ID0gQklUTUFQX0FMTE9D IChOVUxMKTsKKwkgICAgICBiYl9pbmZvLT5vdXQgPSBCSVRNQVBfQUxMT0Mg KCZkc2VfYml0bWFwX29ic3RhY2spOwogCSAgICAgIGJpdG1hcF9jb3B5IChi Yl9pbmZvLT5vdXQsIGFsbF9vbmVzKTsKIAkgICAgfQogCX0KQEAgLTM0Mjgs NyArMzQ0Niw3IEBAIGRzZV9jb25mbHVlbmNlXzAgKGJhc2ljX2Jsb2NrIGJi KQogCiAgIGlmICghYmJfaW5mby0+b3V0KQogICAgIHsKLSAgICAgIGJiX2lu Zm8tPm91dCA9IEJJVE1BUF9BTExPQyAoTlVMTCk7CisgICAgICBiYl9pbmZv LT5vdXQgPSBCSVRNQVBfQUxMT0MgKCZkc2VfYml0bWFwX29ic3RhY2spOwog ICAgICAgYml0bWFwX2NvcHkgKGJiX2luZm8tPm91dCwgYmJfdGFibGVbRVhJ VF9CTE9DS10tPmdlbik7CiAgICAgfQogfQpAQCAtMzQ0OSw3ICszNDY3LDcg QEAgZHNlX2NvbmZsdWVuY2VfbiAoZWRnZSBlKQogCWJpdG1hcF9hbmRfaW50 byAoc3JjX2luZm8tPm91dCwgZGVzdF9pbmZvLT5pbik7CiAgICAgICBlbHNl CiAJewotCSAgc3JjX2luZm8tPm91dCA9IEJJVE1BUF9BTExPQyAoTlVMTCk7 CisJICBzcmNfaW5mby0+b3V0ID0gQklUTUFQX0FMTE9DICgmZHNlX2JpdG1h cF9vYnN0YWNrKTsKIAkgIGJpdG1hcF9jb3B5IChzcmNfaW5mby0+b3V0LCBk ZXN0X2luZm8tPmluKTsKIAl9CiAgICAgfQpAQCAtMzQ4OCw3ICszNTA2LDcg QEAgZHNlX3RyYW5zZmVyX2Z1bmN0aW9uIChpbnQgYmJfaW5kZXgpCiAJCQkJ CSBiYl9pbmZvLT5vdXQsIGJiX2luZm8tPmtpbGwpOwogCSAgZWxzZQogCSAg ICB7Ci0JICAgICAgYmJfaW5mby0+aW4gPSBCSVRNQVBfQUxMT0MgKE5VTEwp OworCSAgICAgIGJiX2luZm8tPmluID0gQklUTUFQX0FMTE9DICgmZHNlX2Jp dG1hcF9vYnN0YWNrKTsKIAkgICAgICBiaXRtYXBfaW9yX2FuZF9jb21wbCAo YmJfaW5mby0+aW4sIGJiX2luZm8tPmdlbiwKIAkJCQkgICAgYmJfaW5mby0+ b3V0LCBiYl9pbmZvLT5raWxsKTsKIAkgICAgICByZXR1cm4gdHJ1ZTsKQEAg LTM1MDYsNyArMzUyNCw3IEBAIGRzZV90cmFuc2Zlcl9mdW5jdGlvbiAoaW50 IGJiX2luZGV4KQogCXJldHVybiBmYWxzZTsKICAgICAgIGVsc2UKIAl7Ci0J ICBiYl9pbmZvLT5pbiA9IEJJVE1BUF9BTExPQyAoTlVMTCk7CisJICBiYl9p bmZvLT5pbiA9IEJJVE1BUF9BTExPQyAoJmRzZV9iaXRtYXBfb2JzdGFjayk7 CiAJICBiaXRtYXBfY29weSAoYmJfaW5mby0+aW4sIGJiX2luZm8tPmdlbik7 CiAJICByZXR1cm4gdHJ1ZTsKIAl9CkBAIC0zNzg2LDM3ICszODA0LDEwIEBA IGRzZV9zdGVwNiAodm9pZCkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLwogCiBzdGF0aWMgdm9pZAotZHNlX3N0ZXA3IChib29sIGdsb2Jh bF9kb25lKQorZHNlX3N0ZXA3ICh2b2lkKQogewotICB1bnNpZ25lZCBpbnQg aTsKLSAgZ3JvdXBfaW5mb190IGdyb3VwOwotICBiYXNpY19ibG9jayBiYjsK LQotICBGT1JfRUFDSF9WRUNfRUxUIChncm91cF9pbmZvX3QsIHJ0eF9ncm91 cF92ZWMsIGksIGdyb3VwKQotICAgIHsKLSAgICAgIGZyZWUgKGdyb3VwLT5v ZmZzZXRfbWFwX24pOwotICAgICAgZnJlZSAoZ3JvdXAtPm9mZnNldF9tYXBf cCk7Ci0gICAgICBCSVRNQVBfRlJFRSAoZ3JvdXAtPnN0b3JlMV9uKTsKLSAg ICAgIEJJVE1BUF9GUkVFIChncm91cC0+c3RvcmUxX3ApOwotICAgICAgQklU TUFQX0ZSRUUgKGdyb3VwLT5zdG9yZTJfbik7Ci0gICAgICBCSVRNQVBfRlJF RSAoZ3JvdXAtPnN0b3JlMl9wKTsKLSAgICAgIEJJVE1BUF9GUkVFIChncm91 cC0+ZXNjYXBlZF9uKTsKLSAgICAgIEJJVE1BUF9GUkVFIChncm91cC0+ZXNj YXBlZF9wKTsKLSAgICAgIEJJVE1BUF9GUkVFIChncm91cC0+Z3JvdXBfa2ls bCk7Ci0gICAgfQotCi0gIGlmIChnbG9iYWxfZG9uZSkKLSAgICBGT1JfQUxM X0JCIChiYikKLSAgICAgIHsKLQliYl9pbmZvX3QgYmJfaW5mbyA9IGJiX3Rh YmxlW2JiLT5pbmRleF07Ci0JQklUTUFQX0ZSRUUgKGJiX2luZm8tPmdlbik7 Ci0JaWYgKGJiX2luZm8tPmtpbGwpCi0JICBCSVRNQVBfRlJFRSAoYmJfaW5m by0+a2lsbCk7Ci0JaWYgKGJiX2luZm8tPmluKQotCSAgQklUTUFQX0ZSRUUg KGJiX2luZm8tPmluKTsKLQlpZiAoYmJfaW5mby0+b3V0KQotCSAgQklUTUFQ X0ZSRUUgKGJiX2luZm8tPm91dCk7Ci0gICAgICB9CisgIGJpdG1hcF9vYnN0 YWNrX3JlbGVhc2UgKCZkc2VfYml0bWFwX29ic3RhY2spOworICBvYnN0YWNr X2ZyZWUgKCZkc2Vfb2JzdGFjaywgTlVMTCk7CiAKICAgaWYgKGNsZWFyX2Fs aWFzX3NldHMpCiAgICAgewpAQCAtMzg5Nyw3ICszODg4LDcgQEAgcmVzdF9v Zl9oYW5kbGVfZHNlICh2b2lkKQogICAgIH0KIAogICBkc2Vfc3RlcDYgKCk7 Ci0gIGRzZV9zdGVwNyAoZGlkX2dsb2JhbCk7CisgIGRzZV9zdGVwNyAoKTsK IAogICBpZiAoZHVtcF9maWxlKQogICAgIGZwcmludGYgKGR1bXBfZmlsZSwg ImRzZTogbG9jYWwgZGVsZXRpb25zID0gJWQsIGdsb2JhbCBkZWxldGlvbnMg PSAlZCwgc3BpbGwgZGVsZXRpb25zID0gJWRcbiIsCkluZGV4OiBjZmdleHBh bmQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjZmdleHBhbmQuYwko cmV2aXNpb24gMTkwNDQ4KQorKysgY2ZnZXhwYW5kLmMJKHdvcmtpbmcgY29w eSkKQEAgLTE4NSw2ICsxODUsMTAgQEAgc3RhdGljIHNpemVfdCBzdGFja192 YXJzX2FsbG9jOwogc3RhdGljIHNpemVfdCBzdGFja192YXJzX251bTsKIHN0 YXRpYyBzdHJ1Y3QgcG9pbnRlcl9tYXBfdCAqZGVjbF90b19zdGFja19wYXJ0 OwogCisvKiBDb25mbGljdCBiaXRtYXBzIGdvIG9uIHRoaXMgb2JzdGFjay4g IFRoaXMgYWxsb3dzIHVzIHRvIGRlc3Ryb3kKKyAgIGFsbCBvZiB0aGVtIGlu IG9uZSBiaWcgc3dlZXAuICAqLworc3RhdGljIGJpdG1hcF9vYnN0YWNrIHN0 YWNrX3Zhcl9iaXRtYXBfb2JzdGFjazsKKwogLyogQW4gYXJyYXkgb2YgaW5k aWNlcyBzdWNoIHRoYXQgc3RhY2tfdmFyc1tzdGFja192YXJzX3NvcnRlZFtp XV0uc2l6ZQogICAgaXMgbm9uLWRlY3JlYXNpbmcuICAqLwogc3RhdGljIHNp emVfdCAqc3RhY2tfdmFyc19zb3J0ZWQ7CkBAIC0yOTksOSArMzAzLDkgQEAg YWRkX3N0YWNrX3Zhcl9jb25mbGljdCAoc2l6ZV90IHgsIHNpemVfdAogICBz dHJ1Y3Qgc3RhY2tfdmFyICphID0gJnN0YWNrX3ZhcnNbeF07CiAgIHN0cnVj dCBzdGFja192YXIgKmIgPSAmc3RhY2tfdmFyc1t5XTsKICAgaWYgKCFhLT5j b25mbGljdHMpCi0gICAgYS0+Y29uZmxpY3RzID0gQklUTUFQX0FMTE9DIChO VUxMKTsKKyAgICBhLT5jb25mbGljdHMgPSBCSVRNQVBfQUxMT0MgKCZzdGFj a192YXJfYml0bWFwX29ic3RhY2spOwogICBpZiAoIWItPmNvbmZsaWN0cykK LSAgICBiLT5jb25mbGljdHMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICAg IGItPmNvbmZsaWN0cyA9IEJJVE1BUF9BTExPQyAoJnN0YWNrX3Zhcl9iaXRt YXBfb2JzdGFjayk7CiAgIGJpdG1hcF9zZXRfYml0IChhLT5jb25mbGljdHMs IHkpOwogICBiaXRtYXBfc2V0X2JpdCAoYi0+Y29uZmxpY3RzLCB4KTsKIH0K QEAgLTQzMSw3ICs0MzUsNyBAQCBhZGRfc2NvcGVfY29uZmxpY3RzXzEgKGJh c2ljX2Jsb2NrIGJiLCBiCiAJCXsKIAkJICBzdHJ1Y3Qgc3RhY2tfdmFyICph ID0gJnN0YWNrX3ZhcnNbaV07CiAJCSAgaWYgKCFhLT5jb25mbGljdHMpCi0J CSAgICBhLT5jb25mbGljdHMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworCQkg ICAgYS0+Y29uZmxpY3RzID0gQklUTUFQX0FMTE9DICgmc3RhY2tfdmFyX2Jp dG1hcF9vYnN0YWNrKTsKIAkJICBiaXRtYXBfaW9yX2ludG8gKGEtPmNvbmZs aWN0cywgd29yayk7CiAJCX0KIAkgICAgICB2aXNpdCA9IHZpc2l0X2NvbmZs aWN0OwpAQCAtNDY0LDcgKzQ2OCw3IEBAIGFkZF9zY29wZV9jb25mbGljdHMg KHZvaWQpCiAgICAgIFdlIHRoZW4gZG8gYSBtb3N0bHkgY2xhc3NpY2FsIGJp dG1hcCBsaXZlbmVzcyBhbGdvcml0aG0uICAqLwogCiAgIEZPUl9BTExfQkIg KGJiKQotICAgIGJiLT5hdXggPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICAg IGJiLT5hdXggPSBCSVRNQVBfQUxMT0MgKCZzdGFja192YXJfYml0bWFwX29i c3RhY2spOwogCiAgIHJwbyA9IFhORVdWRUMgKGludCwgbGFzdF9iYXNpY19i bG9jayk7CiAgIG5fYmJzID0gcHJlX2FuZF9yZXZfcG9zdF9vcmRlcl9jb21w dXRlIChOVUxMLCBycG8sIGZhbHNlKTsKQEAgLTY0Nyw3ICs2NTEsNyBAQCB1 cGRhdGVfYWxpYXNfaW5mb193aXRoX3N0YWNrX3ZhcnMgKHZvaWQpCiAgICAg ewogICAgICAgdW5zaWduZWQgaTsKICAgICAgIHN0cnVjdCBwb2ludGVyX3Nl dF90ICp2aXNpdGVkID0gcG9pbnRlcl9zZXRfY3JlYXRlICgpOwotICAgICAg Yml0bWFwIHRlbXAgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICAgICAgYml0 bWFwIHRlbXAgPSBCSVRNQVBfQUxMT0MgKCZzdGFja192YXJfYml0bWFwX29i c3RhY2spOwogCiAgICAgICBmb3IgKGkgPSAxOyBpIDwgbnVtX3NzYV9uYW1l czsgaSsrKQogCXsKQEAgLTEzNzgsMTQgKzEzODIsMTEgQEAgY3JlYXRlX3N0 YWNrX2d1YXJkICh2b2lkKQogc3RhdGljIHZvaWQKIGluaXRfdmFyc19leHBh bnNpb24gKHZvaWQpCiB7Ci0gIHRyZWUgdDsKLSAgdW5zaWduZWQgaXg7Ci0g IC8qIFNldCBUUkVFX1VTRUQgb24gYWxsIHZhcmlhYmxlcyBpbiB0aGUgbG9j YWxfZGVjbHMuICAqLwotICBGT1JfRUFDSF9MT0NBTF9ERUNMIChjZnVuLCBp eCwgdCkKLSAgICBUUkVFX1VTRUQgKHQpID0gMTsKKyAgLyogQ29uZmxpY3Qg Yml0bWFwcywgYW5kIGEgZmV3IHJlbGF0ZWQgdGVtcG9yYXJ5IGJpdG1hcHMs IGdvIGhlcmUuICAqLworICBiaXRtYXBfb2JzdGFja19pbml0aWFsaXplICgm c3RhY2tfdmFyX2JpdG1hcF9vYnN0YWNrKTsKIAotICAvKiBDbGVhciBUUkVF X1VTRUQgb24gYWxsIHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggYSBibG9j ayBzY29wZS4gICovCi0gIGNsZWFyX3RyZWVfdXNlZCAoREVDTF9JTklUSUFM IChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKTsKKyAgLyogQSBtYXAgZnJvbSBk ZWNsIHRvIHN0YWNrIHBhcnRpdGlvbi4gICovCisgIGRlY2xfdG9fc3RhY2tf cGFydCA9IHBvaW50ZXJfbWFwX2NyZWF0ZSAoKTsKIAogICAvKiBJbml0aWFs aXplIGxvY2FsIHN0YWNrIHNtYXNoaW5nIHN0YXRlLiAgKi8KICAgaGFzX3By b3RlY3RlZF9kZWNscyA9IGZhbHNlOwpAQCAtMTM5NiwxMSArMTM5NywxMSBA QCBpbml0X3ZhcnNfZXhwYW5zaW9uICh2b2lkKQogc3RhdGljIHZvaWQKIGZp bmlfdmFyc19leHBhbnNpb24gKHZvaWQpCiB7Ci0gIHNpemVfdCBpLCBuID0g c3RhY2tfdmFyc19udW07Ci0gIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0g ICAgQklUTUFQX0ZSRUUgKHN0YWNrX3ZhcnNbaV0uY29uZmxpY3RzKTsKLSAg WERFTEVURVZFQyAoc3RhY2tfdmFycyk7Ci0gIFhERUxFVEVWRUMgKHN0YWNr X3ZhcnNfc29ydGVkKTsKKyAgYml0bWFwX29ic3RhY2tfcmVsZWFzZSAoJnN0 YWNrX3Zhcl9iaXRtYXBfb2JzdGFjayk7CisgIGlmIChzdGFja192YXJzKQor ICAgIFhERUxFVEVWRUMgKHN0YWNrX3ZhcnMpOworICBpZiAoc3RhY2tfdmFy c19zb3J0ZWQpCisgICAgWERFTEVURVZFQyAoc3RhY2tfdmFyc19zb3J0ZWQp OwogICBzdGFja192YXJzID0gTlVMTDsKICAgc3RhY2tfdmFyc19zb3J0ZWQg PSBOVUxMOwogICBzdGFja192YXJzX2FsbG9jID0gc3RhY2tfdmFyc19udW0g PSAwOwpAQCAtMTQyOCw2ICsxNDI5LDggQEAgZXN0aW1hdGVkX3N0YWNrX2Zy YW1lX3NpemUgKHN0cnVjdCBjZ3JhcAogICBjdXJyZW50X2Z1bmN0aW9uX2Rl Y2wgPSBub2RlLT5zeW1ib2wuZGVjbDsKICAgcHVzaF9jZnVuIChmbik7CiAK KyAgaW5pdF92YXJzX2V4cGFuc2lvbiAoKTsKKwogICBGT1JfRUFDSF9MT0NB TF9ERUNMIChmbiwgaSwgdmFyKQogICAgIGlmIChhdXRvX3Zhcl9pbl9mbl9w ICh2YXIsIGZuLT5kZWNsKSkKICAgICAgIHNpemUgKz0gZXhwYW5kX29uZV92 YXIgKHZhciwgdHJ1ZSwgZmFsc2UpOwpAQCAtMTQzOSw4ICsxNDQyLDkgQEAg ZXN0aW1hdGVkX3N0YWNrX2ZyYW1lX3NpemUgKHN0cnVjdCBjZ3JhcAogICAg ICAgZm9yIChpID0gMDsgaSA8IHN0YWNrX3ZhcnNfbnVtOyArK2kpCiAJc3Rh Y2tfdmFyc19zb3J0ZWRbaV0gPSBpOwogICAgICAgc2l6ZSArPSBhY2NvdW50 X3N0YWNrX3ZhcnMgKCk7Ci0gICAgICBmaW5pX3ZhcnNfZXhwYW5zaW9uICgp OwogICAgIH0KKworICBmaW5pX3ZhcnNfZXhwYW5zaW9uICgpOwogICBwb3Bf Y2Z1biAoKTsKICAgY3VycmVudF9mdW5jdGlvbl9kZWNsID0gb2xkX2N1cl9m dW5fZGVjbDsKICAgcmV0dXJuIHNpemU7CkBAIC0xNDY0LDYgKzE0NjgsMTIg QEAgZXhwYW5kX3VzZWRfdmFycyAodm9pZCkKICAgICBmcmFtZV9waGFzZSA9 IG9mZiA/IGFsaWduIC0gb2ZmIDogMDsKICAgfQogCisgIC8qIFNldCBUUkVF X1VTRUQgb24gYWxsIHZhcmlhYmxlcyBpbiB0aGUgbG9jYWxfZGVjbHMuICAq LworICBGT1JfRUFDSF9MT0NBTF9ERUNMIChjZnVuLCBpLCB2YXIpCisgICAg VFJFRV9VU0VEICh2YXIpID0gMTsKKyAgLyogQ2xlYXIgVFJFRV9VU0VEIG9u IGFsbCB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgYmxvY2sgc2NvcGUu ICAqLworICBjbGVhcl90cmVlX3VzZWQgKERFQ0xfSU5JVElBTCAoY3VycmVu dF9mdW5jdGlvbl9kZWNsKSk7CisKICAgaW5pdF92YXJzX2V4cGFuc2lvbiAo KTsKIAogICBzc2FfbmFtZV9kZWNscyA9IHBvaW50ZXJfbWFwX2NyZWF0ZSAo KTsKQEAgLTE2MTMsMTAgKzE2MjMsMTAgQEAgZXhwYW5kX3VzZWRfdmFycyAo dm9pZCkKIAl9CiAKICAgICAgIGV4cGFuZF9zdGFja192YXJzIChOVUxMKTsK LQotICAgICAgZmluaV92YXJzX2V4cGFuc2lvbiAoKTsKICAgICB9CiAKKyAg ZmluaV92YXJzX2V4cGFuc2lvbiAoKTsKKwogICAvKiBJZiB0aGVyZSB3ZXJl IGFueSBhcnRpZmljaWFsIG5vbi1pZ25vcmVkIHZhcnMgd2l0aG91dCBydGwK ICAgICAgZm91bmQgZWFybGllciwgc2VlIGlmIGRlZmVycmVkIHN0YWNrIGFs bG9jYXRpb24gaGFzbid0IGFzc2lnbmVkCiAgICAgIHJ0bCB0byB0aGVtLiAg Ki8KSW5kZXg6IHRyZWUtc3NhLWxpdmUuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB0cmVlLXNzYS1saXZlLmgJKHJldmlzaW9uIDE5MDQ0OCkKKysr IHRyZWUtc3NhLWxpdmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDggKzIy NiwxMSBAQCB0eXBlZGVmIHN0cnVjdCB0cmVlX2xpdmVfaW5mb19kCiAgIC8q IEJpdG1hcCBpbmRpY2F0aW5nIHdoaWNoIHBhcnRpdGlvbnMgYXJlIGdsb2Jh bC4gICovCiAgIGJpdG1hcCBnbG9iYWw7CiAKLSAgLyogQml0bWFwIG9mIGxp dmUgb24gZW50cnkgYmxvY2tzIGZvciBwYXJ0aXRpb24gZWxlbWVudHMuICAq LwotICBiaXRtYXAgKmxpdmVpbjsKKyAgLyogQml0bWFwcyBvZiBsaXZlIG9u IGVudHJ5IGJsb2NrcyBmb3IgcGFydGl0aW9uIGVsZW1lbnRzLiAgKi8KKyAg Yml0bWFwX2hlYWQgKmxpdmVpbjsKKworICAvKiBCaXRtYXBzIG9mIHdoYXQg dmFyaWFibGVzIGFyZSBsaXZlIG9uIGV4aXQgZm9yIGEgYmFzaWMgYmxvY2tz LiAgKi8KKyAgYml0bWFwX2hlYWQgKmxpdmVvdXQ7CiAKICAgLyogTnVtYmVy IG9mIGJhc2ljIGJsb2NrcyB3aGVuIGxpdmUgb24gZXhpdCBjYWxjdWxhdGVk LiAgKi8KICAgaW50IG51bV9ibG9ja3M7CkBAIC0yMzcsOSArMjQwLDYgQEAg dHlwZWRlZiBzdHJ1Y3QgdHJlZV9saXZlX2luZm9fZAogCiAgIC8qIFRvcCBv ZiB3b3Jrc3RhY2suICAqLwogICBpbnQgKnN0YWNrX3RvcDsKLQotICAvKiBC aXRtYXAgb2Ygd2hhdCB2YXJpYWJsZXMgYXJlIGxpdmUgb24gZXhpdCBmb3Ig YSBiYXNpYyBibG9ja3MuICAqLwotICBiaXRtYXAgKmxpdmVvdXQ7CiB9ICp0 cmVlX2xpdmVfaW5mb19wOwogCiAKQEAgLTI3Myw3ICsyNzMsNyBAQCBsaXZl X29uX2VudHJ5ICh0cmVlX2xpdmVfaW5mb19wIGxpdmUsIGJhCiAJCSAgICAg ICAmJiBiYiAhPSBFTlRSWV9CTE9DS19QVFIKIAkJICAgICAgICYmIGJiICE9 IEVYSVRfQkxPQ0tfUFRSKTsKIAotICByZXR1cm4gbGl2ZS0+bGl2ZWluW2Ji LT5pbmRleF07CisgIHJldHVybiAmbGl2ZS0+bGl2ZWluW2JiLT5pbmRleF07 CiB9CiAKIApAQCAtMjg3LDcgKzI4Nyw3IEBAIGxpdmVfb25fZXhpdCAodHJl ZV9saXZlX2luZm9fcCBsaXZlLCBiYXMKIAkJICAgICAgICYmIGJiICE9IEVO VFJZX0JMT0NLX1BUUgogCQkgICAgICAgJiYgYmIgIT0gRVhJVF9CTE9DS19Q VFIpOwogCi0gIHJldHVybiBsaXZlLT5saXZlb3V0W2JiLT5pbmRleF07Cisg IHJldHVybiAmbGl2ZS0+bGl2ZW91dFtiYi0+aW5kZXhdOwogfQogCiAKQEAg LTMwNiw5ICszMDYsOSBAQCBsaXZlX3Zhcl9tYXAgKHRyZWVfbGl2ZV9pbmZv X3AgbGl2ZSkKIHN0YXRpYyBpbmxpbmUgdm9pZAogbGl2ZV9tZXJnZV9hbmRf Y2xlYXIgKHRyZWVfbGl2ZV9pbmZvX3AgbGl2ZSwgaW50IHAxLCBpbnQgcDIp CiB7Ci0gIGdjY19jaGVja2luZ19hc3NlcnQgKGxpdmUtPmxpdmVpbltwMV0g JiYgbGl2ZS0+bGl2ZWluW3AyXSk7Ci0gIGJpdG1hcF9pb3JfaW50byAobGl2 ZS0+bGl2ZWluW3AxXSwgbGl2ZS0+bGl2ZWluW3AyXSk7Ci0gIGJpdG1hcF96 ZXJvIChsaXZlLT5saXZlaW5bcDJdKTsKKyAgZ2NjX2NoZWNraW5nX2Fzc2Vy dCAoJmxpdmUtPmxpdmVpbltwMV0gJiYgJmxpdmUtPmxpdmVpbltwMl0pOwor ICBiaXRtYXBfaW9yX2ludG8gKCZsaXZlLT5saXZlaW5bcDFdLCAmbGl2ZS0+ bGl2ZWluW3AyXSk7CisgIGJpdG1hcF96ZXJvICgmbGl2ZS0+bGl2ZWluW3Ay XSk7CiB9CiAKIApAQCAtMzE3LDcgKzMxNyw3IEBAIGxpdmVfbWVyZ2VfYW5k X2NsZWFyICh0cmVlX2xpdmVfaW5mb19wIGwKIHN0YXRpYyBpbmxpbmUgdm9p ZAogbWFrZV9saXZlX29uX2VudHJ5ICh0cmVlX2xpdmVfaW5mb19wIGxpdmUs IGJhc2ljX2Jsb2NrIGJiICwgaW50IHApCiB7Ci0gIGJpdG1hcF9zZXRfYml0 IChsaXZlLT5saXZlaW5bYmItPmluZGV4XSwgcCk7CisgIGJpdG1hcF9zZXRf Yml0ICgmbGl2ZS0+bGl2ZWluW2JiLT5pbmRleF0sIHApOwogICBiaXRtYXBf c2V0X2JpdCAobGl2ZS0+Z2xvYmFsLCBwKTsKIH0KIApJbmRleDogdHJlZS1z c2EtbGl2ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRyZWUtc3Nh LWxpdmUuYwkocmV2aXNpb24gMTkwNDQ4KQorKysgdHJlZS1zc2EtbGl2ZS5j CSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNyArMjkzLDcgQEAgcGFydGl0aW9u X3ZpZXdfZmluaSAodmFyX21hcCBtYXAsIGJpdG1hcAogLyogQ3JlYXRlIGEg cGFydGl0aW9uIHZpZXcgd2hpY2ggaW5jbHVkZXMgYWxsIHRoZSB1c2VkIHBh cnRpdGlvbnMgaW4gTUFQLiAgSWYKICAgIFdBTlRfQkFTRVMgaXMgdHJ1ZSwg Y3JlYXRlIHRoZSBiYXNlIHZhcmlhYmxlIG1hcCBhcyB3ZWxsLiAgKi8KIAot ZXh0ZXJuIHZvaWQKK3ZvaWQKIHBhcnRpdGlvbl92aWV3X25vcm1hbCAodmFy X21hcCBtYXAsIGJvb2wgd2FudF9iYXNlcykKIHsKICAgYml0bWFwIHVzZWQ7 CkBAIC0zMTIsNyArMzEyLDcgQEAgcGFydGl0aW9uX3ZpZXdfbm9ybWFsICh2 YXJfbWFwIG1hcCwgYm9vbAogICAgdGhlIGJpdG1hcCBPTkxZLiBJZiBXQU5U X0JBU0VTIGlzIHRydWUsIGNyZWF0ZSB0aGUgYmFzZSB2YXJpYWJsZSBtYXAK ICAgIGFzIHdlbGwuICAqLwogCi1leHRlcm4gdm9pZAordm9pZAogcGFydGl0 aW9uX3ZpZXdfYml0bWFwICh2YXJfbWFwIG1hcCwgYml0bWFwIG9ubHksIGJv b2wgd2FudF9iYXNlcykKIHsKICAgYml0bWFwIHVzZWQ7CkBAIC0zMjksNyAr MzI5LDYgQEAgcGFydGl0aW9uX3ZpZXdfYml0bWFwICh2YXJfbWFwIG1hcCwg Yml0bQogICAgIH0KICAgcGFydGl0aW9uX3ZpZXdfZmluaSAobWFwLCBuZXdf cGFydGl0aW9ucyk7CiAKLSAgQklUTUFQX0ZSRUUgKHVzZWQpOwogICBpZiAo d2FudF9iYXNlcykKICAgICB2YXJfbWFwX2Jhc2VfaW5pdCAobWFwKTsKICAg ZWxzZQpAQCAtODQ5LDYgKzg0OCwxMiBAQCByZW1vdmVfdW51c2VkX2xvY2Fs cyAodm9pZCkKICAgdGltZXZhcl9wb3AgKFRWX1JFTU9WRV9VTlVTRUQpOwog fQogCisvKiBPYnN0YWNrIGZvciBnbG9iYWxlIGxpdmVuZXNzIGluZm8gYml0 bWFwcy4gIFdlIGRvbid0IHdhbnQgdG8gcHV0IHRoZXNlCisgICBvbiB0aGUg ZGVmYXVsdCBvYnN0YWNrIGJlY2F1c2UgdGhlc2UgYml0bWFwcyBjYW4gZ3Jv dyBxdWl0ZSBsYXJnZSBhbmQKKyAgIHdlJ2xsIGhvbGQgb24gdG8gYWxsIHRo YXQgbWVtb3J5IHVudGlsIHRoZSBlbmQgb2YgdGhlIGNvbXBpbGVyIHJ1bi4K KyAgIEFzIGEgYm9udXMsIGRlbGV0ZV90cmVlX2xpdmVfaW5mbyBjYW4gZGVz dHJveSBhbGwgdGhlIGJpdG1hcHMgYnkganVzdAorICAgcmVsZWFzaW5nIHRo ZSB3aG9sZSBvYnN0YWNrLiAgKi8KK3N0YXRpYyBiaXRtYXBfb2JzdGFjayBs aXZlbmVzc19iaXRtYXBfb2JzdGFjazsKIAogLyogQWxsb2NhdGUgYW5kIHJl dHVybiBhIG5ldyBsaXZlIHJhbmdlIGluZm9ybWF0aW9uIG9iamVjdCBiYXNl IG9uIE1BUC4gICovCiAKQEAgLTg1NiwyNCArODYxLDI0IEBAIHN0YXRpYyB0 cmVlX2xpdmVfaW5mb19wCiBuZXdfdHJlZV9saXZlX2luZm8gKHZhcl9tYXAg bWFwKQogewogICB0cmVlX2xpdmVfaW5mb19wIGxpdmU7Ci0gIHVuc2lnbmVk IHg7CisgIGJhc2ljX2Jsb2NrIGJiOwogCi0gIGxpdmUgPSAodHJlZV9saXZl X2luZm9fcCkgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgdHJlZV9saXZlX2lu Zm9fZCkpOworICBsaXZlID0gWE5FVyAoc3RydWN0IHRyZWVfbGl2ZV9pbmZv X2QpOwogICBsaXZlLT5tYXAgPSBtYXA7CiAgIGxpdmUtPm51bV9ibG9ja3Mg PSBsYXN0X2Jhc2ljX2Jsb2NrOwogCi0gIGxpdmUtPmxpdmVpbiA9IChiaXRt YXAgKil4bWFsbG9jIChsYXN0X2Jhc2ljX2Jsb2NrICogc2l6ZW9mIChiaXRt YXApKTsKLSAgZm9yICh4ID0gMDsgeCA8ICh1bnNpZ25lZClsYXN0X2Jhc2lj X2Jsb2NrOyB4KyspCi0gICAgbGl2ZS0+bGl2ZWluW3hdID0gQklUTUFQX0FM TE9DIChOVUxMKTsKLQotICBsaXZlLT5saXZlb3V0ID0gKGJpdG1hcCAqKXht YWxsb2MgKGxhc3RfYmFzaWNfYmxvY2sgKiBzaXplb2YgKGJpdG1hcCkpOwot ICBmb3IgKHggPSAwOyB4IDwgKHVuc2lnbmVkKWxhc3RfYmFzaWNfYmxvY2s7 IHgrKykKLSAgICBsaXZlLT5saXZlb3V0W3hdID0gQklUTUFQX0FMTE9DIChO VUxMKTsKKyAgbGl2ZS0+bGl2ZWluID0gWE5FV1ZFQyAoYml0bWFwX2hlYWQs IGxhc3RfYmFzaWNfYmxvY2spOworICBGT1JfRUFDSF9CQiAoYmIpCisgICAg Yml0bWFwX2luaXRpYWxpemUgKCZsaXZlLT5saXZlaW5bYmItPmluZGV4XSwg JmxpdmVuZXNzX2JpdG1hcF9vYnN0YWNrKTsKKworICBsaXZlLT5saXZlb3V0 ID0gWE5FV1ZFQyAoYml0bWFwX2hlYWQsIGxhc3RfYmFzaWNfYmxvY2spOwor ICBGT1JfRUFDSF9CQiAoYmIpCisgICAgYml0bWFwX2luaXRpYWxpemUgKCZs aXZlLT5saXZlb3V0W2JiLT5pbmRleF0sICZsaXZlbmVzc19iaXRtYXBfb2Jz dGFjayk7CiAKICAgbGl2ZS0+d29ya19zdGFjayA9IFhORVdWRUMgKGludCwg bGFzdF9iYXNpY19ibG9jayk7CiAgIGxpdmUtPnN0YWNrX3RvcCA9IGxpdmUt Pndvcmtfc3RhY2s7CiAKLSAgbGl2ZS0+Z2xvYmFsID0gQklUTUFQX0FMTE9D IChOVUxMKTsKKyAgbGl2ZS0+Z2xvYmFsID0gQklUTUFQX0FMTE9DICgmbGl2 ZW5lc3NfYml0bWFwX29ic3RhY2spOwogICByZXR1cm4gbGl2ZTsKIH0KIApA QCAtODgzLDE5ICs4ODgsMTAgQEAgbmV3X3RyZWVfbGl2ZV9pbmZvICh2YXJf bWFwIG1hcCkKIHZvaWQKIGRlbGV0ZV90cmVlX2xpdmVfaW5mbyAodHJlZV9s aXZlX2luZm9fcCBsaXZlKQogewotICBpbnQgeDsKLQotICBCSVRNQVBfRlJF RSAobGl2ZS0+Z2xvYmFsKTsKKyAgYml0bWFwX29ic3RhY2tfcmVsZWFzZSAo JmxpdmVuZXNzX2JpdG1hcF9vYnN0YWNrKTsKICAgZnJlZSAobGl2ZS0+d29y a19zdGFjayk7Ci0KLSAgZm9yICh4ID0gbGl2ZS0+bnVtX2Jsb2NrcyAtIDE7 IHggPj0gMDsgeC0tKQotICAgIEJJVE1BUF9GUkVFIChsaXZlLT5saXZlb3V0 W3hdKTsKICAgZnJlZSAobGl2ZS0+bGl2ZW91dCk7Ci0KLSAgZm9yICh4ID0g bGl2ZS0+bnVtX2Jsb2NrcyAtIDE7IHggPj0gMDsgeC0tKQotICAgIEJJVE1B UF9GUkVFIChsaXZlLT5saXZlaW5beF0pOwogICBmcmVlIChsaXZlLT5saXZl aW4pOwotCiAgIGZyZWUgKGxpdmUpOwogfQogCkBAIC05MjgsNyArOTI0LDcg QEAgbG9lX3Zpc2l0X2Jsb2NrICh0cmVlX2xpdmVfaW5mb19wIGxpdmUsIAog CSBwcmVkZWNlc3NvciBibG9jay4gIFRoaXMgc2hvdWxkIGJlIHRoZSBsaXZl IG9uIGVudHJ5IHZhcnMgdG8gcHJlZC4KIAkgTm90ZSB0aGF0IGxpdmVvdXQg aXMgdGhlIERFRnMgaW4gYSBibG9jayB3aGlsZSBsaXZlIG9uIGVudHJ5IGlz CiAJIGJlaW5nIGNhbGN1bGF0ZWQuICAqLwotICAgICAgYml0bWFwX2FuZF9j b21wbCAodG1wLCBsb2UsIGxpdmUtPmxpdmVvdXRbcHJlZF9iYi0+aW5kZXhd KTsKKyAgICAgIGJpdG1hcF9hbmRfY29tcGwgKHRtcCwgbG9lLCAmbGl2ZS0+ bGl2ZW91dFtwcmVkX2JiLT5pbmRleF0pOwogCiAgICAgICAvKiBBZGQgdGhl c2UgYml0cyB0byBsaXZlLW9uLWVudHJ5IGZvciB0aGUgcHJlZC4gaWYgdGhl cmUgYXJlIGFueQogCSBjaGFuZ2VzLCBhbmQgcHJlZF9iYiBoYXMgYmVlbiB2 aXNpdGVkIGFscmVhZHksIGFkZCBpdCB0byB0aGUKQEAgLTk1Miw3ICs5NDgs NyBAQCBsaXZlX3dvcmtsaXN0ICh0cmVlX2xpdmVfaW5mb19wIGxpdmUpCiAg IHVuc2lnbmVkIGI7CiAgIGJhc2ljX2Jsb2NrIGJiOwogICBzYml0bWFwIHZp c2l0ZWQgPSBzYml0bWFwX2FsbG9jIChsYXN0X2Jhc2ljX2Jsb2NrICsgMSk7 Ci0gIGJpdG1hcCB0bXAgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICBiaXRt YXAgdG1wID0gQklUTUFQX0FMTE9DICgmbGl2ZW5lc3NfYml0bWFwX29ic3Rh Y2spOwogCiAgIHNiaXRtYXBfemVybyAodmlzaXRlZCk7CiAKQEAgLTk5Nyw3 ICs5OTMsNyBAQCBzZXRfdmFyX2xpdmVfb25fZW50cnkgKHRyZWUgc3NhX25h bWUsIHRyCiAgICAgICBkZWZfYmIgPSBnaW1wbGVfYmIgKHN0bXQpOwogICAg ICAgLyogTWFyayBkZWZzIGluIGxpdmVvdXQgYml0bWFwIHRlbXBvcmFyaWx5 LiAgKi8KICAgICAgIGlmIChkZWZfYmIpCi0JYml0bWFwX3NldF9iaXQgKGxp dmUtPmxpdmVvdXRbZGVmX2JiLT5pbmRleF0sIHApOworCWJpdG1hcF9zZXRf Yml0ICgmbGl2ZS0+bGl2ZW91dFtkZWZfYmItPmluZGV4XSwgcCk7CiAgICAg fQogICBlbHNlCiAgICAgZGVmX2JiID0gRU5UUllfQkxPQ0tfUFRSOwpAQCAt MTAzNiw3ICsxMDMyLDcgQEAgc2V0X3Zhcl9saXZlX29uX2VudHJ5ICh0cmVl IHNzYV9uYW1lLCB0cgogICAgICAgaWYgKGFkZF9ibG9jaykKICAgICAgICAg ewogCSAgZ2xvYmFsID0gdHJ1ZTsKLQkgIGJpdG1hcF9zZXRfYml0IChsaXZl LT5saXZlaW5bYWRkX2Jsb2NrLT5pbmRleF0sIHApOworCSAgYml0bWFwX3Nl dF9iaXQgKCZsaXZlLT5saXZlaW5bYWRkX2Jsb2NrLT5pbmRleF0sIHApOwog CX0KICAgICB9CiAKQEAgLTEwNTgsNyArMTA1NCw3IEBAIGNhbGN1bGF0ZV9s aXZlX29uX2V4aXQgKHRyZWVfbGl2ZV9pbmZvX3AKIAogICAvKiBsaXZlIG9u IGVudHJ5IGNhbGN1bGF0aW9ucyB1c2VkIGxpdmVvdXQgdmVjdG9ycyBmb3Ig ZGVmcywgY2xlYXIgdGhlbS4gICovCiAgIEZPUl9FQUNIX0JCIChiYikKLSAg ICBiaXRtYXBfY2xlYXIgKGxpdmVpbmZvLT5saXZlb3V0W2JiLT5pbmRleF0p OworICAgIGJpdG1hcF9jbGVhciAoJmxpdmVpbmZvLT5saXZlb3V0W2JiLT5p bmRleF0pOwogCiAgIC8qIFNldCBhbGwgdGhlIGxpdmUtb24tZXhpdCBiaXRz IGZvciB1c2VzIGluIFBISXMuICAqLwogICBGT1JfRUFDSF9CQiAoYmIpCkBA IC0xMDgzLDE0ICsxMDc5LDE0IEBAIGNhbGN1bGF0ZV9saXZlX29uX2V4aXQg KHRyZWVfbGl2ZV9pbmZvX3AKIAkJY29udGludWU7CiAJICAgICAgZSA9IGdp bXBsZV9waGlfYXJnX2VkZ2UgKHBoaSwgaSk7CiAJICAgICAgaWYgKGUtPnNy YyAhPSBFTlRSWV9CTE9DS19QVFIpCi0JCWJpdG1hcF9zZXRfYml0IChsaXZl aW5mby0+bGl2ZW91dFtlLT5zcmMtPmluZGV4XSwgcCk7CisJCWJpdG1hcF9z ZXRfYml0ICgmbGl2ZWluZm8tPmxpdmVvdXRbZS0+c3JjLT5pbmRleF0sIHAp OwogCSAgICB9CiAJfQogCiAgICAgICAvKiBBZGQgZWFjaCBzdWNjZXNzb3Jz IGxpdmUgb24gZW50cnkgdG8gdGhpcyBib2NrIGxpdmUgb24gZXhpdC4gICov CiAgICAgICBGT1JfRUFDSF9FREdFIChlLCBlaSwgYmItPnN1Y2NzKQogICAg ICAgICBpZiAoZS0+ZGVzdCAhPSBFWElUX0JMT0NLX1BUUikKLQkgIGJpdG1h cF9pb3JfaW50byAobGl2ZWluZm8tPmxpdmVvdXRbYmItPmluZGV4XSwKKwkg IGJpdG1hcF9pb3JfaW50byAoJmxpdmVpbmZvLT5saXZlb3V0W2JiLT5pbmRl eF0sCiAJCQkgICBsaXZlX29uX2VudHJ5IChsaXZlaW5mbywgZS0+ZGVzdCkp OwogICAgIH0KIH0KQEAgLTExMDYsNiArMTEwMiw3IEBAIGNhbGN1bGF0ZV9s aXZlX3JhbmdlcyAodmFyX21hcCBtYXApCiAgIHVuc2lnbmVkIGk7CiAgIHRy ZWVfbGl2ZV9pbmZvX3AgbGl2ZTsKIAorICBiaXRtYXBfb2JzdGFja19pbml0 aWFsaXplICgmbGl2ZW5lc3NfYml0bWFwX29ic3RhY2spOwogICBsaXZlID0g bmV3X3RyZWVfbGl2ZV9pbmZvIChtYXApOwogICBmb3IgKGkgPSAwOyBpIDwg bnVtX3Zhcl9wYXJ0aXRpb25zIChtYXApOyBpKyspCiAgICAgewpAQCAtMTE4 NSw3ICsxMTgyLDcgQEAgZHVtcF9saXZlX2luZm8gKEZJTEUgKmYsIHRyZWVf bGl2ZV9pbmZvXwogICAgICAgRk9SX0VBQ0hfQkIgKGJiKQogCXsKIAkgIGZw cmludGYgKGYsICJcbkxpdmUgb24gZW50cnkgdG8gQkIlZCA6ICIsIGJiLT5p bmRleCk7Ci0JICBFWEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAgKGxpdmUtPmxp dmVpbltiYi0+aW5kZXhdLCAwLCBpLCBiaSkKKwkgIEVYRUNVVEVfSUZfU0VU X0lOX0JJVE1BUCAoJmxpdmUtPmxpdmVpbltiYi0+aW5kZXhdLCAwLCBpLCBi aSkKIAkgICAgewogCSAgICAgIHByaW50X2dlbmVyaWNfZXhwciAoZiwgcGFy dGl0aW9uX3RvX3ZhciAobWFwLCBpKSwgVERGX1NMSU0pOwogCSAgICAgIGZw cmludGYgKGYsICIgICIpOwpAQCAtMTE5OSw3ICsxMTk2LDcgQEAgZHVtcF9s aXZlX2luZm8gKEZJTEUgKmYsIHRyZWVfbGl2ZV9pbmZvXwogICAgICAgRk9S X0VBQ0hfQkIgKGJiKQogCXsKIAkgIGZwcmludGYgKGYsICJcbkxpdmUgb24g ZXhpdCBmcm9tIEJCJWQgOiAiLCBiYi0+aW5kZXgpOwotCSAgRVhFQ1VURV9J Rl9TRVRfSU5fQklUTUFQIChsaXZlLT5saXZlb3V0W2JiLT5pbmRleF0sIDAs IGksIGJpKQorCSAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQICgmbGl2ZS0+ bGl2ZW91dFtiYi0+aW5kZXhdLCAwLCBpLCBiaSkKIAkgICAgewogCSAgICAg IHByaW50X2dlbmVyaWNfZXhwciAoZiwgcGFydGl0aW9uX3RvX3ZhciAobWFw LCBpKSwgVERGX1NMSU0pOwogCSAgICAgIGZwcmludGYgKGYsICIgICIpOwpJ bmRleDogdHJlZS1zc2EtdGVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gdHJlZS1zc2EtdGVyLmMJKHJldmlzaW9uIDE5MDQ0OCkKKysrIHRyZWUt c3NhLXRlci5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDkgQEAg dHlwZWRlZiBzdHJ1Y3QgdGVtcF9leHByX3RhYmxlX2QKIC8qIFVzZWQgdG8g aW5kaWNhdGUgYSBkZXBlbmRlbmN5IG9uIFZERUZzLiAgKi8KICNkZWZpbmUg VklSVFVBTF9QQVJUSVRJT04odGFibGUpCSh0YWJsZS0+dmlydHVhbF9wYXJ0 aXRpb24pCiAKKy8qIEEgcGxhY2UgZm9yIHRoZSBtYW55LCBtYW55IGJpdG1h cHMgd2UgY3JlYXRlLiAgKi8KK3N0YXRpYyBiaXRtYXBfb2JzdGFjayB0ZXJf Yml0bWFwX29ic3RhY2s7CisKICNpZmRlZiBFTkFCTEVfQ0hFQ0tJTkcKIGV4 dGVybiB2b2lkIGRlYnVnX3RlciAoRklMRSAqLCB0ZW1wX2V4cHJfdGFibGVf cCk7CiAjZW5kaWYKQEAgLTE5MiwxMCArMTk1LDEwIEBAIG5ld190ZW1wX2V4 cHJfdGFibGUgKHZhcl9tYXAgbWFwKQogICB0LT5leHByX2RlY2xfdWlkcyA9 IFhDTkVXVkVDIChiaXRtYXAsIG51bV9zc2FfbmFtZXMgKyAxKTsKICAgdC0+ a2lsbF9saXN0ID0gWENORVdWRUMgKGJpdG1hcCwgbnVtX3Zhcl9wYXJ0aXRp b25zIChtYXApICsgMSk7CiAKLSAgdC0+cGFydGl0aW9uX2luX3VzZSA9IEJJ VE1BUF9BTExPQyAoTlVMTCk7CisgIHQtPnBhcnRpdGlvbl9pbl91c2UgPSBC SVRNQVBfQUxMT0MgKCZ0ZXJfYml0bWFwX29ic3RhY2spOwogCiAgIHQtPnZp cnR1YWxfcGFydGl0aW9uID0gbnVtX3Zhcl9wYXJ0aXRpb25zIChtYXApOwot ICB0LT5uZXdfcmVwbGFjZWFibGVfZGVwZW5kZW5jaWVzID0gQklUTUFQX0FM TE9DIChOVUxMKTsKKyAgdC0+bmV3X3JlcGxhY2VhYmxlX2RlcGVuZGVuY2ll cyA9IEJJVE1BUF9BTExPQyAoJnRlcl9iaXRtYXBfb2JzdGFjayk7CiAKICAg dC0+cmVwbGFjZWFibGVfZXhwcmVzc2lvbnMgPSBOVUxMOwogICB0LT5udW1f aW5fcGFydCA9IFhDTkVXVkVDIChpbnQsIG51bV92YXJfcGFydGl0aW9ucyAo bWFwKSk7CkBAIC0yNjksNyArMjcyLDcgQEAgc3RhdGljIGlubGluZSB2b2lk CiBtYWtlX2RlcGVuZGVudF9vbl9wYXJ0aXRpb24gKHRlbXBfZXhwcl90YWJs ZV9wIHRhYiwgaW50IHZlcnNpb24sIGludCBwKQogewogICBpZiAoIXRhYi0+ cGFydGl0aW9uX2RlcGVuZGVuY2llc1t2ZXJzaW9uXSkKLSAgICB0YWItPnBh cnRpdGlvbl9kZXBlbmRlbmNpZXNbdmVyc2lvbl0gPSBCSVRNQVBfQUxMT0Mg KE5VTEwpOworICAgIHRhYi0+cGFydGl0aW9uX2RlcGVuZGVuY2llc1t2ZXJz aW9uXSA9IEJJVE1BUF9BTExPQyAoJnRlcl9iaXRtYXBfb2JzdGFjayk7CiAK ICAgYml0bWFwX3NldF9iaXQgKHRhYi0+cGFydGl0aW9uX2RlcGVuZGVuY2ll c1t2ZXJzaW9uXSwgcCk7CiB9CkBAIC0yODIsNyArMjg1LDcgQEAgYWRkX3Rv X3BhcnRpdGlvbl9raWxsX2xpc3QgKHRlbXBfZXhwcl90YQogewogICBpZiAo IXRhYi0+a2lsbF9saXN0W3BdKQogICAgIHsKLSAgICAgIHRhYi0+a2lsbF9s aXN0W3BdID0gQklUTUFQX0FMTE9DIChOVUxMKTsKKyAgICAgIHRhYi0+a2ls bF9saXN0W3BdID0gQklUTUFQX0FMTE9DICgmdGVyX2JpdG1hcF9vYnN0YWNr KTsKICAgICAgIGJpdG1hcF9zZXRfYml0ICh0YWItPnBhcnRpdGlvbl9pbl91 c2UsIHApOwogICAgIH0KICAgYml0bWFwX3NldF9iaXQgKHRhYi0+a2lsbF9s aXN0W3BdLCB2ZXIpOwpAQCAtMzMwLDcgKzMzMyw4IEBAIGFkZF9kZXBlbmRl bmNlICh0ZW1wX2V4cHJfdGFibGVfcCB0YWIsIGkKIAkgIC8qIFJhdGhlciB0 aGFuIHNldCBwYXJ0aXRpb25fZGVwZW5kZW5jaWVzIGFuZCBpbl91c2UgbGlz dHMgYml0IGJ5CiAJICAgICBiaXQsIHNpbXBseSBPUiBpbiB0aGUgbmV3X3Jl cGxhY2VhYmxlX2RlcGVuZGVuY2llcyBiaXRzLiAgKi8KIAkgIGlmICghdGFi LT5wYXJ0aXRpb25fZGVwZW5kZW5jaWVzW3ZlcnNpb25dKQotCSAgICB0YWIt PnBhcnRpdGlvbl9kZXBlbmRlbmNpZXNbdmVyc2lvbl0gPSBCSVRNQVBfQUxM T0MgKE5VTEwpOworCSAgICB0YWItPnBhcnRpdGlvbl9kZXBlbmRlbmNpZXNb dmVyc2lvbl0gPQorCSAgICAgIEJJVE1BUF9BTExPQyAoJnRlcl9iaXRtYXBf b2JzdGFjayk7CiAJICBiaXRtYXBfaW9yX2ludG8gKHRhYi0+cGFydGl0aW9u X2RlcGVuZGVuY2llc1t2ZXJzaW9uXSwKIAkJCSAgIHRhYi0+bmV3X3JlcGxh Y2VhYmxlX2RlcGVuZGVuY2llcyk7CiAJICBiaXRtYXBfaW9yX2ludG8gKHRh Yi0+cGFydGl0aW9uX2luX3VzZSwKQEAgLTQ5OCw3ICs1MDIsNyBAQCBwcm9j ZXNzX3JlcGxhY2VhYmxlICh0ZW1wX2V4cHJfdGFibGVfcCB0CiAKICAgZGVm ID0gU0lOR0xFX1NTQV9UUkVFX09QRVJBTkQgKHN0bXQsIFNTQV9PUF9ERUYp OwogICB2ZXJzaW9uID0gU1NBX05BTUVfVkVSU0lPTiAoZGVmKTsKLSAgZGVm X3ZhcnMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICBkZWZfdmFycyA9IEJJ VE1BUF9BTExPQyAoJnRlcl9iaXRtYXBfb2JzdGFjayk7CiAKICAgYmFzZXZh ciA9IFNTQV9OQU1FX1ZBUiAoZGVmKTsKICAgaWYgKGJhc2V2YXIpCkBAIC01 NzgsNyArNTgyLDkgQEAgbWFya19yZXBsYWNlYWJsZSAodGVtcF9leHByX3Rh YmxlX3AgdGFiLAogCiAgIGZpbmlzaGVkX3dpdGhfZXhwciAodGFiLCB2ZXJz aW9uLCAhbW9yZV9yZXBsYWNpbmcpOwogCi0gIC8qIFNldCB0aGUgcmVwbGFj ZWFibGUgZXhwcmVzc2lvbi4gICovCisgIC8qIFNldCB0aGUgcmVwbGFjZWFi bGUgZXhwcmVzc2lvbi4KKyAgICAgVGhlIGJpdG1hcCBmb3IgdGhpcyAiZXNj YXBlcyIgZnJvbSB0aGlzIGZpbGUgc28gaXQncyBhbGxvY2F0ZWQKKyAgICAg b24gdGhlIGRlZmF1bHQgb2JzdGFjay4gICovCiAgIGlmICghdGFiLT5yZXBs YWNlYWJsZV9leHByZXNzaW9ucykKICAgICB0YWItPnJlcGxhY2VhYmxlX2V4 cHJlc3Npb25zID0gQklUTUFQX0FMTE9DIChOVUxMKTsKICAgYml0bWFwX3Nl dF9iaXQgKHRhYi0+cmVwbGFjZWFibGVfZXhwcmVzc2lvbnMsIHZlcnNpb24p OwpAQCAtNzA2LDIxICs3MTIsMjIgQEAgZmluZF9yZXBsYWNlYWJsZV9pbl9i YiAodGVtcF9leHByX3RhYmxlXwogICAgTlVMTCBpcyByZXR1cm5lZCBieSB0 aGUgZnVuY3Rpb24sIG90aGVyd2lzZSBhbiBleHByZXNzaW9uIHZlY3RvciBp bmRleGVkCiAgICBieSBTU0FfTkFNRSB2ZXJzaW9uIG51bWJlcnMuICAqLwog Ci1leHRlcm4gYml0bWFwCitiaXRtYXAKIGZpbmRfcmVwbGFjZWFibGVfZXhw cnMgKHZhcl9tYXAgbWFwKQogewogICBiYXNpY19ibG9jayBiYjsKICAgdGVt cF9leHByX3RhYmxlX3AgdGFibGU7CiAgIGJpdG1hcCByZXQ7CiAKKyAgYml0 bWFwX29ic3RhY2tfaW5pdGlhbGl6ZSAoJnRlcl9iaXRtYXBfb2JzdGFjayk7 CiAgIHRhYmxlID0gbmV3X3RlbXBfZXhwcl90YWJsZSAobWFwKTsKICAgRk9S X0VBQ0hfQkIgKGJiKQogICAgIHsKICAgICAgIGZpbmRfcmVwbGFjZWFibGVf aW5fYmIgKHRhYmxlLCBiYik7CiAgICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0 IChiaXRtYXBfZW1wdHlfcCAodGFibGUtPnBhcnRpdGlvbl9pbl91c2UpKTsK ICAgICB9Ci0KICAgcmV0ID0gZnJlZV90ZW1wX2V4cHJfdGFibGUgKHRhYmxl KTsKKyAgYml0bWFwX29ic3RhY2tfcmVsZWFzZSAoJnRlcl9iaXRtYXBfb2Jz dGFjayk7CiAgIHJldHVybiByZXQ7CiB9CiAKSW5kZXg6IGRmLXByb2JsZW1z LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZGYtcHJvYmxlbXMuYwko cmV2aXNpb24gMTkwNDQ4KQorKysgZGYtcHJvYmxlbXMuYwkod29ya2luZyBj b3B5KQpAQCAtMTIyOCw3ICsxMjI4LDcgQEAgZGZfbHJfYWRkX3Byb2JsZW0g KHZvaWQpCiAgIGRmX2FkZF9wcm9ibGVtICgmcHJvYmxlbV9MUik7CiAgIC8q IFRoZXNlIHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2hlbiBkZl9zY2FuX2Jsb2Nr cyBwcm9jZXNzZXMgZWFjaAogICAgICBibG9jay4gICovCi0gIGRmX2xyLT5v dXRfb2ZfZGF0ZV90cmFuc2Zlcl9mdW5jdGlvbnMgPSBCSVRNQVBfQUxMT0Mg KE5VTEwpOworICBkZl9sci0+b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rp b25zID0gQklUTUFQX0FMTE9DICgmZGZfYml0bWFwX29ic3RhY2spOwogfQog CiAKQEAgLTE3NTcsNyArMTc1Nyw3IEBAIGRmX2xpdmVfYWRkX3Byb2JsZW0g KHZvaWQpCiAgIGRmX2FkZF9wcm9ibGVtICgmcHJvYmxlbV9MSVZFKTsKICAg LyogVGhlc2Ugd2lsbCBiZSBpbml0aWFsaXplZCB3aGVuIGRmX3NjYW5fYmxv Y2tzIHByb2Nlc3NlcyBlYWNoCiAgICAgIGJsb2NrLiAgKi8KLSAgZGZfbGl2 ZS0+b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rpb25zID0gQklUTUFQX0FM TE9DIChOVUxMKTsKKyAgZGZfbGl2ZS0+b3V0X29mX2RhdGVfdHJhbnNmZXJf ZnVuY3Rpb25zID0gQklUTUFQX0FMTE9DICgmZGZfYml0bWFwX29ic3RhY2sp OwogfQogCiAKQEAgLTIyODMsNyArMjI4Myw3IEBAIGRmX2NoYWluX2FkZF9w cm9ibGVtICh1bnNpZ25lZCBpbnQgY2hhaW4KIHsKICAgZGZfYWRkX3Byb2Js ZW0gKCZwcm9ibGVtX0NIQUlOKTsKICAgZGZfY2hhaW4tPmxvY2FsX2ZsYWdz ID0gY2hhaW5fZmxhZ3M7Ci0gIGRmX2NoYWluLT5vdXRfb2ZfZGF0ZV90cmFu c2Zlcl9mdW5jdGlvbnMgPSBCSVRNQVBfQUxMT0MgKE5VTEwpOworICBkZl9j aGFpbi0+b3V0X29mX2RhdGVfdHJhbnNmZXJfZnVuY3Rpb25zID0gQklUTUFQ X0FMTE9DICgmZGZfYml0bWFwX29ic3RhY2spOwogfQogCiAjdW5kZWYgZGZf Y2hhaW5fcHJvYmxlbV9wCkBAIC0yNjYyLDcgKzI2NjIsNyBAQCBkZl93b3Jk X2xyX2FkZF9wcm9ibGVtICh2b2lkKQogICBkZl9hZGRfcHJvYmxlbSAoJnBy b2JsZW1fV09SRF9MUik7CiAgIC8qIFRoZXNlIHdpbGwgYmUgaW5pdGlhbGl6 ZWQgd2hlbiBkZl9zY2FuX2Jsb2NrcyBwcm9jZXNzZXMgZWFjaAogICAgICBi bG9jay4gICovCi0gIGRmX3dvcmRfbHItPm91dF9vZl9kYXRlX3RyYW5zZmVy X2Z1bmN0aW9ucyA9IEJJVE1BUF9BTExPQyAoTlVMTCk7CisgIGRmX3dvcmRf bHItPm91dF9vZl9kYXRlX3RyYW5zZmVyX2Z1bmN0aW9ucyA9IEJJVE1BUF9B TExPQyAoJmRmX2JpdG1hcF9vYnN0YWNrKTsKIH0KIAogCg== --e89a8f2345675cf0e004c770c3f1--