From mboxrd@z Thu Jan 1 00:00:00 1970 From: "J. Bruce Fields" Subject: Re: [PATCH] IPv6 support for NFS server Date: Thu, 17 Jan 2008 15:38:57 -0500 Message-ID: <20080117203857.GB6416@fieldses.org> References: <475D86C1.6070400@ext.bull.net> <475EBDB4.5020108@hp.com> <475ED028.2010109@ext.bull.net> <20080115223221.GE5028@fieldses.org> <20080115231636.GB19658@fieldses.org> <478F8AA3.9060707@ext.bull.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: netdev ML , Brian Haley , Mailing list NFSv4 To: =?utf-8?B?QXVyw6lsaWVu?= Charbon Return-path: Content-Disposition: inline In-Reply-To: <478F8AA3.9060707@ext.bull.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: nfsv4-bounces@linux-nfs.org Errors-To: nfsv4-bounces@linux-nfs.org List-Id: netdev.vger.kernel.org T24gVGh1LCBKYW4gMTcsIDIwMDggYXQgMDY6MDQ6MzVQTSArMDEwMCwgQXVyw6lsaWVuIENoYXJi b24gd3JvdGU6Cj4gSGkgQnJ1Y2UuCj4KPiBUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuCj4gSGVy ZSBpcyB0aGUgcGF0Y2ggd2l0aCBzb21lIGNsZWFudXBzLgoKVGhhbmtzIGZvciB0aGUgcmV2aXNp b25zLiAgV2UgbmVlZCB0byBzdWJtaXQgdGhpcyB3aXRoIGEgcGF0Y2ggY29tbWVudAp0aGF0OgoK CS0gRXhwbGFpbnMgbW9yZSBwcmVjaXNlbHkgd2hhdCB0aGlzIGRvZXMgKGZpeGVzIGV4cG9ydAoJ ICBpbnRlcmZhY2VzIHRvIGFsbG93IGlwdjYpIGFuZCB3aGF0IHJlbWFpbnMgdG8gYmUgZG9uZSAo PykKCS0gQ3JlZGl0cyB0aGUgZm9sa3MgKGxpa2UgQnJpYW4gSGFsZXkpIHdobyBoYXZlIHByb3Zp ZGVkCgkgIGZlZWRiYWNrLgoKSSdsbCBoZWxwIGNsZWFuIHVwIHRoYXQgY29tbWVudCBpZiBuZWVk ZWQgYnV0IHBsZWFzZSBtYWtlIHN1cmUgaXQncwphbHdheXMgaW5jbHVkZWQgd2l0aCB0aGUgcGF0 Y2ggd2hlbiB5b3UgcmVzZW5kIGl0LgoKLS1iLgoKPgo+IFJlZ2FyZHMsCj4gQXVyw6lsaWVuCj4K Pgo+IC0tIAo+Cj4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiAgICAgICBBdXJl bGllbiBDaGFyYm9uCj4gICAgICAgTGludXggTkZTdjQgdGVhbQo+ICAgICAgICAgICBCdWxsIFNB Uwo+ICAgICBFY2hpcm9sbGVzIC0gRnJhbmNlCj4gaHR0cDovL25mc3Y0LmJ1bGxvcGVuc291cmNl Lm9yZy8KPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Cgo+ID5Gcm9tIDUxNzU1 ODkyZTE5MTg2Y2QxODIzMGJhYzNmNzgzYjAzODJiZjlhZTAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCj4gRnJvbTogQXVyZWxpZW4gQ2hhcmJvbiA8YXVyZWxpZW4uY2hhcmJvbkBleHQuYnVsbC5u ZXQ+Cj4gRGF0ZTogVGh1LCAxNyBKYW4gMjAwOCAxNDo1NTowMyArMDEwMAo+IFN1YmplY3Q6IFtQ QVRDSCAxLzFdIElQdjYgc3VwcG9ydCBmb3IgTkZTIHNlcnZlcgo+IAo+IC0tLQo+ICBmcy9uZnNk L2V4cG9ydC5jICAgICAgICAgICAgICAgfCAgICA5ICsrLQo+ICBmcy9uZnNkL25mc2N0bC5jICAg ICAgICAgICAgICAgfCAgIDE1ICsrKysrLQo+ICBpbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNhdXRo LmggfCAgICA0ICstCj4gIGluY2x1ZGUvbmV0L2lwdjYuaCAgICAgICAgICAgICB8ICAgIDkgKysr Cj4gIG5ldC9zdW5ycGMvc3ZjYXV0aF91bml4LmMgICAgICB8ICAxMTggKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRp b25zKCspLCA0NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZnMvbmZzZC9leHBvcnQu YyBiL2ZzL25mc2QvZXhwb3J0LmMKPiBpbmRleCA2NmQwYWViLi4yMDhkYjNhIDEwMDY0NAo+IC0t LSBhL2ZzL25mc2QvZXhwb3J0LmMKPiArKysgYi9mcy9uZnNkL2V4cG9ydC5jCj4gQEAgLTM1LDYg KzM1LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2xvY2tkL2JpbmQuaD4KPiAgI2luY2x1ZGUgPGxp bnV4L3N1bnJwYy9tc2dfcHJvdC5oPgo+ICAjaW5jbHVkZSA8bGludXgvc3VucnBjL2dzc19hcGku aD4KPiArI2luY2x1ZGUgPG5ldC9pcHY2Lmg+Cj4gIAo+ICAjZGVmaW5lIE5GU0REQkdfRkFDSUxJ VFkJTkZTRERCR19FWFBPUlQKPiAgCj4gQEAgLTE1NTYsNiArMTU1Nyw3IEBAIGV4cF9hZGRjbGll bnQoc3RydWN0IG5mc2N0bF9jbGllbnQgKm5jcCkKPiAgewo+ICAJc3RydWN0IGF1dGhfZG9tYWlu CSpkb207Cj4gIAlpbnQJCQlpLCBlcnI7Cj4gKwlzdHJ1Y3QgaW42X2FkZHIgYWRkcjY7Cj4gIAo+ ICAJLyogRmlyc3QsIGNvbnNpc3RlbmN5IGNoZWNrLiAqLwo+ICAJZXJyID0gLUVJTlZBTDsKPiBA QCAtMTU3NCw5ICsxNTc2LDEwIEBAIGV4cF9hZGRjbGllbnQoc3RydWN0IG5mc2N0bF9jbGllbnQg Km5jcCkKPiAgCQlnb3RvIG91dF91bmxvY2s7Cj4gIAo+ICAJLyogSW5zZXJ0IGNsaWVudCBpbnRv IGhhc2h0YWJsZS4gKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBuY3AtPmNsX25hZGRyOyBpKyspCj4g LQkJYXV0aF91bml4X2FkZF9hZGRyKG5jcC0+Y2xfYWRkcmxpc3RbaV0sIGRvbSk7Cj4gLQo+ICsJ Zm9yIChpID0gMDsgaSA8IG5jcC0+Y2xfbmFkZHI7IGkrKykgewo+ICsJCWlwdjZfYWRkcl9zZXRf djRtYXBwZWQobmNwLT5jbF9hZGRybGlzdFtpXS5zX2FkZHIsICZhZGRyNik7Cj4gKwkJYXV0aF91 bml4X2FkZF9hZGRyKCZhZGRyNiwgZG9tKTsKPiArCX0KPiAgCWF1dGhfdW5peF9mb3JnZXRfb2xk KGRvbSk7Cj4gIAlhdXRoX2RvbWFpbl9wdXQoZG9tKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2ZzL25m c2QvbmZzY3RsLmMgYi9mcy9uZnNkL25mc2N0bC5jCj4gaW5kZXggNzdkYzk4OS4uMTNkNmI2YiAx MDA2NDQKPiAtLS0gYS9mcy9uZnNkL25mc2N0bC5jCj4gKysrIGIvZnMvbmZzZC9uZnNjdGwuYwo+ IEBAIC0zNyw2ICszNyw3IEBACj4gICNpbmNsdWRlIDxsaW51eC9uZnNkL3N5c2NhbGwuaD4KPiAg Cj4gICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgo+ICsjaW5jbHVkZSA8bmV0L2lwdjYuaD4KPiAg Cj4gIC8qCj4gICAqCVdlIGhhdmUgYSBzaW5nbGUgZGlyZWN0b3J5IHdpdGggOSBub2RlcyBpbiBp dC4KPiBAQCAtMjIyLDYgKzIyMyw3IEBAIHN0YXRpYyBzc2l6ZV90IHdyaXRlX2dldGZzKHN0cnVj dCBmaWxlICpmaWxlLCBjaGFyICpidWYsIHNpemVfdCBzaXplKQo+ICAJc3RydWN0IGF1dGhfZG9t YWluICpjbHA7Cj4gIAlpbnQgZXJyID0gMDsKPiAgCXN0cnVjdCBrbmZzZF9maCAqcmVzOwo+ICsJ c3RydWN0IGluNl9hZGRyIGluNjsKPiAgCj4gIAlpZiAoc2l6ZSA8IHNpemVvZigqZGF0YSkpCj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTIzNiw3ICsyMzgsMTEgQEAgc3RhdGljIHNzaXplX3Qg d3JpdGVfZ2V0ZnMoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCj4g IAlyZXMgPSAoc3RydWN0IGtuZnNkX2ZoKilidWY7Cj4gIAo+ICAJZXhwX3JlYWRsb2NrKCk7Cj4g LQlpZiAoIShjbHAgPSBhdXRoX3VuaXhfbG9va3VwKHNpbi0+c2luX2FkZHIpKSkKPiArCj4gKwlp cHY2X2FkZHJfc2V0X3Y0bWFwcGVkKHNpbi0+c2luX2FkZHIuc19hZGRyLCAmaW42KTsKPiArCj4g KwljbHAgPSBhdXRoX3VuaXhfbG9va3VwKCZpbjYpOwo+ICsJaWYgKCFjbHApCj4gIAkJZXJyID0g LUVQRVJNOwo+ICAJZWxzZSB7Cj4gIAkJZXJyID0gZXhwX3Jvb3RmaChjbHAsIGRhdGEtPmdkX3Bh dGgsIHJlcywgZGF0YS0+Z2RfbWF4bGVuKTsKPiBAQCAtMjU3LDYgKzI2Myw3IEBAIHN0YXRpYyBz c2l6ZV90IHdyaXRlX2dldGZkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyICpidWYsIHNpemVfdCBz aXplKQo+ICAJaW50IGVyciA9IDA7Cj4gIAlzdHJ1Y3Qga25mc2RfZmggZmg7Cj4gIAljaGFyICpy ZXM7Cj4gKwlzdHJ1Y3QgaW42X2FkZHIgaW42Owo+ICAKPiAgCWlmIChzaXplIDwgc2l6ZW9mKCpk YXRhKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMjcxLDcgKzI3OCwxMSBAQCBzdGF0aWMg c3NpemVfdCB3cml0ZV9nZXRmZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBzaXplX3Qg c2l6ZSkKPiAgCXJlcyA9IGJ1ZjsKPiAgCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmZGF0 YS0+Z2RfYWRkcjsKPiAgCWV4cF9yZWFkbG9jaygpOwo+IC0JaWYgKCEoY2xwID0gYXV0aF91bml4 X2xvb2t1cChzaW4tPnNpbl9hZGRyKSkpCj4gKwo+ICsJaXB2Nl9hZGRyX3NldF92NG1hcHBlZChz aW4tPnNpbl9hZGRyLnNfYWRkciwmaW42KTsKPiArCj4gKwljbHAgPSBhdXRoX3VuaXhfbG9va3Vw KCZpbjYpOwo+ICsJaWYgKCFjbHApCj4gIAkJZXJyID0gLUVQRVJNOwo+ICAJZWxzZSB7Cj4gIAkJ ZXJyID0gZXhwX3Jvb3RmaChjbHAsIGRhdGEtPmdkX3BhdGgsICZmaCwgTkZTX0ZIU0laRSk7Cj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y2F1dGguaCBiL2luY2x1ZGUvbGlu dXgvc3VucnBjL3N2Y2F1dGguaAo+IGluZGV4IDIyZTFlZjguLjllNmZiODYgMTAwNjQ0Cj4gLS0t IGEvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjYXV0aC5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9z dW5ycGMvc3ZjYXV0aC5oCj4gQEAgLTEyMCwxMCArMTIwLDEwIEBAIGV4dGVybiB2b2lkCXN2Y19h dXRoX3VucmVnaXN0ZXIocnBjX2F1dGhmbGF2b3JfdCBmbGF2b3IpOwo+ICAKPiAgZXh0ZXJuIHN0 cnVjdCBhdXRoX2RvbWFpbiAqdW5peF9kb21haW5fZmluZChjaGFyICpuYW1lKTsKPiAgZXh0ZXJu IHZvaWQgYXV0aF9kb21haW5fcHV0KHN0cnVjdCBhdXRoX2RvbWFpbiAqaXRlbSk7Cj4gLWV4dGVy biBpbnQgYXV0aF91bml4X2FkZF9hZGRyKHN0cnVjdCBpbl9hZGRyIGFkZHIsIHN0cnVjdCBhdXRo X2RvbWFpbiAqZG9tKTsKPiArZXh0ZXJuIGludCBhdXRoX3VuaXhfYWRkX2FkZHIoc3RydWN0IGlu Nl9hZGRyICphZGRyLCBzdHJ1Y3QgYXV0aF9kb21haW4gKmRvbSk7Cj4gIGV4dGVybiBzdHJ1Y3Qg YXV0aF9kb21haW4gKmF1dGhfZG9tYWluX2xvb2t1cChjaGFyICpuYW1lLCBzdHJ1Y3QgYXV0aF9k b21haW4gKm5ldyk7Cj4gIGV4dGVybiBzdHJ1Y3QgYXV0aF9kb21haW4gKmF1dGhfZG9tYWluX2Zp bmQoY2hhciAqbmFtZSk7Cj4gLWV4dGVybiBzdHJ1Y3QgYXV0aF9kb21haW4gKmF1dGhfdW5peF9s b29rdXAoc3RydWN0IGluX2FkZHIgYWRkcik7Cj4gK2V4dGVybiBzdHJ1Y3QgYXV0aF9kb21haW4g KmF1dGhfdW5peF9sb29rdXAoc3RydWN0IGluNl9hZGRyICphZGRyKTsKPiAgZXh0ZXJuIGludCBh dXRoX3VuaXhfZm9yZ2V0X29sZChzdHJ1Y3QgYXV0aF9kb21haW4gKmRvbSk7Cj4gIGV4dGVybiB2 b2lkIHN2Y2F1dGhfdW5peF9wdXJnZSh2b2lkKTsKPiAgZXh0ZXJuIHZvaWQgc3ZjYXV0aF91bml4 X2luZm9fcmVsZWFzZSh2b2lkICopOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcHY2Lmgg Yi9pbmNsdWRlL25ldC9pcHY2LmgKPiBpbmRleCBhZTMyOGI2Li45Mzk0NzEwIDEwMDY0NAo+IC0t LSBhL2luY2x1ZGUvbmV0L2lwdjYuaAo+ICsrKyBiL2luY2x1ZGUvbmV0L2lwdjYuaAo+IEBAIC00 MDAsNiArNDAwLDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlwdjZfYWRkcl92NG1hcHBlZChjb25z dCBzdHJ1Y3QgaW42X2FkZHIgKmEpCj4gIAkJIGEtPnM2X2FkZHIzMlsyXSA9PSBodG9ubCgweDAw MDBmZmZmKSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpcHY2X2FkZHJfc2V0X3Y0 bWFwcGVkKGNvbnN0IF9fYmUzMiBhZGRyLAo+ICsJCQkJCSAgc3RydWN0IGluNl9hZGRyICp2NG1h cHBlZCkKPiArewo+ICsJaXB2Nl9hZGRyX3NldCh2NG1hcHBlZCwKPiArCQkJMCwgMCwKPiArCQkJ aHRvbmwoMHgwMDAwRkZGRiksCj4gKwkJCWFkZHIpOwo+ICt9Cj4gKwo+ICAvKgo+ICAgKiBmaW5k IHRoZSBmaXJzdCBkaWZmZXJlbnQgYml0IGJldHdlZW4gdHdvIGFkZHJlc3Nlcwo+ICAgKiBsZW5n dGggb2YgYWRkcmVzcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzJiaXRzCj4gZGlmZiAtLWdpdCBh L25ldC9zdW5ycGMvc3ZjYXV0aF91bml4LmMgYi9uZXQvc3VucnBjL3N2Y2F1dGhfdW5peC5jCj4g aW5kZXggNDExNDc5NC4uMTBiYTIwOCAxMDA2NDQKPiAtLS0gYS9uZXQvc3VucnBjL3N2Y2F1dGhf dW5peC5jCj4gKysrIGIvbmV0L3N1bnJwYy9zdmNhdXRoX3VuaXguYwo+IEBAIC0xMSw3ICsxMSw4 IEBACj4gICNpbmNsdWRlIDxsaW51eC9oYXNoLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zdHJpbmcu aD4KPiAgI2luY2x1ZGUgPG5ldC9zb2NrLmg+Cj4gLQo+ICsjaW5jbHVkZSA8bmV0L2lwdjYuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICAjZGVmaW5lIFJQQ0RCR19GQUNJTElUWQlS UENEQkdfQVVUSAo+ICAKPiAgCj4gQEAgLTg0LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgc3ZjYXV0 aF91bml4X2RvbWFpbl9yZWxlYXNlKHN0cnVjdCBhdXRoX2RvbWFpbiAqZG9tKQo+ICBzdHJ1Y3Qg aXBfbWFwIHsKPiAgCXN0cnVjdCBjYWNoZV9oZWFkCWg7Cj4gIAljaGFyCQkJbV9jbGFzc1s4XTsg LyogZS5nLiAibmZzZCIgKi8KPiAtCXN0cnVjdCBpbl9hZGRyCQltX2FkZHI7Cj4gKwlzdHJ1Y3Qg aW42X2FkZHIJCW1fYWRkcjsKPiAgCXN0cnVjdCB1bml4X2RvbWFpbgkqbV9jbGllbnQ7Cj4gIAlp bnQJCQltX2FkZF9jaGFuZ2U7Cj4gIH07Cj4gQEAgLTExMiwxMiArMTEzLDE5IEBAIHN0YXRpYyBp bmxpbmUgaW50IGhhc2hfaXAoX19iZTMyIGlwKQo+ICAJcmV0dXJuIChoYXNoIF4gKGhhc2g+Pjgp KSAmIDB4ZmY7Cj4gIH0KPiAgI2VuZGlmCj4gK3N0YXRpYyBpbmxpbmUgaW50IGhhc2hfaXA2KHN0 cnVjdCBpbjZfYWRkciBpcCkKPiArewo+ICsJcmV0dXJuIChoYXNoX2lwKGlwLnM2X2FkZHIzMlsw XSkgXgo+ICsJCWhhc2hfaXAoaXAuczZfYWRkcjMyWzFdKSBeCj4gKwkJaGFzaF9pcChpcC5zNl9h ZGRyMzJbMl0pIF4KPiArCQloYXNoX2lwKGlwLnM2X2FkZHIzMlszXSkpOwo+ICt9Cj4gIHN0YXRp YyBpbnQgaXBfbWFwX21hdGNoKHN0cnVjdCBjYWNoZV9oZWFkICpjb3JpZywgc3RydWN0IGNhY2hl X2hlYWQgKmNuZXcpCj4gIHsKPiAgCXN0cnVjdCBpcF9tYXAgKm9yaWcgPSBjb250YWluZXJfb2Yo Y29yaWcsIHN0cnVjdCBpcF9tYXAsIGgpOwo+ICAJc3RydWN0IGlwX21hcCAqbmV3ID0gY29udGFp bmVyX29mKGNuZXcsIHN0cnVjdCBpcF9tYXAsIGgpOwo+ICAJcmV0dXJuIHN0cmNtcChvcmlnLT5t X2NsYXNzLCBuZXctPm1fY2xhc3MpID09IDAKPiAtCQkmJiBvcmlnLT5tX2FkZHIuc19hZGRyID09 IG5ldy0+bV9hZGRyLnNfYWRkcjsKPiArCQkmJiBpcHY2X2FkZHJfZXF1YWwoJm9yaWctPm1fYWRk ciwgJm5ldy0+bV9hZGRyKTsKPiAgfQo+ICBzdGF0aWMgdm9pZCBpcF9tYXBfaW5pdChzdHJ1Y3Qg Y2FjaGVfaGVhZCAqY25ldywgc3RydWN0IGNhY2hlX2hlYWQgKmNpdGVtKQo+ICB7Cj4gQEAgLTEy NSw3ICsxMzMsNyBAQCBzdGF0aWMgdm9pZCBpcF9tYXBfaW5pdChzdHJ1Y3QgY2FjaGVfaGVhZCAq Y25ldywgc3RydWN0IGNhY2hlX2hlYWQgKmNpdGVtKQo+ICAJc3RydWN0IGlwX21hcCAqaXRlbSA9 IGNvbnRhaW5lcl9vZihjaXRlbSwgc3RydWN0IGlwX21hcCwgaCk7Cj4gIAo+ICAJc3RyY3B5KG5l dy0+bV9jbGFzcywgaXRlbS0+bV9jbGFzcyk7Cj4gLQluZXctPm1fYWRkci5zX2FkZHIgPSBpdGVt LT5tX2FkZHIuc19hZGRyOwo+ICsJaXB2Nl9hZGRyX2NvcHkoJm5ldy0+bV9hZGRyLCAmaXRlbS0+ bV9hZGRyKTsKPiAgfQo+ICBzdGF0aWMgdm9pZCB1cGRhdGUoc3RydWN0IGNhY2hlX2hlYWQgKmNu ZXcsIHN0cnVjdCBjYWNoZV9oZWFkICpjaXRlbSkKPiAgewo+IEBAIC0xNDksMjIgKzE1NywyNCBA QCBzdGF0aWMgdm9pZCBpcF9tYXBfcmVxdWVzdChzdHJ1Y3QgY2FjaGVfZGV0YWlsICpjZCwKPiAg CQkJCSAgc3RydWN0IGNhY2hlX2hlYWQgKmgsCj4gIAkJCQkgIGNoYXIgKipicHAsIGludCAqYmxl bikKPiAgewo+IC0JY2hhciB0ZXh0X2FkZHJbMjBdOwo+ICsJY2hhciB0ZXh0X2FkZHJbNDBdOwo+ ICAJc3RydWN0IGlwX21hcCAqaW0gPSBjb250YWluZXJfb2YoaCwgc3RydWN0IGlwX21hcCwgaCk7 Cj4gLQlfX2JlMzIgYWRkciA9IGltLT5tX2FkZHIuc19hZGRyOwo+IC0KPiAtCXNucHJpbnRmKHRl eHRfYWRkciwgMjAsICIldS4ldS4ldS4ldSIsCj4gLQkJIG50b2hsKGFkZHIpID4+IDI0ICYgMHhm ZiwKPiAtCQkgbnRvaGwoYWRkcikgPj4gMTYgJiAweGZmLAo+IC0JCSBudG9obChhZGRyKSA+PiAg OCAmIDB4ZmYsCj4gLQkJIG50b2hsKGFkZHIpID4+ICAwICYgMHhmZik7Cj4gIAo+ICsJaWYgKGlw djZfYWRkcl92NG1hcHBlZCgmKGltLT5tX2FkZHIpKSkgewo+ICsJCXNucHJpbnRmKHRleHRfYWRk ciwgMjAsIE5JUFFVQURfRk1ULAo+ICsJCQkJbnRvaGwoaW0tPm1fYWRkci5zNl9hZGRyMzJbM10p ID4+IDI0ICYgMHhmZiwKPiArCQkJCW50b2hsKGltLT5tX2FkZHIuczZfYWRkcjMyWzNdKSA+PiAx NiAmIDB4ZmYsCj4gKwkJCQludG9obChpbS0+bV9hZGRyLnM2X2FkZHIzMlszXSkgPj4gIDggJiAw eGZmLAo+ICsJCQkJbnRvaGwoaW0tPm1fYWRkci5zNl9hZGRyMzJbM10pID4+ICAwICYgMHhmZik7 Cj4gKwl9IGVsc2Ugewo+ICsJCXNucHJpbnRmKHRleHRfYWRkciwgNDAsIE5JUDZfRk1ULCBOSVA2 KGltLT5tX2FkZHIpKTsKPiArCX0KPiAgCXF3b3JkX2FkZChicHAsIGJsZW4sIGltLT5tX2NsYXNz KTsKPiAgCXF3b3JkX2FkZChicHAsIGJsZW4sIHRleHRfYWRkcik7Cj4gIAkoKmJwcClbLTFdID0g J1xuJzsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBpcF9tYXAgKmlwX21hcF9sb29rdXAoY2hh ciAqY2xhc3MsIHN0cnVjdCBpbl9hZGRyIGFkZHIpOwo+ICtzdGF0aWMgc3RydWN0IGlwX21hcCAq aXBfbWFwX2xvb2t1cChjaGFyICpjbGFzcywgc3RydWN0IGluNl9hZGRyICphZGRyKTsKPiAgc3Rh dGljIGludCBpcF9tYXBfdXBkYXRlKHN0cnVjdCBpcF9tYXAgKmlwbSwgc3RydWN0IHVuaXhfZG9t YWluICp1ZG9tLCB0aW1lX3QgZXhwaXJ5KTsKPiAgCj4gIHN0YXRpYyBpbnQgaXBfbWFwX3BhcnNl KHN0cnVjdCBjYWNoZV9kZXRhaWwgKmNkLAo+IEBAIC0xNzUsMTAgKzE4NSwxMCBAQCBzdGF0aWMg aW50IGlwX21hcF9wYXJzZShzdHJ1Y3QgY2FjaGVfZGV0YWlsICpjZCwKPiAgCSAqIGZvciBzY3Jh dGNoOiAqLwo+ICAJY2hhciAqYnVmID0gbWVzZzsKPiAgCWludCBsZW47Cj4gLQlpbnQgYjEsYjIs YjMsYjQ7Cj4gKwlpbnQgYjEsIGIyLCBiMywgYjQsIGI1LCBiNiwgYjcsIGI4Owo+ICAJY2hhciBj Owo+ICAJY2hhciBjbGFzc1s4XTsKPiAtCXN0cnVjdCBpbl9hZGRyIGFkZHI7Cj4gKwlzdHJ1Y3Qg aW42X2FkZHIgYWRkcjsKPiAgCWludCBlcnI7Cj4gIAo+ICAJc3RydWN0IGlwX21hcCAqaXBtcDsK PiBAQCAtMTk3LDcgKzIwNywyMyBAQCBzdGF0aWMgaW50IGlwX21hcF9wYXJzZShzdHJ1Y3QgY2Fj aGVfZGV0YWlsICpjZCwKPiAgCWxlbiA9IHF3b3JkX2dldCgmbWVzZywgYnVmLCBtbGVuKTsKPiAg CWlmIChsZW4gPD0gMCkgcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKHNzY2FuZihidWYsICIl dS4ldS4ldS4ldSVjIiwgJmIxLCAmYjIsICZiMywgJmI0LCAmYykgIT0gNCkKPiArCWlmIChzc2Nh bmYoYnVmLCBOSVBRVUFEX0ZNVCAiJWMiLCAmYjEsICZiMiwgJmIzLCAmYjQsICZjKSA9PSA0KSB7 Cj4gKwkJYWRkci5zNl9hZGRyMzJbMF0gPSAwOwo+ICsJCWFkZHIuczZfYWRkcjMyWzFdID0gMDsK PiArCQlhZGRyLnM2X2FkZHIzMlsyXSA9IGh0b25sKDB4ZmZmZik7Cj4gKwkJYWRkci5zNl9hZGRy MzJbM10gPQo+ICsJCQlodG9ubCgoKCgoKGIxPDw4KXxiMik8PDgpfGIzKTw8OCl8YjQpOwo+ICsg ICAgICAgfSBlbHNlIGlmIChzc2NhbmYoYnVmLCBOSVA2X0ZNVCAiJWMiLAo+ICsJCQkmYjEsICZi MiwgJmIzLCAmYjQsICZiNSwgJmI2LCAmYjcsICZiOCwgJmMpID09IDgpIHsKPiArCQlhZGRyLnM2 X2FkZHIxNlswXSA9IGh0b25zKGIxKTsKPiArCQlhZGRyLnM2X2FkZHIxNlsxXSA9IGh0b25zKGIy KTsKPiArCQlhZGRyLnM2X2FkZHIxNlsyXSA9IGh0b25zKGIzKTsKPiArCQlhZGRyLnM2X2FkZHIx NlszXSA9IGh0b25zKGI0KTsKPiArCQlhZGRyLnM2X2FkZHIxNls0XSA9IGh0b25zKGI1KTsKPiAr CQlhZGRyLnM2X2FkZHIxNls1XSA9IGh0b25zKGI2KTsKPiArCQlhZGRyLnM2X2FkZHIxNls2XSA9 IGh0b25zKGI3KTsKPiArCQlhZGRyLnM2X2FkZHIxNls3XSA9IGh0b25zKGI4KTsKPiArICAgICAg IH0gZWxzZQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWV4cGlyeSA9IGdldF9leHBpcnko Jm1lc2cpOwo+IEBAIC0yMTUsMTAgKzI0MSw3IEBAIHN0YXRpYyBpbnQgaXBfbWFwX3BhcnNlKHN0 cnVjdCBjYWNoZV9kZXRhaWwgKmNkLAo+ICAJfSBlbHNlCj4gIAkJZG9tID0gTlVMTDsKPiAgCj4g LQlhZGRyLnNfYWRkciA9Cj4gLQkJaHRvbmwoKCgoKChiMTw8OCl8YjIpPDw4KXxiMyk8PDgpfGI0 KTsKPiAtCj4gLQlpcG1wID0gaXBfbWFwX2xvb2t1cChjbGFzcyxhZGRyKTsKPiArCWlwbXAgPSBp cF9tYXBfbG9va3VwKGNsYXNzLCAmYWRkcik7Cj4gIAlpZiAoaXBtcCkgewo+ICAJCWVyciA9IGlw X21hcF91cGRhdGUoaXBtcCwKPiAgCQkJICAgICBjb250YWluZXJfb2YoZG9tLCBzdHJ1Y3QgdW5p eF9kb21haW4sIGgpLAo+IEBAIC0yMzgsNyArMjYxLDcgQEAgc3RhdGljIGludCBpcF9tYXBfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gIAkJICAgICAgIHN0cnVjdCBjYWNoZV9oZWFkICpoKQo+ ICB7Cj4gIAlzdHJ1Y3QgaXBfbWFwICppbTsKPiAtCXN0cnVjdCBpbl9hZGRyIGFkZHI7Cj4gKwlz dHJ1Y3QgaW42X2FkZHIgYWRkcjsKPiAgCWNoYXIgKmRvbSA9ICItbm8tZG9tYWluLSI7Cj4gIAo+ ICAJaWYgKGggPT0gTlVMTCkgewo+IEBAIC0yNDcsMjAgKzI3MCwyNCBAQCBzdGF0aWMgaW50IGlw X21hcF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAgCX0KPiAgCWltID0gY29udGFpbmVyX29m KGgsIHN0cnVjdCBpcF9tYXAsIGgpOwo+ICAJLyogY2xhc3MgYWRkciBkb21haW4gKi8KPiAtCWFk ZHIgPSBpbS0+bV9hZGRyOwo+ICsJaXB2Nl9hZGRyX2NvcHkoJmFkZHIsICZpbS0+bV9hZGRyKTsK PiAgCj4gIAlpZiAodGVzdF9iaXQoQ0FDSEVfVkFMSUQsICZoLT5mbGFncykgJiYKPiAgCSAgICAh dGVzdF9iaXQoQ0FDSEVfTkVHQVRJVkUsICZoLT5mbGFncykpCj4gIAkJZG9tID0gaW0tPm1fY2xp ZW50LT5oLm5hbWU7Cj4gIAo+IC0Jc2VxX3ByaW50ZihtLCAiJXMgJWQuJWQuJWQuJWQgJXNcbiIs Cj4gLQkJICAgaW0tPm1fY2xhc3MsCj4gLQkJICAgbnRvaGwoYWRkci5zX2FkZHIpID4+IDI0ICYg MHhmZiwKPiAtCQkgICBudG9obChhZGRyLnNfYWRkcikgPj4gMTYgJiAweGZmLAo+IC0JCSAgIG50 b2hsKGFkZHIuc19hZGRyKSA+PiAgOCAmIDB4ZmYsCj4gLQkJICAgbnRvaGwoYWRkci5zX2FkZHIp ID4+ICAwICYgMHhmZiwKPiAtCQkgICBkb20KPiAtCQkgICApOwo+ICsJaWYgKGlwdjZfYWRkcl92 NG1hcHBlZCgmYWRkcikpIHsKPiArCQlzZXFfcHJpbnRmKG0sICIlcyIgTklQUVVBRF9GTVQgIiVz XG4iLAo+ICsJCQlpbS0+bV9jbGFzcywKPiArCQkJbnRvaGwoYWRkci5zNl9hZGRyMzJbM10pID4+ IDI0ICYgMHhmZiwKPiArCQkJbnRvaGwoYWRkci5zNl9hZGRyMzJbM10pID4+IDE2ICYgMHhmZiwK PiArCQkJbnRvaGwoYWRkci5zNl9hZGRyMzJbM10pID4+ICA4ICYgMHhmZiwKPiArCQkJbnRvaGwo YWRkci5zNl9hZGRyMzJbM10pID4+ICAwICYgMHhmZiwKPiArCQkJZG9tKTsKPiArCX0gZWxzZSB7 Cj4gKwkJc2VxX3ByaW50ZihtLCAiJXMiIE5JUDZfRk1UICIlc1xuIiwKPiArCQkJaW0tPm1fY2xh c3MsIE5JUDYoYWRkciksIGRvbSk7Cj4gKwl9Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAt MjgwLDE2ICszMDcsMTYgQEAgc3RydWN0IGNhY2hlX2RldGFpbCBpcF9tYXBfY2FjaGUgPSB7Cj4g IAkuYWxsb2MJCT0gaXBfbWFwX2FsbG9jLAo+ICB9Owo+ICAKPiAtc3RhdGljIHN0cnVjdCBpcF9t YXAgKmlwX21hcF9sb29rdXAoY2hhciAqY2xhc3MsIHN0cnVjdCBpbl9hZGRyIGFkZHIpCj4gK3N0 YXRpYyBzdHJ1Y3QgaXBfbWFwICppcF9tYXBfbG9va3VwKGNoYXIgKmNsYXNzLCBzdHJ1Y3QgaW42 X2FkZHIgKmFkZHIpCj4gIHsKPiAgCXN0cnVjdCBpcF9tYXAgaXA7Cj4gIAlzdHJ1Y3QgY2FjaGVf aGVhZCAqY2g7Cj4gIAo+ICAJc3RyY3B5KGlwLm1fY2xhc3MsIGNsYXNzKTsKPiAtCWlwLm1fYWRk ciA9IGFkZHI7Cj4gKwlpcHY2X2FkZHJfY29weSgmaXAubV9hZGRyLCBhZGRyKTsKPiAgCWNoID0g c3VucnBjX2NhY2hlX2xvb2t1cCgmaXBfbWFwX2NhY2hlLCAmaXAuaCwKPiAgCQkJCSBoYXNoX3N0 cihjbGFzcywgSVBfSEFTSEJJVFMpIF4KPiAtCQkJCSBoYXNoX2lwKGFkZHIuc19hZGRyKSk7Cj4g KwkJCQkgaGFzaF9pcDYoKmFkZHIpKTsKPiAgCj4gIAlpZiAoY2gpCj4gIAkJcmV0dXJuIGNvbnRh aW5lcl9vZihjaCwgc3RydWN0IGlwX21hcCwgaCk7Cj4gQEAgLTMxOCwxNCArMzQ1LDE0IEBAIHN0 YXRpYyBpbnQgaXBfbWFwX3VwZGF0ZShzdHJ1Y3QgaXBfbWFwICppcG0sIHN0cnVjdCB1bml4X2Rv bWFpbiAqdWRvbSwgdGltZV90IGV4Cj4gIAljaCA9IHN1bnJwY19jYWNoZV91cGRhdGUoJmlwX21h cF9jYWNoZSwKPiAgCQkJCSAmaXAuaCwgJmlwbS0+aCwKPiAgCQkJCSBoYXNoX3N0cihpcG0tPm1f Y2xhc3MsIElQX0hBU0hCSVRTKSBeCj4gLQkJCQkgaGFzaF9pcChpcG0tPm1fYWRkci5zX2FkZHIp KTsKPiArCQkJCSBoYXNoX2lwNihpcG0tPm1fYWRkcikpOwo+ICAJaWYgKCFjaCkKPiAgCQlyZXR1 cm4gLUVOT01FTTsKPiAgCWNhY2hlX3B1dChjaCwgJmlwX21hcF9jYWNoZSk7Cj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiAtaW50IGF1dGhfdW5peF9hZGRfYWRkcihzdHJ1Y3QgaW5fYWRkciBhZGRy LCBzdHJ1Y3QgYXV0aF9kb21haW4gKmRvbSkKPiAraW50IGF1dGhfdW5peF9hZGRfYWRkcihzdHJ1 Y3QgaW42X2FkZHIgKmFkZHIsIHN0cnVjdCBhdXRoX2RvbWFpbiAqZG9tKQo+ICB7Cj4gIAlzdHJ1 Y3QgdW5peF9kb21haW4gKnVkb207Cj4gIAlzdHJ1Y3QgaXBfbWFwICppcG1wOwo+IEBAIC0zNTIs NyArMzc5LDcgQEAgaW50IGF1dGhfdW5peF9mb3JnZXRfb2xkKHN0cnVjdCBhdXRoX2RvbWFpbiAq ZG9tKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0cnVjdCBhdXRoX2RvbWFpbiAqYXV0aF91 bml4X2xvb2t1cChzdHJ1Y3QgaW5fYWRkciBhZGRyKQo+ICtzdHJ1Y3QgYXV0aF9kb21haW4gKmF1 dGhfdW5peF9sb29rdXAoc3RydWN0IGluNl9hZGRyICphZGRyKQo+ICB7Cj4gIAlzdHJ1Y3QgaXBf bWFwICppcG07Cj4gIAlzdHJ1Y3QgYXV0aF9kb21haW4gKnJ2Owo+IEBAIC02NDEsOSArNjY4LDI0 IEBAIHN0YXRpYyBpbnQgdW5peF9naWRfZmluZCh1aWRfdCB1aWQsIHN0cnVjdCBncm91cF9pbmZv ICoqZ2lwLAo+ICBpbnQKPiAgc3ZjYXV0aF91bml4X3NldF9jbGllbnQoc3RydWN0IHN2Y19ycXN0 ICpycXN0cCkKPiAgewo+IC0Jc3RydWN0IHNvY2thZGRyX2luICpzaW4gPSBzdmNfYWRkcl9pbihy cXN0cCk7Cj4gKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKPiArCXN0cnVjdCBzb2NrYWRkcl9p bjYgKnNpbjYsIHNpbjZfc3RvcmFnZTsKPiAgCXN0cnVjdCBpcF9tYXAgKmlwbTsKPiAgCj4gKwlz d2l0Y2ggKHJxc3RwLT5ycV9hZGRyLnNzX2ZhbWlseSkgewo+ICsJY2FzZSBBRl9JTkVUOgo+ICsJ CXNpbiA9IHN2Y19hZGRyX2luKHJxc3RwKTsKPiArCQlzaW42ID0gJnNpbjZfc3RvcmFnZTsKPiAr CQlpcHY2X2FkZHJfc2V0KCZzaW42LT5zaW42X2FkZHIsIDAsIDAsCj4gKwkJCQlodG9ubCgweDAw MDBGRkZGKSwgc2luLT5zaW5fYWRkci5zX2FkZHIpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBBRl9J TkVUNjoKPiArCQlzaW42ID0gc3ZjX2FkZHJfaW42KHJxc3RwKTsKPiArCQlicmVhazsKPiArCWRl ZmF1bHQ6Cj4gKwkJQlVHKCk7Cj4gKwl9Cj4gKwo+ICAJcnFzdHAtPnJxX2NsaWVudCA9IE5VTEw7 Cj4gIAlpZiAocnFzdHAtPnJxX3Byb2MgPT0gMCkKPiAgCQlyZXR1cm4gU1ZDX09LOwo+IEBAIC02 NTEsNyArNjkzLDcgQEAgc3ZjYXV0aF91bml4X3NldF9jbGllbnQoc3RydWN0IHN2Y19ycXN0ICpy cXN0cCkKPiAgCWlwbSA9IGlwX21hcF9jYWNoZWRfZ2V0KHJxc3RwKTsKPiAgCWlmIChpcG0gPT0g TlVMTCkKPiAgCQlpcG0gPSBpcF9tYXBfbG9va3VwKHJxc3RwLT5ycV9zZXJ2ZXItPnN2X3Byb2dy YW0tPnBnX2NsYXNzLAo+IC0JCQkJICAgIHNpbi0+c2luX2FkZHIpOwo+ICsJCQkJICAgICZzaW42 LT5zaW42X2FkZHIpOwo+ICAKPiAgCWlmIChpcG0gPT0gTlVMTCkKPiAgCQlyZXR1cm4gU1ZDX0RF TklFRDsKPiAtLSAKPiAxLjUuMy44Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpORlN2NCBtYWlsaW5nIGxpc3QKTkZTdjRAbGludXgtbmZzLm9yZwpo dHRwOi8vbGludXgtbmZzLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vbmZzdjQ=