Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261224AbULAEGh (ORCPT ); Tue, 30 Nov 2004 23:06:37 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261227AbULAEGh (ORCPT ); Tue, 30 Nov 2004 23:06:37 -0500 Received: from adsl-63-197-226-105.dsl.snfc21.pacbell.net ([63.197.226.105]:47298 "EHLO cheetah.davemloft.net") by vger.kernel.org with ESMTP id S261224AbULAEE4 (ORCPT ); Tue, 30 Nov 2004 23:04:56 -0500 Date: Tue, 30 Nov 2004 20:01:54 -0800 From: "David S. Miller" To: Benjamin Herrenschmidt Cc: Ian.Pratt@cl.cam.ac.uk, linux-kernel@vger.kernel.org, Steven.Hand@cl.cam.ac.uk, Christian.Limpach@cl.cam.ac.uk, Keir.Fraser@cl.cam.ac.uk, akpm@osdl.org, davem@redhat.com Subject: Re: [1/7] Xen VMM #3: add ptep_establish_new to make va available Message-Id: <20041130200154.55827dd5.davem@davemloft.net> In-Reply-To: <1101857266.5174.26.camel@gaston> References: <1101857266.5174.26.camel@gaston> X-Mailer: Sylpheed version 1.0.0beta3 (GTK+ 1.2.10; sparc-unknown-linux-gnu) X-Face: "_;p5u5aPsO,_Vsx"^v-pEq09'CU4&Dc1$fQExov$62l60cgCc%FnIwD=.UF^a>?5'9Kn[;433QFVV9M..2eN.@4ZWPGbdi<=?[:T>y?SD(R*-3It"Vj:)"dP Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Tue__30_Nov_2004_20_01_54_-0800_Z4DWOb+8G13xY9mU" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 63728 Lines: 861 This is a multi-part message in MIME format. --Multipart=_Tue__30_Nov_2004_20_01_54_-0800_Z4DWOb+8G13xY9mU Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Wed, 01 Dec 2004 10:27:45 +1100 Benjamin Herrenschmidt wrote: > On Tue, 2004-11-30 at 23:05 +0000, Ian Pratt wrote: > > > I'd appreciate a pointer to the patch. > > Well, I was hoping that David would reply with one :) It wasn't ported > to all archs tho, but I did ppc & ppc64, and he did x86 & sparc iirc Attached, as a set of 3 diffs. It's against an old tree so probably won't apply cleanly. --Multipart=_Tue__30_Nov_2004_20_01_54_-0800_Z4DWOb+8G13xY9mU Content-Type: application/octet-stream; name="diff1" Content-Disposition: attachment; filename="diff1" Content-Transfer-Encoding: base64 IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guCiMK IyBDaGFuZ2VTZXQKIyAgIDIwMDQvMDgvMjMgMTQ6NDQ6NTQtMDc6MDAgZGF2ZW1AbnV0cy5kYXZl bWxvZnQubmV0IAojICAgW01NXTogTWFrZSBzZXRfcHRlKCkgdGFrZSBtbSBhbmQgYWRkcmVzcyBh cmd1bWVudHMuCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1A cmVkaGF0LmNvbT4KIyAKIyBtbS92bWFsbG9jLmMKIyAgIDIwMDQvMDgvMjMgMTQ6NDQ6MzctMDc6 MDAgZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0ICsyIC0yCiMgICBbTU1dOiBNYWtlIHNldF9wdGUo KSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIG1tL3N3YXBmaWxlLmMKIyAg IDIwMDQvMDgvMjMgMTQ6NDQ6MzctMDc6MDAgZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0ICsyIC0x CiMgICBbTU1dOiBNYWtlIHNldF9wdGUoKSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4K IyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29t PgojIAojIG1tL3JtYXAuYwojICAgMjAwNC8wOC8yMyAxNDo0NDozNy0wNzowMCBkYXZlbUBudXRz LmRhdmVtbG9mdC5uZXQgKzIgLTIKIyAgIFtNTV06IE1ha2Ugc2V0X3B0ZSgpIHRha2UgbW0gYW5k IGFkZHJlc3MgYXJndW1lbnRzLgojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQHJlZGhhdC5jb20+CiMgCiMgbW0vbXJlbWFwLmMKIyAgIDIwMDQvMDgvMjMgMTQ6 NDQ6MzYtMDc6MDAgZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0ICsxIC0xCiMgICBbTU1dOiBNYWtl IHNldF9wdGUoKSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KIyAgIAojICAgU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIG1tL21wcm90 ZWN0LmMKIyAgIDIwMDQvMDgvMjMgMTQ6NDQ6MzYtMDc6MDAgZGF2ZW1AbnV0cy5kYXZlbWxvZnQu bmV0ICs4IC04CiMgICBbTU1dOiBNYWtlIHNldF9wdGUoKSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFy Z3VtZW50cy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBy ZWRoYXQuY29tPgojIAojIG1tL21lbW9yeS5jCiMgICAyMDA0LzA4LzIzIDE0OjQ0OjM2LTA3OjAw IGRhdmVtQG51dHMuZGF2ZW1sb2Z0Lm5ldCArMjIgLTE5CiMgICBbTU1dOiBNYWtlIHNldF9wdGUo KSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIG1tL2ZyZW1hcC5jCiMgICAy MDA0LzA4LzIzIDE0OjQ0OjM2LTA3OjAwIGRhdmVtQG51dHMuZGF2ZW1sb2Z0Lm5ldCArMyAtMwoj ICAgW01NXTogTWFrZSBzZXRfcHRlKCkgdGFrZSBtbSBhbmQgYWRkcmVzcyBhcmd1bWVudHMuCiMg ICAKIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AcmVkaGF0LmNvbT4K IyAKIyBpbmNsdWRlL2FzbS1zcGFyYzY0L3BndGFibGUuaAojICAgMjAwNC8wOC8yMyAxNDo0NDoz Ni0wNzowMCBkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQgKzYgLTQKIyAgIFtNTV06IE1ha2Ugc2V0 X3B0ZSgpIHRha2UgbW0gYW5kIGFkZHJlc3MgYXJndW1lbnRzLgojICAgCiMgICBTaWduZWQtb2Zm LWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQHJlZGhhdC5jb20+CiMgCiMgaW5jbHVkZS9hc20t c3BhcmM2NC9wZ2FsbG9jLmgKIyAgIDIwMDQvMDgvMjMgMTQ6NDQ6MzYtMDc6MDAgZGF2ZW1AbnV0 cy5kYXZlbWxvZnQubmV0ICs1IC0xNQojICAgW01NXTogTWFrZSBzZXRfcHRlKCkgdGFrZSBtbSBh bmQgYWRkcmVzcyBhcmd1bWVudHMuCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AcmVkaGF0LmNvbT4KIyAKIyBpbmNsdWRlL2FzbS1nZW5lcmljL3BndGFibGUu aAojICAgMjAwNC8wOC8yMyAxNDo0NDozNi0wNzowMCBkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQg KzM4IC0zNwojICAgW01NXTogTWFrZSBzZXRfcHRlKCkgdGFrZSBtbSBhbmQgYWRkcmVzcyBhcmd1 bWVudHMuCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AcmVk aGF0LmNvbT4KIyAKIyBmcy9leGVjLmMKIyAgIDIwMDQvMDgvMjMgMTQ6NDQ6MzYtMDc6MDAgZGF2 ZW1AbnV0cy5kYXZlbWxvZnQubmV0ICsxIC0xCiMgICBbTU1dOiBNYWtlIHNldF9wdGUoKSB0YWtl IG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIGFyY2gvc3BhcmM2NC9tbS90bGIuYwoj ICAgMjAwNC8wOC8yMyAxNDo0NDozNi0wNzowMCBkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQgKzcg LTEwCiMgICBbTU1dOiBNYWtlIHNldF9wdGUoKSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50 cy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQu Y29tPgojIAojIGFyY2gvc3BhcmM2NC9tbS9pbml0LmMKIyAgIDIwMDQvMDgvMjMgMTQ6NDQ6MzYt MDc6MDAgZGF2ZW1AbnV0cy5kYXZlbWxvZnQubmV0ICsyIC0xCiMgICBbTU1dOiBNYWtlIHNldF9w dGUoKSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4KIyAgIAojICAgU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIGFyY2gvc3BhcmM2NC9t bS9odWdldGxicGFnZS5jCiMgICAyMDA0LzA4LzIzIDE0OjQ0OjM2LTA3OjAwIGRhdmVtQG51dHMu ZGF2ZW1sb2Z0Lm5ldCArMTUgLTcKIyAgIFtNTV06IE1ha2Ugc2V0X3B0ZSgpIHRha2UgbW0gYW5k IGFkZHJlc3MgYXJndW1lbnRzLgojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQHJlZGhhdC5jb20+CiMgCiMgYXJjaC9zcGFyYzY0L21tL2dlbmVyaWMuYwojICAg MjAwNC8wOC8yMyAxNDo0NDozNi0wNzowMCBkYXZlbUBudXRzLmRhdmVtbG9mdC5uZXQgKzE3IC04 CiMgICBbTU1dOiBNYWtlIHNldF9wdGUoKSB0YWtlIG1tIGFuZCBhZGRyZXNzIGFyZ3VtZW50cy4K IyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29t PgojIApkaWZmIC1OcnUgYS9hcmNoL3NwYXJjNjQvbW0vZ2VuZXJpYy5jIGIvYXJjaC9zcGFyYzY0 L21tL2dlbmVyaWMuYwotLS0gYS9hcmNoL3NwYXJjNjQvbW0vZ2VuZXJpYy5jCTIwMDQtMTEtMzAg MTk6Mzc6MjcgLTA4OjAwCisrKyBiL2FyY2gvc3BhcmM2NC9tbS9nZW5lcmljLmMJMjAwNC0xMS0z MCAxOTozNzoyNyAtMDg6MDAKQEAgLTMzLDggKzMzLDEyIEBACiAgKiBzaWRlLWVmZmVjdCBiaXQg d2lsbCBiZSB0dXJuZWQgb2ZmLiAgVGhpcyBpcyB1c2VkIGFzIGEKICAqIHBlcmZvcm1hbmNlIGlt cHJvdmVtZW50IG9uIEZGQi9BRkIuIC1EYXZlTQogICovCi1zdGF0aWMgaW5saW5lIHZvaWQgaW9f cmVtYXBfcHRlX3JhbmdlKHB0ZV90ICogcHRlLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2ln bmVkIGxvbmcgc2l6ZSwKLQl1bnNpZ25lZCBsb25nIG9mZnNldCwgcGdwcm90X3QgcHJvdCwgaW50 IHNwYWNlKQorc3RhdGljIGlubGluZSB2b2lkIGlvX3JlbWFwX3B0ZV9yYW5nZShzdHJ1Y3QgbW1f c3RydWN0ICptbSwgcHRlX3QgKiBwdGUsCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAorCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25n IG9mZnNldCwKKwkJCQkgICAgICBwZ3Byb3RfdCBwcm90LAorCQkJCSAgICAgIGludCBzcGFjZSkK IHsKIAl1bnNpZ25lZCBsb25nIGVuZDsKIApAQCAtNzYsOCArODAsOCBAQAogCQkJcHRlX3ZhbChl bnRyeSkgJj0gfihfUEFHRV9FKTsKIAkJZG8gewogCQkJb2xkcGFnZSA9ICpwdGU7Ci0JCQlwdGVf Y2xlYXIocHRlKTsKLQkJCXNldF9wdGUocHRlLCBlbnRyeSk7CisJCQlwdGVfY2xlYXIobW0sIGFk ZHJlc3MsIHB0ZSk7CisJCQlzZXRfcHRlKG1tLCBhZGRyZXNzLCBwdGUsIGVudHJ5KTsKIAkJCWZv cmdldF9wdGUob2xkcGFnZSk7CiAJCQlhZGRyZXNzICs9IFBBR0VfU0laRTsKIAkJCXB0ZSsrOwpA QCAtODUsOCArODksMTIgQEAKIAl9IHdoaWxlIChhZGRyZXNzIDwgZW5kKTsKIH0KIAotc3RhdGlj IGlubGluZSBpbnQgaW9fcmVtYXBfcG1kX3JhbmdlKHBtZF90ICogcG1kLCB1bnNpZ25lZCBsb25n IGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKLQl1bnNpZ25lZCBsb25nIG9mZnNldCwgcGdw cm90X3QgcHJvdCwgaW50IHNwYWNlKQorc3RhdGljIGlubGluZSBpbnQgaW9fcmVtYXBfcG1kX3Jh bmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqIHBtZCwKKwkJCQkgICAgIHVuc2lnbmVk IGxvbmcgYWRkcmVzcywKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJCQkgICAgIHVu c2lnbmVkIGxvbmcgb2Zmc2V0LAorCQkJCSAgICAgcGdwcm90X3QgcHJvdCwKKwkJCQkgICAgIGlu dCBzcGFjZSkKIHsKIAl1bnNpZ25lZCBsb25nIGVuZDsKIApAQCAtOTksNyArMTA3LDcgQEAKIAkJ cHRlX3QgKiBwdGUgPSBwdGVfYWxsb2NfbWFwKGN1cnJlbnQtPm1tLCBwbWQsIGFkZHJlc3MpOwog CQlpZiAoIXB0ZSkKIAkJCXJldHVybiAtRU5PTUVNOwotCQlpb19yZW1hcF9wdGVfcmFuZ2UocHRl LCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzLCBhZGRyZXNzICsgb2Zmc2V0LCBwcm90LCBzcGFjZSk7 CisJCWlvX3JlbWFwX3B0ZV9yYW5nZShtbSwgcHRlLCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzLCBh ZGRyZXNzICsgb2Zmc2V0LCBwcm90LCBzcGFjZSk7CiAJCXB0ZV91bm1hcChwdGUpOwogCQlhZGRy ZXNzID0gKGFkZHJlc3MgKyBQTURfU0laRSkgJiBQTURfTUFTSzsKIAkJcG1kKys7CkBAIC0xMjYs NyArMTM0LDggQEAKIAkJZXJyb3IgPSAtRU5PTUVNOwogCQlpZiAoIXBtZCkKIAkJCWJyZWFrOwot CQllcnJvciA9IGlvX3JlbWFwX3BtZF9yYW5nZShwbWQsIGZyb20sIGVuZCAtIGZyb20sIG9mZnNl dCArIGZyb20sIHByb3QsIHNwYWNlKTsKKwkJZXJyb3IgPSBpb19yZW1hcF9wbWRfcmFuZ2UobW0s IHBtZCwgZnJvbSwgZW5kIC0gZnJvbSwKKwkJCQkJICAgb2Zmc2V0ICsgZnJvbSwgcHJvdCwgc3Bh Y2UpOwogCQlpZiAoZXJyb3IpCiAJCQlicmVhazsKIAkJZnJvbSA9IChmcm9tICsgUEdESVJfU0la RSkgJiBQR0RJUl9NQVNLOwpkaWZmIC1OcnUgYS9hcmNoL3NwYXJjNjQvbW0vaHVnZXRsYnBhZ2Uu YyBiL2FyY2gvc3BhcmM2NC9tbS9odWdldGxicGFnZS5jCi0tLSBhL2FyY2gvc3BhcmM2NC9tbS9o dWdldGxicGFnZS5jCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCisrKyBiL2FyY2gvc3BhcmM2 NC9tbS9odWdldGxicGFnZS5jCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCkBAIC01Myw4ICs1 MywxMiBAQAogCiAjZGVmaW5lIG1rX3B0ZV9odWdlKGVudHJ5KSBkbyB7IHB0ZV92YWwoZW50cnkp IHw9IF9QQUdFX1NaSFVHRTsgfSB3aGlsZSAoMCkKIAotc3RhdGljIHZvaWQgc2V0X2h1Z2VfcHRl KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKLQkJCSBz dHJ1Y3QgcGFnZSAqcGFnZSwgcHRlX3QgKiBwYWdlX3RhYmxlLCBpbnQgd3JpdGVfYWNjZXNzKQor c3RhdGljIHZvaWQgc2V0X2h1Z2VfcHRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAorCQkJIHVuc2ln bmVkIGxvbmcgYWRkciwKKwkJCSBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJCSBzdHJ1 Y3QgcGFnZSAqcGFnZSwKKwkJCSBwdGVfdCAqcGFnZV90YWJsZSwKKwkJCSBpbnQgd3JpdGVfYWNj ZXNzKQogewogCXVuc2lnbmVkIGxvbmcgaTsKIAlwdGVfdCBlbnRyeTsKQEAgLTcwLDcgKzc0LDcg QEAKIAlta19wdGVfaHVnZShlbnRyeSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgKDEgPDwgSFVHRVRM Ql9QQUdFX09SREVSKTsgaSsrKSB7Ci0JCXNldF9wdGUocGFnZV90YWJsZSwgZW50cnkpOworCQlz ZXRfcHRlKG1tLCBhZGRyLCBwYWdlX3RhYmxlLCBlbnRyeSk7CiAJCXBhZ2VfdGFibGUrKzsKIAog CQlwdGVfdmFsKGVudHJ5KSArPSBQQUdFX1NJWkU7CkBAIC0xMDgsMTIgKzExMiwxMiBAQAogCQlw dGVwYWdlID0gcHRlX3BhZ2UoZW50cnkpOwogCQlnZXRfcGFnZShwdGVwYWdlKTsKIAkJZm9yIChp ID0gMDsgaSA8ICgxIDw8IEhVR0VUTEJfUEFHRV9PUkRFUik7IGkrKykgewotCQkJc2V0X3B0ZShk c3RfcHRlLCBlbnRyeSk7CisJCQlzZXRfcHRlKGRzdCwgYWRkciwgZHN0X3B0ZSwgZW50cnkpOwog CQkJcHRlX3ZhbChlbnRyeSkgKz0gUEFHRV9TSVpFOwogCQkJZHN0X3B0ZSsrOworCQkJYWRkciAr PSBQQUdFX1NJWkU7CiAJCX0KIAkJZHN0LT5yc3MgKz0gKEhQQUdFX1NJWkUgLyBQQUdFX1NJWkUp OwotCQlhZGRyICs9IEhQQUdFX1NJWkU7CiAJfQogCXJldHVybiAwOwogCkBAIC0xOTIsNiArMTk2 LDggQEAKIAlCVUdfT04oZW5kICYgKEhQQUdFX1NJWkUgLSAxKSk7CiAKIAlmb3IgKGFkZHJlc3Mg PSBzdGFydDsgYWRkcmVzcyA8IGVuZDsgYWRkcmVzcyArPSBIUEFHRV9TSVpFKSB7CisJCXVuc2ln bmVkIGxvbmcgYWRkciA9IGFkZHJlc3M7CisKIAkJcHRlID0gaHVnZV9wdGVfb2Zmc2V0KG1tLCBh ZGRyZXNzKTsKIAkJQlVHX09OKCFwdGUpOwogCQlpZiAocHRlX25vbmUoKnB0ZSkpCkBAIC0xOTks OCArMjA1LDkgQEAKIAkJcGFnZSA9IHB0ZV9wYWdlKCpwdGUpOwogCQlwdXRfcGFnZShwYWdlKTsK IAkJZm9yIChpID0gMDsgaSA8ICgxIDw8IEhVR0VUTEJfUEFHRV9PUkRFUik7IGkrKykgewotCQkJ cHRlX2NsZWFyKHB0ZSk7CisJCQlwdGVfY2xlYXIobW0sIGFkZHIsIHB0ZSk7CiAJCQlwdGUrKzsK KwkJCWFkZHIgKz0gUEFHRV9TSVpFOwogCQl9CiAJfQogCW1tLT5yc3MgLT0gKGVuZCAtIHN0YXJ0 KSA+PiBQQUdFX1NISUZUOwpAQCAtMjUzLDcgKzI2MCw4IEBACiAJCQkJZ290byBvdXQ7CiAJCQl9 CiAJCX0KLQkJc2V0X2h1Z2VfcHRlKG1tLCB2bWEsIHBhZ2UsIHB0ZSwgdm1hLT52bV9mbGFncyAm IFZNX1dSSVRFKTsKKwkJc2V0X2h1Z2VfcHRlKG1tLCBhZGRyLCB2bWEsIHBhZ2UsIHB0ZSwKKwkJ CSAgICAgdm1hLT52bV9mbGFncyAmIFZNX1dSSVRFKTsKIAl9CiBvdXQ6CiAJc3Bpbl91bmxvY2so Jm1tLT5wYWdlX3RhYmxlX2xvY2spOwpkaWZmIC1OcnUgYS9hcmNoL3NwYXJjNjQvbW0vaW5pdC5j IGIvYXJjaC9zcGFyYzY0L21tL2luaXQuYwotLS0gYS9hcmNoL3NwYXJjNjQvbW0vaW5pdC5jCTIw MDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCisrKyBiL2FyY2gvc3BhcmM2NC9tbS9pbml0LmMJMjAw NC0xMS0zMCAxOTozNzoyNyAtMDg6MDAKQEAgLTQzMCw3ICs0MzAsOCBAQAogCQkJCWlmICh0bGJf dHlwZSA9PSBzcGl0ZmlyZSkKIAkJCQkJdmFsICY9IH4weDAwMDNmZTAwMDAwMDAwMDBVTDsKIAot CQkJCXNldF9wdGUgKHB0ZXAsIF9fcHRlKHZhbCB8IF9QQUdFX01PRElGSUVEKSk7CisJCQkJc2V0 X3B0ZSgmaW5pdF9tbSwgdmFkZHIsCisJCQkJCXB0ZXAsIF9fcHRlKHZhbCB8IF9QQUdFX01PRElG SUVEKSk7CiAJCQkJdHJhbnNbaV0uZGF0YSArPSBCQVNFX1BBR0VfU0laRTsKIAkJCX0KIAkJfQpk aWZmIC1OcnUgYS9hcmNoL3NwYXJjNjQvbW0vdGxiLmMgYi9hcmNoL3NwYXJjNjQvbW0vdGxiLmMK LS0tIGEvYXJjaC9zcGFyYzY0L21tL3RsYi5jCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCisr KyBiL2FyY2gvc3BhcmM2NC9tbS90bGIuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODowMApAQCAt NDEsMTUgKzQxLDExIEBACiAJfQogfQogCi12b2lkIHRsYl9iYXRjaF9hZGQocHRlX3QgKnB0ZXAs IHB0ZV90IG9yaWcpCit2b2lkIHRsYl9iYXRjaF9hZGQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVu c2lnbmVkIGxvbmcgdmFkZHIsCisJCSAgIHB0ZV90ICpwdGVwLCBwdGVfdCBvcmlnKQogewotCXN0 cnVjdCBtbXVfZ2F0aGVyICptcCA9ICZfX2dldF9jcHVfdmFyKG1tdV9nYXRoZXJzKTsKLQlzdHJ1 Y3QgcGFnZSAqcHRlcGFnZTsKLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKLQl1bnNpZ25lZCBsb25n IHZhZGRyLCBucjsKLQotCXB0ZXBhZ2UgPSB2aXJ0X3RvX3BhZ2UocHRlcCk7Ci0JbW0gPSAoc3Ry dWN0IG1tX3N0cnVjdCAqKSBwdGVwYWdlLT5tYXBwaW5nOworCXN0cnVjdCBtbXVfZ2F0aGVyICpt cDsKKwl1bnNpZ25lZCBsb25nIG5yOwogCiAJLyogSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gbGV0 IGZsdXNoX3RsYl9rZXJuZWxfcmFuZ2UoKQogCSAqIGhhbmRsZSB0aGVzZSBjYXNlcy4KQEAgLTU3 LDggKzUzLDkgQEAKIAlpZiAobW0gPT0gJmluaXRfbW0pCiAJCXJldHVybjsKIAotCXZhZGRyID0g cHRlcGFnZS0+aW5kZXggKwotCQkoKCh1bnNpZ25lZCBsb25nKXB0ZXAgJiB+UEFHRV9NQVNLKSAq IFBUUlNfUEVSX1BURSk7CisJbXAgPSAmX19nZXRfY3B1X3ZhcihtbXVfZ2F0aGVycyk7CisKKwl2 YWRkciAmPSBQQUdFX01BU0s7CiAJaWYgKHB0ZV9leGVjKG9yaWcpKQogCQl2YWRkciB8PSAweDFV TDsKIApkaWZmIC1OcnUgYS9mcy9leGVjLmMgYi9mcy9leGVjLmMKLS0tIGEvZnMvZXhlYy5jCTIw MDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCisrKyBiL2ZzL2V4ZWMuYwkyMDA0LTExLTMwIDE5OjM3 OjI3IC0wODowMApAQCAtMzIxLDcgKzMyMSw3IEBACiAJfQogCW1tLT5yc3MrKzsKIAlscnVfY2Fj aGVfYWRkX2FjdGl2ZShwYWdlKTsKLQlzZXRfcHRlKHB0ZSwgcHRlX21rZGlydHkocHRlX21rd3Jp dGUobWtfcHRlKAorCXNldF9wdGUobW0sIGFkZHJlc3MsIHB0ZSwgcHRlX21rZGlydHkocHRlX21r d3JpdGUobWtfcHRlKAogCQkJCQlwYWdlLCB2bWEtPnZtX3BhZ2VfcHJvdCkpKSk7CiAJcGFnZV9h ZGRfYW5vbl9ybWFwKHBhZ2UsIHZtYSwgYWRkcmVzcyk7CiAJcHRlX3VubWFwKHB0ZSk7CmRpZmYg LU5ydSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS5oIGIvaW5jbHVkZS9hc20tZ2VuZXJp Yy9wZ3RhYmxlLmgKLS0tIGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9wZ3RhYmxlLmgJMjAwNC0xMS0z MCAxOTozNzoyNyAtMDg6MDAKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9wZ3RhYmxlLmgJMjAw NC0xMS0zMCAxOTozNzoyNyAtMDg6MDAKQEAgLTE1LDcgKzE1LDcgQEAKICAqLwogI2RlZmluZSBw dGVwX2VzdGFibGlzaChfX3ZtYSwgX19hZGRyZXNzLCBfX3B0ZXAsIF9fZW50cnkpCQlcCiBkbyB7 CQkJCSAgCQkJCQlcCi0Jc2V0X3B0ZShfX3B0ZXAsIF9fZW50cnkpOwkJCQkJXAorCXNldF9wdGUo KF9fdm1hKS0+dm1fbW0sIChfX2FkZHJlc3MpLCBfX3B0ZXAsIF9fZW50cnkpOwkJXAogCWZsdXNo X3RsYl9wYWdlKF9fdm1hLCBfX2FkZHJlc3MpOwkJCQlcCiB9IHdoaWxlICgwKQogI2VuZGlmCkBA IC0yOSwyNiArMjksMzAgQEAKICAqLwogI2RlZmluZSBwdGVwX3NldF9hY2Nlc3NfZmxhZ3MoX192 bWEsIF9fYWRkcmVzcywgX19wdGVwLCBfX2VudHJ5LCBfX2RpcnR5KSBcCiBkbyB7CQkJCSAgCQkJ CQkgIFwKLQlzZXRfcHRlKF9fcHRlcCwgX19lbnRyeSk7CQkJCQkgIFwKKwlzZXRfcHRlKChfX3Zt YSktPnZtX21tLCAoX19hZGRyZXNzKSwgX19wdGVwLCBfX2VudHJ5KTsJCSAgXAogCWZsdXNoX3Rs Yl9wYWdlKF9fdm1hLCBfX2FkZHJlc3MpOwkJCQkgIFwKIH0gd2hpbGUgKDApCiAjZW5kaWYKIAog I2lmbmRlZiBfX0hBVkVfQVJDSF9QVEVQX1RFU1RfQU5EX0NMRUFSX1lPVU5HCi1zdGF0aWMgaW5s aW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHB0ZV90ICpwdGVwKQotewotCXB0ZV90 IHB0ZSA9ICpwdGVwOwotCWlmICghcHRlX3lvdW5nKHB0ZSkpCi0JCXJldHVybiAwOwotCXNldF9w dGUocHRlcCwgcHRlX21rb2xkKHB0ZSkpOwotCXJldHVybiAxOwotfQorI2RlZmluZSBwdGVwX3Rl c3RfYW5kX2NsZWFyX3lvdW5nKF9fdm1hLCBfX2FkZHJlc3MsIF9fcHRlcCkJCVwKKyh7CQkJCQkJ CQkJXAorCXB0ZV90IF9fcHRlID0gKihfX3B0ZXApOwkJCQkJXAorCWludCByID0gMTsJCQkJCQkJ XAorCWlmICghcHRlX3lvdW5nKF9fcHRlKSkJCQkJCQlcCisJCXIgPSAwOwkJCQkJCQlcCisJZWxz ZQkJCQkJCQkJXAorCQlzZXRfcHRlKChfX3ZtYSktPnZtX21tLCAoX19hZGRyZXNzKSwJCQlcCisJ CQkoX19wdGVwKSwgcHRlX21rb2xkKF9fcHRlKSk7CQkJXAorCXI7CQkJCQkJCQlcCit9KQogI2Vu ZGlmCiAKICNpZm5kZWYgX19IQVZFX0FSQ0hfUFRFUF9DTEVBUl9ZT1VOR19GTFVTSAogI2RlZmlu ZSBwdGVwX2NsZWFyX2ZsdXNoX3lvdW5nKF9fdm1hLCBfX2FkZHJlc3MsIF9fcHRlcCkJCVwKICh7 CQkJCQkJCQkJXAotCWludCBfX3lvdW5nID0gcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhfX3B0 ZXApOwkJXAorCWludCBfX3lvdW5nOwkJCQkJCQlcCisJX195b3VuZyA9IHB0ZXBfdGVzdF9hbmRf Y2xlYXJfeW91bmcoX192bWEsIF9fYWRkcmVzcywgX19wdGVwKTsJXAogCWlmIChfX3lvdW5nKQkJ CQkJCQlcCiAJCWZsdXNoX3RsYl9wYWdlKF9fdm1hLCBfX2FkZHJlc3MpOwkJCVwKIAlfX3lvdW5n OwkJCQkJCQlcCkBAIC01NiwyMCArNjAsMjQgQEAKICNlbmRpZgogCiAjaWZuZGVmIF9fSEFWRV9B UkNIX1BURVBfVEVTVF9BTkRfQ0xFQVJfRElSVFkKLXN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVz dF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXApCi17Ci0JcHRlX3QgcHRlID0gKnB0ZXA7Ci0J aWYgKCFwdGVfZGlydHkocHRlKSkKLQkJcmV0dXJuIDA7Ci0Jc2V0X3B0ZShwdGVwLCBwdGVfbWtj bGVhbihwdGUpKTsKLQlyZXR1cm4gMTsKLX0KKyNkZWZpbmUgcHRlcF90ZXN0X2FuZF9jbGVhcl9k aXJ0eShfX3ZtYSwgX19hZGRyZXNzLCBfX3B0ZXApCQlcCisoewkJCQkJCQkJCVwKKwlwdGVfdCBf X3B0ZSA9ICpwdGVwOwkJCQkJCVwKKwlpbnQgciA9IDE7CQkJCQkJCVwKKwlpZiAoIXB0ZV9kaXJ0 eShfX3B0ZSkpCQkJCQkJXAorCQlyID0gMDsJCQkJCQkJXAorCWVsc2UJCQkJCQkJCVwKKwkJc2V0 X3B0ZSgoX192bWEpLT52bV9tbSwgKF9fYWRkcmVzcyksIChfX3B0ZXApLAkJXAorCQkJcHRlX21r Y2xlYW4oX19wdGUpKTsJCQkJXAorCXI7CQkJCQkJCQlcCit9KQogI2VuZGlmCiAKICNpZm5kZWYg X19IQVZFX0FSQ0hfUFRFUF9DTEVBUl9ESVJUWV9GTFVTSAogI2RlZmluZSBwdGVwX2NsZWFyX2Zs dXNoX2RpcnR5KF9fdm1hLCBfX2FkZHJlc3MsIF9fcHRlcCkJCVwKICh7CQkJCQkJCQkJXAotCWlu dCBfX2RpcnR5ID0gcHRlcF90ZXN0X2FuZF9jbGVhcl9kaXJ0eShfX3B0ZXApOwkJXAorCWludCBf X2RpcnR5OwkJCQkJCQlcCisJX19kaXJ0eSA9IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkoX192 bWEsIF9fYWRkcmVzcywgX19wdGVwKTsJXAogCWlmIChfX2RpcnR5KQkJCQkJCQlcCiAJCWZsdXNo X3RsYl9wYWdlKF9fdm1hLCBfX2FkZHJlc3MpOwkJCVwKIAlfX2RpcnR5OwkJCQkJCQlcCkBAIC03 NywzNiArODUsMjkgQEAKICNlbmRpZgogCiAjaWZuZGVmIF9fSEFWRV9BUkNIX1BURVBfR0VUX0FO RF9DTEVBUgotc3RhdGljIGlubGluZSBwdGVfdCBwdGVwX2dldF9hbmRfY2xlYXIocHRlX3QgKnB0 ZXApCi17Ci0JcHRlX3QgcHRlID0gKnB0ZXA7Ci0JcHRlX2NsZWFyKHB0ZXApOwotCXJldHVybiBw dGU7Ci19CisjZGVmaW5lIHB0ZXBfZ2V0X2FuZF9jbGVhcihfX21tLCBfX2FkZHJlc3MsIF9fcHRl cCkJCQlcCisoewkJCQkJCQkJCVwKKwlwdGVfdCBfX3B0ZSA9ICooX19wdGVwKTsJCQkJCVwKKwlw dGVfY2xlYXIoKF9fbW0pLCAoX19hZGRyZXNzKSwgKF9fcHRlcCkpOwkJCVwKKwlfX3B0ZTsJCQkJ CQkJCVwKK30pCiAjZW5kaWYKIAogI2lmbmRlZiBfX0hBVkVfQVJDSF9QVEVQX0NMRUFSX0ZMVVNI CiAjZGVmaW5lIHB0ZXBfY2xlYXJfZmx1c2goX192bWEsIF9fYWRkcmVzcywgX19wdGVwKQkJCVwK ICh7CQkJCQkJCQkJXAotCXB0ZV90IF9fcHRlID0gcHRlcF9nZXRfYW5kX2NsZWFyKF9fcHRlcCk7 CQkJXAorCXB0ZV90IF9fcHRlOwkJCQkJCQlcCisJX19wdGUgPSBwdGVwX2dldF9hbmRfY2xlYXIo KF9fdm1hKS0+dm1fbW0sIF9fYWRkcmVzcywgX19wdGVwKTsJXAogCWZsdXNoX3RsYl9wYWdlKF9f dm1hLCBfX2FkZHJlc3MpOwkJCQlcCiAJX19wdGU7CQkJCQkJCQlcCiB9KQogI2VuZGlmCiAKICNp Zm5kZWYgX19IQVZFX0FSQ0hfUFRFUF9TRVRfV1JQUk9URUNUCi1zdGF0aWMgaW5saW5lIHZvaWQg cHRlcF9zZXRfd3Jwcm90ZWN0KHB0ZV90ICpwdGVwKQotewotCXB0ZV90IG9sZF9wdGUgPSAqcHRl cDsKLQlzZXRfcHRlKHB0ZXAsIHB0ZV93cnByb3RlY3Qob2xkX3B0ZSkpOwotfQotI2VuZGlmCi0K LSNpZm5kZWYgX19IQVZFX0FSQ0hfUFRFUF9NS0RJUlRZCi1zdGF0aWMgaW5saW5lIHZvaWQgcHRl cF9ta2RpcnR5KHB0ZV90ICpwdGVwKQorc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJv dGVjdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBwdGVfdCAq cHRlcCkKIHsKIAlwdGVfdCBvbGRfcHRlID0gKnB0ZXA7Ci0Jc2V0X3B0ZShwdGVwLCBwdGVfbWtk aXJ0eShvbGRfcHRlKSk7CisJc2V0X3B0ZShtbSwgYWRkcmVzcywgcHRlcCwgcHRlX3dycHJvdGVj dChvbGRfcHRlKSk7CiB9CiAjZW5kaWYKIApkaWZmIC1OcnUgYS9pbmNsdWRlL2FzbS1zcGFyYzY0 L3BnYWxsb2MuaCBiL2luY2x1ZGUvYXNtLXNwYXJjNjQvcGdhbGxvYy5oCi0tLSBhL2luY2x1ZGUv YXNtLXNwYXJjNjQvcGdhbGxvYy5oCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCisrKyBiL2lu Y2x1ZGUvYXNtLXNwYXJjNjQvcGdhbGxvYy5oCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCkBA IC0xOTIsMjUgKzE5MiwxNyBAQAogCiBzdGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25l X2tlcm5lbChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQogewot CXB0ZV90ICpwdGUgPSBfX3B0ZV9hbGxvY19vbmVfa2VybmVsKG1tLCBhZGRyZXNzKTsKLQlpZiAo cHRlKSB7Ci0JCXN0cnVjdCBwYWdlICpwYWdlID0gdmlydF90b19wYWdlKHB0ZSk7Ci0JCXBhZ2Ut Pm1hcHBpbmcgPSAodm9pZCAqKSBtbTsKLQkJcGFnZS0+aW5kZXggPSBhZGRyZXNzICYgUE1EX01B U0s7Ci0JfQotCXJldHVybiBwdGU7CisJcmV0dXJuIF9fcHRlX2FsbG9jX29uZV9rZXJuZWwobW0s IGFkZHJlc3MpOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICoKIHB0ZV9hbGxvY19v bmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcikKIHsKIAlwdGVfdCAq cHRlID0gX19wdGVfYWxsb2Nfb25lX2tlcm5lbChtbSwgYWRkcik7Ci0JaWYgKHB0ZSkgewotCQlz dHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShwdGUpOwotCQlwYWdlLT5tYXBwaW5nID0g KHZvaWQgKikgbW07Ci0JCXBhZ2UtPmluZGV4ID0gYWRkciAmIFBNRF9NQVNLOwotCQlyZXR1cm4g cGFnZTsKLQl9CisKKwlpZiAocHRlKQorCQlyZXR1cm4gdmlydF90b19wYWdlKHB0ZSk7CisKIAly ZXR1cm4gTlVMTDsKIH0KIApAQCAtMjQ3LDEzICsyMzksMTEgQEAKIAogc3RhdGljIGlubGluZSB2 b2lkIHB0ZV9mcmVlX2tlcm5lbChwdGVfdCAqcHRlKQogewotCXZpcnRfdG9fcGFnZShwdGUpLT5t YXBwaW5nID0gTlVMTDsKIAlmcmVlX3B0ZV9mYXN0KHB0ZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg dm9pZCBwdGVfZnJlZShzdHJ1Y3QgcGFnZSAqcHRlcGFnZSkKIHsKLQlwdGVwYWdlLT5tYXBwaW5n ID0gTlVMTDsKIAlmcmVlX3B0ZV9mYXN0KHBhZ2VfYWRkcmVzcyhwdGVwYWdlKSk7CiB9CiAKZGlm ZiAtTnJ1IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9wZ3RhYmxlLmggYi9pbmNsdWRlL2FzbS1zcGFy YzY0L3BndGFibGUuaAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L3BndGFibGUuaAkyMDA0LTEx LTMwIDE5OjM3OjI3IC0wODowMAorKysgYi9pbmNsdWRlL2FzbS1zcGFyYzY0L3BndGFibGUuaAky MDA0LTExLTMwIDE5OjM3OjI3IC0wODowMApAQCAtMzI2LDE4ICszMjYsMjAgQEAKICNkZWZpbmUg cHRlX3VubWFwX25lc3RlZChwdGUpCQlkbyB7IH0gd2hpbGUgKDApCiAKIC8qIEFjdHVhbCBwYWdl IHRhYmxlIFBURSB1cGRhdGVzLiAgKi8KLWV4dGVybiB2b2lkIHRsYl9iYXRjaF9hZGQocHRlX3Qg KnB0ZXAsIHB0ZV90IG9yaWcpOworZXh0ZXJuIHZvaWQgdGxiX2JhdGNoX2FkZChzdHJ1Y3QgbW1f c3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAorCQkJICBwdGVfdCAqcHRlcCwgcHRlX3Qg b3JpZyk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcHRlKHB0ZV90ICpwdGVwLCBwdGVfdCBw dGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5z aWduZWQgbG9uZyBhZGRyLAorCQkJICAgcHRlX3QgKnB0ZXAsIHB0ZV90IHB0ZSkKIHsKIAlwdGVf dCBvcmlnID0gKnB0ZXA7CiAKIAkqcHRlcCA9IHB0ZTsKIAlpZiAocHRlX3ByZXNlbnQob3JpZykp Ci0JCXRsYl9iYXRjaF9hZGQocHRlcCwgb3JpZyk7CisJCXRsYl9iYXRjaF9hZGQobW0sIGFkZHIs IHB0ZXAsIG9yaWcpOwogfQogCi0jZGVmaW5lIHB0ZV9jbGVhcihwdGVwKQkJc2V0X3B0ZSgocHRl cCksIF9fcHRlKDBVTCkpCisjZGVmaW5lIHB0ZV9jbGVhcihtbSxhZGRyLHB0ZXApCQlzZXRfcHRl KChtbSksKGFkZHIpLChwdGVwKSwgX19wdGUoMFVMKSkKIAogZXh0ZXJuIHBnZF90IHN3YXBwZXJf cGdfZGlyWzFdOwogCmRpZmYgLU5ydSBhL21tL2ZyZW1hcC5jIGIvbW0vZnJlbWFwLmMKLS0tIGEv bW0vZnJlbWFwLmMJMjAwNC0xMS0zMCAxOTozNzoyNyAtMDg6MDAKKysrIGIvbW0vZnJlbWFwLmMJ MjAwNC0xMS0zMCAxOTozNzoyNyAtMDg6MDAKQEAgLTQ0LDcgKzQ0LDcgQEAKIAl9IGVsc2Ugewog CQlpZiAoIXB0ZV9maWxlKHB0ZSkpCiAJCQlmcmVlX3N3YXBfYW5kX2NhY2hlKHB0ZV90b19zd3Bf ZW50cnkocHRlKSk7Ci0JCXB0ZV9jbGVhcihwdGVwKTsKKwkJcHRlX2NsZWFyKG1tLCBhZGRyLCBw dGVwKTsKIAl9CiB9CiAKQEAgLTg4LDcgKzg4LDcgQEAKIAogCW1tLT5yc3MrKzsKIAlmbHVzaF9p Y2FjaGVfcGFnZSh2bWEsIHBhZ2UpOwotCXNldF9wdGUocHRlLCBta19wdGUocGFnZSwgcHJvdCkp OworCXNldF9wdGUobW0sIGFkZHIsIHB0ZSwgbWtfcHRlKHBhZ2UsIHByb3QpKTsKIAlwYWdlX2Fk ZF9maWxlX3JtYXAocGFnZSk7CiAJcHRlX3ZhbCA9ICpwdGU7CiAJcHRlX3VubWFwKHB0ZSk7CkBA IC0xMjgsNyArMTI4LDcgQEAKIAogCXphcF9wdGUobW0sIHZtYSwgYWRkciwgcHRlKTsKIAotCXNl dF9wdGUocHRlLCBwZ29mZl90b19wdGUocGdvZmYpKTsKKwlzZXRfcHRlKG1tLCBhZGRyLCBwdGUs IHBnb2ZmX3RvX3B0ZShwZ29mZikpOwogCXB0ZV92YWwgPSAqcHRlOwogCXB0ZV91bm1hcChwdGUp OwogCXVwZGF0ZV9tbXVfY2FjaGUodm1hLCBhZGRyLCBwdGVfdmFsKTsKZGlmZiAtTnJ1IGEvbW0v bWVtb3J5LmMgYi9tbS9tZW1vcnkuYwotLS0gYS9tbS9tZW1vcnkuYwkyMDA0LTExLTMwIDE5OjM3 OjI3IC0wODowMAorKysgYi9tbS9tZW1vcnkuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODowMApA QCAtMjkwLDcgKzI5MCw3IEBACiAJCQkJaWYgKCFwdGVfcHJlc2VudChwdGUpKSB7CiAJCQkJCWlm ICghcHRlX2ZpbGUocHRlKSkKIAkJCQkJCXN3YXBfZHVwbGljYXRlKHB0ZV90b19zd3BfZW50cnko cHRlKSk7Ci0JCQkJCXNldF9wdGUoZHN0X3B0ZSwgcHRlKTsKKwkJCQkJc2V0X3B0ZShkc3QsIGFk ZHJlc3MsIGRzdF9wdGUsIHB0ZSk7CiAJCQkJCWdvdG8gY29udF9jb3B5X3B0ZV9yYW5nZV9ub3Nl dDsKIAkJCQl9CiAJCQkJcGZuID0gcHRlX3BmbihwdGUpOwpAQCAtMzA0LDcgKzMwNCw3IEBACiAJ CQkJCXBhZ2UgPSBwZm5fdG9fcGFnZShwZm4pOyAKIAogCQkJCWlmICghcGFnZSB8fCBQYWdlUmVz ZXJ2ZWQocGFnZSkpIHsKLQkJCQkJc2V0X3B0ZShkc3RfcHRlLCBwdGUpOworCQkJCQlzZXRfcHRl KGRzdCwgYWRkcmVzcywgZHN0X3B0ZSwgcHRlKTsKIAkJCQkJZ290byBjb250X2NvcHlfcHRlX3Jh bmdlX25vc2V0OwogCQkJCX0KIApAQCAtMzEzLDcgKzMxMyw3IEBACiAJCQkJICogaW4gdGhlIHBh cmVudCBhbmQgdGhlIGNoaWxkCiAJCQkJICovCiAJCQkJaWYgKGNvdykgewotCQkJCQlwdGVwX3Nl dF93cnByb3RlY3Qoc3JjX3B0ZSk7CisJCQkJCXB0ZXBfc2V0X3dycHJvdGVjdChzcmMsIGFkZHJl c3MsIHNyY19wdGUpOwogCQkJCQlwdGUgPSAqc3JjX3B0ZTsKIAkJCQl9CiAKQEAgLTMyNiw3ICsz MjYsNyBAQAogCQkJCXB0ZSA9IHB0ZV9ta29sZChwdGUpOwogCQkJCWdldF9wYWdlKHBhZ2UpOwog CQkJCWRzdC0+cnNzKys7Ci0JCQkJc2V0X3B0ZShkc3RfcHRlLCBwdGUpOworCQkJCXNldF9wdGUo ZHN0LCBhZGRyZXNzLCBkc3RfcHRlLCBwdGUpOwogCQkJCXBhZ2VfZHVwX3JtYXAocGFnZSk7CiBj b250X2NvcHlfcHRlX3JhbmdlX25vc2V0OgogCQkJCWFkZHJlc3MgKz0gUEFHRV9TSVpFOwpAQCAt NDA2LDE0ICs0MDYsMTUgQEAKIAkJCQkgICAgIHBhZ2UtPmluZGV4ID4gZGV0YWlscy0+bGFzdF9p bmRleCkpCiAJCQkJCWNvbnRpbnVlOwogCQkJfQotCQkJcHRlID0gcHRlcF9nZXRfYW5kX2NsZWFy KHB0ZXApOworCQkJcHRlID0gcHRlcF9nZXRfYW5kX2NsZWFyKHRsYi0+bW0sIGFkZHJlc3Mrb2Zm c2V0LCBwdGVwKTsKIAkJCXRsYl9yZW1vdmVfdGxiX2VudHJ5KHRsYiwgcHRlcCwgYWRkcmVzcytv ZmZzZXQpOwogCQkJaWYgKHVubGlrZWx5KCFwYWdlKSkKIAkJCQljb250aW51ZTsKIAkJCWlmICh1 bmxpa2VseShkZXRhaWxzKSAmJiBkZXRhaWxzLT5ub25saW5lYXJfdm1hCiAJCQkgICAgJiYgbGlu ZWFyX3BhZ2VfaW5kZXgoZGV0YWlscy0+bm9ubGluZWFyX3ZtYSwKIAkJCQkJYWRkcmVzcytvZmZz ZXQpICE9IHBhZ2UtPmluZGV4KQotCQkJCXNldF9wdGUocHRlcCwgcGdvZmZfdG9fcHRlKHBhZ2Ut PmluZGV4KSk7CisJCQkJc2V0X3B0ZSh0bGItPm1tLCBhZGRyZXNzK29mZnNldCwKKwkJCQkJcHRl cCwgcGdvZmZfdG9fcHRlKHBhZ2UtPmluZGV4KSk7CiAJCQlpZiAocHRlX2RpcnR5KHB0ZSkpCiAJ CQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CiAJCQlpZiAocHRlX3lvdW5nKHB0ZSkgJiYgIVBhZ2VB bm9uKHBhZ2UpKQpAQCAtNDMxLDcgKzQzMiw3IEBACiAJCQljb250aW51ZTsKIAkJaWYgKCFwdGVf ZmlsZShwdGUpKQogCQkJZnJlZV9zd2FwX2FuZF9jYWNoZShwdGVfdG9fc3dwX2VudHJ5KHB0ZSkp OwotCQlwdGVfY2xlYXIocHRlcCk7CisJCXB0ZV9jbGVhcih0bGItPm1tLCBhZGRyZXNzK29mZnNl dCwgcHRlcCk7CiAJfQogCXB0ZV91bm1hcChwdGVwLTEpOwogfQpAQCAtODMxLDggKzgzMiw5IEBA CiAKIEVYUE9SVF9TWU1CT0woZ2V0X3VzZXJfcGFnZXMpOwogCi1zdGF0aWMgdm9pZCB6ZXJvbWFw X3B0ZV9yYW5nZShwdGVfdCAqIHB0ZSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3Qg cHJvdCkKK3N0YXRpYyB2b2lkIHplcm9tYXBfcHRlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t LCBwdGVfdCAqIHB0ZSwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKKwkJCSAgICAg IHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgcHJvdCkKIHsKIAl1bnNpZ25lZCBsb25nIGVu ZDsKIApAQCAtODQzLDcgKzg0NSw3IEBACiAJZG8gewogCQlwdGVfdCB6ZXJvX3B0ZSA9IHB0ZV93 cnByb3RlY3QobWtfcHRlKFpFUk9fUEFHRShhZGRyZXNzKSwgcHJvdCkpOwogCQlCVUdfT04oIXB0 ZV9ub25lKCpwdGUpKTsKLQkJc2V0X3B0ZShwdGUsIHplcm9fcHRlKTsKKwkJc2V0X3B0ZShtbSwg YWRkcmVzcywgcHRlLCB6ZXJvX3B0ZSk7CiAJCWFkZHJlc3MgKz0gUEFHRV9TSVpFOwogCQlwdGUr KzsKIAl9IHdoaWxlIChhZGRyZXNzICYmIChhZGRyZXNzIDwgZW5kKSk7CkBAIC04NjMsNyArODY1 LDcgQEAKIAkJcHRlX3QgKiBwdGUgPSBwdGVfYWxsb2NfbWFwKG1tLCBwbWQsIGJhc2UgKyBhZGRy ZXNzKTsKIAkJaWYgKCFwdGUpCiAJCQlyZXR1cm4gLUVOT01FTTsKLQkJemVyb21hcF9wdGVfcmFu Z2UocHRlLCBiYXNlICsgYWRkcmVzcywgZW5kIC0gYWRkcmVzcywgcHJvdCk7CisJCXplcm9tYXBf cHRlX3JhbmdlKG1tLCBwdGUsIGJhc2UgKyBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzLCBwcm90KTsK IAkJcHRlX3VubWFwKHB0ZSk7CiAJCWFkZHJlc3MgPSAoYWRkcmVzcyArIFBNRF9TSVpFKSAmIFBN RF9NQVNLOwogCQlwbWQrKzsKQEAgLTkwOSw4ICs5MTEsOSBAQAogICogbWFwcGluZ3MgYXJlIHJl bW92ZWQuIGFueSByZWZlcmVuY2VzIHRvIG5vbmV4aXN0ZW50IHBhZ2VzIHJlc3VsdHMKICAqIGlu IG51bGwgbWFwcGluZ3MgKGN1cnJlbnRseSB0cmVhdGVkIGFzICJjb3B5LW9uLWFjY2VzcyIpCiAg Ki8KLXN0YXRpYyBpbmxpbmUgdm9pZCByZW1hcF9wdGVfcmFuZ2UocHRlX3QgKiBwdGUsIHVuc2ln bmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAotCXVuc2lnbmVkIGxvbmcgcGh5 c19hZGRyLCBwZ3Byb3RfdCBwcm90KQorc3RhdGljIGlubGluZSB2b2lkIHJlbWFwX3B0ZV9yYW5n ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcHRlX3QgKiBwdGUsCisJCQkJICAgdW5zaWduZWQgbG9u ZyBhZGRyZXNzLCB1bnNpZ25lZCBsb25nIHNpemUsCisJCQkJICAgdW5zaWduZWQgbG9uZyBwaHlz X2FkZHIsIHBncHJvdF90IHByb3QpCiB7CiAJdW5zaWduZWQgbG9uZyBlbmQ7CiAJdW5zaWduZWQg bG9uZyBwZm47CkBAIC05MjMsNyArOTI2LDcgQEAKIAlkbyB7CiAJCUJVR19PTighcHRlX25vbmUo KnB0ZSkpOwogCQlpZiAoIXBmbl92YWxpZChwZm4pIHx8IFBhZ2VSZXNlcnZlZChwZm5fdG9fcGFn ZShwZm4pKSkKLSAJCQlzZXRfcHRlKHB0ZSwgcGZuX3B0ZShwZm4sIHByb3QpKTsKKyAJCQlzZXRf cHRlKG1tLCBhZGRyZXNzLCBwdGUsIHBmbl9wdGUocGZuLCBwcm90KSk7CiAJCWFkZHJlc3MgKz0g UEFHRV9TSVpFOwogCQlwZm4rKzsKIAkJcHRlKys7CkBAIC05NDUsNyArOTQ4LDcgQEAKIAkJcHRl X3QgKiBwdGUgPSBwdGVfYWxsb2NfbWFwKG1tLCBwbWQsIGJhc2UgKyBhZGRyZXNzKTsKIAkJaWYg KCFwdGUpCiAJCQlyZXR1cm4gLUVOT01FTTsKLQkJcmVtYXBfcHRlX3JhbmdlKHB0ZSwgYmFzZSAr IGFkZHJlc3MsIGVuZCAtIGFkZHJlc3MsIGFkZHJlc3MgKyBwaHlzX2FkZHIsIHByb3QpOworCQly ZW1hcF9wdGVfcmFuZ2UobW0sIHB0ZSwgYmFzZSArIGFkZHJlc3MsIGVuZCAtIGFkZHJlc3MsIGFk ZHJlc3MgKyBwaHlzX2FkZHIsIHByb3QpOwogCQlwdGVfdW5tYXAocHRlKTsKIAkJYWRkcmVzcyA9 IChhZGRyZXNzICsgUE1EX1NJWkUpICYgUE1EX01BU0s7CiAJCXBtZCsrOwpAQCAtMTM4Niw3ICsx Mzg5LDcgQEAKIAl1bmxvY2tfcGFnZShwYWdlKTsKIAogCWZsdXNoX2ljYWNoZV9wYWdlKHZtYSwg cGFnZSk7Ci0Jc2V0X3B0ZShwYWdlX3RhYmxlLCBwdGUpOworCXNldF9wdGUobW0sIGFkZHJlc3Ms IHBhZ2VfdGFibGUsIHB0ZSk7CiAJcGFnZV9hZGRfYW5vbl9ybWFwKHBhZ2UsIHZtYSwgYWRkcmVz cyk7CiAKIAlpZiAod3JpdGVfYWNjZXNzKSB7CkBAIC0xNDUxLDcgKzE0NTQsNyBAQAogCQlwYWdl X2FkZF9hbm9uX3JtYXAocGFnZSwgdm1hLCBhZGRyKTsKIAl9CiAKLQlzZXRfcHRlKHBhZ2VfdGFi bGUsIGVudHJ5KTsKKwlzZXRfcHRlKG1tLCBhZGRyLCBwYWdlX3RhYmxlLCBlbnRyeSk7CiAJcHRl X3VubWFwKHBhZ2VfdGFibGUpOwogCiAJLyogTm8gbmVlZCB0byBpbnZhbGlkYXRlIC0gaXQgd2Fz IG5vbi1wcmVzZW50IGJlZm9yZSAqLwpAQCAtMTU1Niw3ICsxNTU5LDcgQEAKIAkJZW50cnkgPSBt a19wdGUobmV3X3BhZ2UsIHZtYS0+dm1fcGFnZV9wcm90KTsKIAkJaWYgKHdyaXRlX2FjY2VzcykK IAkJCWVudHJ5ID0gbWF5YmVfbWt3cml0ZShwdGVfbWtkaXJ0eShlbnRyeSksIHZtYSk7Ci0JCXNl dF9wdGUocGFnZV90YWJsZSwgZW50cnkpOworCQlzZXRfcHRlKG1tLCBhZGRyZXNzLCBwYWdlX3Rh YmxlLCBlbnRyeSk7CiAJCWlmIChhbm9uKSB7CiAJCQlscnVfY2FjaGVfYWRkX2FjdGl2ZShuZXdf cGFnZSk7CiAJCQlwYWdlX2FkZF9hbm9uX3JtYXAobmV3X3BhZ2UsIHZtYSwgYWRkcmVzcyk7CkBA IC0xNjAwLDcgKzE2MDMsNyBAQAogCSAqLwogCWlmICghdm1hLT52bV9vcHMgfHwgIXZtYS0+dm1f b3BzLT5wb3B1bGF0ZSB8fCAKIAkJCSh3cml0ZV9hY2Nlc3MgJiYgISh2bWEtPnZtX2ZsYWdzICYg Vk1fU0hBUkVEKSkpIHsKLQkJcHRlX2NsZWFyKHB0ZSk7CisJCXB0ZV9jbGVhcihtbSwgYWRkcmVz cywgcHRlKTsKIAkJcmV0dXJuIGRvX25vX3BhZ2UobW0sIHZtYSwgYWRkcmVzcywgd3JpdGVfYWNj ZXNzLCBwdGUsIHBtZCk7CiAJfQogCmRpZmYgLU5ydSBhL21tL21wcm90ZWN0LmMgYi9tbS9tcHJv dGVjdC5jCi0tLSBhL21tL21wcm90ZWN0LmMJMjAwNC0xMS0zMCAxOTozNzoyNyAtMDg6MDAKKysr IGIvbW0vbXByb3RlY3QuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODowMApAQCAtMjUsOCArMjUs OCBAQAogI2luY2x1ZGUgPGFzbS90bGJmbHVzaC5oPgogCiBzdGF0aWMgaW5saW5lIHZvaWQKLWNo YW5nZV9wdGVfcmFuZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAotCQl1bnNp Z25lZCBsb25nIHNpemUsIHBncHJvdF90IG5ld3Byb3QpCitjaGFuZ2VfcHRlX3JhbmdlKHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCisJCSB1 bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IG5ld3Byb3QpCiB7CiAJcHRlX3QgKiBwdGU7CiAJ dW5zaWduZWQgbG9uZyBlbmQ7CkBAIC01MSw4ICs1MSw4IEBACiAJCQkgKiBiaXRzIGJ5IHdpcGlu ZyB0aGUgcHRlIGFuZCB0aGVuIHNldHRpbmcgdGhlIG5ldyBwdGUKIAkJCSAqIGludG8gcGxhY2Uu CiAJCQkgKi8KLQkJCWVudHJ5ID0gcHRlcF9nZXRfYW5kX2NsZWFyKHB0ZSk7Ci0JCQlzZXRfcHRl KHB0ZSwgcHRlX21vZGlmeShlbnRyeSwgbmV3cHJvdCkpOworCQkJZW50cnkgPSBwdGVwX2dldF9h bmRfY2xlYXIobW0sIGFkZHJlc3MsIHB0ZSk7CisJCQlzZXRfcHRlKG1tLCBhZGRyZXNzLCBwdGUs IHB0ZV9tb2RpZnkoZW50cnksIG5ld3Byb3QpKTsKIAkJfQogCQlhZGRyZXNzICs9IFBBR0VfU0la RTsKIAkJcHRlKys7CkBAIC02MSw4ICs2MSw4IEBACiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAot Y2hhbmdlX3BtZF9yYW5nZShwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCi0JCXVu c2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgbmV3cHJvdCkKK2NoYW5nZV9wbWRfcmFuZ2Uoc3Ry dWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKKwkJ IHVuc2lnbmVkIGxvbmcgc2l6ZSwgcGdwcm90X3QgbmV3cHJvdCkKIHsKIAlwbWRfdCAqIHBtZDsK IAl1bnNpZ25lZCBsb25nIGVuZDsKQEAgLTgwLDcgKzgwLDcgQEAKIAlpZiAoZW5kID4gUEdESVJf U0laRSkKIAkJZW5kID0gUEdESVJfU0laRTsKIAlkbyB7Ci0JCWNoYW5nZV9wdGVfcmFuZ2UocG1k LCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzLCBuZXdwcm90KTsKKwkJY2hhbmdlX3B0ZV9yYW5nZSht bSwgcG1kLCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzLCBuZXdwcm90KTsKIAkJYWRkcmVzcyA9IChh ZGRyZXNzICsgUE1EX1NJWkUpICYgUE1EX01BU0s7CiAJCXBtZCsrOwogCX0gd2hpbGUgKGFkZHJl c3MgJiYgKGFkZHJlc3MgPCBlbmQpKTsKQEAgLTk5LDcgKzk5LDcgQEAKIAkJQlVHKCk7CiAJc3Bp bl9sb2NrKCZjdXJyZW50LT5tbS0+cGFnZV90YWJsZV9sb2NrKTsKIAlkbyB7Ci0JCWNoYW5nZV9w bWRfcmFuZ2UoZGlyLCBzdGFydCwgZW5kIC0gc3RhcnQsIG5ld3Byb3QpOworCQljaGFuZ2VfcG1k X3JhbmdlKGN1cnJlbnQtPm1tLCBkaXIsIHN0YXJ0LCBlbmQgLSBzdGFydCwgbmV3cHJvdCk7CiAJ CXN0YXJ0ID0gKHN0YXJ0ICsgUEdESVJfU0laRSkgJiBQR0RJUl9NQVNLOwogCQlkaXIrKzsKIAl9 IHdoaWxlIChzdGFydCAmJiAoc3RhcnQgPCBlbmQpKTsKZGlmZiAtTnJ1IGEvbW0vbXJlbWFwLmMg Yi9tbS9tcmVtYXAuYwotLS0gYS9tbS9tcmVtYXAuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODow MAorKysgYi9tbS9tcmVtYXAuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODowMApAQCAtMTI4LDcg KzEyOCw3IEBACiAJCQlpZiAoZHN0KSB7CiAJCQkJcHRlX3QgcHRlOwogCQkJCXB0ZSA9IHB0ZXBf Y2xlYXJfZmx1c2godm1hLCBvbGRfYWRkciwgc3JjKTsKLQkJCQlzZXRfcHRlKGRzdCwgcHRlKTsK KwkJCQlzZXRfcHRlKG1tLCBuZXdfYWRkciwgZHN0LCBwdGUpOwogCQkJfSBlbHNlCiAJCQkJZXJy b3IgPSAtRU5PTUVNOwogCQkJcHRlX3VubWFwX25lc3RlZChzcmMpOwpkaWZmIC1OcnUgYS9tbS9y bWFwLmMgYi9tbS9ybWFwLmMKLS0tIGEvbW0vcm1hcC5jCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4 OjAwCisrKyBiL21tL3JtYXAuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODowMApAQCAtNTA4LDcg KzUwOCw3IEBACiAJCSAqLwogCQlCVUdfT04oIVBhZ2VTd2FwQ2FjaGUocGFnZSkpOwogCQlzd2Fw X2R1cGxpY2F0ZShlbnRyeSk7Ci0JCXNldF9wdGUocHRlLCBzd3BfZW50cnlfdG9fcHRlKGVudHJ5 KSk7CisJCXNldF9wdGUobW0sIGFkZHJlc3MsIHB0ZSwgc3dwX2VudHJ5X3RvX3B0ZShlbnRyeSkp OwogCQlCVUdfT04ocHRlX2ZpbGUoKnB0ZSkpOwogCX0KIApAQCAtNjA2LDcgKzYwNiw3IEBACiAK IAkJLyogSWYgbm9ubGluZWFyLCBzdG9yZSB0aGUgZmlsZSBwYWdlIG9mZnNldCBpbiB0aGUgcHRl LiAqLwogCQlpZiAocGFnZS0+aW5kZXggIT0gbGluZWFyX3BhZ2VfaW5kZXgodm1hLCBhZGRyZXNz KSkKLQkJCXNldF9wdGUocHRlLCBwZ29mZl90b19wdGUocGFnZS0+aW5kZXgpKTsKKwkJCXNldF9w dGUobW0sIGFkZHJlc3MsIHB0ZSwgcGdvZmZfdG9fcHRlKHBhZ2UtPmluZGV4KSk7CiAKIAkJLyog TW92ZSB0aGUgZGlydHkgYml0IHRvIHRoZSBwaHlzaWNhbCBwYWdlIG5vdyB0aGUgcHRlIGlzIGdv bmUuICovCiAJCWlmIChwdGVfZGlydHkocHRldmFsKSkKZGlmZiAtTnJ1IGEvbW0vc3dhcGZpbGUu YyBiL21tL3N3YXBmaWxlLmMKLS0tIGEvbW0vc3dhcGZpbGUuYwkyMDA0LTExLTMwIDE5OjM3OjI3 IC0wODowMAorKysgYi9tbS9zd2FwZmlsZS5jCTIwMDQtMTEtMzAgMTk6Mzc6MjcgLTA4OjAwCkBA IC00MzIsNyArNDMyLDggQEAKIHsKIAl2bWEtPnZtX21tLT5yc3MrKzsKIAlnZXRfcGFnZShwYWdl KTsKLQlzZXRfcHRlKGRpciwgcHRlX21rb2xkKG1rX3B0ZShwYWdlLCB2bWEtPnZtX3BhZ2VfcHJv dCkpKTsKKwlzZXRfcHRlKHZtYS0+dm1fbW0sIGFkZHJlc3MsIGRpciwKKwkJcHRlX21rb2xkKG1r X3B0ZShwYWdlLCB2bWEtPnZtX3BhZ2VfcHJvdCkpKTsKIAlwYWdlX2FkZF9hbm9uX3JtYXAocGFn ZSwgdm1hLCBhZGRyZXNzKTsKIAlzd2FwX2ZyZWUoZW50cnkpOwogfQpkaWZmIC1OcnUgYS9tbS92 bWFsbG9jLmMgYi9tbS92bWFsbG9jLmMKLS0tIGEvbW0vdm1hbGxvYy5jCTIwMDQtMTEtMzAgMTk6 Mzc6MjcgLTA4OjAwCisrKyBiL21tL3ZtYWxsb2MuYwkyMDA0LTExLTMwIDE5OjM3OjI3IC0wODow MApAQCAtNDUsNyArNDUsNyBAQAogCiAJZG8gewogCQlwdGVfdCBwYWdlOwotCQlwYWdlID0gcHRl cF9nZXRfYW5kX2NsZWFyKHB0ZSk7CisJCXBhZ2UgPSBwdGVwX2dldF9hbmRfY2xlYXIoJmluaXRf bW0sIGFkZHJlc3MsIHB0ZSk7CiAJCWFkZHJlc3MgKz0gUEFHRV9TSVpFOwogCQlwdGUrKzsKIAkJ aWYgKHB0ZV9ub25lKHBhZ2UpKQpAQCAtMTAxLDcgKzEwMSw3IEBACiAJCWlmICghcGFnZSkKIAkJ CXJldHVybiAtRU5PTUVNOwogCi0JCXNldF9wdGUocHRlLCBta19wdGUocGFnZSwgcHJvdCkpOwor CQlzZXRfcHRlKCZpbml0X21tLCBhZGRyZXNzLCBwdGUsIG1rX3B0ZShwYWdlLCBwcm90KSk7CiAJ CWFkZHJlc3MgKz0gUEFHRV9TSVpFOwogCQlwdGUrKzsKIAkJKCpwYWdlcykrKzsK --Multipart=_Tue__30_Nov_2004_20_01_54_-0800_Z4DWOb+8G13xY9mU Content-Type: application/octet-stream; name="diff2" Content-Disposition: attachment; filename="diff2" Content-Transfer-Encoding: base64 IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guCiMK IyBDaGFuZ2VTZXQKIyAgIDIwMDQvMDgvMjMgMTQ6NDU6MzktMDc6MDAgYmVuaEBrZXJuZWwuY3Jh c2hpbmcub3JnIAojICAgW1BQQ106IFVzZSBuZXcgc2V0X3B0ZSgpIHcvbW0rYWRkcmVzcyBhcmdz LgojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtl cm5lbC5jcmFzaGluZy5vcmc+CiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQHJlZGhhdC5jb20+CiMgCiMgbW0vaGlnaG1lbS5jCiMgICAyMDA0LzA4LzIzIDE0OjQ1OjIx LTA3OjAwIGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZyArNCAtMgojICAgW1BQQ106IFVzZSBuZXcg c2V0X3B0ZSgpIHcvbW0rYWRkcmVzcyBhcmdzLgojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBCZW5q YW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+CiMgICBTaWduZWQt b2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQHJlZGhhdC5jb20+CiMgCiMgaW5jbHVkZS9h c20tcHBjNjQvcGd0YWJsZS5oCiMgICAyMDA0LzA4LzIzIDE0OjQ1OjIxLTA3OjAwIGJlbmhAa2Vy bmVsLmNyYXNoaW5nLm9yZyArNDMgLTMwCiMgICBbUFBDXTogVXNlIG5ldyBzZXRfcHRlKCkgdy9t bSthZGRyZXNzIGFyZ3MuCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEhlcnJlbnNj aG1pZHQgPGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZz4KIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AcmVkaGF0LmNvbT4KIyAKIyBpbmNsdWRlL2FzbS1wcGM2NC9wZ2Fs bG9jLmgKIyAgIDIwMDQvMDgvMjMgMTQ6NDU6MjEtMDc6MDAgYmVuaEBrZXJuZWwuY3Jhc2hpbmcu b3JnICs2IC0yMgojICAgW1BQQ106IFVzZSBuZXcgc2V0X3B0ZSgpIHcvbW0rYWRkcmVzcyBhcmdz LgojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtl cm5lbC5jcmFzaGluZy5vcmc+CiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQHJlZGhhdC5jb20+CiMgCiMgaW5jbHVkZS9hc20tcHBjL3BndGFibGUuaAojICAgMjAwNC8w OC8yMyAxNDo0NToyMS0wNzowMCBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmcgKzM1IC0zNAojICAg W1BQQ106IFVzZSBuZXcgc2V0X3B0ZSgpIHcvbW0rYWRkcmVzcyBhcmdzLgojICAgCiMgICBTaWdu ZWQtb2ZmLWJ5OiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5v cmc+CiMgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQHJlZGhhdC5jb20+ CiMgCiMgaW5jbHVkZS9hc20tcHBjL2hpZ2htZW0uaAojICAgMjAwNC8wOC8yMyAxNDo0NToyMS0w NzowMCBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmcgKzIgLTIKIyAgIFtQUENdOiBVc2UgbmV3IHNl dF9wdGUoKSB3L21tK2FkZHJlc3MgYXJncy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTogQmVuamFt aW4gSGVycmVuc2NobWlkdCA8YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPgojICAgU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIGFyY2gvcHBjNjQv bW0vdGxiLmMKIyAgIDIwMDQvMDgvMjMgMTQ6NDU6MjEtMDc6MDAgYmVuaEBrZXJuZWwuY3Jhc2hp bmcub3JnICsyIC05CiMgICBbUFBDXTogVXNlIG5ldyBzZXRfcHRlKCkgdy9tbSthZGRyZXNzIGFy Z3MuCiMgICAKIyAgIFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhA a2VybmVsLmNyYXNoaW5nLm9yZz4KIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AcmVkaGF0LmNvbT4KIyAKIyBhcmNoL3BwYzY0L21tL2luaXQuYwojICAgMjAwNC8wOC8y MyAxNDo0NToyMS0wNzowMCBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmcgKzggLTgKIyAgIFtQUENd OiBVc2UgbmV3IHNldF9wdGUoKSB3L21tK2FkZHJlc3MgYXJncy4KIyAgIAojICAgU2lnbmVkLW9m Zi1ieTogQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPgoj ICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAoj IGFyY2gvcHBjL21tL3RsYi5jCiMgICAyMDA0LzA4LzIzIDE0OjQ1OjIxLTA3OjAwIGJlbmhAa2Vy bmVsLmNyYXNoaW5nLm9yZyArMCAtMjAKIyAgIFtQUENdOiBVc2UgbmV3IHNldF9wdGUoKSB3L21t K2FkZHJlc3MgYXJncy4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gSGVycmVuc2No bWlkdCA8YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPgojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgojIAojIGFyY2gvcHBjL21tL3BndGFibGUuYwoj ICAgMjAwNC8wOC8yMyAxNDo0NToyMS0wNzowMCBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmcgKzQg LTE0CiMgICBbUFBDXTogVXNlIG5ldyBzZXRfcHRlKCkgdy9tbSthZGRyZXNzIGFyZ3MuCiMgICAK IyAgIFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2VybmVsLmNy YXNoaW5nLm9yZz4KIyAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AcmVk aGF0LmNvbT4KIyAKIyBhcmNoL3BwYy9tbS9pbml0LmMKIyAgIDIwMDQvMDgvMjMgMTQ6NDU6MjEt MDc6MDAgYmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnICswIC0xMwojICAgW1BQQ106IFVzZSBuZXcg c2V0X3B0ZSgpIHcvbW0rYWRkcmVzcyBhcmdzLgojICAgCiMgICBTaWduZWQtb2ZmLWJ5OiBCZW5q YW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+CiMgICBTaWduZWQt b2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQHJlZGhhdC5jb20+CiMgCmRpZmYgLU5ydSBh L2FyY2gvcHBjL21tL2luaXQuYyBiL2FyY2gvcHBjL21tL2luaXQuYwotLS0gYS9hcmNoL3BwYy9t bS9pbml0LmMJMjAwNC0xMS0zMCAxOTozNzo0MiAtMDg6MDAKKysrIGIvYXJjaC9wcGMvbW0vaW5p dC5jCTIwMDQtMTEtMzAgMTk6Mzc6NDIgLTA4OjAwCkBAIC00ODQsMTkgKzQ4NCw2IEBACiAJaWYg KGFncF9zcGVjaWFsX3BhZ2UpCiAJCXByaW50ayhLRVJOX0lORk8gIkFHUCBzcGVjaWFsIHBhZ2U6 IDB4JTA4bHhcbiIsIGFncF9zcGVjaWFsX3BhZ2UpOwogI2VuZGlmCi0KLQkvKiBNYWtlIHN1cmUg YWxsIG91ciBwYWdldGFibGUgcGFnZXMgaGF2ZSBwYWdlLT5tYXBwaW5nCi0JICAgYW5kIHBhZ2Ut PmluZGV4IHNldCBjb3JyZWN0bHkuICovCi0JZm9yIChhZGRyID0gS0VSTkVMQkFTRTsgYWRkciAh PSAwOyBhZGRyICs9IFBHRElSX1NJWkUpIHsKLQkJc3RydWN0IHBhZ2UgKnBnOwotCQlwbWRfdCAq cG1kID0gcG1kX29mZnNldChwZ2Rfb2Zmc2V0X2soYWRkciksIGFkZHIpOwotCQlpZiAocG1kX3By ZXNlbnQoKnBtZCkpIHsKLQkJCXBnID0gcG1kX3BhZ2UoKnBtZCk7Ci0JCQlwZy0+bWFwcGluZyA9 ICh2b2lkICopICZpbml0X21tOwotCQkJcGctPmluZGV4ID0gYWRkcjsKLQkJfQotCX0KLQogCW1l bV9pbml0X2RvbmUgPSAxOwogfQogCmRpZmYgLU5ydSBhL2FyY2gvcHBjL21tL3BndGFibGUuYyBi L2FyY2gvcHBjL21tL3BndGFibGUuYwotLS0gYS9hcmNoL3BwYy9tbS9wZ3RhYmxlLmMJMjAwNC0x MS0zMCAxOTozNzo0MiAtMDg6MDAKKysrIGIvYXJjaC9wcGMvbW0vcGd0YWJsZS5jCTIwMDQtMTEt MzAgMTk6Mzc6NDIgLTA4OjAwCkBAIC0xMDAsMTQgKzEwMCw5IEBACiAJZXh0ZXJuIGludCBtZW1f aW5pdF9kb25lOwogCWV4dGVybiB2b2lkICplYXJseV9nZXRfcGFnZSh2b2lkKTsKIAotCWlmICht ZW1faW5pdF9kb25lKSB7CisJaWYgKG1lbV9pbml0X2RvbmUpCiAJCXB0ZSA9IChwdGVfdCAqKV9f Z2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMfF9fR0ZQX1JFUEVBVCk7Ci0JCWlmIChwdGUpIHsKLQkJ CXN0cnVjdCBwYWdlICpwdGVwYWdlID0gdmlydF90b19wYWdlKHB0ZSk7Ci0JCQlwdGVwYWdlLT5t YXBwaW5nID0gKHZvaWQgKikgbW07Ci0JCQlwdGVwYWdlLT5pbmRleCA9IGFkZHJlc3MgJiBQTURf TUFTSzsKLQkJfQotCX0gZWxzZQorCWVsc2UKIAkJcHRlID0gKHB0ZV90ICopZWFybHlfZ2V0X3Bh Z2UoKTsKIAlpZiAocHRlKQogCQljbGVhcl9wYWdlKHB0ZSk7CkBAIC0xMjUsMTEgKzEyMCw4IEBA CiAjZW5kaWYKIAogCXB0ZXBhZ2UgPSBhbGxvY19wYWdlcyhmbGFncywgMCk7Ci0JaWYgKHB0ZXBh Z2UpIHsKLQkJcHRlcGFnZS0+bWFwcGluZyA9ICh2b2lkICopIG1tOwotCQlwdGVwYWdlLT5pbmRl eCA9IGFkZHJlc3MgJiBQTURfTUFTSzsKKwlpZiAocHRlcGFnZSkKIAkJY2xlYXJfaGlnaHBhZ2Uo cHRlcGFnZSk7Ci0JfQogCXJldHVybiBwdGVwYWdlOwogfQogCkBAIC0xMzgsNyArMTMwLDYgQEAK ICNpZmRlZiBDT05GSUdfU01QCiAJaGFzaF9wYWdlX3N5bmMoKTsKICNlbmRpZgotCXZpcnRfdG9f cGFnZShwdGUpLT5tYXBwaW5nID0gTlVMTDsKIAlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpcHRl KTsKIH0KIApAQCAtMTQ3LDcgKzEzOCw2IEBACiAjaWZkZWYgQ09ORklHX1NNUAogCWhhc2hfcGFn ZV9zeW5jKCk7CiAjZW5kaWYKLQlwdGVwYWdlLT5tYXBwaW5nID0gTlVMTDsKIAlfX2ZyZWVfcGFn ZShwdGVwYWdlKTsKIH0KIApAQCAtMjg1LDcgKzI3NSw3IEBACiAJcGcgPSBwdGVfYWxsb2Nfa2Vy bmVsKCZpbml0X21tLCBwZCwgdmEpOwogCWlmIChwZyAhPSAwKSB7CiAJCWVyciA9IDA7Ci0JCXNl dF9wdGUocGcsIHBmbl9wdGUocGEgPj4gUEFHRV9TSElGVCwgX19wZ3Byb3QoZmxhZ3MpKSk7CisJ CXNldF9wdGUoJmluaXRfbW0sIHZhLCBwZywgcGZuX3B0ZShwYSA+PiBQQUdFX1NISUZULCBfX3Bn cHJvdChmbGFncykpKTsKIAkJaWYgKG1lbV9pbml0X2RvbmUpCiAJCQlmbHVzaF9IUFRFKDAsIHZh LCBwbWRfdmFsKCpwZCkpOwogCX0KZGlmZiAtTnJ1IGEvYXJjaC9wcGMvbW0vdGxiLmMgYi9hcmNo L3BwYy9tbS90bGIuYwotLS0gYS9hcmNoL3BwYy9tbS90bGIuYwkyMDA0LTExLTMwIDE5OjM3OjQy IC0wODowMAorKysgYi9hcmNoL3BwYy9tbS90bGIuYwkyMDA0LTExLTMwIDE5OjM3OjQyIC0wODow MApAQCAtNDcsMjYgKzQ3LDYgQEAKIH0KIAogLyoKLSAqIENhbGxlZCBieSBwdGVwX3Rlc3RfYW5k X2NsZWFyX3lvdW5nKCkKLSAqLwotdm9pZCBmbHVzaF9oYXNoX29uZV9wdGUocHRlX3QgKnB0ZXAp Ci17Ci0Jc3RydWN0IHBhZ2UgKnB0ZXBhZ2U7Ci0Jc3RydWN0IG1tX3N0cnVjdCAqbW07Ci0JdW5z aWduZWQgbG9uZyBwdGVwaHlzOwotCXVuc2lnbmVkIGxvbmcgYWRkcjsKLQotCWlmIChIYXNoID09 IDApCi0JCXJldHVybjsKLQkKLQlwdGVwYWdlID0gdmlydF90b19wYWdlKHB0ZXApOwotCW1tID0g KHN0cnVjdCBtbV9zdHJ1Y3QgKikgcHRlcGFnZS0+bWFwcGluZzsKLQlwdGVwaHlzID0gX19wYShw dGVwKSAmIFBBR0VfTUFTSzsKLQlhZGRyID0gcHRlcGFnZS0+aW5kZXggKyAoKCh1bnNpZ25lZCBs b25nKXB0ZXAgJiB+UEFHRV9NQVNLKSA8PCA5KTsKLQlmbHVzaF9oYXNoX3BhZ2VzKG1tLT5jb250 ZXh0LCBhZGRyLCBwdGVwaHlzLCAxKTsKLX0KLQotLyoKICAqIENhbGxlZCBieSBwdGVwX3NldF9h Y2Nlc3NfZmxhZ3MsIG11c3QgZmx1c2ggb24gQ1BVcyBmb3Igd2hpY2ggdGhlCiAgKiBEU0kgaGFu ZGxlciBjYW4ndCBqdXN0ICJmaXh1cCIgdGhlIFRMQiBvbiBhIHdyaXRlIGZhdWx0CiAgKi8KZGlm ZiAtTnJ1IGEvYXJjaC9wcGM2NC9tbS9pbml0LmMgYi9hcmNoL3BwYzY0L21tL2luaXQuYwotLS0g YS9hcmNoL3BwYzY0L21tL2luaXQuYwkyMDA0LTExLTMwIDE5OjM3OjQyIC0wODowMAorKysgYi9h cmNoL3BwYzY0L21tL2luaXQuYwkyMDA0LTExLTMwIDE5OjM3OjQyIC0wODowMApAQCAtMTU1LDcg KzE1NSw3IEBACiAJCXB0ZXAgPSBwdGVfYWxsb2Nfa2VybmVsKCZpb3JlbWFwX21tLCBwbWRwLCBl YSk7CiAKIAkJcGEgPSBhYnNfdG9fcGh5cyhwYSk7Ci0JCXNldF9wdGUocHRlcCwgcGZuX3B0ZShw YSA+PiBQQUdFX1NISUZULCBfX3BncHJvdChmbGFncykpKTsKKwkJc2V0X3B0ZSgmaW9yZW1hcF9t bSwgZWEsIHB0ZXAsIHBmbl9wdGUocGEgPj4gUEFHRV9TSElGVCwgX19wZ3Byb3QoZmxhZ3MpKSk7 CiAJCXNwaW5fdW5sb2NrKCZpb3JlbWFwX21tLnBhZ2VfdGFibGVfbG9jayk7CiAJfSBlbHNlIHsK IAkJdW5zaWduZWQgbG9uZyB2YSwgdnBuLCBoYXNoLCBocHRlZzsKQEAgLTI4Nyw4ICsyODcsOCBA QAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB1bm1hcF9pbV9hcmVhX3B0ZShwbWRfdCAq cG1kLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCi0JCQkJICB1bnNpZ25lZCBsb25nIHNpemUpCitz dGF0aWMgdm9pZCB1bm1hcF9pbV9hcmVhX3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3Qg KnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXpl KQogewogCXVuc2lnbmVkIGxvbmcgZW5kOwogCXB0ZV90ICpwdGU7CkBAIC0zMDksNyArMzA5LDcg QEAKIAogCWRvIHsKIAkJcHRlX3QgcGFnZTsKLQkJcGFnZSA9IHB0ZXBfZ2V0X2FuZF9jbGVhcihw dGUpOworCQlwYWdlID0gcHRlcF9nZXRfYW5kX2NsZWFyKG1tLCBhZGRyZXNzLCBwdGUpOwogCQlh ZGRyZXNzICs9IFBBR0VfU0laRTsKIAkJcHRlKys7CiAJCWlmIChwdGVfbm9uZShwYWdlKSkKQEAg LTMyMCw4ICszMjAsOCBAQAogCX0gd2hpbGUgKGFkZHJlc3MgPCBlbmQpOwogfQogCi1zdGF0aWMg dm9pZCB1bm1hcF9pbV9hcmVhX3BtZChwZ2RfdCAqZGlyLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Ms Ci0JCQkJICB1bnNpZ25lZCBsb25nIHNpemUpCitzdGF0aWMgdm9pZCB1bm1hcF9pbV9hcmVhX3Bt ZChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKmRpciwgdW5zaWduZWQgbG9uZyBhZGRyZXNz LAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXplKQogewogCXVuc2lnbmVkIGxvbmcgZW5kOwog CXBtZF90ICpwbWQ7CkBAIC0zNDEsNyArMzQxLDcgQEAKIAkJZW5kID0gUEdESVJfU0laRTsKIAog CWRvIHsKLQkJdW5tYXBfaW1fYXJlYV9wdGUocG1kLCBhZGRyZXNzLCBlbmQgLSBhZGRyZXNzKTsK KwkJdW5tYXBfaW1fYXJlYV9wdGUobW0sIHBtZCwgYWRkcmVzcywgZW5kIC0gYWRkcmVzcyk7CiAJ CWFkZHJlc3MgPSAoYWRkcmVzcyArIFBNRF9TSVpFKSAmIFBNRF9NQVNLOwogCQlwbWQrKzsKIAl9 IHdoaWxlIChhZGRyZXNzIDwgZW5kKTsKQEAgLTM4Miw3ICszODIsNyBAQAogCWRpciA9IHBnZF9v ZmZzZXRfaShhZGRyZXNzKTsKIAlmbHVzaF9jYWNoZV92dW5tYXAoYWRkcmVzcywgZW5kKTsKIAlk byB7Ci0JCXVubWFwX2ltX2FyZWFfcG1kKGRpciwgYWRkcmVzcywgZW5kIC0gYWRkcmVzcyk7CisJ CXVubWFwX2ltX2FyZWFfcG1kKG1tLCBkaXIsIGFkZHJlc3MsIGVuZCAtIGFkZHJlc3MpOwogCQlh ZGRyZXNzID0gKGFkZHJlc3MgKyBQR0RJUl9TSVpFKSAmIFBHRElSX01BU0s7CiAJCWRpcisrOwog CX0gd2hpbGUgKGFkZHJlc3MgJiYgKGFkZHJlc3MgPCBlbmQpKTsKZGlmZiAtTnJ1IGEvYXJjaC9w cGM2NC9tbS90bGIuYyBiL2FyY2gvcHBjNjQvbW0vdGxiLmMKLS0tIGEvYXJjaC9wcGM2NC9tbS90 bGIuYwkyMDA0LTExLTMwIDE5OjM3OjQyIC0wODowMAorKysgYi9hcmNoL3BwYzY0L21tL3RsYi5j CTIwMDQtMTEtMzAgMTk6Mzc6NDIgLTA4OjAwCkBAIC03NCwxOSArNzQsMTIgQEAKICAqIGNoYW5n ZSB0aGUgZXhpc3RpbmcgSFBURSB0byByZWFkLW9ubHkgcmF0aGVyIHRoYW4gcmVtb3ZpbmcgaXQK ICAqIChpZiB3ZSByZW1vdmUgaXQgd2Ugc2hvdWxkIGNsZWFyIHRoZSBfUFRFX0hQVEVGTEFHUyBi aXRzKS4KICAqLwotdm9pZCBocHRlX3VwZGF0ZShwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBw dGUsIGludCB3cnByb3QpCit2b2lkIGhwdGVfdXBkYXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1 bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgcHRlLAorCQkgaW50IHdycHJvdCkKIHsK LQlzdHJ1Y3QgcGFnZSAqcHRlcGFnZTsKLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKLQl1bnNpZ25l ZCBsb25nIGFkZHI7CiAJaW50IGk7CiAJdW5zaWduZWQgbG9uZyBjb250ZXh0ID0gMDsKIAlzdHJ1 Y3QgcHBjNjRfdGxiX2JhdGNoICpiYXRjaCA9ICZfX2dldF9jcHVfdmFyKHBwYzY0X3RsYl9iYXRj aCk7Ci0KLQlwdGVwYWdlID0gdmlydF90b19wYWdlKHB0ZXApOwotCW1tID0gKHN0cnVjdCBtbV9z dHJ1Y3QgKikgcHRlcGFnZS0+bWFwcGluZzsKLQlhZGRyID0gcHRlcGFnZS0+aW5kZXggKwotCQko KCh1bnNpZ25lZCBsb25nKXB0ZXAgJiB+UEFHRV9NQVNLKSAqIFBUUlNfUEVSX1BURSk7CiAKIAlp ZiAoUkVHSU9OX0lEKGFkZHIpID09IFVTRVJfUkVHSU9OX0lEKQogCQljb250ZXh0ID0gbW0tPmNv bnRleHQuaWQ7CmRpZmYgLU5ydSBhL2luY2x1ZGUvYXNtLXBwYy9oaWdobWVtLmggYi9pbmNsdWRl L2FzbS1wcGMvaGlnaG1lbS5oCi0tLSBhL2luY2x1ZGUvYXNtLXBwYy9oaWdobWVtLmgJMjAwNC0x MS0zMCAxOTozNzo0MiAtMDg6MDAKKysrIGIvaW5jbHVkZS9hc20tcHBjL2hpZ2htZW0uaAkyMDA0 LTExLTMwIDE5OjM3OjQyIC0wODowMApAQCAtOTAsNyArOTAsNyBAQAogI2lmZGVmIEhJR0hNRU1f REVCVUcKIAlCVUdfT04oIXB0ZV9ub25lKCooa21hcF9wdGUraWR4KSkpOwogI2VuZGlmCi0Jc2V0 X3B0ZShrbWFwX3B0ZStpZHgsIG1rX3B0ZShwYWdlLCBrbWFwX3Byb3QpKTsKKwlzZXRfcHRlKCZp bml0X21tLCB2YWRkciwga21hcF9wdGUraWR4LCBta19wdGUocGFnZSwga21hcF9wcm90KSk7CiAJ Zmx1c2hfdGxiX3BhZ2UoTlVMTCwgdmFkZHIpOwogCiAJcmV0dXJuICh2b2lkKikgdmFkZHI7CkBA IC0xMTQsNyArMTE0LDcgQEAKIAkgKiBmb3JjZSBvdGhlciBtYXBwaW5ncyB0byBPb3BzIGlmIHRo ZXknbGwgdHJ5IHRvIGFjY2VzcwogCSAqIHRoaXMgcHRlIHdpdGhvdXQgZmlyc3QgcmVtYXAgaXQK IAkgKi8KLQlwdGVfY2xlYXIoa21hcF9wdGUraWR4KTsKKwlwdGVfY2xlYXIoJmluaXRfbW0sIHZh ZGRyLCBrbWFwX3B0ZStpZHgpOwogCWZsdXNoX3RsYl9wYWdlKE5VTEwsIHZhZGRyKTsKICNlbmRp ZgogCWRlY19wcmVlbXB0X2NvdW50KCk7CmRpZmYgLU5ydSBhL2luY2x1ZGUvYXNtLXBwYy9wZ3Rh YmxlLmggYi9pbmNsdWRlL2FzbS1wcGMvcGd0YWJsZS5oCi0tLSBhL2luY2x1ZGUvYXNtLXBwYy9w Z3RhYmxlLmgJMjAwNC0xMS0zMCAxOTozNzo0MiAtMDg6MDAKKysrIGIvaW5jbHVkZS9hc20tcHBj L3BndGFibGUuaAkyMDA0LTExLTMwIDE5OjM3OjQyIC0wODowMApAQCAtNDQ1LDcgKzQ0NSw3IEBA CiAKICNkZWZpbmUgcHRlX25vbmUocHRlKQkJKChwdGVfdmFsKHB0ZSkgJiB+X1BURV9OT05FX01B U0spID09IDApCiAjZGVmaW5lIHB0ZV9wcmVzZW50KHB0ZSkJKHB0ZV92YWwocHRlKSAmIF9QQUdF X1BSRVNFTlQpCi0jZGVmaW5lIHB0ZV9jbGVhcihwdGVwKQkJZG8geyBzZXRfcHRlKChwdGVwKSwg X19wdGUoMCkpOyB9IHdoaWxlICgwKQorI2RlZmluZSBwdGVfY2xlYXIobW0sYWRkcixwdGVwKQlk byB7IHNldF9wdGUoKG1tKSwgKGFkZHIpLCAocHRlcCksIF9fcHRlKDApKTsgfSB3aGlsZSAoMCkK IAogI2RlZmluZSBwbWRfbm9uZShwbWQpCQkoIXBtZF92YWwocG1kKSkKICNkZWZpbmUJcG1kX2Jh ZChwbWQpCQkocG1kX3ZhbChwbWQpICYgX1BNRF9CQUQpCkBAIC01MDksNiArNTA5LDE3IEBACiB9 CiAKIC8qCisgKiBXaGVuIGZsdXNoaW5nIHRoZSB0bGIgZW50cnkgZm9yIGEgcGFnZSwgd2UgYWxz byBuZWVkIHRvIGZsdXNoIHRoZSBoYXNoCisgKiB0YWJsZSBlbnRyeS4gIGZsdXNoX2hhc2hfcGFn ZXMgaXMgYXNzZW1ibGVyIChmb3Igc3BlZWQpIGluIGhhc2h0YWJsZS5TLgorICovCitleHRlcm4g aW50IGZsdXNoX2hhc2hfcGFnZXModW5zaWduZWQgY29udGV4dCwgdW5zaWduZWQgbG9uZyB2YSwK KwkJCSAgICB1bnNpZ25lZCBsb25nIHBtZHZhbCwgaW50IGNvdW50KTsKKworLyogQWRkIGFuIEhQ VEUgdG8gdGhlIGhhc2ggdGFibGUgKi8KK2V4dGVybiB2b2lkIGFkZF9oYXNoX3BhZ2UodW5zaWdu ZWQgY29udGV4dCwgdW5zaWduZWQgbG9uZyB2YSwKKwkJCSAgdW5zaWduZWQgbG9uZyBwbWR2YWwp OworCisvKgogICogQXRvbWljIFBURSB1cGRhdGVzLgogICoKICAqIHB0ZV91cGRhdGUgY2xlYXJz IGFuZCBzZXRzIGJpdCBhdG9taWNhbGx5LCBhbmQgcmV0dXJucwpAQCAtNTM5LDcgKzU1MCw4IEBA CiAgKiBPbiBtYWNoaW5lcyB3aGljaCB1c2UgYW4gTU1VIGhhc2ggdGFibGUgd2UgYXZvaWQgY2hh bmdpbmcgdGhlCiAgKiBfUEFHRV9IQVNIUFRFIGJpdC4KICAqLwotc3RhdGljIGlubGluZSB2b2lk IHNldF9wdGUocHRlX3QgKnB0ZXAsIHB0ZV90IHB0ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRf cHRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHIsCisJCQkgICBwdGVf dCAqcHRlcCwgcHRlX3QgcHRlKQogewogI2lmIF9QQUdFX0hBU0hQVEUgIT0gMAogCXB0ZV91cGRh dGUocHRlcCwgfl9QQUdFX0hBU0hQVEUsIHB0ZV92YWwocHRlKSAmIH5fUEFHRV9IQVNIUFRFKTsK QEAgLTU0OCw0MyArNTYwLDQ4IEBACiAjZW5kaWYKIH0KIAotZXh0ZXJuIHZvaWQgZmx1c2hfaGFz aF9vbmVfcHRlKHB0ZV90ICpwdGVwKTsKLQogLyoKICAqIDIuNiBjYWxsZXMgdGhpcyB3aXRob3V0 IGZsdXNoaW5nIHRoZSBUTEIgZW50cnksIHRoaXMgaXMgd3JvbmcKICAqIGZvciBvdXIgaGFzaC1i YXNlZCBpbXBsZW1lbnRhdGlvbiwgd2UgZml4IHRoYXQgdXAgaGVyZQogICovCi1zdGF0aWMgaW5s aW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHB0ZV90ICpwdGVwKQorI2RlZmluZSBf X0hBVkVfQVJDSF9QVEVQX1RFU1RfQU5EX0NMRUFSX1lPVU5HCitzdGF0aWMgaW5saW5lIGludCBf X3B0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcodW5zaWduZWQgY29udGV4dCwgdW5zaWduZWQgbG9u ZyBhZGRyLAorCQkJCQkgICAgICBwdGVfdCAqcHRlcCkKIHsKIAl1bnNpZ25lZCBsb25nIG9sZDsK IAlvbGQgPSAocHRlX3VwZGF0ZShwdGVwLCBfUEFHRV9BQ0NFU1NFRCwgMCkgJiBfUEFHRV9BQ0NF U1NFRCk7CiAjaWYgX1BBR0VfSEFTSFBURSAhPSAwCi0JaWYgKG9sZCAmIF9QQUdFX0hBU0hQVEUp Ci0JCWZsdXNoX2hhc2hfb25lX3B0ZShwdGVwKTsKKwlpZiAob2xkICYgX1BBR0VfSEFTSFBURSkg eworCQl1bnNpZ25lZCBsb25nIHB0ZXBoeXMgPSBfX3BhKHB0ZXApICYgUEFHRV9NQVNLOworCQlm bHVzaF9oYXNoX3BhZ2VzKGNvbnRleHQsIGFkZHIsIHB0ZXBoeXMsIDEpOworCX0KICNlbmRpZgog CXJldHVybiBvbGQgIT0gMDsKIH0KKyNkZWZpbmUgcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhf X3ZtYSwgX19hZGRyLCBfX3B0ZXApIFwKKwlfX3B0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcoKF9f dm1hKS0+dm1fbW0tPmNvbnRleHQsIF9fYWRkciwgX19wdGVwKQogCi1zdGF0aWMgaW5saW5lIGlu dCBwdGVwX3Rlc3RfYW5kX2NsZWFyX2RpcnR5KHB0ZV90ICpwdGVwKQorI2RlZmluZSBfX0hBVkVf QVJDSF9QVEVQX1RFU1RfQU5EX0NMRUFSX0RJUlRZCitzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rl c3RfYW5kX2NsZWFyX2RpcnR5KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJCQkgICAg dW5zaWduZWQgbG9uZyBhZGRyLCBwdGVfdCAqcHRlcCkKIHsKIAlyZXR1cm4gKHB0ZV91cGRhdGUo cHRlcCwgKF9QQUdFX0RJUlRZIHwgX1BBR0VfSFdXUklURSksIDApICYgX1BBR0VfRElSVFkpICE9 IDA7CiB9CiAKLXN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlcF9nZXRfYW5kX2NsZWFyKHB0ZV90ICpw dGVwKQorI2RlZmluZSBfX0hBVkVfQVJDSF9QVEVQX0dFVF9BTkRfQ0xFQVIKK3N0YXRpYyBpbmxp bmUgcHRlX3QgcHRlcF9nZXRfYW5kX2NsZWFyKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25l ZCBsb25nIGFkZHIsCisJCQkJICAgICAgIHB0ZV90ICpwdGVwKQogewogCXJldHVybiBfX3B0ZShw dGVfdXBkYXRlKHB0ZXAsIH5fUEFHRV9IQVNIUFRFLCAwKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dm9pZCBwdGVwX3NldF93cnByb3RlY3QocHRlX3QgKnB0ZXApCisjZGVmaW5lIF9fSEFWRV9BUkNI X1BURVBfU0VUX1dSUFJPVEVDVAorc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfc2V0X3dycHJvdGVj dChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLAorCQkJCSAgICAgIHB0 ZV90ICpwdGVwKQogewogCXB0ZV91cGRhdGUocHRlcCwgKF9QQUdFX1JXIHwgX1BBR0VfSFdXUklU RSksIDApOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcHRlcF9ta2RpcnR5KHB0ZV90ICpwdGVw KQotewotCXB0ZV91cGRhdGUocHRlcCwgMCwgX1BBR0VfRElSVFkpOwotfQotCiAjZGVmaW5lIF9f SEFWRV9BUkNIX1BURVBfU0VUX0FDQ0VTU19GTEFHUwogc3RhdGljIGlubGluZSB2b2lkIF9fcHRl cF9zZXRfYWNjZXNzX2ZsYWdzKHB0ZV90ICpwdGVwLCBwdGVfdCBlbnRyeSwgaW50IGRpcnR5KQog ewpAQCAtNjA0LDYgKzYyMSw3IEBACiAgKi8KICNkZWZpbmUgcGdwcm90X25vbmNhY2hlZChwcm90 KQkoX19wZ3Byb3QocGdwcm90X3ZhbChwcm90KSB8IF9QQUdFX05PX0NBQ0hFIHwgX1BBR0VfR1VB UkRFRCkpCiAKKyNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFX1NBTUUKICNkZWZpbmUgcHRlX3NhbWUo QSxCKQkoKChwdGVfdmFsKEEpIF4gcHRlX3ZhbChCKSkgJiB+X1BBR0VfSEFTSFBURSkgPT0gMCkK IAogLyoKQEAgLTY1NiwxNyArNjc0LDYgQEAKIGV4dGVybiB2b2lkIHBhZ2luZ19pbml0KHZvaWQp OwogCiAvKgotICogV2hlbiBmbHVzaGluZyB0aGUgdGxiIGVudHJ5IGZvciBhIHBhZ2UsIHdlIGFs c28gbmVlZCB0byBmbHVzaCB0aGUgaGFzaAotICogdGFibGUgZW50cnkuICBmbHVzaF9oYXNoX3Bh Z2VzIGlzIGFzc2VtYmxlciAoZm9yIHNwZWVkKSBpbiBoYXNodGFibGUuUy4KLSAqLwotZXh0ZXJu IGludCBmbHVzaF9oYXNoX3BhZ2VzKHVuc2lnbmVkIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgdmEs Ci0JCQkgICAgdW5zaWduZWQgbG9uZyBwbWR2YWwsIGludCBjb3VudCk7Ci0KLS8qIEFkZCBhbiBI UFRFIHRvIHRoZSBoYXNoIHRhYmxlICovCi1leHRlcm4gdm9pZCBhZGRfaGFzaF9wYWdlKHVuc2ln bmVkIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgdmEsCi0JCQkgIHVuc2lnbmVkIGxvbmcgcG1kdmFs KTsKLQotLyoKICAqIEVuY29kZSBhbmQgZGVjb2RlIGEgc3dhcCBlbnRyeS4KICAqIE5vdGUgdGhh dCB0aGUgYml0cyB3ZSB1c2UgaW4gYSBQVEUgZm9yIHJlcHJlc2VudGluZyBhIHN3YXAgZW50cnkK ICAqIG11c3Qgbm90IGluY2x1ZGUgdGhlIF9QQUdFX1BSRVNFTlQgYml0LCB0aGUgX1BBR0VfRklM RSBiaXQsIG9yIHRoZQpAQCAtNzIzLDE1ICs3MzAsOSBAQAogCiBleHRlcm4gaW50IGdldF9wdGVw dHIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKipwdGVw KTsKIAotI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8KLQotI2RlZmluZSBfX0hBVkVfQVJDSF9Q VEVQX1RFU1RfQU5EX0NMRUFSX1lPVU5HCi0jZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfVEVTVF9B TkRfQ0xFQVJfRElSVFkKLSNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFUF9HRVRfQU5EX0NMRUFSCi0j ZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfU0VUX1dSUFJPVEVDVAotI2RlZmluZSBfX0hBVkVfQVJD SF9QVEVQX01LRElSVFkKLSNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFX1NBTUUKICNpbmNsdWRlIDxh c20tZ2VuZXJpYy9wZ3RhYmxlLmg+CisKKyNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCiAKICNl bmRpZiAvKiBfUFBDX1BHVEFCTEVfSCAqLwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KZGlmZiAt TnJ1IGEvaW5jbHVkZS9hc20tcHBjNjQvcGdhbGxvYy5oIGIvaW5jbHVkZS9hc20tcHBjNjQvcGdh bGxvYy5oCi0tLSBhL2luY2x1ZGUvYXNtLXBwYzY0L3BnYWxsb2MuaAkyMDA0LTExLTMwIDE5OjM3 OjQyIC0wODowMAorKysgYi9pbmNsdWRlL2FzbS1wcGM2NC9wZ2FsbG9jLmgJMjAwNC0xMS0zMCAx OTozNzo0MiAtMDg6MDAKQEAgLTQ3LDQyICs0NywyNiBAQAogI2RlZmluZSBwbWRfcG9wdWxhdGUo bW0sIHBtZCwgcHRlX3BhZ2UpIFwKIAlwbWRfcG9wdWxhdGVfa2VybmVsKG1tLCBwbWQsIHBhZ2Vf YWRkcmVzcyhwdGVfcGFnZSkpCiAKLXN0YXRpYyBpbmxpbmUgcHRlX3QgKgotcHRlX2FsbG9jX29u ZV9rZXJuZWwoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKK3N0 YXRpYyBpbmxpbmUgcHRlX3QgKnB0ZV9hbGxvY19vbmVfa2VybmVsKHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpCiB7Ci0JcHRlX3QgKnB0ZTsKLQlwdGUgPSBrbWVt X2NhY2hlX2FsbG9jKHplcm9fY2FjaGUsIEdGUF9LRVJORUx8X19HRlBfUkVQRUFUKTsKLQlpZiAo cHRlKSB7Ci0JCXN0cnVjdCBwYWdlICpwdGVwYWdlID0gdmlydF90b19wYWdlKHB0ZSk7Ci0JCXB0 ZXBhZ2UtPm1hcHBpbmcgPSAodm9pZCAqKSBtbTsKLQkJcHRlcGFnZS0+aW5kZXggPSBhZGRyZXNz ICYgUE1EX01BU0s7Ci0JfQotCXJldHVybiBwdGU7CisJcmV0dXJuIGttZW1fY2FjaGVfYWxsb2Mo emVyb19jYWNoZSwgR0ZQX0tFUk5FTHxfX0dGUF9SRVBFQVQpOwogfQogCi1zdGF0aWMgaW5saW5l IHN0cnVjdCBwYWdlICoKLXB0ZV9hbGxvY19vbmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2ln bmVkIGxvbmcgYWRkcmVzcykKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKnB0ZV9hbGxvY19v bmUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKIHsKLQlwdGVf dCAqcHRlOwotCXB0ZSA9IGttZW1fY2FjaGVfYWxsb2MoemVyb19jYWNoZSwgR0ZQX0tFUk5FTHxf X0dGUF9SRVBFQVQpOwotCWlmIChwdGUpIHsKLQkJc3RydWN0IHBhZ2UgKnB0ZXBhZ2UgPSB2aXJ0 X3RvX3BhZ2UocHRlKTsKLQkJcHRlcGFnZS0+bWFwcGluZyA9ICh2b2lkICopIG1tOwotCQlwdGVw YWdlLT5pbmRleCA9IGFkZHJlc3MgJiBQTURfTUFTSzsKLQkJcmV0dXJuIHB0ZXBhZ2U7Ci0JfQor CXB0ZV90ICpwdGUgPSBrbWVtX2NhY2hlX2FsbG9jKHplcm9fY2FjaGUsIEdGUF9LRVJORUx8X19H RlBfUkVQRUFUKTsKKwlpZiAocHRlKQorCQlyZXR1cm4gdmlydF90b19wYWdlKHB0ZSk7CiAJcmV0 dXJuIE5VTEw7CiB9CiAJCQogc3RhdGljIGlubGluZSB2b2lkIHB0ZV9mcmVlX2tlcm5lbChwdGVf dCAqcHRlKQogewotCXZpcnRfdG9fcGFnZShwdGUpLT5tYXBwaW5nID0gTlVMTDsKIAlrbWVtX2Nh Y2hlX2ZyZWUoemVyb19jYWNoZSwgcHRlKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHB0ZV9m cmVlKHN0cnVjdCBwYWdlICpwdGVwYWdlKQogewotCXB0ZXBhZ2UtPm1hcHBpbmcgPSBOVUxMOwog CWttZW1fY2FjaGVfZnJlZSh6ZXJvX2NhY2hlLCBwYWdlX2FkZHJlc3MocHRlcGFnZSkpOwogfQog CmRpZmYgLU5ydSBhL2luY2x1ZGUvYXNtLXBwYzY0L3BndGFibGUuaCBiL2luY2x1ZGUvYXNtLXBw YzY0L3BndGFibGUuaAotLS0gYS9pbmNsdWRlL2FzbS1wcGM2NC9wZ3RhYmxlLmgJMjAwNC0xMS0z MCAxOTozNzo0MiAtMDg6MDAKKysrIGIvaW5jbHVkZS9hc20tcHBjNjQvcGd0YWJsZS5oCTIwMDQt MTEtMzAgMTk6Mzc6NDIgLTA4OjAwCkBAIC0zMTAsOSArMzEwLDEwIEBACiAgKiBiYXRjaCwgZG9l c24ndCBhY3R1YWxseSB0cmlnZ2VycyB0aGUgaGFzaCBmbHVzaCBpbW1lZGlhdGVseSwKICAqIHlv dSBuZWVkIHRvIGNhbGwgZmx1c2hfdGxiX3BlbmRpbmcoKSB0byBkbyB0aGF0LgogICovCi1leHRl cm4gdm9pZCBocHRlX3VwZGF0ZShwdGVfdCAqcHRlcCwgdW5zaWduZWQgbG9uZyBwdGUsIGludCB3 cnByb3QpOworZXh0ZXJuIHZvaWQgaHB0ZV91cGRhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVu c2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBwdGUsCisJCQlpbnQgd3Jwcm90KTsKIAot c3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhwdGVfdCAqcHRlcCkK K3N0YXRpYyBpbmxpbmUgaW50IF9fcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhzdHJ1Y3QgbW1f c3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwdGVfdCAqcHRlcCkKIHsKIAl1bnNpZ25l ZCBsb25nIG9sZDsKIApAQCAtMzIwLDE4ICszMjEsMjYgQEAKIAkJcmV0dXJuIDA7CiAJb2xkID0g cHRlX3VwZGF0ZShwdGVwLCBfUEFHRV9BQ0NFU1NFRCk7CiAJaWYgKG9sZCAmIF9QQUdFX0hBU0hQ VEUpIHsKLQkJaHB0ZV91cGRhdGUocHRlcCwgb2xkLCAwKTsKKwkJaHB0ZV91cGRhdGUobW0sIGFk ZHIsIG9sZCwgMCk7CiAJCWZsdXNoX3RsYl9wZW5kaW5nKCk7CiAJfQogCXJldHVybiAob2xkICYg X1BBR0VfQUNDRVNTRUQpICE9IDA7CiB9CisjZGVmaW5lIF9fSEFWRV9BUkNIX1BURVBfVEVTVF9B TkRfQ0xFQVJfWU9VTkcKKyNkZWZpbmUgcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhfX3ZtYSwg X19hZGRyLCBfX3B0ZXApCQkJXAorKHsJCQkJCQkJCQkJXAorCWludCBfX3I7CQkJCQkJCQlcCisJ X19yID0gX19wdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKChfX3ZtYSktPnZtX21tLCBfX2FkZHIs IF9fcHRlcCk7CVwKKwlfX3I7CQkJCQkJCQkJXAorfSkKKwogCiAvKgogICogT24gUlcvRElSVFkg Yml0IHRyYW5zaXRpb25zIHdlIGNhbiBhdm9pZCBmbHVzaGluZyB0aGUgaHB0ZS4gRm9yIHRoZQog ICogbW9tZW50IHdlIGFsd2F5cyBmbHVzaCBidXQgd2UgbmVlZCB0byBmaXggaHB0ZV91cGRhdGUg YW5kIHRlc3QgaWYgdGhlCiAgKiBvcHRpbWlzYXRpb24gaXMgd29ydGggaXQuCiAgKi8KLXN0YXRp YyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXApCitzdGF0 aWMgaW5saW5lIGludCBfX3B0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkoc3RydWN0IG1tX3N0cnVj dCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZXApCiB7CiAJdW5zaWduZWQgbG9u ZyBvbGQ7CiAKQEAgLTMzOSwxMSArMzQ4LDE5IEBACiAJCXJldHVybiAwOwogCW9sZCA9IHB0ZV91 cGRhdGUocHRlcCwgX1BBR0VfRElSVFkpOwogCWlmIChvbGQgJiBfUEFHRV9IQVNIUFRFKQotCQlo cHRlX3VwZGF0ZShwdGVwLCBvbGQsIDApOworCQlocHRlX3VwZGF0ZShtbSwgYWRkciwgb2xkLCAw KTsKIAlyZXR1cm4gKG9sZCAmIF9QQUdFX0RJUlRZKSAhPSAwOwogfQorI2RlZmluZSBfX0hBVkVf QVJDSF9QVEVQX1RFU1RfQU5EX0NMRUFSX0RJUlRZCisjZGVmaW5lIHB0ZXBfdGVzdF9hbmRfY2xl YXJfZGlydHkoX192bWEsIF9fYWRkciwgX19wdGVwKQkJCVwKKyh7CQkJCQkJCQkJCVwKKwlpbnQg X19yOwkJCQkJCQkJXAorCV9fciA9IF9fcHRlcF90ZXN0X2FuZF9jbGVhcl9kaXJ0eSgoX192bWEp LT52bV9tbSwgX19hZGRyLCBfX3B0ZXApOwlcCisJX19yOwkJCQkJCQkJCVwKK30pCiAKLXN0YXRp YyBpbmxpbmUgdm9pZCBwdGVwX3NldF93cnByb3RlY3QocHRlX3QgKnB0ZXApCisjZGVmaW5lIF9f SEFWRV9BUkNIX1BURVBfU0VUX1dSUFJPVEVDVAorc3RhdGljIGlubGluZSB2b2lkIHB0ZXBfc2V0 X3dycHJvdGVjdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwdGVf dCAqcHRlcCkKIHsKIAl1bnNpZ25lZCBsb25nIG9sZDsKIApAQCAtMzUxLDcgKzM2OCw3IEBACiAg ICAgICAgCQlyZXR1cm47CiAJb2xkID0gcHRlX3VwZGF0ZShwdGVwLCBfUEFHRV9SVyk7CiAJaWYg KG9sZCAmIF9QQUdFX0hBU0hQVEUpCi0JCWhwdGVfdXBkYXRlKHB0ZXAsIG9sZCwgMCk7CisJCWhw dGVfdXBkYXRlKG1tLCBhZGRyLCBvbGQsIDApOwogfQogCiAvKgpAQCAtMzYzLDQ0ICszODAsNDUg QEAKICAqIHRoZXNlIGZ1bmN0aW9ucyBhbmQgZm9yY2UgYSB0bGIgZmx1c2ggdW5jb25kaXRpb25h bGx5CiAgKi8KICNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFUF9DTEVBUl9ZT1VOR19GTFVTSAotI2Rl ZmluZSBwdGVwX2NsZWFyX2ZsdXNoX3lvdW5nKF9fdm1hLCBfX2FkZHJlc3MsIF9fcHRlcCkJCVwK LSh7CQkJCQkJCQkJXAotCWludCBfX3lvdW5nID0gcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhf X3B0ZXApOwkJXAotCV9feW91bmc7CQkJCQkJCVwKKyNkZWZpbmUgcHRlcF9jbGVhcl9mbHVzaF95 b3VuZyhfX3ZtYSwgX19hZGRyZXNzLCBfX3B0ZXApCQkJCVwKKyh7CQkJCQkJCQkJCQlcCisJaW50 IF9feW91bmcgPSBfX3B0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcoKF9fdm1hKS0+dm1fbW0sIF9f YWRkcmVzcywgX19wdGVwKTsJXAorCV9feW91bmc7CQkJCQkJCQkJXAogfSkKIAogI2RlZmluZSBf X0hBVkVfQVJDSF9QVEVQX0NMRUFSX0RJUlRZX0ZMVVNICi0jZGVmaW5lIHB0ZXBfY2xlYXJfZmx1 c2hfZGlydHkoX192bWEsIF9fYWRkcmVzcywgX19wdGVwKQkJXAotKHsJCQkJCQkJCQlcCi0JaW50 IF9fZGlydHkgPSBwdGVwX3Rlc3RfYW5kX2NsZWFyX2RpcnR5KF9fcHRlcCk7CQlcCi0JZmx1c2hf dGxiX3BhZ2UoX192bWEsIF9fYWRkcmVzcyk7CQkJCVwKLQlfX2RpcnR5OwkJCQkJCQlcCisjZGVm aW5lIHB0ZXBfY2xlYXJfZmx1c2hfZGlydHkoX192bWEsIF9fYWRkcmVzcywgX19wdGVwKQkJCQlc CisoewkJCQkJCQkJCQkJXAorCWludCBfX2RpcnR5ID0gX19wdGVwX3Rlc3RfYW5kX2NsZWFyX2Rp cnR5KChfX3ZtYSktPnZtX21tLCBfX2FkZHJlc3MsIF9fcHRlcCk7IAlcCisJZmx1c2hfdGxiX3Bh Z2UoX192bWEsIF9fYWRkcmVzcyk7CQkJCQkJXAorCV9fZGlydHk7CQkJCQkJCQkJXAogfSkKIAot c3RhdGljIGlubGluZSBwdGVfdCBwdGVwX2dldF9hbmRfY2xlYXIocHRlX3QgKnB0ZXApCisjZGVm aW5lIF9fSEFWRV9BUkNIX1BURVBfR0VUX0FORF9DTEVBUgorc3RhdGljIGlubGluZSBwdGVfdCBw dGVwX2dldF9hbmRfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRk ciwgcHRlX3QgKnB0ZXApCiB7CiAJdW5zaWduZWQgbG9uZyBvbGQgPSBwdGVfdXBkYXRlKHB0ZXAs IH4wVUwpOwogCiAJaWYgKG9sZCAmIF9QQUdFX0hBU0hQVEUpCi0JCWhwdGVfdXBkYXRlKHB0ZXAs IG9sZCwgMCk7CisJCWhwdGVfdXBkYXRlKG1tLCBhZGRyLCBvbGQsIDApOwogCXJldHVybiBfX3B0 ZShvbGQpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcHRlX2NsZWFyKHB0ZV90ICogcHRlcCkK K3N0YXRpYyBpbmxpbmUgdm9pZCBwdGVfY2xlYXIoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2ln bmVkIGxvbmcgYWRkciwgcHRlX3QgKiBwdGVwKQogewogCXVuc2lnbmVkIGxvbmcgb2xkID0gcHRl X3VwZGF0ZShwdGVwLCB+MFVMKTsKIAogCWlmIChvbGQgJiBfUEFHRV9IQVNIUFRFKQotCQlocHRl X3VwZGF0ZShwdGVwLCBvbGQsIDApOworCQlocHRlX3VwZGF0ZShtbSwgYWRkciwgb2xkLCAwKTsK IH0KIAogLyoKICAqIHNldF9wdGUgc3RvcmVzIGEgbGludXggUFRFIGludG8gdGhlIGxpbnV4IHBh Z2UgdGFibGUuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcHRlKHB0ZV90ICpwdGVwLCBw dGVfdCBwdGUpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3B0ZShzdHJ1Y3QgbW1fc3RydWN0ICpt bSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwdGVfdCAqcHRlcCwgcHRlX3QgcHRlKQogewogCWlmIChw dGVfcHJlc2VudCgqcHRlcCkpIHsKLQkJcHRlX2NsZWFyKHB0ZXApOworCQlwdGVfY2xlYXIobW0s IGFkZHIsIHB0ZXApOwogCQlmbHVzaF90bGJfcGVuZGluZygpOwogCX0KIAkqcHRlcCA9IF9fcHRl KHB0ZV92YWwocHRlKSkgJiB+X1BBR0VfSFBURUZMQUdTOwpAQCAtNDM4LDYgKzQ1Niw3IEBACiAg Ki8KICNkZWZpbmUgcGdwcm90X25vbmNhY2hlZChwcm90KQkoX19wZ3Byb3QocGdwcm90X3ZhbChw cm90KSB8IF9QQUdFX05PX0NBQ0hFIHwgX1BBR0VfR1VBUkRFRCkpCiAKKyNkZWZpbmUgX19IQVZF X0FSQ0hfUFRFX1NBTUUKICNkZWZpbmUgcHRlX3NhbWUoQSxCKQkoKChwdGVfdmFsKEEpIF4gcHRl X3ZhbChCKSkgJiB+X1BBR0VfSFBURUZMQUdTKSA9PSAwKQogCiBleHRlcm4gdW5zaWduZWQgbG9u ZyBpb3JlbWFwX2JvdCwgaW9yZW1hcF9iYXNlOwpAQCAtNTM4LDE0ICs1NTcsOCBAQAogCXJldHVy biBwdDsKIH0KIAotI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwotCi0jZGVmaW5lIF9fSEFWRV9B UkNIX1BURVBfVEVTVF9BTkRfQ0xFQVJfWU9VTkcKLSNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFUF9U RVNUX0FORF9DTEVBUl9ESVJUWQotI2RlZmluZSBfX0hBVkVfQVJDSF9QVEVQX0dFVF9BTkRfQ0xF QVIKLSNkZWZpbmUgX19IQVZFX0FSQ0hfUFRFUF9TRVRfV1JQUk9URUNUCi0jZGVmaW5lIF9fSEFW RV9BUkNIX1BURVBfTUtESVJUWQotI2RlZmluZSBfX0hBVkVfQVJDSF9QVEVfU0FNRQogI2luY2x1 ZGUgPGFzbS1nZW5lcmljL3BndGFibGUuaD4KKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwog CiAjZW5kaWYgLyogX1BQQzY0X1BHVEFCTEVfSCAqLwpkaWZmIC1OcnUgYS9tbS9oaWdobWVtLmMg Yi9tbS9oaWdobWVtLmMKLS0tIGEvbW0vaGlnaG1lbS5jCTIwMDQtMTEtMzAgMTk6Mzc6NDIgLTA4 OjAwCisrKyBiL21tL2hpZ2htZW0uYwkyMDA0LTExLTMwIDE5OjM3OjQyIC0wODowMApAQCAtOTAs NyArOTAsOCBAQAogCQkgKiBTbyBubyBkYW5nZXJzLCBldmVuIHdpdGggc3BlY3VsYXRpdmUgZXhl Y3V0aW9uLgogCQkgKi8KIAkJcGFnZSA9IHB0ZV9wYWdlKHBrbWFwX3BhZ2VfdGFibGVbaV0pOwot CQlwdGVfY2xlYXIoJnBrbWFwX3BhZ2VfdGFibGVbaV0pOworCQlwdGVfY2xlYXIoJmluaXRfbW0s ICh1bnNpZ25lZCBsb25nKXBhZ2VfYWRkcmVzcyhwYWdlKSwKKwkJCSAgJnBrbWFwX3BhZ2VfdGFi bGVbaV0pOwogCiAJCXNldF9wYWdlX2FkZHJlc3MocGFnZSwgTlVMTCk7CiAJfQpAQCAtMTM4LDcg KzEzOSw4IEBACiAJCX0KIAl9CiAJdmFkZHIgPSBQS01BUF9BRERSKGxhc3RfcGttYXBfbnIpOwot CXNldF9wdGUoJihwa21hcF9wYWdlX3RhYmxlW2xhc3RfcGttYXBfbnJdKSwgbWtfcHRlKHBhZ2Us IGttYXBfcHJvdCkpOworCXNldF9wdGUoJmluaXRfbW0sIHZhZGRyLAorCQkmKHBrbWFwX3BhZ2Vf dGFibGVbbGFzdF9wa21hcF9ucl0pLCBta19wdGUocGFnZSwga21hcF9wcm90KSk7CiAKIAlwa21h cF9jb3VudFtsYXN0X3BrbWFwX25yXSA9IDE7CiAJc2V0X3BhZ2VfYWRkcmVzcyhwYWdlLCAodm9p ZCAqKXZhZGRyKTsK --Multipart=_Tue__30_Nov_2004_20_01_54_-0800_Z4DWOb+8G13xY9mU Content-Type: application/octet-stream; name="diff3" Content-Disposition: attachment; filename="diff3" Content-Transfer-Encoding: base64 IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guCiMK IyBDaGFuZ2VTZXQKIyAgIDIwMDQvMDgvMjMgMTQ6NDY6MjEtMDc6MDAgZGF2ZW1AbnV0cy5kYXZl bWxvZnQubmV0IAojICAgW1NQQVJDNjRdOiBUZXN0IF9QQUdFX1ZBTElEIG5vdCBfUEFHRV9QUkVT RU5UIGluIHNldF9wdGUoKS4KIyAgIAojICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVy IDxkYXZlbUByZWRoYXQuY29tPgojIAojIGluY2x1ZGUvYXNtLXNwYXJjNjQvcGd0YWJsZS5oCiMg ICAyMDA0LzA4LzIzIDE0OjQ2OjA0LTA3OjAwIGRhdmVtQG51dHMuZGF2ZW1sb2Z0Lm5ldCArMSAt MQojICAgW1NQQVJDNjRdOiBUZXN0IF9QQUdFX1ZBTElEIG5vdCBfUEFHRV9QUkVTRU5UIGluIHNl dF9wdGUoKS4KIyAKZGlmZiAtTnJ1IGEvaW5jbHVkZS9hc20tc3BhcmM2NC9wZ3RhYmxlLmggYi9p bmNsdWRlL2FzbS1zcGFyYzY0L3BndGFibGUuaAotLS0gYS9pbmNsdWRlL2FzbS1zcGFyYzY0L3Bn dGFibGUuaAkyMDA0LTExLTMwIDE5OjM4OjAwIC0wODowMAorKysgYi9pbmNsdWRlL2FzbS1zcGFy YzY0L3BndGFibGUuaAkyMDA0LTExLTMwIDE5OjM4OjAwIC0wODowMApAQCAtMzM1LDcgKzMzNSw3 IEBACiAJcHRlX3Qgb3JpZyA9ICpwdGVwOwogCiAJKnB0ZXAgPSBwdGU7Ci0JaWYgKHB0ZV9wcmVz ZW50KG9yaWcpKQorCWlmIChwdGVfdmFsKG9yaWcpICYgX1BBR0VfVkFMSUQpCiAJCXRsYl9iYXRj aF9hZGQobW0sIGFkZHIsIHB0ZXAsIG9yaWcpOwogfQogCg== --Multipart=_Tue__30_Nov_2004_20_01_54_-0800_Z4DWOb+8G13xY9mU-- - 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/