From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Liu Subject: Re: [PATCHv5 12/14] xen-blkback: safely unmap grants in case they are still in use Date: Mon, 09 Mar 2015 17:09:05 +0800 Message-ID: <54FD6331.8040503@oracle.com> References: <1422377057-19221-1-git-send-email-david.vrabel@citrix.com> <1422377057-19221-13-git-send-email-david.vrabel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YUtgh-0006FN-Oh for xen-devel@lists.xenproject.org; Mon, 09 Mar 2015 09:09:23 +0000 In-Reply-To: <1422377057-19221-13-git-send-email-david.vrabel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: David Vrabel Cc: xen-devel@lists.xenproject.org, Boris Ostrovsky , Jenny Herbert List-Id: xen-devel@lists.xenproject.org SGkgRGF2aWQsCgpSZWNlbnRseSBJIG1ldCBhbiBpc3N1ZSB3aGljaCBpcyBsaWtlbHkgcmVsYXRl ZCB3aXRoIHRoaXMgcGF0Y2guIEl0CmhhcHBlbmVkIHdoZW4gcnVubmluZyBibG9jayBiZW5jaG1h cmsgb24gZG9tVSwgdGhlIGJhY2tlbmQgd2FzIGFuIGlTQ1NJCmRpc2sgY29ubmVjdGVkIHRvIGRv bTAuIEkgZ290IGJlbG93IHBhbmljIGF0IHB1dF9wYWdlX3Rlc3R6ZXJvKCkgb24KZG9tMCwgYXQg dGhhdCB0aW1lIHRoZSBpeGdiZSBuZXR3b3JrIGNhcmQgd2FzIGZyZWVpbmcgc2tiIHBhZ2VzIGlu Cl9fc2tiX2ZyYWdfdW5yZWYoKSBidXQgdGhlIHBhZ2UtPl9jb3VudCB3YXMgYWxyZWFkeSAwLgpE byB5b3UgdGhpbmsgaXMgaXQgcG9zc2lhYmxlIHRoYXQgcGFnZSB3YXMgYWxyZWFkeSBmcmVlZCBi eSBibGtiYWNrPwoKVGhhbmtzLAotQm9iCi0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0t LS0tLQprZXJuZWwgQlVHIGF0IGluY2x1ZGUvbGludXgvbW0uaDoyODghCmludmFsaWQgb3Bjb2Rl OiAwMDAwIFsjMV0gU01QCk1vZHVsZXMgbGlua2VkIGluOiBkbV9xdWV1ZV9sZW5ndGggaWJfaXNl ciByZG1hX2NtIGliX2NtIGl3X2NtIGliX3NhCmliX21hZCBpYl9jb3JlIGliX2FkZHIgaXNjc2lf dGNwIHh0X21hYyB4dF9uYXQgbmZfY29ubnRyYWNrX25ldGxpbmsKeHRfY29ubnRyYWNrIGlwdF9S RUpFQ1QgeHRfVENQTVNTIHh0X2NvbW1lbnQgeHRfY29ubm1hcmsgaXB0YWJsZV9yYXcKeHRfUkVE SVJFQ1QgZXh0NCBqYmQyIHh0X3N0YXRlIHh0X05GUVVFVUUgaXB0YWJsZV9uYXQgbmZfY29ubnRy YWNrX2lwdjQKbmZfZGVmcmFnX2lwdjQgbmZfbmF0X2lwdjQgbmZfbmF0IG5mX2Nvbm50cmFjayBp cF9ncmUgZ3JlCm5mbmV0bGlua19xdWV1ZSBuZm5ldGxpbmsgaXA2dGFibGVfZmlsdGVyIGlwNl90 YWJsZXMgZWJ0YWJsZV9uYXQKZWJ0YWJsZXMgc29mdGRvZyBpcHRhYmxlX2ZpbHRlciBpcF90YWJs ZXMgeGVuX3BjaWJhY2sgeGVuX25ldGJhY2sKeGVuX2Jsa2JhY2sgeGVuX2dudGFsbG9jIHhlbl9n bnRkZXYgeGVuX2V2dGNobiB4ZW5mcyB4ZW5fcHJpdmNtZCA4MDIxcQpnYXJwIGJyaWRnZSBzdHAg bGxjIHN1bnJwYyBib25kaW5nIG1seDRfZW4gbWx4NF9jb3JlIGlwdjYgaXBtaV9kZXZpbnRmCmlw bWlfc2kgaXBtaV9tc2doYW5kbGVyIHZob3N0X25ldCBtYWN2dGFwIG1hY3ZsYW4gdHVuIGlUQ09f d2R0CmlUQ09fdmVuZG9yX3N1cHBvcnQgY29yZXRlbXAgZnJlcV90YWJsZSBtcGVyZiBpbnRlbF9w b3dlcmNsYW1wCmdoYXNoX2NsbXVsbmlfaW50ZWwgbWljcm9jb2RlIHBjc3BrciBpMmNfaTgwMSBp MmNfY29yZSBscGNfaWNoIG1mZF9jb3JlCnNocGNocCBpb2F0ZG1hIHNnIGV4dDMgamJkIG1iY2Fj aGUgZG1fcm91bmRfcm9iaW4gc2RfbW9kIGNyY190MTBkaWYKYWVzbmlfaW50ZWwgYWJsa19oZWxw ZXIgY3J5cHRkIGxydyBhZXNfeDg2XzY0IHh0cyBnZjEyOG11bCBhaGNpIGxpYmFoY2kKbWVnYXJh aWRfc2FzIGl4Z2JlIGh3bW9uIGRjYSBkbV9tdWx0aXBhdGggZG1fbWlycm9yIGRtX3JlZ2lvbl9o YXNoCmRtX2xvZyBkbV9tb2QgY3JjMzJjX2ludGVsIGJlMmlzY3NpIGJueDJpIGNuaWMgdWlvIGN4 Z2I0aSBjeGdiNCBjeGdiM2kKbGliY3hnYmkgY3hnYjMgbWRpbyBsaWJpc2NzaV90Y3AgcWxhNHh4 eCBpc2NzaV9ib290X3N5c2ZzIGxpYmlzY3NpCnNjc2lfdHJhbnNwb3J0X2lzY3NpIFtsYXN0IHVu bG9hZGVkOiBib25kaW5nXQpDUFUgMApQaWQ6IDMxMzA5LCBjb21tOiBrd29ya2VyLzA6MCBUYWlu dGVkOiBHICAgICAgICBXCjMuOC4xMy00OC5lbDZ1ZWsuMjAxNTAzMDYueDg2XzY0ICMyIE9yYWNs ZSBDb3Jwb3JhdGlvbiBTVU4gRklSRSBYNDE3MCBNMwogICAgL0FTU1ksTU9USEVSQk9BUkQsMVUK UklQOiBlMDMwOls8ZmZmZmZmZmY4MTEzZDQ4MT5dICBbPGZmZmZmZmZmODExM2Q0ODE+XSBwdXRf cGFnZSsweDMxLzB4NTAKUlNQOiBlMDJiOmZmZmY4ODAyNzhlMDNkMTAgIEVGTEFHUzogMDAwMTAy NDYKUkFYOiAwMDAwMDAwMDAwMDAwMDAwIFJCWDogZmZmZjg4MDI2OTIyNTdiOCBSQ1g6IDAwMDAw MDAwZmZmZmZmZmYKUkRYOiBmZmZmODgwMjZlYTRiMmMwIFJTSTogMDAwMDAwMDAwMDAwMDIwMCBS REk6IGZmZmZlYTAwMDg4NjcwYzAKUkJQOiBmZmZmODgwMjc4ZTAzZDEwIFIwODogZmZmZjg4MDI2 YTZlNDUwMCBSMDk6IGZmZmY4ODAyNzBhMjUwOTgKUjEwOiAwMDAwMDAwMDAwMDAwMDAxIFIxMTog ZmZmZjg4MDI3OGUwM2NmMCBSMTI6IDAwMDAwMDAwMDAwMDAwMDYKUjEzOiAwMDAwMDAwMGZmZmZm ZjhlIFIxNDogZmZmZjg4MDI3MGEyNTA5OCBSMTU6IGZmZmY4ODAyNmM5NWQ5ZjAKRlM6ICAwMDAw N2ZiYjQ5N2NmNzAwKDAwMDApIEdTOmZmZmY4ODAyNzhlMDAwMDAoMDAwMCkga25sR1M6MDAwMDAw MDAwMDAwMDAwMApDUzogIGUwMzMgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUw MDMzCkNSMjogMDAwMDAwMDAwMDdhYWVkMCBDUjM6IDAwMDAwMDAyNzAzYzIwMDAgQ1I0OiAwMDAw MDAwMDAwMDQyNjYwCkRSMDogMDAwMDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAg RFIyOiAwMDAwMDAwMDAwMDAwMDAwCkRSMzogMDAwMDAwMDAwMDAwMDAwMCBEUjY6IDAwMDAwMDAw ZmZmZjBmZjAgRFI3OiAwMDAwMDAwMDAwMDAwNDAwClByb2Nlc3Mga3dvcmtlci8wOjAgKHBpZDog MzEzMDksIHRocmVhZGluZm8gZmZmZjg4MDIwYzYwODAwMCwgdGFzawpmZmZmODgwMjAwZTI0MTQw KQpTdGFjazoKIGZmZmY4ODAyNzhlMDNkMzAgZmZmZmZmZmY4MTRjMzg1NSBmZmZmODgwMjY5MjI1 N2I4IGZmZmY4ODAyNjkyMjU3YjgKIGZmZmY4ODAyNzhlMDNkNTAgZmZmZmZmZmY4MTRjMzhlZSAw MDAwMDAwMDAwMDAwMDAwIGZmZmZjOTAwMTE4OGZhYTAKIGZmZmY4ODAyNzhlMDNkNzAgZmZmZmZm ZmY4MTRjM2ZmMSBmZmZmYzkwMDExODhmYWEwIGZmZmY4ODAyNmM5NWQ4ZTAKQ2FsbCBUcmFjZToK IDxJUlE+CiBbPGZmZmZmZmZmODE0YzM4NTU+XSBza2JfcmVsZWFzZV9kYXRhKzB4NzUvMHhmMAog WzxmZmZmZmZmZjgxNGMzOGVlPl0gX19rZnJlZV9za2IrMHgxZS8weGEwCiBbPGZmZmZmZmZmODE0 YzNmZjE+XSBjb25zdW1lX3NrYisweDMxLzB4NzAKIFs8ZmZmZmZmZmY4MTRjZTZlZD5dIGRldl9r ZnJlZV9za2JfYW55KzB4M2QvMHg1MAogWzxmZmZmZmZmZmEwMWQwYmRjPl0gaXhnYmVfY2xlYW5f dHhfaXJxKzB4YWMvMHg1MzAgW2l4Z2JlXQogWzxmZmZmZmZmZmEwMWQxMGIzPl0gaXhnYmVfcG9s bCsweDUzLzB4MWEwIFtpeGdiZV0KIFs8ZmZmZmZmZmY4MTRkM2QwNT5dIG5ldF9yeF9hY3Rpb24r MHgxMDUvMHgyYjAKIFs8ZmZmZmZmZmY4MTA2NjU4Nz5dIF9fZG9fc29mdGlycSsweGQ3LzB4MjQw CiBbPGZmZmZmZmZmODE1YTdjNWM+XSBjYWxsX3NvZnRpcnErMHgxYy8weDMwCiBbPGZmZmZmZmZm ODEwMTc0YjU+XSBkb19zb2Z0aXJxKzB4NjUvMHhhMAogWzxmZmZmZmZmZjgxMDY2MzZkPl0gaXJx X2V4aXQrMHhiZC8weGUwCiBbPGZmZmZmZmZmODEzM2QzZTU+XSB4ZW5fZXZ0Y2huX2RvX3VwY2Fs bCsweDM1LzB4NTAKIFs8ZmZmZmZmZmY4MTVhN2NiZT5dIHhlbl9kb19oeXBlcnZpc29yX2NhbGxi YWNrKzB4MWUvMHgzMAogPEVPST4KIFs8ZmZmZmZmZmY4MTAwMTI4YT5dID8geGVuX2h5cGVyY2Fs bF9ncmFudF90YWJsZV9vcCsweGEvMHgyMAogWzxmZmZmZmZmZjgxMDAxMjhhPl0gPyB4ZW5faHlw ZXJjYWxsX2dyYW50X3RhYmxlX29wKzB4YS8weDIwCiBbPGZmZmZmZmZmODEzM2E0ZTY+XSA/IGdu dHRhYl91bm1hcF9yZWZzKzB4MjYvMHg3MAogWzxmZmZmZmZmZjgxMzNhNWJhPl0gPyBfX2dudHRh Yl91bm1hcF9yZWZzX2FzeW5jKzB4OGEvMHhiMAogWzxmZmZmZmZmZjgxMzNhNjcyPl0gPyBnbnR0 YWJfdW5tYXBfd29yaysweDIyLzB4MzAKIFs8ZmZmZmZmZmY4MTA3YmYxMD5dID8gcHJvY2Vzc19v bmVfd29yaysweDE4MC8weDQyMAogWzxmZmZmZmZmZjgxMDdkZjRlPl0gPyB3b3JrZXJfdGhyZWFk KzB4MTJlLzB4MzkwCiBbPGZmZmZmZmZmODEwN2RlMjA+XSA/IG1hbmFnZV93b3JrZXJzKzB4MTgw LzB4MTgwCiBbPGZmZmZmZmZmODEwODMyOWU+XSA/IGt0aHJlYWQrMHhjZS8weGUwCiBbPGZmZmZm ZmZmODEwMDM5ZWU+XSA/IHhlbl9lbmRfY29udGV4dF9zd2l0Y2grMHgxZS8weDMwCiBbPGZmZmZm ZmZmODEwODMxZDA+XSA/IGt0aHJlYWRfZnJlZXphYmxlX3Nob3VsZF9zdG9wKzB4NzAvMHg3MAog WzxmZmZmZmZmZjgxNWE2ODJjPl0gPyByZXRfZnJvbV9mb3JrKzB4N2MvMHhiMAogWzxmZmZmZmZm ZjgxMDgzMWQwPl0gPyBrdGhyZWFkX2ZyZWV6YWJsZV9zaG91bGRfc3RvcCsweDcwLzB4NzAKQ29k ZTogNjYgNjYgOTAgNjYgZjcgMDcgMDAgYzAgNzUgMjUgOGIgNDcgMWMgODUgYzAgNzQgMWEgZjAg ZmYgNGYgMWMgMGYKOTQgYzAgODQgYzAgNzUgMDYgYzkgYzMgMGYgMWYgNDAgMDAgZTggNDMgZmQg ZmYgZmYgYzkgNjYgOTAgYzMgPDBmPiAwYgplYiBmZSA2NiA2NiAyZSAwZiAxZiA4NCAwMCAwMCAw MCAwMCAwMCBlOCA1YiBmZCBmZiBmZiBjOQpSSVAgIFs8ZmZmZmZmZmY4MTEzZDQ4MT5dIHB1dF9w YWdlKzB4MzEvMHg1MAogUlNQIDxmZmZmODgwMjc4ZTAzZDEwPgotLS1bIGVuZCB0cmFjZSA5Zjkz ZmUwMTg0NDRmYzA5IF0tLS0KS2VybmVsIHBhbmljIC0gbm90IHN5bmNpbmc6IEZhdGFsIGV4Y2Vw dGlvbiBpbiBpbnRlcnJ1cHQKKFhFTikgRG9tYWluIDAgY3Jhc2hlZDogcmVib290aW5nIG1hY2hp bmUgaW4gNSBzZWNvbmRzLgooWEVOKSBSZXNldHRpbmcgd2l0aCBBQ1BJIE1FTU9SWSBvciBJL08g UkVTRVRfUkVHLgoKT24gMDEvMjgvMjAxNSAxMjo0NCBBTSwgRGF2aWQgVnJhYmVsIHdyb3RlOgo+ IEZyb206IEplbm5pZmVyIEhlcmJlcnQgPGplbm5pZmVyLmhlcmJlcnRAY2l0cml4LmNvbT4KPiAK PiBVc2UgZ250dGFiX3VubWFwX3JlZnNfYXN5bmMoKSB0byB3YWl0IHVudGlsIHRoZSBtYXBwZWQg cGFnZXMgYXJlIG5vCj4gbG9uZ2VyIGluIHVzZSBiZWZvcmUgdW5tYXBwaW5nIHRoZW0uCj4gCj4g VGhpcyBhbGxvd3MgYmxrYmFjayB0byB1c2UgbmV0d29yayBzdG9yYWdlIHdoaWNoIG1heSByZXRh aW4gcmVmcyB0bwo+IHBhZ2VzIGluIHF1ZXVlZCBza2JzIGFmdGVyIHRoZSBibG9jayBJL08gaGFz IGNvbXBsZXRlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKZW5uaWZlciBIZXJiZXJ0IDxqZW5uaWZl ci5oZXJiZXJ0QGNpdHJpeC5jb20+Cj4gQWNrZWQtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2Vy LnBhdUBjaXRyaXguY29tPgo+IEFja2VkLWJ5OiBKZW5zIEF4Ym9lIDxheGJvZUBrZXJuZWwuZGU+ Cj4gU2lnbmVkLW9mZi1ieTogRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY2l0cml4LmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMgfCAgMTY5ICsrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Jh Y2svY29tbW9uLmggIHwgICAgMyArCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMo KyksIDUwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3hlbi1i bGtiYWNrL2Jsa2JhY2suYyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jCj4g aW5kZXggOTA4ZTYzMC4uMmEwNGQzNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Jsb2NrL3hlbi1i bGtiYWNrL2Jsa2JhY2suYwo+ICsrKyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFj ay5jCj4gQEAgLTQ3LDYgKzQ3LDcgQEAKPiAgI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJ2aXNvci5o Pgo+ICAjaW5jbHVkZSA8YXNtL3hlbi9oeXBlcmNhbGwuaD4KPiAgI2luY2x1ZGUgPHhlbi9iYWxs b29uLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vZ3JhbnRfdGFibGUuaD4KPiAgI2luY2x1ZGUgImNvbW1v bi5oIgo+ICAKPiAgLyoKPiBAQCAtMjYyLDYgKzI2MywxNyBAQCBzdGF0aWMgdm9pZCBwdXRfcGVy c2lzdGVudF9nbnQoc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsCj4gIAlhdG9taWNfZGVjKCZibGtp Zi0+cGVyc2lzdGVudF9nbnRfaW5fdXNlKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgZnJlZV9w ZXJzaXN0ZW50X2dudHNfdW5tYXBfY2FsbGJhY2soaW50IHJlc3VsdCwKPiArCQkJCQkJc3RydWN0 IGdudGFiX3VubWFwX3F1ZXVlX2RhdGEgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBjb21wbGV0aW9u ICpjID0gZGF0YS0+ZGF0YTsKPiArCj4gKwkvKiBCVUdfT04gdXNlZCB0byByZXByb2R1Y2UgZXhp c3RpbmcgYmVoYXZpb3VyLAo+ICsJICAgYnV0IGlzIHRoaXMgdGhlIGJlc3Qgd2F5IHRvIGRlYWwg d2l0aCB0aGlzPyAqLwo+ICsJQlVHX09OKHJlc3VsdCk7Cj4gKwljb21wbGV0ZShjKTsKPiArfQo+ ICsKPiAgc3RhdGljIHZvaWQgZnJlZV9wZXJzaXN0ZW50X2dudHMoc3RydWN0IHhlbl9ibGtpZiAq YmxraWYsIHN0cnVjdCByYl9yb290ICpyb290LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgbnVtKQo+ICB7Cj4gQEAgLTI2OSw4ICsyODEsMTcgQEAgc3Rh dGljIHZvaWQgZnJlZV9wZXJzaXN0ZW50X2dudHMoc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsIHN0 cnVjdCByYl9yb290ICpyb290LAo+ICAJc3RydWN0IHBhZ2UgKnBhZ2VzW0JMS0lGX01BWF9TRUdN RU5UU19QRVJfUkVRVUVTVF07Cj4gIAlzdHJ1Y3QgcGVyc2lzdGVudF9nbnQgKnBlcnNpc3RlbnRf Z250Owo+ICAJc3RydWN0IHJiX25vZGUgKm47Cj4gLQlpbnQgcmV0ID0gMDsKPiAgCWludCBzZWdz X3RvX3VubWFwID0gMDsKPiArCXN0cnVjdCBnbnRhYl91bm1hcF9xdWV1ZV9kYXRhIHVubWFwX2Rh dGE7Cj4gKwlzdHJ1Y3QgY29tcGxldGlvbiB1bm1hcF9jb21wbGV0aW9uOwo+ICsKPiArCWluaXRf Y29tcGxldGlvbigmdW5tYXBfY29tcGxldGlvbik7Cj4gKwo+ICsJdW5tYXBfZGF0YS5kYXRhID0g JnVubWFwX2NvbXBsZXRpb247Cj4gKwl1bm1hcF9kYXRhLmRvbmUgPSAmZnJlZV9wZXJzaXN0ZW50 X2dudHNfdW5tYXBfY2FsbGJhY2s7Cj4gKwl1bm1hcF9kYXRhLnBhZ2VzID0gcGFnZXM7Cj4gKwl1 bm1hcF9kYXRhLnVubWFwX29wcyA9IHVubWFwOwo+ICsJdW5tYXBfZGF0YS5rdW5tYXBfb3BzID0g TlVMTDsKPiAgCj4gIAlmb3JlYWNoX2dyYW50X3NhZmUocGVyc2lzdGVudF9nbnQsIG4sIHJvb3Qs IG5vZGUpIHsKPiAgCQlCVUdfT04ocGVyc2lzdGVudF9nbnQtPmhhbmRsZSA9PQo+IEBAIC0yODUs OSArMzA2LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVfcGVyc2lzdGVudF9nbnRzKHN0cnVjdCB4ZW5f YmxraWYgKmJsa2lmLCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCwKPiAgCj4gIAkJaWYgKCsrc2Vnc190 b191bm1hcCA9PSBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1QgfHwKPiAgCQkJIXJiX25l eHQoJnBlcnNpc3RlbnRfZ250LT5ub2RlKSkgewo+IC0JCQlyZXQgPSBnbnR0YWJfdW5tYXBfcmVm cyh1bm1hcCwgTlVMTCwgcGFnZXMsCj4gLQkJCQlzZWdzX3RvX3VubWFwKTsKPiAtCQkJQlVHX09O KHJldCk7Cj4gKwo+ICsJCQl1bm1hcF9kYXRhLmNvdW50ID0gc2Vnc190b191bm1hcDsKPiArCQkJ Z250dGFiX3VubWFwX3JlZnNfYXN5bmMoJnVubWFwX2RhdGEpOwo+ICsJCQl3YWl0X2Zvcl9jb21w bGV0aW9uKCZ1bm1hcF9jb21wbGV0aW9uKTsKPiArCj4gIAkJCXB1dF9mcmVlX3BhZ2VzKGJsa2lm LCBwYWdlcywgc2Vnc190b191bm1hcCk7Cj4gIAkJCXNlZ3NfdG9fdW5tYXAgPSAwOwo+ICAJCX0K PiBAQCAtNjUzLDE4ICs2NzYsMTQgQEAgdm9pZCB4ZW5fYmxrYmtfZnJlZV9jYWNoZXMoc3RydWN0 IHhlbl9ibGtpZiAqYmxraWYpCj4gIAlzaHJpbmtfZnJlZV9wYWdlcG9vbChibGtpZiwgMCAvKiBB bGwgKi8pOwo+ICB9Cj4gIAo+IC0vKgo+IC0gKiBVbm1hcCB0aGUgZ3JhbnQgcmVmZXJlbmNlcywg YW5kIGFsc28gcmVtb3ZlIHRoZSBNMlAgb3Zlci1yaWRlcwo+IC0gKiB1c2VkIGluIHRoZSAncGVu ZGluZ19yZXEnLgo+IC0gKi8KPiAtc3RhdGljIHZvaWQgeGVuX2Jsa2JrX3VubWFwKHN0cnVjdCB4 ZW5fYmxraWYgKmJsa2lmLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdy YW50X3BhZ2UgKnBhZ2VzW10sCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVt KQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHhlbl9ibGtia191bm1hcF9wcmVwYXJlKAo+ICsJc3Ry dWN0IHhlbl9ibGtpZiAqYmxraWYsCj4gKwlzdHJ1Y3QgZ3JhbnRfcGFnZSAqKnBhZ2VzLAo+ICsJ dW5zaWduZWQgaW50IG51bSwKPiArCXN0cnVjdCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmICp1bm1h cF9vcHMsCj4gKwlzdHJ1Y3QgcGFnZSAqKnVubWFwX3BhZ2VzKQo+ICB7Cj4gLQlzdHJ1Y3QgZ250 dGFiX3VubWFwX2dyYW50X3JlZiB1bm1hcFtCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1Rd Owo+IC0Jc3RydWN0IHBhZ2UgKnVubWFwX3BhZ2VzW0JMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVR VUVTVF07Cj4gIAl1bnNpZ25lZCBpbnQgaSwgaW52Y291bnQgPSAwOwo+IC0JaW50IHJldDsKPiAg Cj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKPiAgCQlpZiAocGFnZXNbaV0tPnBlcnNp c3RlbnRfZ250ICE9IE5VTEwpIHsKPiBAQCAtNjc0LDIxICs2OTMsOTUgQEAgc3RhdGljIHZvaWQg eGVuX2Jsa2JrX3VubWFwKHN0cnVjdCB4ZW5fYmxraWYgKmJsa2lmLAo+ICAJCWlmIChwYWdlc1tp XS0+aGFuZGxlID09IEJMS0JBQ0tfSU5WQUxJRF9IQU5ETEUpCj4gIAkJCWNvbnRpbnVlOwo+ICAJ CXVubWFwX3BhZ2VzW2ludmNvdW50XSA9IHBhZ2VzW2ldLT5wYWdlOwo+IC0JCWdudHRhYl9zZXRf dW5tYXBfb3AoJnVubWFwW2ludmNvdW50XSwgdmFkZHIocGFnZXNbaV0tPnBhZ2UpLAo+ICsJCWdu dHRhYl9zZXRfdW5tYXBfb3AoJnVubWFwX29wc1tpbnZjb3VudF0sIHZhZGRyKHBhZ2VzW2ldLT5w YWdlKSwKPiAgCQkJCSAgICBHTlRNQVBfaG9zdF9tYXAsIHBhZ2VzW2ldLT5oYW5kbGUpOwo+ICAJ CXBhZ2VzW2ldLT5oYW5kbGUgPSBCTEtCQUNLX0lOVkFMSURfSEFORExFOwo+IC0JCWlmICgrK2lu dmNvdW50ID09IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCkgewo+IC0JCQlyZXQgPSBn bnR0YWJfdW5tYXBfcmVmcyh1bm1hcCwgTlVMTCwgdW5tYXBfcGFnZXMsCj4gLQkJCSAgICAgICAg ICAgICAgICAgICAgICAgIGludmNvdW50KTsKPiArCQlpbnZjb3VudCsrOwo+ICsgICAgICAgfQo+ ICsKPiArICAgICAgIHJldHVybiBpbnZjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgeGVu X2Jsa2JrX3VubWFwX2FuZF9yZXNwb25kX2NhbGxiYWNrKGludCByZXN1bHQsIHN0cnVjdCBnbnRh Yl91bm1hcF9xdWV1ZV9kYXRhICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgcGVuZGluZ19yZXEqIHBl bmRpbmdfcmVxID0gKHN0cnVjdCBwZW5kaW5nX3JlcSopIChkYXRhLT5kYXRhKTsKPiArCXN0cnVj dCB4ZW5fYmxraWYgKmJsa2lmID0gcGVuZGluZ19yZXEtPmJsa2lmOwo+ICsKPiArCS8qIEJVR19P TiB1c2VkIHRvIHJlcHJvZHVjZSBleGlzdGluZyBiZWhhdmlvdXIsCj4gKwkgICBidXQgaXMgdGhp cyB0aGUgYmVzdCB3YXkgdG8gZGVhbCB3aXRoIHRoaXM/ICovCj4gKwlCVUdfT04ocmVzdWx0KTsK PiArCj4gKwlwdXRfZnJlZV9wYWdlcyhibGtpZiwgZGF0YS0+cGFnZXMsIGRhdGEtPmNvdW50KTsK PiArCW1ha2VfcmVzcG9uc2UoYmxraWYsIHBlbmRpbmdfcmVxLT5pZCwKPiArCQkgICAgICBwZW5k aW5nX3JlcS0+b3BlcmF0aW9uLCBwZW5kaW5nX3JlcS0+c3RhdHVzKTsKPiArCWZyZWVfcmVxKGJs a2lmLCBwZW5kaW5nX3JlcSk7Cj4gKwkvKgo+ICsJICogTWFrZSBzdXJlIHRoZSByZXF1ZXN0IGlz IGZyZWVkIGJlZm9yZSByZWxlYXNpbmcgYmxraWYsCj4gKwkgKiBvciB0aGVyZSBjb3VsZCBiZSBh IHJhY2UgYmV0d2VlbiBmcmVlX3JlcSBhbmQgdGhlCj4gKwkgKiBjbGVhbnVwIGRvbmUgaW4geGVu X2Jsa2lmX2ZyZWUgZHVyaW5nIHNodXRkb3duLgo+ICsJICoKPiArCSAqIE5COiBUaGUgZmFjdCB0 aGF0IHdlIG1pZ2h0IHRyeSB0byB3YWtlIHVwIHBlbmRpbmdfZnJlZV93cQo+ICsJICogYmVmb3Jl IGRyYWluX2NvbXBsZXRlIChpbiBjYXNlIHRoZXJlJ3MgYSBkcmFpbiBnb2luZyBvbikKPiArCSAq IGl0J3Mgbm90IGEgcHJvYmxlbSB3aXRoIG91ciBjdXJyZW50IGltcGxlbWVudGF0aW9uCj4gKwkg KiBiZWNhdXNlIHdlIGNhbiBhc3N1cmUgdGhlcmUncyBubyB0aHJlYWQgd2FpdGluZyBvbgo+ICsJ ICogcGVuZGluZ19mcmVlX3dxIGlmIHRoZXJlJ3MgYSBkcmFpbiBnb2luZyBvbiwgYnV0IGl0IGhh cwo+ICsJICogdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IGlmIHRoZSBjdXJyZW50IG1vZGVsIGlz IGNoYW5nZWQuCj4gKwkgKi8KPiArCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZibGtpZi0+aW5m bGlnaHQpICYmIGF0b21pY19yZWFkKCZibGtpZi0+ZHJhaW4pKSB7Cj4gKwkJY29tcGxldGUoJmJs a2lmLT5kcmFpbl9jb21wbGV0ZSk7Cj4gKwl9Cj4gKwl4ZW5fYmxraWZfcHV0KGJsa2lmKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgeGVuX2Jsa2JrX3VubWFwX2FuZF9yZXNwb25kKHN0cnVjdCBw ZW5kaW5nX3JlcSAqcmVxKQo+ICt7Cj4gKwlzdHJ1Y3QgZ250YWJfdW5tYXBfcXVldWVfZGF0YSog d29yayA9ICZyZXEtPmdudHRhYl91bm1hcF9kYXRhOwo+ICsJc3RydWN0IHhlbl9ibGtpZiAqYmxr aWYgPSByZXEtPmJsa2lmOwo+ICsJc3RydWN0IGdyYW50X3BhZ2UgKipwYWdlcyA9IHJlcS0+c2Vn bWVudHM7Cj4gKwl1bnNpZ25lZCBpbnQgaW52Y291bnQ7Cj4gKwo+ICsJaW52Y291bnQgPSB4ZW5f YmxrYmtfdW5tYXBfcHJlcGFyZShibGtpZiwgcGFnZXMsIHJlcS0+bnJfcGFnZXMsCj4gKwkJCQkJ ICAgcmVxLT51bm1hcCwgcmVxLT51bm1hcF9wYWdlcyk7Cj4gKwo+ICsJd29yay0+ZGF0YSA9IHJl cTsKPiArCXdvcmstPmRvbmUgPSB4ZW5fYmxrYmtfdW5tYXBfYW5kX3Jlc3BvbmRfY2FsbGJhY2s7 Cj4gKwl3b3JrLT51bm1hcF9vcHMgPSByZXEtPnVubWFwOwo+ICsJd29yay0+a3VubWFwX29wcyA9 IE5VTEw7Cj4gKwl3b3JrLT5wYWdlcyA9IHJlcS0+dW5tYXBfcGFnZXM7Cj4gKwl3b3JrLT5jb3Vu dCA9IGludmNvdW50Owo+ICsKPiArCWdudHRhYl91bm1hcF9yZWZzX2FzeW5jKCZyZXEtPmdudHRh Yl91bm1hcF9kYXRhKTsKPiArfQo+ICsKPiArCj4gKy8qCj4gKyAqIFVubWFwIHRoZSBncmFudCBy ZWZlcmVuY2VzLgo+ICsgKgo+ICsgKiBUaGlzIGNvdWxkIGFjY3VtdWxhdGUgb3BzIHVwIHRvIHRo ZSBiYXRjaCBzaXplIHRvIHJlZHVjZSB0aGUgbnVtYmVyCj4gKyAqIG9mIGh5cGVyY2FsbHMsIGJ1 dCBzaW5jZSB0aGlzIGlzIG9ubHkgdXNlZCBpbiBlcnJvciBwYXRocyB0aGVyZSdzCj4gKyAqIG5v IHJlYWwgbmVlZC4KPiArICovCj4gK3N0YXRpYyB2b2lkIHhlbl9ibGtia191bm1hcChzdHJ1Y3Qg eGVuX2Jsa2lmICpibGtpZiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBn cmFudF9wYWdlICpwYWdlc1tdLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51 bSkKPiArewo+ICsJc3RydWN0IGdudHRhYl91bm1hcF9ncmFudF9yZWYgdW5tYXBbQkxLSUZfTUFY X1NFR01FTlRTX1BFUl9SRVFVRVNUXTsKPiArCXN0cnVjdCBwYWdlICp1bm1hcF9wYWdlc1tCTEtJ Rl9NQVhfU0VHTUVOVFNfUEVSX1JFUVVFU1RdOwo+ICsJdW5zaWduZWQgaW50IGludmNvdW50ID0g MDsKPiArCWludCByZXQ7Cj4gKwo+ICsJd2hpbGUgKG51bSkgewo+ICsJCXVuc2lnbmVkIGludCBi YXRjaCA9IG1pbihudW0sIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVCk7Cj4gKwkJCj4g KwkJaW52Y291bnQgPSB4ZW5fYmxrYmtfdW5tYXBfcHJlcGFyZShibGtpZiwgcGFnZXMsIGJhdGNo LAo+ICsJCQkJCQkgICB1bm1hcCwgdW5tYXBfcGFnZXMpOwo+ICsJCWlmIChpbnZjb3VudCkgewo+ ICsJCQlyZXQgPSBnbnR0YWJfdW5tYXBfcmVmcyh1bm1hcCwgTlVMTCwgdW5tYXBfcGFnZXMsIGlu dmNvdW50KTsKPiAgCQkJQlVHX09OKHJldCk7Cj4gIAkJCXB1dF9mcmVlX3BhZ2VzKGJsa2lmLCB1 bm1hcF9wYWdlcywgaW52Y291bnQpOwo+IC0JCQlpbnZjb3VudCA9IDA7Cj4gIAkJfQo+IC0JfQo+ IC0JaWYgKGludmNvdW50KSB7Cj4gLQkJcmV0ID0gZ250dGFiX3VubWFwX3JlZnModW5tYXAsIE5V TEwsIHVubWFwX3BhZ2VzLCBpbnZjb3VudCk7Cj4gLQkJQlVHX09OKHJldCk7Cj4gLQkJcHV0X2Zy ZWVfcGFnZXMoYmxraWYsIHVubWFwX3BhZ2VzLCBpbnZjb3VudCk7Cj4gKwkJcGFnZXMgKz0gYmF0 Y2g7Cj4gKwkJbnVtIC09IGJhdGNoOwo+ICAJfQo+ICB9Cj4gIAo+IEBAIC05ODIsMzIgKzEwNzUs OCBAQCBzdGF0aWMgdm9pZCBfX2VuZF9ibG9ja19pb19vcChzdHJ1Y3QgcGVuZGluZ19yZXEgKnBl bmRpbmdfcmVxLCBpbnQgZXJyb3IpCj4gIAkgKiB0aGUgZ3JhbnQgcmVmZXJlbmNlcyBhc3NvY2lh dGVkIHdpdGggJ3JlcXVlc3QnIGFuZCBwcm92aWRlCj4gIAkgKiB0aGUgcHJvcGVyIHJlc3BvbnNl IG9uIHRoZSByaW5nLgo+ICAJICovCj4gLQlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmcGVuZGlu Z19yZXEtPnBlbmRjbnQpKSB7Cj4gLQkJc3RydWN0IHhlbl9ibGtpZiAqYmxraWYgPSBwZW5kaW5n X3JlcS0+YmxraWY7Cj4gLQo+IC0JCXhlbl9ibGtia191bm1hcChibGtpZiwKPiAtCQkgICAgICAg ICAgICAgICAgcGVuZGluZ19yZXEtPnNlZ21lbnRzLAo+IC0JCSAgICAgICAgICAgICAgICBwZW5k aW5nX3JlcS0+bnJfcGFnZXMpOwo+IC0JCW1ha2VfcmVzcG9uc2UoYmxraWYsIHBlbmRpbmdfcmVx LT5pZCwKPiAtCQkJICAgICAgcGVuZGluZ19yZXEtPm9wZXJhdGlvbiwgcGVuZGluZ19yZXEtPnN0 YXR1cyk7Cj4gLQkJZnJlZV9yZXEoYmxraWYsIHBlbmRpbmdfcmVxKTsKPiAtCQkvKgo+IC0JCSAq IE1ha2Ugc3VyZSB0aGUgcmVxdWVzdCBpcyBmcmVlZCBiZWZvcmUgcmVsZWFzaW5nIGJsa2lmLAo+ IC0JCSAqIG9yIHRoZXJlIGNvdWxkIGJlIGEgcmFjZSBiZXR3ZWVuIGZyZWVfcmVxIGFuZCB0aGUK PiAtCQkgKiBjbGVhbnVwIGRvbmUgaW4geGVuX2Jsa2lmX2ZyZWUgZHVyaW5nIHNodXRkb3duLgo+ IC0JCSAqCj4gLQkJICogTkI6IFRoZSBmYWN0IHRoYXQgd2UgbWlnaHQgdHJ5IHRvIHdha2UgdXAg cGVuZGluZ19mcmVlX3dxCj4gLQkJICogYmVmb3JlIGRyYWluX2NvbXBsZXRlIChpbiBjYXNlIHRo ZXJlJ3MgYSBkcmFpbiBnb2luZyBvbikKPiAtCQkgKiBpdCdzIG5vdCBhIHByb2JsZW0gd2l0aCBv dXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbgo+IC0JCSAqIGJlY2F1c2Ugd2UgY2FuIGFzc3VyZSB0 aGVyZSdzIG5vIHRocmVhZCB3YWl0aW5nIG9uCj4gLQkJICogcGVuZGluZ19mcmVlX3dxIGlmIHRo ZXJlJ3MgYSBkcmFpbiBnb2luZyBvbiwgYnV0IGl0IGhhcwo+IC0JCSAqIHRvIGJlIHRha2VuIGlu dG8gYWNjb3VudCBpZiB0aGUgY3VycmVudCBtb2RlbCBpcyBjaGFuZ2VkLgo+IC0JCSAqLwo+IC0J CWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZibGtpZi0+aW5mbGlnaHQpICYmIGF0b21pY19yZWFk KCZibGtpZi0+ZHJhaW4pKSB7Cj4gLQkJCWNvbXBsZXRlKCZibGtpZi0+ZHJhaW5fY29tcGxldGUp Owo+IC0JCX0KPiAtCQl4ZW5fYmxraWZfcHV0KGJsa2lmKTsKPiAtCX0KPiArCWlmIChhdG9taWNf ZGVjX2FuZF90ZXN0KCZwZW5kaW5nX3JlcS0+cGVuZGNudCkpCj4gKwkJeGVuX2Jsa2JrX3VubWFw X2FuZF9yZXNwb25kKHBlbmRpbmdfcmVxKTsKPiAgfQo+ICAKPiAgLyoKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9jb21tb24uaCBiL2RyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2svY29tbW9uLmgKPiBpbmRleCBmNjViODA3Li5jYzkwYTg0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvYmxvY2sveGVuLWJsa2JhY2svY29tbW9uLmgKPiArKysgYi9kcml2ZXJzL2Jsb2NrL3hl bi1ibGtiYWNrL2NvbW1vbi5oCj4gQEAgLTM1MCw2ICszNTAsOSBAQCBzdHJ1Y3QgcGVuZGluZ19y ZXEgewo+ICAJc3RydWN0IGdyYW50X3BhZ2UJKmluZGlyZWN0X3BhZ2VzW01BWF9JTkRJUkVDVF9Q QUdFU107Cj4gIAlzdHJ1Y3Qgc2VnX2J1ZgkJc2VnW01BWF9JTkRJUkVDVF9TRUdNRU5UU107Cj4g IAlzdHJ1Y3QgYmlvCQkqYmlvbGlzdFtNQVhfSU5ESVJFQ1RfU0VHTUVOVFNdOwo+ICsJc3RydWN0 IGdudHRhYl91bm1hcF9ncmFudF9yZWYgdW5tYXBbTUFYX0lORElSRUNUX1NFR01FTlRTXTsKPiAr CXN0cnVjdCBwYWdlICAgICAgICAgICAgICAgICAgICp1bm1hcF9wYWdlc1tNQVhfSU5ESVJFQ1Rf U0VHTUVOVFNdOwo+ICsJc3RydWN0IGdudGFiX3VubWFwX3F1ZXVlX2RhdGEgZ250dGFiX3VubWFw X2RhdGE7Cj4gIH07Cj4gIAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK