From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Wilck Subject: Re: [PATCH 1/7] multipath: fix tur checker locking Date: Thu, 08 Feb 2018 09:49:20 +0100 Message-ID: <1518079760.15245.39.camel@suse.com> References: <1518043787-7066-1-git-send-email-bmarzins@redhat.com> <1518043787-7066-2-git-send-email-bmarzins@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1518043787-7066-2-git-send-email-bmarzins@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Benjamin Marzinski , device-mapper development List-Id: dm-devel.ids SGVsbG8gQmVuLAoKT24gV2VkLCAyMDE4LTAyLTA3IGF0IDE2OjQ5IC0wNjAwLCBCZW5qYW1pbiBN YXJ6aW5za2kgd3JvdGU6Cj4gQ29tbWl0IDZlMjQyM2ZkIGZpeGVkIGEgYnVnIHdoZXJlIHRoZSB0 dXIgY2hlY2tlciBjb3VsZCBjYW5jZWwgYQo+IGRldGFjaGVkIHRocmVhZCBhZnRlciBpdCBoYWQg ZXhpdHRlZC4gSG93ZXZlciBpbiBmaXhpbmcgdGhpcywgdGhlIG5ldwo+IGNvZGUgZ3JhYmJlZCBh IG11dGV4ICh0byBjYWxsIGNvbmRsb2cpIHdoaWxlIGhvbGRpbmcgYSBzcGluX2xvY2suIFRvCj4g ZGVhbCB3aXRoIHRoYXQsIGFuZCB0byB0cnkgdG8ga2VlcCB3aXRoIHRoZSBtYWl4aW0gImxvY2sg ZGF0YSwgbm90Cj4gY29kZSIsIEkndmUgY2hhbmdlZCBob3cgdGhlIHR1ciBjaGVja2VyIHN5bmNo cm9uaXplcyB3aXRoIGl0cyB0aHJlYWQuCgpIbW0sIGlmIGl0IHdhcyBvbmx5IGZvciB0aGUgY29u ZGxvZyBpc3N1ZSwgaXQnZCBjZXJ0YWlubHkgYmUgcG9zc2libGUKdG8gZmluZCBhIHNpbXBsZXIg c29sdXRpb24gKGp1c3QgbW92ZSB0aGUgbG9nIG1lc3NhZ2Ugb3V0IG9mIHRoZSBzcGluLQpsb2Nr ZWQgY29kZSkuIEFuZCBwbGVhc2UgZXhwbGFpbiBzb21lIG1vcmUgd2h5IHlvdXIgcGF0Y2ggaW1w bGVtZW50cwoibG9jayBkYXRhIG5vdCBjb2RlIiBiZXR0ZXIgdGhhbiB3aGF0IHdlIGRpZCBiZWZv cmUgLSBpdCdzIG5vdCBvYnZpb3VzCnRvIG1lLgoKPiBOb3csIHRoZSB0dXIgY2hlY2tlciBjcmVh dGVzIGpvaW5hYmxlIHRocmVhZHMsIGFuZCBkZXRhY2hlcyB0aGVtIHdoZW4KPiB0aGUgdGhyZWFk IGlzIGZpbmlzaGVkIG9yIGhhcyB0aW1lZCBvdXQuIFRvIHRyYWNrIHRoZSBzdGF0ZSBvZiB0aGUK PiB0aHJlYWRzLCBJJ3ZlIGFkZGVkIGEgbmV3IHZhcmlhYmxlIHRvIHRoZSBjaGVja2VyIGNvbnRl eHQsIGN0LQo+ID5hdHRhY2hlZC4KCkhtbSwgYWdhaW4uIFRoaXMgYWRkcyBtb3JlIGNvbXBsZXhp dHkgdG8gYW4gYWxyZWFkeSBjb21wbGV4IGNvbnRydWN0LApiZWNhdXNlIG5vdyB3ZSBkb24ndCBr bm93IGluIHRoZSBmaXJzdCBwbGFjZSB3aGV0aGVyIHRoZSBjaGVja2VyIHRocmVhZAppcyBqb2lu YWJsZSBvciBkZXRhY2hlZC4gSU1PIGl0IG1ha2VzIGEgbG90IG9mIHNlbnNlIGZvciB0aGUgY2hl Y2tlciB0bwpydW4gaW4gZGV0YWNoZWQgbW9kZSByaWdodCBmcm9tIHRoZSBzdGFydC4gSWYgbXVs dGlwYXRoZCBpcyB0ZXJtaW5hdGVkCndoaWxlIGNoZWNrZXJzIGFyZSBibG9ja2VkLCBpdCdsbCBo YXZlIHRvIGRldGFjaCB0aGVzZSB0aHJlYWRzIGluIHRoZQpwcm9jZXNzIG9mIHRlcm1pbmF0aW5n IC0gSSBmaW5kIHRoYXQgYSBiaXQgd2VpcmQuCgpXaGlsZSBJIGRpZG4ndCBzcG90IG9idmlvdXMg ZXJyb3JzIGluIHlvdXIgcGF0Y2gsIGNoYW5naW5nIHRoZSBsb2NraW5nCmZ1bmRhbWVudGFsbHkg aXMgYWx3YXlzIHJpc2t5IHRvIHNvbWUgZXh0ZW50LCBhbmQgSSdtIG5vdCB5ZXQgY29udmluY2Vk CnRoYXQgdGhlIHByb2JsZW0geW91J3JlIHRyeWluZyB0byBzb2x2ZSBqdXN0aWZpZXMgdGhpcyBy aXNrLgoKPiBXaGVuIGEgdGhyZWFkIHN0YXJ0cywgYXR0YWNoZWQgaXMgc2V0IHRvIDEuIFdoZW4g dGhlIHRocmVhZCBmaW5pc2hlcywKPiBpdAo+IHNhdmVzIHRoZSB2YWx1ZSBvZiBhdHRhY2hlZCwg YW5kIHRoZW4gemVyb3MgaXQgb3V0LCB3aGlsZSBsb2NrZWQuIElmCj4gYXR0YWNoZWQgd2FzIHNl dCwgaXQgZGV0YWNoZXMgaXRzZWxmLgoKV2h5IGFyZW4ndCB5b3Ugc2ltcGx5IHVzaW5nIHB0aHJl YWRfYXR0cl9nZXRkZXRhY2hzdGF0ZSgpPwoKPiAKPiBXaGVuIHRoZSB0dXIgY2hlY2tlciBnaXZl cyB1cCBvbiBhIHRocmVhZCwgaXQgYWxzbyBzYXZlcyBhbmQKPiBkZWNyZW1lbnRzCj4gY3QtPmF0 dGFjaGVkLCB3aGlsZSBsb2NrZWQuIEF0IHRoZSBzYW1lIHRpbWUgaXQgc2F2ZXMgdGhlIHZhbHVl IG9mCj4gY3QtPnRocmVhZC4gIElmIGF0dGFjaGVkIHdhcyBzZXQsIGl0IGNhbmNlbHMgdGhlIHRo cmVhZCwgYW5kIHRoZW4KPiBkZXRhY2hlcyBpdC4KCkhhdmUgeW91IHRob3VnaHQgYWJvdXQgdXNp bmcgdWF0b21pY19hZGRfcmV0dXJuKCksIHdoaWNoIHdlIGhhdmUKYXZhaWxhYmxlIGFueXdheSB0 aHJvdWdoIGxpYnVyY3U/Cmh0dHBzOi8vZ2l0aHViLmNvbS91cmN1L3VzZXJzcGFjZS1yY3UvYmxv Yi9tYXN0ZXIvZG9jL3VhdG9taWMtYXBpLm1kCgpXZSBtaWdodCBhY3R1YWxseSBiZSBhYmxlIHRv IGdldCByaWQgb2YgdGhlIGhsZHJfbG9jayBhbHRvZ2V0aGVyLCB3aGljaAp3b3VsZCBzb2x2ZSB0 aGUgaW5pdGlhbCBzcGluX2xvY2svbXV0ZXggcHJvYmxlbSB3aXRob3V0IGFueSBhZGRpdGlvbmFs CmNvZGUuCgpTb21lIG1pbm9yIHJlbWFya3MgYmVsb3csClJlZ2FyZHMsIE1hcnRpbgoKPiBTbyB0 aGUgdmFsdWVzIHRoYXQgYXJlIHByb3RlY3RlZCBieSB0aGUgc3BpbiBsb2NrIGFyZSBub3cgY3Qt Cj4gPmhvbGRlcnMsCj4gY3QtPnRocmVhZCwgYW5kIGN0LT5hdHRhY2hlZC4gVGhlcmUgYXJlIGNh c2VzIHdoZXJlIHRoZSB0dXIgY2hlY2tlcgo+IGp1c3QKPiB3YW50cyB0byBrbm93IGlmIHRoZSB0 aHJlYWQgaXMgcnVubmluZy4gSWYgc28sIGl0cyBzYWZlIHRvIHNpbXBseQo+IHJlYWQKPiBjdC0+ dGhyZWFkIHdpdGhvdXQgbG9ja2luZy4gIEFsc28sIGlmIGl0IGtub3dzIHRoYXQgdGhlIHRocmVh ZCBpc24ndAo+IHJ1bm5pbmcsIGl0IGNhbiBmcmVlbHkgYWNjZXNzIGFsbCBvZiB0aGVzZSB2YXJp YWJsZXMuIEkndmUgbGVmdCB0aGUKPiBsb2NraW5nIGluLXBsYWNlIGluIHRoZXNlIGNhc2VzIHRv IG1ha2UgdGhlIHN0YXRpYyBhbmFseXplcnMgaGFwcHkuCj4gSG93ZXZlciBJIGhhdmUgYWRkZWQg Y29tbWVudHMgc3RhdGluZyB3aGVuIHRoZSBsb2NraW5nIGlzbid0IGFjdHVhbGx5Cj4gbmVjZXNz YXJ5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVk aGF0LmNvbT4KPiAtLS0KPiAgbGlibXVsdGlwYXRoL2NoZWNrZXJzL3R1ci5jIHwgNjYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAtLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFu Z2VkLCA0OCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv bGlibXVsdGlwYXRoL2NoZWNrZXJzL3R1ci5jCj4gYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvdHVy LmMKPiBpbmRleCBiNGE1Y2IyLi42YWU5NzAwIDEwMDY0NAo+IC0tLSBhL2xpYm11bHRpcGF0aC9j aGVja2Vycy90dXIuYwo+ICsrKyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy90dXIuYwo+IEBAIC00 Niw2ICs0Niw3IEBAIHN0cnVjdCB0dXJfY2hlY2tlcl9jb250ZXh0IHsKPiAgCXB0aHJlYWRfY29u ZF90IGFjdGl2ZTsKPiAgCXB0aHJlYWRfc3BpbmxvY2tfdCBobGRyX2xvY2s7Cj4gIAlpbnQgaG9s ZGVyczsKPiArCWludCBhdHRhY2hlZDsKPiAgCWNoYXIgbWVzc2FnZVtDSEVDS0VSX01TR19MRU5d Owo+ICB9Owo+ICAKPiBAQCAtOTgsMTcgKzk5LDIxIEBAIHZvaWQgbGliY2hlY2tfZnJlZSAoc3Ry dWN0IGNoZWNrZXIgKiBjKQo+ICB7Cj4gIAlpZiAoYy0+Y29udGV4dCkgewo+ICAJCXN0cnVjdCB0 dXJfY2hlY2tlcl9jb250ZXh0ICpjdCA9IGMtPmNvbnRleHQ7Cj4gLQkJaW50IGhvbGRlcnM7Cj4g KwkJaW50IGF0dGFjaGVkLCBob2xkZXJzOwo+ICAJCXB0aHJlYWRfdCB0aHJlYWQ7Cj4gIAo+ICAJ CXB0aHJlYWRfc3Bpbl9sb2NrKCZjdC0+aGxkcl9sb2NrKTsKPiAgCQljdC0+aG9sZGVycy0tOwo+ ICAJCWhvbGRlcnMgPSBjdC0+aG9sZGVyczsKPiArCQlhdHRhY2hlZCA9IGN0LT5hdHRhY2hlZDsK PiArCQljdC0+YXR0YWNoZWQgPSAwOwo+ICAJCXRocmVhZCA9IGN0LT50aHJlYWQ7Cj4gIAkJcHRo cmVhZF9zcGluX3VubG9jaygmY3QtPmhsZHJfbG9jayk7Cj4gLQkJaWYgKGhvbGRlcnMpCj4gKwkJ aWYgKGF0dGFjaGVkKSB7Cj4gIAkJCXB0aHJlYWRfY2FuY2VsKHRocmVhZCk7Cj4gLQkJZWxzZQo+ ICsJCQlwdGhyZWFkX2RldGFjaCh0aHJlYWQpOwo+ICsJCX0KPiArCQlpZiAoIWhvbGRlcnMpCj4g IAkJCWNsZWFudXBfY29udGV4dChjdCk7Cj4gIAkJYy0+Y29udGV4dCA9IE5VTEw7Cj4gIAl9Cj4g QEAgLTIxOCwxNSArMjIzLDIxIEBAIHJldHJ5Ogo+ICAKPiAgc3RhdGljIHZvaWQgY2xlYW51cF9m dW5jKHZvaWQgKmRhdGEpCj4gIHsKPiAtCWludCBob2xkZXJzOwo+ICsJaW50IGF0dGFjaGVkLCBo b2xkZXJzOwo+ICsJcHRocmVhZF90IHRocmVhZDsKPiAgCXN0cnVjdCB0dXJfY2hlY2tlcl9jb250 ZXh0ICpjdCA9IGRhdGE7Cj4gIAlwdGhyZWFkX3NwaW5fbG9jaygmY3QtPmhsZHJfbG9jayk7Cj4g IAljdC0+aG9sZGVycy0tOwo+ICAJaG9sZGVycyA9IGN0LT5ob2xkZXJzOwo+ICsJYXR0YWNoZWQg PSBjdC0+YXR0YWNoZWQ7Cj4gKwljdC0+YXR0YWNoZWQgPSAwOwo+ICsJdGhyZWFkID0gY3QtPnRo cmVhZDsKPiAgCWN0LT50aHJlYWQgPSAwOwo+ICAJcHRocmVhZF9zcGluX3VubG9jaygmY3QtPmhs ZHJfbG9jayk7Cj4gIAlpZiAoIWhvbGRlcnMpCj4gIAkJY2xlYW51cF9jb250ZXh0KGN0KTsKPiAr CWlmIChhdHRhY2hlZCkKPiArCQlwdGhyZWFkX2RldGFjaCh0aHJlYWQpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgaW50IHR1cl9ydW5uaW5nKHN0cnVjdCB0dXJfY2hlY2tlcl9jb250ZXh0ICpjdCkKPiBA QCAtMzI0LDcgKzMzNSw4IEBAIGludCBsaWJjaGVja19jaGVjayhzdHJ1Y3QgY2hlY2tlciAqIGMp Cj4gIAlwdGhyZWFkX2F0dHJfdCBhdHRyOwo+ICAJaW50IHR1cl9zdGF0dXMsIHI7Cj4gIAljaGFy IGRldnRbMzJdOwo+IC0KPiArCXB0aHJlYWRfdCB0aHJlYWQ7Cj4gKwlpbnQgdGltZWRfb3V0LCBh dHRhY2hlZDsKPiAgCj4gIAlpZiAoIWN0KQo+ICAJCXJldHVybiBQQVRIX1VOQ0hFQ0tFRDsKPiBA QCAtMzUwLDE4ICszNjIsMjcgQEAgaW50IGxpYmNoZWNrX2NoZWNrKHN0cnVjdCBjaGVja2VyICog YykKPiAgCX0KPiAgCj4gIAlpZiAoY3QtPnJ1bm5pbmcpIHsKPiAtCQkvKgo+IC0JCSAqIENoZWNr IGlmIFRVUiBjaGVja2VyIGlzIHN0aWxsIHJ1bm5pbmcuIEhvbGQKPiBobGRyX2xvY2sKPiAtCQkg KiBhcm91bmQgdGhlIHB0aHJlYWRfY2FuY2VsKCkgY2FsbCB0byBhdm9pZCB0aGF0Cj4gLQkJICog cHRocmVhZF9jYW5jZWwoKSBnZXRzIGNhbGxlZCBhZnRlciB0aGUgKGRldGFjaGVkKQo+IFRVUgo+ IC0JCSAqIHRocmVhZCBoYXMgZXhpdGVkLgo+IC0JCSAqLwo+IC0JCXB0aHJlYWRfc3Bpbl9sb2Nr KCZjdC0+aGxkcl9sb2NrKTsKPiAtCQlpZiAoY3QtPnRocmVhZCkgewo+IC0JCQlpZiAodHVyX2No ZWNrX2FzeW5jX3RpbWVvdXQoYykpIHsKPiArCQl0aW1lZF9vdXQgPSB0dXJfY2hlY2tfYXN5bmNf dGltZW91dChjKTsKPiArCQlpZiAodGltZWRfb3V0KSB7Cj4gKwkJCXB0aHJlYWRfc3Bpbl9sb2Nr KCZjdC0+aGxkcl9sb2NrKTsKPiArCQkJYXR0YWNoZWQgPSBjdC0+YXR0YWNoZWQ7Cj4gKwkJCWN0 LT5hdHRhY2hlZCA9IDA7Cj4gKwkJCXRocmVhZCA9IGN0LT50aHJlYWQ7Cj4gKwkJCXB0aHJlYWRf c3Bpbl91bmxvY2soJmN0LT5obGRyX2xvY2spOwo+ICsJCQlpZiAoYXR0YWNoZWQpIHsKPiArCQkJ CXB0aHJlYWRfY2FuY2VsKHRocmVhZCk7Cj4gKwkJCQlwdGhyZWFkX2RldGFjaCh0aHJlYWQpOwo+ ICsJCQl9Cj4gKwkJfSBlbHNlIHsKPiArCQkJLyogbG9ja2luZyBoZXJlIHNvbGVseSB0byBtYWtl IHN0YXRpYwo+IGFuYWx5emVycyBoYXBweSAqLwoKT3V0IG9mIGN1cmlvc2l0eTogd2hpY2ggYW5h bHl6ZXJzIGhhdmUgeW91IGJlZW4gdXNpbmc/Cgo+ICsJCQlwdGhyZWFkX3NwaW5fbG9jaygmY3Qt PmhsZHJfbG9jayk7Cj4gKwkJCXRocmVhZCA9IGN0LT50aHJlYWQ7Cj4gKwkJCXB0aHJlYWRfc3Bp bl91bmxvY2soJmN0LT5obGRyX2xvY2spOwo+ICsJCX0KPiArCQlpZiAodGhyZWFkKSB7Cj4gKwkJ CWlmICh0aW1lZF9vdXQpIHsKPiAgCQkJCWNvbmRsb2coMywgIiVzOiB0dXIgY2hlY2tlcgo+IHRp bWVvdXQiLAo+ICAJCQkJCXR1cl9kZXZ0KGRldnQsIHNpemVvZihkZXZ0KSwKPiBjdCkpOwo+IC0J CQkJcHRocmVhZF9jYW5jZWwoY3QtPnRocmVhZCk7Cj4gIAkJCQljdC0+cnVubmluZyA9IDA7Cj4g IAkJCQlNU0coYywgTVNHX1RVUl9USU1FT1VUKTsKPiAgCQkJCXR1cl9zdGF0dXMgPSBQQVRIX1RJ TUVPVVQ7Cj4gQEAgLTM3Nyw5ICszOTgsMTMgQEAgaW50IGxpYmNoZWNrX2NoZWNrKHN0cnVjdCBj aGVja2VyICogYykKPiAgCQkJdHVyX3N0YXR1cyA9IGN0LT5zdGF0ZTsKPiAgCQkJc3RybGNweShj LT5tZXNzYWdlLCBjdC0+bWVzc2FnZSwgc2l6ZW9mKGMtCj4gPm1lc3NhZ2UpKTsKPiAgCQl9Cj4g LQkJcHRocmVhZF9zcGluX3VubG9jaygmY3QtPmhsZHJfbG9jayk7Cj4gIAkJcHRocmVhZF9tdXRl eF91bmxvY2soJmN0LT5sb2NrKTsKPiAgCX0gZWxzZSB7Cj4gKwkJLyoKPiArCQkgKiBsb2NraW5n IGlzIG5lY2Vzc2FyeSBoZXJlLCBzbyB0aGF0IHdlIGtub3cgdGhhdAo+IHRoZQo+ICsJCSAqIHRo cmVhZCBmaW5pc2hlZCBhbGwgYWNjZXNzIHRvIHRoZSBjb250ZXh0IGJlZm9yZQo+IHdlCj4gKwkJ ICogZGVsYXJlIGl0IG5vdCBydW5uaW5nCj4gKwkJICovCj4gIAkJaWYgKHR1cl9ydW5uaW5nKGN0 KSkgewo+ICAJCQkvKiBwdGhyZWFkIGNhbmNlbCBmYWlsZWQuIGNvbnRpbnVlIGluIHN5bmMKPiBt b2RlICovCj4gIAkJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjdC0+bG9jayk7Cj4gQEAgLTM5MSwx OSArNDE2LDIzIEBAIGludCBsaWJjaGVja19jaGVjayhzdHJ1Y3QgY2hlY2tlciAqIGMpCj4gIAkJ Y3QtPnN0YXRlID0gUEFUSF9VTkNIRUNLRUQ7Cj4gIAkJY3QtPmZkID0gYy0+ZmQ7Cj4gIAkJY3Qt PnRpbWVvdXQgPSBjLT50aW1lb3V0Owo+ICsJCS8qIGxvY2tpbmcgaGVyZSBzb2xlbHkgdG8gbWFr ZSBzdGF0aWMgYW5hbHl6ZXJzCj4gaGFwcHkgKi8KPiAgCQlwdGhyZWFkX3NwaW5fbG9jaygmY3Qt PmhsZHJfbG9jayk7Cj4gIAkJY3QtPmhvbGRlcnMrKzsKPiArCQljdC0+YXR0YWNoZWQgPSAxOwo+ ICAJCXB0aHJlYWRfc3Bpbl91bmxvY2soJmN0LT5obGRyX2xvY2spOwo+ICAJCXR1cl9zZXRfYXN5 bmNfdGltZW91dChjKTsKPiAtCQlzZXR1cF90aHJlYWRfYXR0cigmYXR0ciwgMzIgKiAxMDI0LCAx KTsKPiArCQlzZXR1cF90aHJlYWRfYXR0cigmYXR0ciwgMzIgKiAxMDI0LCAwKTsKPiAgCQlyID0g cHRocmVhZF9jcmVhdGUoJmN0LT50aHJlYWQsICZhdHRyLCB0dXJfdGhyZWFkLAo+IGN0KTsKPiAg CQlwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cik7Cj4gIAkJaWYgKHIpIHsKPiArCQkJLyogbG9j a2luZyBoZXJlIHNvbGVseSB0byBtYWtlIHN0YXRpYwo+IGFuYWx5emVycyBoYXBweSAqLwo+ICAJ CQlwdGhyZWFkX3NwaW5fbG9jaygmY3QtPmhsZHJfbG9jayk7Cj4gIAkJCWN0LT5ob2xkZXJzLS07 Cj4gKwkJCWN0LT5hdHRhY2hlZCA9IDA7Cj4gKwkJCWN0LT50aHJlYWQgPSAwOwo+ICAJCQlwdGhy ZWFkX3NwaW5fdW5sb2NrKCZjdC0+aGxkcl9sb2NrKTsKPiAgCQkJcHRocmVhZF9tdXRleF91bmxv Y2soJmN0LT5sb2NrKTsKPiAtCQkJY3QtPnRocmVhZCA9IDA7Cj4gIAkJCWNvbmRsb2coMywgIiVz OiBmYWlsZWQgdG8gc3RhcnQgdHVyIHRocmVhZCwgCgpUaGlzIHBhcnQgKG1vdmluZyBjdC0+dGhy ZWFkID0wIGludG8gdGhlIGNyaWNpdGFsIHNlY3Rpb24pIGlzIGEgYnVnCmZpeC4KCgo+IHVzaW5n Igo+ICAJCQkJIiBzeW5jIG1vZGUiLCB0dXJfZGV2dChkZXZ0LAo+IHNpemVvZihkZXZ0KSwgY3Qp KTsKPiAgCQkJcmV0dXJuIHR1cl9jaGVjayhjLT5mZCwgYy0+dGltZW91dCwKPiBAQCAtNDE0LDYg KzQ0Myw3IEBAIGludCBsaWJjaGVja19jaGVjayhzdHJ1Y3QgY2hlY2tlciAqIGMpCj4gIAkJdHVy X3N0YXR1cyA9IGN0LT5zdGF0ZTsKPiAgCQlzdHJsY3B5KGMtPm1lc3NhZ2UsIGN0LT5tZXNzYWdl LCBzaXplb2YoYy0KPiA+bWVzc2FnZSkpOwo+ICAJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjdC0+ bG9jayk7Cj4gKwkJLyogbG9ja2luZyBoZXJlIHNvbGVseSB0byBtYWtlIHN0YXRpYyBhbmFseXpl cnMKPiBoYXBweSAqLwo+ICAJCWlmICh0dXJfcnVubmluZyhjdCkgJiYKPiAgCQkgICAgKHR1cl9z dGF0dXMgPT0gUEFUSF9QRU5ESU5HIHx8IHR1cl9zdGF0dXMgPT0KPiBQQVRIX1VOQ0hFQ0tFRCkp IHsKPiAgCQkJY29uZGxvZygzLCAiJXM6IHR1ciBjaGVja2VyIHN0aWxsIHJ1bm5pbmciLAoKLS0g CkRyLiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4sIFRlbC4gKzQ5ICgwKTkxMSA3NDA1 MyAyMTA3ClNVU0UgTGludXggR21iSCwgR0Y6IEZlbGl4IEltZW5kw7ZyZmZlciwgSmFuZSBTbWl0 aGFyZCwgR3JhaGFtIE5vcnRvbgpIUkIgMjEyODQgKEFHIE7DvHJuYmVyZykKCi0tCmRtLWRldmVs IG1haWxpbmcgbGlzdApkbS1kZXZlbEByZWRoYXQuY29tCmh0dHBzOi8vd3d3LnJlZGhhdC5jb20v bWFpbG1hbi9saXN0aW5mby9kbS1kZXZlbA==