From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PULL for-2.10 2/2] xen-mapcache: Fix the bug when overlapping emulated DMA operations may cause inconsistency in guest memory mappings Date: Fri, 21 Jul 2017 17:46:01 -0700 Message-ID: <1500684361-20532-2-git-send-email-sstabellini@kernel.org> References: <1500684361-20532-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYiYZ-0007WX-7l for xen-devel@lists.xenproject.org; Sat, 22 Jul 2017 00:46:07 +0000 In-Reply-To: <1500684361-20532-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: peter.maydell@linaro.org, stefanha@gmail.com Cc: sstabellini@kernel.org, qemu-devel@nongnu.org, Alexey G , stefanha@redhat.com, anthony.perard@citrix.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org RnJvbTogQWxleGV5IEcgPHgxOTE3eEBnbWFpbC5jb20+CgpVbmRlciBjZXJ0YWluIGNpcmN1bXN0 YW5jZXMgbm9ybWFsIHhlbi1tYXBjYWNoZSBmdW5jdGlvbmluZyBtYXkgYmUgYnJva2VuCmJ5IGd1 ZXN0J3MgYWN0aW9ucy4gVGhpcyBtYXkgbGVhZCB0byBlaXRoZXIgUUVNVSBwZXJmb3JtaW5nIGV4 aXQoKSBkdWUgdG8KYSBjYXVnaHQgYmFkIHBvaW50ZXIgKGFuZCB3aXRoIFFFTVUgcHJvY2VzcyBn b25lIHRoZSBndWVzdCBkb21haW4gc2ltcGx5CmFwcGVhcnMgaHVuZyBhZnRlcndhcmRzKSBvciBh Y3R1YWwgdXNlIG9mIHRoZSBpbmNvcnJlY3QgcG9pbnRlciBpbnNpZGUKUUVNVSBhZGRyZXNzIHNw YWNlIC0tIGEgd3JpdGUgdG8gdW5tYXBwZWQgbWVtb3J5IGlzIHBvc3NpYmxlLiBUaGUgYnVnIGlz CmhhcmQgdG8gcmVwcm9kdWNlIG9uIGEgaTQ0MCBtYWNoaW5lIGFzIG11bHRpcGxlIERNQSBzb3Vy Y2VzIGFyZSByZXF1aXJlZAoodGhvdWdoIGl0J3MgcG9zc2libGUgaW4gdGhlb3J5LCB1c2luZyBt dWx0aXBsZSBlbXVsYXRlZCBkZXZpY2VzKSwgYnV0IGNhbgpiZSByZXByb2R1Y2VkIHNvbWV3aGF0 IGVhc2lseSBvbiBhIFEzNSBtYWNoaW5lIHVzaW5nIGFuIGVtdWxhdGVkIEFIQ0kKY29udHJvbGxl ciAtLSBlYWNoIE5DUSBxdWV1ZSBjb21tYW5kIHNsb3QgbWF5IGJlIHVzZWQgYXMgYW4gaW5kZXBl bmRlbnQKRE1BIHNvdXJjZSBleC4gdXNpbmcgUkVBRCBGUERNQSBRVUVVRUQgY29tbWFuZCwgc28g YSBzaW5nbGUgc3RvcmFnZQpkZXZpY2Ugb24gdGhlIEFIQ0kgY29udHJvbGxlciBwb3J0IHdpbGwg YmUgZW5vdWdoIHRvIHByb2R1Y2UgbXVsdGlwbGUgRE1BcwoodXAgdG8gMzIpLiBUaGUgZGV0YWls ZWQgZGVzY3JpcHRpb24gb2YgdGhlIGlzc3VlIGZvbGxvd3MuCgpYZW4tbWFwY2FjaGUgcHJvdmlk ZXMgYW4gYWJpbGl0eSB0byBtYXAgcGFydHMgb2YgYSBndWVzdCBtZW1vcnkgaW50bwpRRU1VJ3Mg b3duIGFkZHJlc3Mgc3BhY2UgdG8gd29yayB3aXRoLgoKVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBj YWNoZSBsb29rdXBzOgogLSB0cmFuc2xhdGluZyBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgaW50 byBhIHBvaW50ZXIgaW4gUUVNVSdzIGFkZHJlc3MKICAgc3BhY2UsIG1hcHBpbmcgYSBwYXJ0IG9m IGd1ZXN0IGRvbWFpbiBtZW1vcnkgaWYgbmVjZXNzYXJ5ICh3aGlsZSB0cnlpbmcKICAgdG8gcmVk dWNlIGEgbnVtYmVyIG9mIHN1Y2ggKHJlKW1hcHBpbmdzIHRvIGEgbWluaW11bSkKIC0gdHJhbnNs YXRpbmcgYSBRRU1VJ3MgcG9pbnRlciBiYWNrIHRvIGl0cyBwaHlzaWNhbCBhZGRyZXNzIGluIGd1 ZXN0IFJBTQoKVGhlc2UgbG9va3VwcyBhcmUgbWFuYWdlZCB2aWEgdHdvIGxpbmtlZC1saXN0cyBv ZiBzdHJ1Y3R1cmVzLgpNYXBDYWNoZUVudHJ5IGlzIHVzZWQgZm9yIGZvcndhcmQgY2FjaGUgbG9v a3Vwcywgd2hpbGUgTWFwQ2FjaGVSZXYgLS0gZm9yCnJldmVyc2UgbG9va3Vwcy4KCkV2ZXJ5IGd1 ZXN0IHBoeXNpY2FsIGFkZHJlc3MgaXMgYnJva2VuIGRvd24gaW50byAyIHBhcnRzOgogICAgYWRk cmVzc19pbmRleCAgPSBwaHlzX2FkZHIgPj4gTUNBQ0hFX0JVQ0tFVF9TSElGVDsKICAgIGFkZHJl c3Nfb2Zmc2V0ID0gcGh5c19hZGRyICYgKE1DQUNIRV9CVUNLRVRfU0laRSAtIDEpOwoKTUNBQ0hF X0JVQ0tFVF9TSElGVCBkZXBlbmRzIG9uIGEgc3lzdGVtICgzMi82NCkgYW5kIGlzIGVxdWFsIHRv IDIwIGZvcgphIDY0LWJpdCBzeXN0ZW0gKHdoaWNoIGFzc3VtZWQgZm9yIHRoZSBmdXJ0aGVyIGRl c2NyaXB0aW9uKS4gQmFzaWNhbGx5LAp0aGlzIG1lYW5zIHRoYXQgd2UgZGVhbCB3aXRoIDEgTUIg Y2h1bmtzIGFuZCBvZmZzZXRzIHdpdGhpbiB0aG9zZSAxIE1CCmNodW5rcy4gQWxsIG1hcHBpbmdz IGFyZSBjcmVhdGVkIHdpdGggMU1CLWdyYW51bGFyaXR5LCBpLmUuIDFNQi8yTUIvM01CCmV0Yy4g TW9zdCBETUEgdHJhbnNmZXJzIHR5cGljYWxseSBhcmUgbGVzcyB0aGFuIDFNQiwgaG93ZXZlciwg aWYgdGhlCnRyYW5zZmVyIGNyb3NzZXMgYW55IDFNQiBib3JkZXIocykgLSB0aGFuIGEgbmVhcmVz dCBsYXJnZXIgbWFwcGluZyBzaXplCndpbGwgYmUgdXNlZCwgc28gZXguIGEgNTEyLWJ5dGUgRE1B IHRyYW5zZmVyIHdpdGggdGhlIHN0YXJ0IGFkZHJlc3MKNzAwRkZGODBoIHdpbGwgYWN0dWFsbHkg cmVxdWlyZSBhIDJNQiByYW5nZS4KCkN1cnJlbnQgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0 IE1hcENhY2hlRW50cmllcyBhcmUgdW5pcXVlIGZvciBhIGdpdmVuCmFkZHJlc3NfaW5kZXggYW5k IHNpemUgcGFpciBhbmQgdGhhdCBhIHNpbmdsZSBNYXBDYWNoZUVudHJ5IG1heSBiZSByZXVzZWQK YnkgbXVsdGlwbGUgcmVxdWVzdHMgLS0gaW4gdGhpcyBjYXNlIHRoZSAnbG9jaycgZmllbGQgd2ls bCBiZSBsYXJnZXIgdGhhbgoxLiBPbiBvdGhlciBoYW5kLCBlYWNoIHJlcXVlc3RlZCBndWVzdCBw aHlzaWNhbCBhZGRyZXNzICh3aXRoICdsb2NrJyBmbGFnKQppcyBkZXNjcmliZWQgYnkgZWFjaCBv d24gTWFwQ2FjaGVSZXYuIFNvIHRoZXJlIG1heSBiZSBtdWx0aXBsZSBNYXBDYWNoZVJldgplbnRy aWVzIGNvcnJlc3BvbmRpbmcgdG8gYSBzaW5nbGUgTWFwQ2FjaGVFbnRyeS4gVGhlIHhlbi1tYXBj YWNoZSBjb2RlCnVzZXMgTWFwQ2FjaGVSZXYgZW50cmllcyB0byByZXRyaWV2ZSB0aGUgYWRkcmVz c19pbmRleCAmIHNpemUgcGFpciB3aGljaAppbiB0dXJuIHVzZWQgdG8gZmluZCBhIHJlbGF0ZWQg TWFwQ2FjaGVFbnRyeS4gVGhlICdsb2NrJyBmaWVsZCB3aXRoaW4KYSBNYXBDYWNoZUVudHJ5IHN0 cnVjdHVyZSBpcyBhY3R1YWxseSBhIHJlZmVyZW5jZSBjb3VudGVyIHdoaWNoIHNob3dzCmEgbnVt YmVyIG9mIGNvcnJlc3BvbmRpbmcgTWFwQ2FjaGVSZXYgZW50cmllcy4KClRoZSBidWcgbGllcyBp biBhYmlsaXR5IGZvciB0aGUgZ3Vlc3QgdG8gaW5kaXJlY3RseSBtYW5pcHVsYXRlIHdpdGggdGhl Cnhlbi1tYXBjYWNoZSBNYXBDYWNoZUVudHJpZXMgbGlzdCB2aWEgYSBzcGVjaWFsIHNlcXVlbmNl IG9mIERNQQpvcGVyYXRpb25zLCB0eXBpY2FsbHkgZm9yIHN0b3JhZ2UgZGV2aWNlcy4gSW4gb3Jk ZXIgdG8gdHJpZ2dlciB0aGUgYnVnLApndWVzdCBuZWVkcyB0byBpc3N1ZSBETUEgb3BlcmF0aW9u cyBpbiBzcGVjaWZpYyBvcmRlciBhbmQgdGltaW5nLgpBbHRob3VnaCB4ZW4tbWFwY2FjaGUgaXMg cHJvdGVjdGVkIGJ5IHRoZSBtdXRleCBsb2NrIC0tIHRoaXMgZG9lc24ndCBoZWxwCmluIHRoaXMg Y2FzZSwgYXMgdGhlIGJ1ZyBpcyBub3QgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24uCgpTdXBwb3Nl IHdlIGhhdmUgMyBETUEgdHJhbnNmZXJzLCBuYW1lbHkgQSwgQiBhbmQgQywgd2hlcmUKLSB0cmFu c2ZlciBBIGNyb3NzZXMgMU1CIGJvcmRlciBhbmQgdGh1cyB1c2VzIGEgMk1CIG1hcHBpbmcKLSB0 cmFuc2ZlcnMgQiBhbmQgQyBhcmUgbm9ybWFsIHRyYW5zZmVycyB3aXRoaW4gMU1CIHJhbmdlCi0g YW5kIGFsbCAzIHRyYW5zZmVycyBiZWxvbmcgdG8gdGhlIHNhbWUgYWRkcmVzc19pbmRleAoKSW4g dGhpcyBjYXNlLCBpZiBhbGwgdGhlc2UgdHJhbnNmZXJzIGFyZSB0byBiZSBleGVjdXRlZCBvbmUt Ynktb25lCih3aXRob3V0IG92ZXJsYXBzKSwgbm8gc3BlY2lhbCB0cmVhdG1lbnQgbmVjZXNzYXJ5 IC0tIGVhY2ggdHJhbnNmZXIncwptYXBwaW5nIGxvY2sgd2lsbCBiZSBzZXQgYW5kIHRoZW4gY2xl YXJlZCBvbiB1bm1hcCBiZWZvcmUgc3RhcnRpbmcKdGhlIG5leHQgdHJhbnNmZXIuClRoZSBzaXR1 YXRpb24gY2hhbmdlcyB3aGVuIERNQSB0cmFuc2ZlcnMgb3ZlcmxhcCBpbiB0aW1lLCBleC4gbGlr ZSB0aGlzOgoKICB8PT09PT0gdHJhbnNmZXIgQSAoMk1CKSA9PT09PXwKCiAgICAgICAgICAgICAg fD09PT09IHRyYW5zZmVyIEIgKDFNQikgPT09PT18CgogICAgICAgICAgICAgICAgICAgICAgICAg IHw9PT09PSB0cmFuc2ZlciBDICgxTUIpID09PT09fAogdGltZSAtLS0+CgpJbiB0aGlzIHNpdHVh dGlvbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIGFjdGlvbnMgaGFwcGVuczoKCjEuIHRyYW5z ZmVyIEEgY3JlYXRlcyBhIG1hcHBpbmcgdG8gMk1CIGFyZWEgKGxvY2s9MSkKMi4gdHJhbnNmZXIg QiAoMU1CKSB0cmllcyB0byBmaW5kIGF2YWlsYWJsZSBtYXBwaW5nIGJ1dCBjYW5ub3QgZmluZCBv bmUKICAgYmVjYXVzZSB0cmFuc2ZlciBBIGlzIHN0aWxsIGluIHByb2dyZXNzLCBhbmQgaXQgaGFz IDJNQiBzaXplICsgbm9uLXplcm8KICAgbG9jay4gU28gdHJhbnNmZXIgQiBjcmVhdGVzIGFub3Ro ZXIgbWFwcGluZyAtLSBzYW1lIGFkZHJlc3NfaW5kZXgsCiAgIGJ1dCAxTUIgc2l6ZS4KMy4gdHJh bnNmZXIgQSBjb21wbGV0ZXMsIG1ha2luZyAxc3QgbWFwcGluZyBlbnRyeSBhdmFpbGFibGUgYnkg c2V0dGluZyBpdHMKICAgbG9jayB0byAwCjQuIHRyYW5zZmVyIEMgc3RhcnRzIGFuZCB0cmllcyB0 byBmaW5kIGF2YWlsYWJsZSBtYXBwaW5nIGVudHJ5IGFuZCBzZWVzCiAgIHRoYXQgMXN0IGVudHJ5 IGhhcyBsb2NrPTAsIHNvIGl0IHVzZXMgdGhpcyBlbnRyeSBidXQgcmVtYXBzIHRoZSBtYXBwaW5n CiAgIHRvIGEgMU1CIHNpemUKNS4gdHJhbnNmZXIgQiBjb21wbGV0ZXMgYW5kIGJ5IHRoaXMgdGlt ZQogIC0gdGhlcmUgYXJlIHR3byBsb2NrZWQgZW50cmllcyBpbiB0aGUgTWFwQ2FjaGVFbnRyeSBs aXN0IHdpdGggdGhlIFNBTUUKICAgIHZhbHVlcyBmb3IgYm90aCBhZGRyZXNzX2luZGV4IGFuZCBz aXplCiAgLSB0aGUgZW50cnkgZm9yIHRyYW5zZmVyIEIgYWN0dWFsbHkgcmVzaWRlcyBmYXJ0aGVy IGluIGxpc3Qgd2hpbGUKICAgIHRyYW5zZmVyIEMncyBlbnRyeSBpcyBmaXJzdAo2LiB4ZW5fcmFt X2FkZHJfZnJvbV9tYXBjYWNoZSgpIGZvciB0cmFuc2ZlciBCIGdldHMgY29ycmVjdCBhZGRyZXNz X2luZGV4CiAgIGFuZCBzaXplIHBhaXIgZnJvbSBjb3JyZXNwb25kaW5nIE1hcENhY2hlUmV2IGVu dHJ5LCBidXQgdGhlbiBpdCBzdGFydHMKICAgbG9va2luZyBmb3IgTWFwQ2FjaGVFbnRyeSB3aXRo IHRoZXNlIHZhbHVlcyBhbmQgZmluZHMgdGhlIGZpcnN0IGVudHJ5CiAgIC0tIHdoaWNoIGJlbG9u Z3MgdG8gdHJhbnNmZXIgQy4KCkF0IHRoaXMgcG9pbnQgdGhlcmUgbWF5IGJlIGZvbGxvd2luZyBw b3NzaWJsZSAoYmFkKSBjb25zZXF1ZW5jZXM6CgoxLiB4ZW5fcmFtX2FkZHJfZnJvbV9tYXBjYWNo ZSgpIHdpbGwgdXNlIGEgd3JvbmcgZW50cnktPnZhZGRyX2Jhc2UgdmFsdWUKICAgaW4gdGhpcyBz dGF0ZW1lbnQ6CgogICByYWRkciA9IChyZXZlbnRyeS0+cGFkZHJfaW5kZXggPDwgTUNBQ0hFX0JV Q0tFVF9TSElGVCkgKwogICAgICAgKCh1bnNpZ25lZCBsb25nKSBwdHIgLSAodW5zaWduZWQgbG9u ZykgZW50cnktPnZhZGRyX2Jhc2UpOwoKcmVzdWx0aW5nIGluIGFuIGluY29ycmVudCByYWRkciB2 YWx1ZSByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbi4gVGhlCihwdHIgLSBlbnRyeS0+dmFkZHJf YmFzZSkgZXhwcmVzc2lvbiBtYXkgcHJvZHVjZSBib3RoIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZQpu dW1iZXJzIGFuZCBpdHMgYWN0dWFsIHZhbHVlIG1heSBkaWZmZXIgZ3JlYXRseSBhcyB0aGVyZSBh cmUgbWFueQptYXAvdW5tYXAgb3BlcmF0aW9ucyB0YWtlIHBsYWNlLiBJZiB0aGUgdmFsdWUgd2ls bCBiZSBiZXlvbmQgZ3Vlc3QgUkFNCmxpbWl0cyB0aGVuIGEgIkJhZCBSQU0gb2Zmc2V0IiBlcnJv ciB3aWxsIGJlIHRyaWdnZXJlZCBhbmQgbG9nZ2VkLApmb2xsb3dlZCBieSBleGl0KCkgaW4gUUVN VS4KCjIuIElmIHJhZGRyIHZhbHVlIHdvbid0IGV4Y2VlZCBndWVzdCBSQU0gYm91bmRhcmllcywg dGhlIHNhbWUgc2VxdWVuY2UKb2YgYWN0aW9ucyB3aWxsIGJlIHBlcmZvcm1lZCBmb3IgeGVuX2lu dmFsaWRhdGVfbWFwX2NhY2hlX2VudHJ5KCkgb24gRE1BCnVubWFwLCByZXN1bHRpbmcgaW4gYSB3 cm9uZyBNYXBDYWNoZUVudHJ5IGJlaW5nIHVubWFwcGVkIHdoaWxlIERNQQpvcGVyYXRpb24gd2hp Y2ggdXNlcyBpdCBpcyBzdGlsbCBhY3RpdmUuIFRoZSBhYm92ZSBleGFtcGxlIG11c3QKYmUgZXh0 ZW5kZWQgYnkgb25lIG1vcmUgRE1BIHRyYW5zZmVyIGluIG9yZGVyIHRvIGFsbG93IHVubWFwcGlu ZyBhcyB0aGUKZmlyc3QgbWFwcGluZyBpbiB0aGUgbGlzdCBpcyBzb3J0IG9mIHJlc2lkZW50LgoK VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBpbiB3aGljaCBNYXBDYWNoZUVudHJ5J3Mg YXJlIGFkZGVkIHRvIHRoZQpsaXN0LCBhdm9pZGluZyBkdXBsaWNhdGVzLgoKU2lnbmVkLW9mZi1i eTogQWxleGV5IEdlcmFzaW1lbmtvIDx4MTkxN3hAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBT dGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Ci0tLQogaHcvaTM4Ni94 ZW4veGVuLW1hcGNhY2hlLmMgfCAxMyArKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMTEg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ody9pMzg2L3hlbi94 ZW4tbWFwY2FjaGUuYyBiL2h3L2kzODYveGVuL3hlbi1tYXBjYWNoZS5jCmluZGV4IGJiMTA3OGMu LjM2OWMzZGYgMTAwNjQ0Ci0tLSBhL2h3L2kzODYveGVuL3hlbi1tYXBjYWNoZS5jCisrKyBiL2h3 L2kzODYveGVuL3hlbi1tYXBjYWNoZS5jCkBAIC0yMzQsNyArMjM0LDggQEAgc3RhdGljIHZvaWQg eGVuX3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5ICplbnRyeSwKIHN0YXRpYyB1aW50OF90ICp4 ZW5fbWFwX2NhY2hlX3VubG9ja2VkKGh3YWRkciBwaHlzX2FkZHIsIGh3YWRkciBzaXplLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBsb2NrLCBib29sIGRt YSkKIHsKLSAgICBNYXBDYWNoZUVudHJ5ICplbnRyeSwgKnBlbnRyeSA9IE5VTEw7CisgICAgTWFw Q2FjaGVFbnRyeSAqZW50cnksICpwZW50cnkgPSBOVUxMLAorICAgICAgICAgICAgICAgICAgKmZy ZWVfZW50cnkgPSBOVUxMLCAqZnJlZV9wZW50cnkgPSBOVUxMOwogICAgIGh3YWRkciBhZGRyZXNz X2luZGV4OwogICAgIGh3YWRkciBhZGRyZXNzX29mZnNldDsKICAgICBod2FkZHIgY2FjaGVfc2l6 ZSA9IHNpemU7CkBAIC0yODEsMTQgKzI4MiwyMiBAQCB0cnlhZ2FpbjoKIAogICAgIGVudHJ5ID0g Jm1hcGNhY2hlLT5lbnRyeVthZGRyZXNzX2luZGV4ICUgbWFwY2FjaGUtPm5yX2J1Y2tldHNdOwog Ci0gICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LT5sb2NrICYmIGVudHJ5LT52YWRkcl9iYXNlICYm CisgICAgd2hpbGUgKGVudHJ5ICYmIChsb2NrIHx8IGVudHJ5LT5sb2NrKSAmJiBlbnRyeS0+dmFk ZHJfYmFzZSAmJgogICAgICAgICAgICAgKGVudHJ5LT5wYWRkcl9pbmRleCAhPSBhZGRyZXNzX2lu ZGV4IHx8IGVudHJ5LT5zaXplICE9IGNhY2hlX3NpemUgfHwKICAgICAgICAgICAgICAhdGVzdF9i aXRzKGFkZHJlc3Nfb2Zmc2V0ID4+IFhDX1BBR0VfU0hJRlQsCiAgICAgICAgICAgICAgICAgIHRl c3RfYml0X3NpemUgPj4gWENfUEFHRV9TSElGVCwKICAgICAgICAgICAgICAgICAgZW50cnktPnZh bGlkX21hcHBpbmcpKSkgeworICAgICAgICBpZiAoIWZyZWVfZW50cnkgJiYgIWVudHJ5LT5sb2Nr KSB7CisgICAgICAgICAgICBmcmVlX2VudHJ5ID0gZW50cnk7CisgICAgICAgICAgICBmcmVlX3Bl bnRyeSA9IHBlbnRyeTsKKyAgICAgICAgfQogICAgICAgICBwZW50cnkgPSBlbnRyeTsKICAgICAg ICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKICAgICB9CisgICAgaWYgKCFlbnRyeSAmJiBmcmVlX2Vu dHJ5KSB7CisgICAgICAgIGVudHJ5ID0gZnJlZV9lbnRyeTsKKyAgICAgICAgcGVudHJ5ID0gZnJl ZV9wZW50cnk7CisgICAgfQogICAgIGlmICghZW50cnkpIHsKICAgICAgICAgZW50cnkgPSBnX21h bGxvYzAoc2l6ZW9mIChNYXBDYWNoZUVudHJ5KSk7CiAgICAgICAgIHBlbnRyeS0+bmV4dCA9IGVu dHJ5OwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK