Return-Path: linux-nfs-owner@vger.kernel.org Received: from dgate20.ts.fujitsu.com ([80.70.172.51]:15683 "EHLO dgate20.ts.fujitsu.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935299Ab3BTN5J (ORCPT ); Wed, 20 Feb 2013 08:57:09 -0500 Message-Id: <61eb00$3f63dc@dgate20u.abg.fsc.net> Date: 20 Feb 2013 14:57:07 +0100 From: bstroesser@ts.fujitsu.com To: neilb@suse.de Cc: bfields@fieldses.org, linux-nfs@vger.kernel.org, bstroesser@ts.fujitsu.com Subject: Re: [PATCH] sunrpc.ko: RPC cache fix races Content-Type: text/plain; charset=us-ascii Sender: linux-nfs-owner@vger.kernel.org List-ID: T24gMjAgRmViIDIwMTMgMDQ6MDk6MDAgKzAxMDAgbmVpbGJAc3VzZS5kZSB3cm90ZToKCj4g T24gMTkgRmViIDIwMTMgMTg6MDg6NDAgKzAxMDAgYnN0cm9lc3NlckB0cy5mdWppdHN1LmNv bSB3cm90ZToKPiAKPiA+IFNlY29uZCBhdHRlbXB0IHVzaW5nIHRoZSBjb3JyZWN0IEZST00u IFNvcnJ5IGZvciB0aGUgbm9pc2UuCj4gPiAKPiA+IAo+ID4gSGksCj4gPiAKPiA+IEkgZm91 bmQgYSBwcm9ibGVtIGluIHN1bnJwYy5rbyBvbiBhIFNMRVMxMSBTUDEgKDIuNi4zMi41OS0w LDcuMSkgYW5kIAo+ID4gZml4ZWQgaXQgKHNlZSBmaXJzdCBwYXRjaCBpZm9yIDIuNi4zMi42 MCBiZWxvdykuCj4gPiBGb3IgdXMgdGhlIHBhdGNoIHdvcmtzIGZpbmUgKHRlc3RlZCBvbiAy LjYuMzIuNTktMC43LjEpLgo+ID4gCj4gPiBBRkFJQ1MgZnJvbSB0aGUgY29kZSwgdGhlIHBy b2JsZW0gc2VlbXMgdG8gcGVyc2lzdCBpbiBjdXJyZW50IGtlcm5lbCAKPiA+IHZlcnNpb25z IGFsc28uIFRodXMsIEkgYWRkZWQgdGhlIHNlY29uZCBwYXRjaCBmb3IgMy43LjkuCj4gPiBB cyB0aGUgc2V0dXAgdG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtIGlzIHF1aXRlIGNvbXBsZXgs IEkgY291bGRuJ3QgCj4gPiB0ZXN0IHRoZSBzZWNvbmQgcGF0Y2ggeWV0LiBTbyBjb25zaWRl ciB0aGlzIG9uZSBhcyBhIFJGQy4KPiA+IAo+ID4gQmVzdCByZWdhcmRzLAo+ID4gQm9kbwo+ ID4gCj4gPiBQbGVhc2UgQ0MgbWUsIEknbSBub3Qgb24gdGhlIGxpc3QuCj4gPiAKPiA+ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gPiBGcm9tOiBCb2Rv IFN0cm9lc3NlciA8YnN0cm9lc3NlckB0cy5mdWppdHN1LmNvbT4KPiA+IERhdGU6IEZyaSwg MDggRmViIDIwMTMKPiA+IFN1YmplY3Q6IFtQQVRDSF0gbmV0OiBzdW5ycGM6IGZpeCByYWNl cyBpbiBSUEMgY2FjaGUKPiA+IAo+ID4gV2UgZm91bmQgdGhlIHByb2JsZW0gYW5kIHRlc3Rl ZCB0aGUgcGF0Y2ggb24gYSBTTEVTMTEgU1AxIAo+ID4gMi42LjMyLjU5LTAuNy4xCj4gPiAK PiA+IFRoaXMgcGF0Y2ggYXBwbGllcyB0byBsaW51eC0yLjYuMzIuNjAgKGNoYW5nZWQgbW9u b3RvbmljX3NlY29uZHMgLS0+Cj4gPiBnZXRfc2Vjb25kcygpKQo+ID4gCj4gPiBTcG9yYWRp Y2FsbHkgTkZTMyBSUEMgcmVxdWVzdHMgdG8gdGhlIG5mcyBzZXJ2ZXIgYXJlIGRyb3BwZWQg ZHVlIHRvCj4gPiBjYWNoZV9jaGVjaygpIChuZXQvc3VucnBjL2NhY2hlLmMpIHJldHVybmlu ZyAtRVRJTUVET1VUIGZvciBhbiBlbnRyeSAKPiA+IG9mIHRoZSAiYXV0aC51bml4LmdpZCIg Y2FjaGUuCj4gPiBJbiB0aGlzIGNhc2UsIG5vIE5GUyByZXBseSBpcyBzZW50IHRvIHRoZSBj bGllbnQuCj4gPiAKPiA+IFRoZSByZWFzb24gZm9yIHRoZSBkcm9wcGVkIHJlcXVlc3RzIGFy ZSByYWNlcyBpbiBjYWNoZV9jaGVjaygpIHdoZW4KPiA+IGNhY2hlX21ha2VfdXBjYWxsKCkg cmV0dXJucyAtRUlOVkFMIChiZWNhdXNlIGl0IGlzIGNhbGxlZCBmb3IgYSBjYWNoZSAKPiA+ IHdpdGhvdXQgcmVhZGVycykgYW5kIGNhY2hlX2NoZWNrKCkgdGhlcmVmb3JlIHJlZnJlc2hl cyB0aGUgY2FjaGUgZW50cnkgCj4gPiAocnYgPT0gLUVBR0FJTikuCj4gPiAKPiA+IFRoZXJl IGFyZSB0aHJlZSBkZXRhaWxzIHRoYXQgbmVlZCB0byBiZSBjaGFuZ2VkOgo+ID4gIDEpIGNh Y2hlX3JldmlzaXRfcmVxdWVzdCgpIG11c3Qgbm90IGJlIGNhbGxlZCBiZWZvcmUgY2FjaGVf ZnJlc2hfbG9ja2VkKCkKPiA+ICAgICBoYXMgdXBkYXRlZCB0aGUgY2FjaGUgZW50cnksIGFz IGNhY2hlX3JldmlzaXRfcmVxdWVzdCgpIHdha2VzIHVwCj4gPiAgICAgdGhyZWFkcyB3YWl0 aW5nIGZvciB0aGUgY2FjaGUgZW50cnkgdG8gYmUgdXBkYXRlZC4KPiAKPiBUaGlzIGNlcnRh aW5seSBzZWVtcyBjb3JyZWN0LiAgSXQgaXMgd3JvbmcgdG8gY2FsbCBjYWNoZV9yZXZpc2l0 X3JlcXVlc3QoKSBzbyBlYXJseS4KPiAKPiA+ICAgICBUaGUgZXhwbGljaXQgY2FsbCB0byBj YWNoZV9yZXZpc2l0X3JlcXVlc3QoKSBpcyBub3QgbmVlZGVkLCBhcwo+ID4gICAgIGNhY2hl X2ZyZXNoX3VubG9ja2VkKCkgY2FsbHMgaXQgYW55d2F5Lgo+IAo+IEJ1dCBjYWNoZV9mcmVz aF91bmxvY2tlZCBpcyBvbmx5IGNhbGxlZCBpZiAicnYgPT0gLUVBR0FJTiIsIGhvd2V2ZXIg d2UgYWxzbyBuZWVkIHRvIGNhbGwgaXQgaW4gdGhlIGNhc2Ugd2hlcmUgImFnZSA+IHJlZnJl c2hfYWdlLzIiIC0gaXQgbXVzdCBhbHdheXMgYmUgY2FsbGVkIGFmdGVyIGNsZWFyaW5nIENB Q0hFX1BFTkRJTkcuCj4gCj4gQWxzbywgY2FjaGVfZnJlc2hfdW5sb2NrZWQoKSBvbmx5IGNh bGxzIGNhY2hlX3JldmlzaXRfcmVxdWVzdCgpIGlmIENBQ0hFX1BFTkRJTkcgaXMgc2V0LCBi dXQgd2UgaGF2ZSBqdXN0IGNsZWFyZWQgaXQhICBTb21lIGRlZmluaXRlbHkgc29tZXRoaW5n IHdyb25nIGhlcmUuCj4gKE5vdGUgdGhhdCBJJ20gbG9va2luZyBhdCB0aGUgU0xFUyAyLjYu MzIgY29kZSBhdCB0aGUgbW9tZW50LCBtYWlubGluZSBpcyBhIGJpdCBkaWZmZXJlbnQpLgo+ IAo+IAo+ID4gICAgIChCdXQgaW4gY2FzZSBvZiBub3QgdXBkYXRpbmcgdGhlIGNhY2hlIGVu dHJ5LCBjYWNoZV9yZXZpc2l0X3JlcXVlc3QoKQo+ID4gICAgIG11c3QgYmUgY2FsbGVkLiBU aHVzLCB3ZSB1c2UgYSBmYWxsIHRocm91Z2ggaW4gdGhlICJjYXNlIikuCj4gCj4gSG1tLi4u IEkgZG9uJ3QgbGlrZSBjYXNlIGZhbGx0aHJvdWdocyB1bmxlc3MgdGhleSBoYXZlIG5pY2Ug YmlnIGNvbW1lbnRzOgo+ICAgICAvKiBGQUxMVEhST1VHSCAqLwo+IG9yIHNpbWlsYXIuIDot KQo+IAo+ID4gIDIpIENBQ0hFX1BFTkRJTkcgbXVzdCBub3QgYmUgY2xlYXJlZCBiZWZvcmUg Y2FjaGVfZnJlc2hfbG9ja2VkKCkgaGFzCj4gPiAgICAgdXBkYXRlZCB0aGUgY2FjaGUgZW50 cnksIGFzIGNhY2hlX2RlZmVyX3JlcSgpIGNhbiByZXR1cm4gd2l0aG91dCByZWFsbHkKPiA+ ICAgICBzbGVlcGluZyBpZiBpdCBkZXRlY3RzIENBQ0hFX1BFTkRJTkcgdW5zZXQuCj4gCj4g QWdyZWVkLiAgU28gd2Ugc2hvdWxkIGxlYXZlIHRoZSBjbGVhcmluZyBvZiBDQUNIRV9QRU5E SU5HIHRvIGNhY2hlX2ZyZXNoX3VubG9ja2VkKCkuCj4gCj4gCj4gPiAgICAgKEluIGNhc2Ug b2Ygbm90IHVwZGF0aW5nIHRoZSBjYWNoZSBlbnRyeSBhZ2FpbiB3ZSB1c2UgdGhlIGZhbGwg Cj4gPiB0aHJvdWdoKQo+ID4gIDMpIEltYWdpbmUgYSB0aHJlYWQgdGhhdCBjYWxscyBjYWNo ZV9jaGVjaygpIGFuZCBnZXRzIHJ2ID0gLUVOT0VOVCBmcm9tCj4gPiAgICAgY2FjaGVfaXNf dmFsaWQoKS4gVGhlbiBpdCBzZXRzIENBQ0hFX1BFTkRJTkdzIGFuZCBjYWxscwo+ID4gICAg IGNhY2hlX21ha2VfdXBjYWxsKCkuCj4gPiAgICAgV2UgYXNzdW1lIHRoYXQgbWVhbndoaWxl IGdldF9zZWNvbmRzKCkgYWR2YW5jZXMgdG8gdGhlIG5leHQKPiA+ICAgICBzZWMuIGFuZCBh IHNlY29uZCB0aHJlYWQgYWxzbyBjYWxscyBjYWNoZV9jaGVjaygpLiBJdCBnZXRzIC1FQUdB SU4gZnJvbQo+ID4gICAgIGNhY2hlX2lzX3ZhbGlkKCkgZm9yIHRoZSBzYW1lIGNhY2hlIGVu dHJ5LiBBcyBDQUNIRV9QRU5ESU5HIHN0aWxsIGlzCj4gPiAgICAgc2V0LCBpdCBjYWxscyBj YWNoZV9kZWZlcl9yZXEoKSBpbW1lZGlhdGVseSBhbmQgd2FpdHMgZm9yIGEgd2FrZXVwIGZy b20KPiA+ICAgICB0aGUgZmlyc3QgdGhyZWFkLgo+ID4gICAgIEFmdGVyIGNhY2hlX21ha2Vf dXBjYWxsKCkgcmV0dXJuZWQgLUVJTlZBTCwgdGhlIGZpcnN0IHRocmVhZCBkb2VzIG5vdAo+ ID4gICAgIHVwZGF0ZSB0aGUgY2FjaGUgZW50cnkgYXMgaXQgaGFkIGdvdCBydiA9IC1FTk9F TlQsIGJ1dCB3YWtlcyB1cCB0aGUKPiA+ICAgICBzZWNvbmQgdGhyZWFkIGJ5IGNhbGxpbmcg Y2FjaGVfcmV2aXNpdF9yZXF1ZXN0KCkuCj4gPiAgICAgVGhyZWFkIHR3byB3YWtlcyB1cCwg Y2FsbHMgY2FjaGVfaXNfdmFsaWQoKSBhbmQgYWdhaW4gZ2V0cyAtRUFHQUlOLgo+ID4gICAg IFRodXMsIHRoZSByZXN1bHQgb2YgdGhlIHNlY29uZCBjYWNoZV9jaGVjaygpIGlzIC1FVElN RURPVVQgYW5kIHRoZQo+ID4gICAgIE5GUyByZXF1ZXN0IGlzIGRyb3BwZWQuCj4gCj4gWWVw LCB0aGF0J3Mgbm90IHNvIGdvb2QuLi4uCj4gCj4gCj4gPiAgICAgVG8gc29sdmUgdGhpcywg dGhlIGNhY2hlIGVudHJ5IG5vdyBpcyB1cGRhdGVkIG5vdCBvbmx5IGlmIHJ2ID09IC1FQUdB SU4KPiA+ICAgICBidXQgaWYgcnYgPT0gLUVOT0VOVCBhbHNvLiBUaGlzIGlzIGEgc3VmZmlj aWVudCB3b3JrYXJvdW5kLCBhcyB0aGUKPiA+ICAgICBmaXJzdCB0aHJlYWQgd291bGQgaGF2 ZSB0byBzdGF5IGluIGNhY2hlX2NoZWNrKCkgYmV0d2VlbiBpdHMgY2FsbCB0bwo+ID4gICAg IGNhY2hlX2lzX3ZhbGlkKCkgYW5kIGNsZWFyaW5nIENBQ0hFX1BFTkRJTkcgZm9yIG1vcmUg dGhhbiA2MCBzZWNvbmRzCj4gPiAgICAgdG8gYnJlYWsgdGhlIHdvcmthcm91bmQuCj4gCj4g U3RpbGwsIGl0IGlzbid0IG5pY2UgdG8ganVzdCBoYXZlIGEgd29yay1hcm91bmQuICBJdCB3 b3VsZCBiZSBiZXN0IHRvIGhhdmUgYSBmaXguCj4gVGhlIGtleSBwcm9ibGVtIGhlcmUgaXMg dGhhdCBjYWNoZV9pc192YWxpZCgpIGlzIHRpbWUtc2Vuc2l0aXZlLiAgVGhpcyBoYXZlIGJl ZW4gYWRkcmVzcyBpbiBtYWlubGluZSAtIGNhY2hlX2lzX3ZhbGlkIGRvZXNuJ3QgZGVwZW5k IG9uIHRoZSBjdXJyZW50IHRpbWUgdGhlcmUuCgpTbywgdGhlIHNvbHV0aW9uIHdvdWxkIGJl IGEgYmFja3BvcnQgb2YgdGhlIGN1cnJlbnQgbWFpbmxpbmUgY29kZSAuLi4KCkFueXdheSwg SSB0aGluayBmb3IgU0xFUzExIFNQMSBhbmQgMi42LjMyLjYwIHRoZSB3b3JrLWFyb3VuZCB3 b3VsZCBiZSBzdWZmaWNpZW50LgpCVFc6IGl0IGhhcyB0aGUgcG9zaXRpdmUgc2lkZSBlZmZl Y3QsIHRoYXQgLSB3aGlsZSBhIGNhY2hlIGVudHJ5IGlzIGluIGl0cyBzZWNvbmQKaGFsZiBv ZiBsaWZlIC0gbm8gbG9uZ2VyIGVhY2ggY2FjaGVfY2hlY2soKSB0cmllcyB0byBkbyBhIGNh Y2hlX21ha2VfdXBjYWxsKCkuCgoKPiAKPiAKPiA+ICAgICAKPiA+IFNpZ25lZC1vZmYtYnk6 IEJvZG8gU3Ryb2Vzc2VyIDxic3Ryb2Vzc2VyQHRzLmZ1aml0c3UuY29tPgo+ID4gLS0tCj4g PiAKPiA+IC0tLSBhL25ldC9zdW5ycGMvY2FjaGUuYwkyMDEyLTA4LTA4IDIxOjM1OjA5LjAw MDAwMDAwMCArMDIwMAo+ID4gKysrIGIvbmV0L3N1bnJwYy9jYWNoZS5jCTIwMTMtMDItMDgg MTQ6Mjk6NDEuMDAwMDAwMDAwICswMTAwCj4gPiBAQCAtMjMzLDE1ICsyMzMsMTQgQEAgaW50 IGNhY2hlX2NoZWNrKHN0cnVjdCBjYWNoZV9kZXRhaWwgKmRldAo+ID4gIAkJaWYgKCF0ZXN0 X2FuZF9zZXRfYml0KENBQ0hFX1BFTkRJTkcsICZoLT5mbGFncykpIHsKPiA+ICAJCQlzd2l0 Y2ggKGNhY2hlX21ha2VfdXBjYWxsKGRldGFpbCwgaCkpIHsKPiA+ICAJCQljYXNlIC1FSU5W QUw6Cj4gPiAtCQkJCWNsZWFyX2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOwo+ID4g LQkJCQljYWNoZV9yZXZpc2l0X3JlcXVlc3QoaCk7Cj4gPiAtCQkJCWlmIChydiA9PSAtRUFH QUlOKSB7Cj4gPiArCQkJCWlmIChydiA9PSAtRUFHQUlOIHx8IHJ2ID09IC1FTk9FTlQpIHsK PiA+ICAJCQkJCXNldF9iaXQoQ0FDSEVfTkVHQVRJVkUsICZoLT5mbGFncyk7Cj4gPiAgCQkJ CQljYWNoZV9mcmVzaF9sb2NrZWQoaCwgZ2V0X3NlY29uZHMoKStDQUNIRV9ORVdfRVhQSVJZ KTsKPiA+ICsJCQkJCWNsZWFyX2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOwo+ID4g IAkJCQkJY2FjaGVfZnJlc2hfdW5sb2NrZWQoaCwgZGV0YWlsKTsKPiA+ICAJCQkJCXJ2ID0g LUVOT0VOVDsKPiA+ICsJCQkJCWJyZWFrOwo+ID4gIAkJCQl9Cj4gPiAtCQkJCWJyZWFrOwo+ ID4gIAo+ID4gIAkJCWNhc2UgLUVBR0FJTjoKPiA+ICAJCQkJY2xlYXJfYml0KENBQ0hFX1BF TkRJTkcsICZoLT5mbGFncyk7Cj4gCj4gSSBhZ3JlZSB3aXRoIHNvbWUgb2YgdGhpcy4uLi4K PiBNYXliZToKPiAKPiAgIHN3aXRjaChjYWNoZV9tYWtlX3VwY2FsbChkZXRhaWwsIGgpKSB7 Cj4gICBjYXNlIC1FSU5WQUw6Cj4gICAgICAgICBpZiAocnYpIHsKPiAJCXNldF9iaXQoQ0FD SEVfTkVHQVRJVkUsICZoLT5mbGFncyk7Cj4gCQljYWNoZV9mcmVzaF9sb2NrZWQoaCwgZ2V0 X3NlY29uZHMoKSArIENBQ0hFX05FV19FWFBJUlkpOwo+IAkJcnYgPSAtRU5PRU5UOwo+IAl9 Cj4gCS8qIEZBTExUSFJPVUdIICovCj4gICBjYXNlIC1FQUdBSU46Cj4gCWNhY2hlX2ZyZXNo X3VubG9ja2VkKGgsIGRldGFpbCk7Cj4gICB9CgpJIGFncmVlLCB5b3VyIHBhdGNoIGlzIG9i dmlvdXNseSBiZXR0ZXIgdGhhbiB0aGUgbWluZS4KQnV0IGxldCBtZSBzdWdnZXN0IG9uZSBs aXR0bGUgY2hhbmdlOiBJIHdvdWxkIGxpa2UgdG8gc3Vic3RpdHV0ZQpjYWNoZV9mcmVzaF91 bmxvY2tlZCgpIGJ5IGNsZWFyX2JpdCgpIGFuZCBjYWNoZV9yZXZpc2l0X3JlcXVlc3QoKSwK YXMgdGhlIGNhbGwgdG8gY2FjaGVfZGVxdWV1ZSgpIGluIGNhY2hlX2ZyZXNoX3VubG9ja2Vk KCkgc2VlbXMgdG8KYmUgb2Jzb2xldGUgaGVyZToKCiAgIHN3aXRjaChjYWNoZV9tYWtlX3Vw Y2FsbChkZXRhaWwsIGgpKSB7CiAgIGNhc2UgLUVJTlZBTDoKCWlmIChydikgewogCQlzZXRf Yml0KENBQ0hFX05FR0FUSVZFLCAmaC0+ZmxhZ3MpOwogCQljYWNoZV9mcmVzaF9sb2NrZWQo aCwgZ2V0X3NlY29uZHMoKSArIENBQ0hFX05FV19FWFBJUlkpOwoJCXJ2ID0gLUVOT0VOVDsK IAl9CgkvKiBGQUxMVEhST1VHSCAqLwogICBjYXNlIC1FQUdBSU46CgljbGVhcl9iaXQoQ0FD SEVfUEVORElORywgJmgtPmZsYWdzKTsKCWNhY2hlX3JldmlzaXRfcmVxdWVzdChoLCBkZXRh aWwpOwogICB9Cgo+IAo+IFRob3VnaCBpdCBpc24ndCBnb29kIHRoYXQgY2FjaGVfZnJlc2hf bG9ja2VkKCkgaXMgYmVpbmcgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyBhIGxvY2shICBNYXli ZSB3ZSBzaG91bGQgaW1wb3J0IHRyeV90b19uZWdhdGVfZW50cnkoKSBmcm9tIG1haW5saW5l LgoKT3Igc2ltcGx5IGFkZCB3cml0ZV9sb2NrKCkgYW5kIHdyaXRlX3VubG9jaygpIGFyb3Vu ZCB0aGUgc2V0X2JpdCgpIGFuZCBjYWNoZV9mcmVzaF9sb2NrZWQoKQoKCj4gCj4gPiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gRnJvbTogQm9kbyBT dHJvZXNzZXIgPGJzdHJvZXNzZXJAdHMuZnVqaXRzdS5jb20+Cj4gPiBEYXRlOiBGcmksIDA4 IEZlYiAyMDEzCj4gPiBTdWJqZWN0OiBbUEFUQ0hdIG5ldDogc3VucnBjOiBmaXggcmFjZXMg aW4gUlBDIGNhY2hlCj4gPiAKPiA+IFRoaXMgcGF0Y2ggYXBwbGllcyB0byBTTEVTIDExIFNQ MiBsaW51eC0zLjAuNTEtMC43LjkgYW5kIGFsc28gdG8gCj4gPiB2YW5pbGxhIGxpbnV4LTMu Ny45Cj4gPiAKPiA+IEl0IGlzIHVudGVzdGVkIGFuZCBpcyBvbmx5IGJhc2VkIG9uIGEgY29k ZSByZXZpZXcgYWZ0ZXIgd2UgYW5hbHl6ZWQgCj4gPiB0aGUgcmVhc29uIGZvciBORlMgcmVx dWVzdHMgYmVpbmcgZHJvcHBlZCBvbiBhCj4gPiBTTEVTMTEgU1AxIChsaW51eC0yLjYuMzIu NTktMC43LjEpCj4gPiAKPiA+IFNwb3JhZGljYWxseSBORlMzIFJQQyByZXF1ZXN0cyB0byB0 aGUgbmZzIHNlcnZlciBhcmUgZHJvcHBlZCBkdWUgdG8KPiA+IGNhY2hlX2NoZWNrKCkgKG5l dC9zdW5ycGMvY2FjaGUuYykgcmV0dXJuaW5nIC1FVElNRURPVVQgZm9yIGFuIGVudHJ5IAo+ ID4gb2YgdGhlICJhdXRoLnVuaXguZ2lkIiBjYWNoZS4KPiA+IEluIHRoaXMgY2FzZSwgbm8g TkZTIHJlcGx5IGlzIHNlbnQgdG8gdGhlIGNsaWVudC4KPiA+IAo+ID4gVGhlIHJlYXNvbiBm b3IgdGhlIGRyb3BwZWQgcmVxdWVzdHMgYXJlIHJhY2VzIGluIGNhY2hlX2NoZWNrKCkgd2hl bgo+ID4gY2FjaGVfbWFrZV91cGNhbGwoKSByZXR1cm5zIC1FSU5WQUwgKGJlY2F1c2UgaXQg aXMgY2FsbGVkIGZvciBhIGNhY2hlIAo+ID4gd2l0aG91dCByZWFkZXJzKSBhbmQgY2FjaGVf Y2hlY2soKSB0aGVyZWZvcmUgcmVmcmVzaGVzIHRoZSBjYWNoZSBlbnRyeSAKPiA+IChydiA9 PSAtRUFHQUlOKS4KPiA+IAo+ID4gVGhlcmUgYXJlIHR3byBkZXRhaWxzIHRoYXQgbmVlZCB0 byBiZSBjaGFuZ2VkOgo+ID4gIDEpIGNhY2hlX3JldmlzaXRfcmVxdWVzdCgpIG11c3Qgbm90 IGJlIGNhbGxlZCBiZWZvcmUgY2FjaGVfZnJlc2hfbG9ja2VkKCkKPiA+ICAgICBoYXMgdXBk YXRlZCB0aGUgY2FjaGUgZW50cnksIGFzIGNhY2hlX3JldmlzaXRfcmVxdWVzdCgpIHdha2Vz IHVwCj4gPiAgICAgdGhyZWFkcyB3YWl0aW5nIGZvciB0aGUgY2FjaGUgZW50cnkgdG8gYmUg dXBkYXRlZC4KPiA+ICAgICBUaGUgZXhwbGljaXQgY2FsbCB0byBjYWNoZV9yZXZpc2l0X3Jl cXVlc3QoKSBpcyBub3QgbmVlZGVkLCBhcwo+ID4gICAgIGNhY2hlX2ZyZXNoX3VubG9ja2Vk KCkgY2FsbHMgaXQgYW55d2F5Lgo+ID4gICAgIChCdXQgaW4gY2FzZSBvZiBub3QgdXBkYXRp bmcgdGhlIGNhY2hlIGVudHJ5LCBjYWNoZV9yZXZpc2l0X3JlcXVlc3QoKQo+ID4gICAgIG11 c3QgYmUgY2FsbGVkKS4KPiA+ICAyKSBDQUNIRV9QRU5ESU5HIG11c3Qgbm90IGJlIGNsZWFy ZWQgYmVmb3JlIGNhY2hlX2ZyZXNoX2xvY2tlZCgpIGhhcwo+ID4gICAgIHVwZGF0ZWQgdGhl IGNhY2hlIGVudHJ5LCBhcyBjYWNoZV93YWl0X3JlcSgpIGNhbGxlZCBieQo+ID4gICAgIGNh Y2hlX2RlZmVyX3JlcSgpIGNhbiByZXR1cm4gd2l0aG91dCByZWFsbHkgc2xlZXBpbmcgaWYg aXQgZGV0ZWN0cwo+ID4gICAgIENBQ0hFX1BFTkRJTkcgdW5zZXQuCj4gPiAKPiA+IFNpZ25l ZC1vZmYtYnk6IEJvZG8gU3Ryb2Vzc2VyIDxic3Ryb2Vzc2VyQHRzLmZ1aml0c3UuY29tPgo+ ID4gLS0tCj4gPiAKPiA+IC0tLSBhL25ldC9zdW5ycGMvY2FjaGUuYwkyMDEzLTAyLTA4IDE1 OjU2OjA3LjAwMDAwMDAwMCArMDEwMAo+ID4gKysrIGIvbmV0L3N1bnJwYy9jYWNoZS5jCTIw MTMtMDItMDggMTY6MDQ6MzIuMDAwMDAwMDAwICswMTAwCj4gPiBAQCAtMjMwLDExICsyMzAs MTQgQEAgc3RhdGljIGludCB0cnlfdG9fbmVnYXRlX2VudHJ5KHN0cnVjdCBjYQo+ID4gIAly diA9IGNhY2hlX2lzX3ZhbGlkKGRldGFpbCwgaCk7Cj4gPiAgCWlmIChydiAhPSAtRUFHQUlO KSB7Cj4gPiAgCQl3cml0ZV91bmxvY2soJmRldGFpbC0+aGFzaF9sb2NrKTsKPiA+ICsJCWNs ZWFyX2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOwo+ID4gKwkJY2FjaGVfcmV2aXNp dF9yZXF1ZXN0KGgpOwo+IAo+IFRoaXMgc2hvdWxkIGp1c3QgYmUgY2FjaGVfZnJlc2hfdW5s b2NrZWQoKSwgYXMgYmVsb3cuCj4gPiAgCQlyZXR1cm4gcnY7Cj4gPiAgCX0KPiA+ICAJc2V0 X2JpdChDQUNIRV9ORUdBVElWRSwgJmgtPmZsYWdzKTsKPiA+ICAJY2FjaGVfZnJlc2hfbG9j a2VkKGgsIHNlY29uZHNfc2luY2VfYm9vdCgpK0NBQ0hFX05FV19FWFBJUlkpOwo+ID4gIAl3 cml0ZV91bmxvY2soJmRldGFpbC0+aGFzaF9sb2NrKTsKPiA+ICsJY2xlYXJfYml0KENBQ0hF X1BFTkRJTkcsICZoLT5mbGFncyk7Cj4gQ2xlYXJpbmcgdGhpcyBiaXQgaXMgd3JvbmcgIC0g Y2FjaGVfZnJzaF91bmxvY2tlZCB3aWxsIGRvIHRoYXQuCgpZZXMuIE15IGZhdWx0LiBCdXQg aW5zdGVhZCBvZiBzdHJpcHBpbmcgdGhlIGNsZWFyX2JpdCgpLCBJJ2QgYmV0dGVyIGxpa2UK dG8gY2hhbmdlIHRoZSBmb2xsb3dpbmcgY2FjaGVfZnJlc2hfdW5sb2NrZWQoKSB0byBjYWNo ZV9yZXZpc2l0X3JlcXVlc3QoKQoKPiAKPiA+ICAJY2FjaGVfZnJlc2hfdW5sb2NrZWQoaCwg ZGV0YWlsKTsKPiA+ICAJcmV0dXJuIC1FTk9FTlQ7Cj4gPiAgfQo+IFNvIG1heWJlOgo+IAo+ IHN0YXRpYyBpbnQgdHJ5X3RvX25lZ2F0ZV9lbnRyeSguLi4uKQo+IHsKPiAJaW50IHJ2Owo+ IAo+IAl3cml0ZV9sb2NrKCZkZXRhaWwtPmhhc2hfbG9jayk7Cj4gCXJ2ID0gY2FjaGVfaXNf dmFsaWQoZGV0YWlsLCBoKTsKPiAJaWYgKHJ2ID09IC1FQUdBSU4pIHsKPiAJCXNldF9iaXQo Q0FDSEVfTkVHQVRJVkUsICZoLT5mbGFncyk7Cj4gCQljYWNoZV9mcmVzaF9sb2NrZWQoaCwg Li4uLik7Cj4gCQlydiA9IC1FTk9FTlQ7Cj4gCX0KPiAJd3JpdGVfdW5sb2NrKCZkZXRhaWwt Pmhhc2hfbG9jayk7Cj4gCWNhY2hlX2ZyZXNoX3VubG9ja2VkKGgsIGRldGFpbCk7CgpGb3Ig dGhlIHNhbWUgcmVhc29uIGFzIHdyaXR0ZW4gYWJvdmUsIEknZCBiZXR0ZXIgbGlrZQpjbGVh cl9iaXQoKSBhbmQgY2FjaGVfcmV2aXNpdF9yZXF1ZXN0KCkKCj4gCXJldHVybiBydjsKPiB9 Cj4gPz8/Pwo+IAo+IAo+ID4gQEAgLTI3NSw4ICsyNzgsNiBAQCBpbnQgY2FjaGVfY2hlY2so c3RydWN0IGNhY2hlX2RldGFpbCAqZGV0Cj4gPiAgCQlpZiAoIXRlc3RfYW5kX3NldF9iaXQo Q0FDSEVfUEVORElORywgJmgtPmZsYWdzKSkgewo+ID4gIAkJCXN3aXRjaCAoY2FjaGVfbWFr ZV91cGNhbGwoZGV0YWlsLCBoKSkgewo+ID4gIAkJCWNhc2UgLUVJTlZBTDoKPiA+IC0JCQkJ Y2xlYXJfYml0KENBQ0hFX1BFTkRJTkcsICZoLT5mbGFncyk7Cj4gPiAtCQkJCWNhY2hlX3Jl dmlzaXRfcmVxdWVzdChoKTsKPiA+ICAJCQkJcnYgPSB0cnlfdG9fbmVnYXRlX2VudHJ5KGRl dGFpbCwgaCk7Cj4gPiAgCQkJCWJyZWFrOwo+ID4gIAkJCWNhc2UgLUVBR0FJTjoKPiAKPiBZ ZXMsIHRob3NlIGxpbmVzIHNob3VsZCBkZWZpbml0ZWx5IGJlIHJlbW92ZWQuCj4gCj4gU28g bWF5YmUgdGhpcyBhZ2FpbnN0IG1haW5saW5lOgo+IAo+IGRpZmYgLS1naXQgYS9uZXQvc3Vu cnBjL2NhY2hlLmMgYi9uZXQvc3VucnBjL2NhY2hlLmMgaW5kZXggOWFmYTQzOS4uNzI5NjY0 NCAxMDA2NDQKPiAtLS0gYS9uZXQvc3VucnBjL2NhY2hlLmMKPiArKysgYi9uZXQvc3VucnBj L2NhY2hlLmMKPiBAQCAtMjI4LDEyICsyMjgsMTEgQEAgc3RhdGljIGludCB0cnlfdG9fbmVn YXRlX2VudHJ5KHN0cnVjdCBjYWNoZV9kZXRhaWwgKmRldGFpbCwgc3RydWN0IGNhY2hlX2hl YWQgKmgKPiAgCj4gIAl3cml0ZV9sb2NrKCZkZXRhaWwtPmhhc2hfbG9jayk7Cj4gIAlydiA9 IGNhY2hlX2lzX3ZhbGlkKGRldGFpbCwgaCk7Cj4gLQlpZiAocnYgIT0gLUVBR0FJTikgewo+ IC0JCXdyaXRlX3VubG9jaygmZGV0YWlsLT5oYXNoX2xvY2spOwo+IC0JCXJldHVybiBydjsK PiArCWlmIChydiA9PSAtRUFHQUlOKSB7Cj4gKwkJc2V0X2JpdChDQUNIRV9ORUdBVElWRSwg JmgtPmZsYWdzKTsKPiArCQljYWNoZV9mcmVzaF9sb2NrZWQoaCwgc2Vjb25kc19zaW5jZV9i b290KCkrQ0FDSEVfTkVXX0VYUElSWSk7Cj4gKwkJcnYgPSAtRU5PRU5UOwo+ICAJfQo+IC0J c2V0X2JpdChDQUNIRV9ORUdBVElWRSwgJmgtPmZsYWdzKTsKPiAtCWNhY2hlX2ZyZXNoX2xv Y2tlZChoLCBzZWNvbmRzX3NpbmNlX2Jvb3QoKStDQUNIRV9ORVdfRVhQSVJZKTsKPiAgCXdy aXRlX3VubG9jaygmZGV0YWlsLT5oYXNoX2xvY2spOwo+ICAJY2FjaGVfZnJlc2hfdW5sb2Nr ZWQoaCwgZGV0YWlsKTsKPiAgCXJldHVybiAtRU5PRU5UOwo+IEBAIC0yNzUsMTMgKzI3NCwx MCBAQCBpbnQgY2FjaGVfY2hlY2soc3RydWN0IGNhY2hlX2RldGFpbCAqZGV0YWlsLAo+ICAJ CWlmICghdGVzdF9hbmRfc2V0X2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpKSB7Cj4g IAkJCXN3aXRjaCAoY2FjaGVfbWFrZV91cGNhbGwoZGV0YWlsLCBoKSkgewo+ICAJCQljYXNl IC1FSU5WQUw6Cj4gLQkJCQljbGVhcl9iaXQoQ0FDSEVfUEVORElORywgJmgtPmZsYWdzKTsK PiAtCQkJCWNhY2hlX3JldmlzaXRfcmVxdWVzdChoKTsKPiAgCQkJCXJ2ID0gdHJ5X3RvX25l Z2F0ZV9lbnRyeShkZXRhaWwsIGgpOwo+ICAJCQkJYnJlYWs7Cj4gIAkJCWNhc2UgLUVBR0FJ TjoKPiAtCQkJCWNsZWFyX2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpOwo+IC0JCQkJ Y2FjaGVfcmV2aXNpdF9yZXF1ZXN0KGgpOwo+ICsJCQkJY2FjaGVfZnJlc2hfdW5sb2NrZWQo aCwgZGV0YWlsKTsKCkFuZCBhZ2FpbjogSSBkb24ndCBsaWtlIGl0IDstKQoKPiAgCQkJCWJy ZWFrOwo+ICAJCQl9Cj4gIAkJfQo+IAo+IAo+IElzIHRoYXQgY29udmluY2luZz8KCk9mIGNv dXJzZS4KCkRvIHlvdSB0aGluayBpdCB3b3VsZCBiZSBhIGdvb2QgaWRlYSB0byB1c2UgdGhl IHNhbWUgY29kZSBzdHJ1Y3R1cmUgYXMgc3VnZ2VzdGVkIGZvciAyLjYuMzIuNjAgPwpJZiBz bywgdGhpcyB3b3VsZCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBwYXRjaDoKCi0tLSBhL25l dC9zdW5ycGMvY2FjaGUuYwkyMDEzLTAyLTIwIDEzOjU2OjMwLjAwMDAwMDAwMCArMDEwMAor KysgYi9uZXQvc3VucnBjL2NhY2hlLmMJMjAxMy0wMi0yMCAxNDowNTowOC4wMDAwMDAwMDAg KzAxMDAKQEAgLTIyMiwyMyArMjIyLDYgQEAKIAl9CiB9Cgotc3RhdGljIGludCB0cnlfdG9f bmVnYXRlX2VudHJ5KHN0cnVjdCBjYWNoZV9kZXRhaWwgKmRldGFpbCwgc3RydWN0IGNhY2hl X2hlYWQgKmgpCi17Ci0JaW50IHJ2OwotCi0Jd3JpdGVfbG9jaygmZGV0YWlsLT5oYXNoX2xv Y2spOwotCXJ2ID0gY2FjaGVfaXNfdmFsaWQoZGV0YWlsLCBoKTsKLQlpZiAocnYgIT0gLUVB R0FJTikgewotCQl3cml0ZV91bmxvY2soJmRldGFpbC0+aGFzaF9sb2NrKTsKLQkJcmV0dXJu IHJ2OwotCX0KLQlzZXRfYml0KENBQ0hFX05FR0FUSVZFLCAmaC0+ZmxhZ3MpOwotCWNhY2hl X2ZyZXNoX2xvY2tlZChoLCBzZWNvbmRzX3NpbmNlX2Jvb3QoKStDQUNIRV9ORVdfRVhQSVJZ KTsKLQl3cml0ZV91bmxvY2soJmRldGFpbC0+aGFzaF9sb2NrKTsKLQljYWNoZV9mcmVzaF91 bmxvY2tlZChoLCBkZXRhaWwpOwotCXJldHVybiAtRU5PRU5UOwotfQotCiAvKgogICogVGhp cyBpcyB0aGUgZ2VuZXJpYyBjYWNoZSBtYW5hZ2VtZW50IHJvdXRpbmUgZm9yIGFsbAogICog dGhlIGF1dGhlbnRpY2F0aW9uIGNhY2hlcy4KQEAgLTI3NSwxMCArMjU4LDE1IEBACiAJCWlm ICghdGVzdF9hbmRfc2V0X2JpdChDQUNIRV9QRU5ESU5HLCAmaC0+ZmxhZ3MpKSB7CiAJCQlz d2l0Y2ggKGNhY2hlX21ha2VfdXBjYWxsKGRldGFpbCwgaCkpIHsKIAkJCWNhc2UgLUVJTlZB TDoKLQkJCQljbGVhcl9iaXQoQ0FDSEVfUEVORElORywgJmgtPmZsYWdzKTsKLQkJCQljYWNo ZV9yZXZpc2l0X3JlcXVlc3QoaCk7Ci0JCQkJcnYgPSB0cnlfdG9fbmVnYXRlX2VudHJ5KGRl dGFpbCwgaCk7Ci0JCQkJYnJlYWs7CisJCQkJd3JpdGVfbG9jaygmZGV0YWlsLT5oYXNoX2xv Y2spOworCQkJCXJ2ID0gY2FjaGVfaXNfdmFsaWQoZGV0YWlsLCBoKTsKKwkJCQlpZiAocnYg PT0gLUVBR0FJTikgeworCQkJCQlzZXRfYml0KENBQ0hFX05FR0FUSVZFLCAmaC0+ZmxhZ3Mp OworCQkJCQljYWNoZV9mcmVzaF9sb2NrZWQoaCwgc2Vjb25kc19zaW5jZV9ib290KCkrQ0FD SEVfTkVXX0VYUElSWSk7CisJCQkJCXJ2ID0gLUVOT0VOVDsKKwkJCQl9CisJCQkJd3JpdGVf dW5sb2NrKCZkZXRhaWwtPmhhc2hfbG9jayk7CisJCQkJLyogRkFMTFRIUk9VR0ggKi8KIAkJ CWNhc2UgLUVBR0FJTjoKIAkJCQljbGVhcl9iaXQoQ0FDSEVfUEVORElORywgJmgtPmZsYWdz KTsKIAkJCQljYWNoZV9yZXZpc2l0X3JlcXVlc3QoaCk7CgoKCj4gCj4gVGhhbmtzIGEgbG90 IGZvciB5b3VyIHZlcnkgdGhvcm91Z2ggYW5hbHlzaXMhCj4gCj4gTmVpbEJyb3duCj4gCgpU aGFuayB5b3UgZm9yIHRoZSBxdWljayByZXNwb25zZSEKCkJlc3QgcmVnYXJkcywKQm9kbwo=