From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH 2/9] libxl: Move dm user determination logic into a helper function Date: Fri, 23 Nov 2018 17:14:55 +0000 Message-ID: <20181123171502.29519-2-george.dunlap@citrix.com> References: <20181123171502.29519-1-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gQF2s-0001Bz-3m for xen-devel@lists.xenproject.org; Fri, 23 Nov 2018 17:15:10 +0000 In-Reply-To: <20181123171502.29519-1-george.dunlap@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Anthony Perard , Ian Jackson , Wei Liu , George Dunlap List-Id: xen-devel@lists.xenproject.org VG8gcmVsaWFibHkga2lsbCBhbiB1bnRydXN0ZWQgZGV2aWNlbW9kZWwsIHdlIG5lZWQgdG8ga25v dyBub3Qgb25seQppdHMgcGlkLCBidXQgaXRzIHVpZC4gIEluIHByZXBhcmF0aW9uIGZvciB0aGlz LCBtb3ZlIHRoZSB1c2VyaWQKZGV0ZXJtaW5hdGlvbiBsb2dpYyBpbnRvIGEgaGVscGVyIGZ1bmN0 aW9uLgoKQ3JlYXRlIGEgbmV3IGZpZWxkLCBgZG1fcnVuYXNgLCBpbiBsaWJ4bF9fZG9tYWluX2J1 aWxkX3N0YXRlIHRvIHN0b3JlCnRoZSB2YWx1ZSBkdXJpbmcgZG9tYWluIGNyZWF0aW9uLgoKVGhp cyBjaGFuZ2UgYWxzbyByZW1vdmVzIHVubmVjZXNzYXJ5IGR1cGxpY2F0aW9uIG9mIHRoZSBhcmd1 bWVudApjb25zdHJ1Y3Rpb24gY29kZS4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkLgoK U2lnbmVkLW9mZi1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgot LS0KQ0M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBjaXRyaXguY29tPgpDQzogV2VpIExpdSA8 d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IEFudGhvbnkgUGVyYXJkIDxhbnRob255LnBlcmFyZEBj aXRyaXguY29tPgotLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2RtLmMgICAgICAgfCAyNDggKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFs LmggfCAgIDIgKwogMiBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgMTE1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMgYi90b29scy9saWJ4 bC9saWJ4bF9kbS5jCmluZGV4IDU2OThmZThhZjMuLjg3NjRhMmI1OGIgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhsL2xpYnhsX2RtLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG0uYwpAQCAtNjUs NiArNjUsMTMxIEBAIHN0YXRpYyBpbnQgbGlieGxfX2NyZWF0ZV9xZW11X2xvZ2ZpbGUobGlieGxf X2djICpnYywgY2hhciAqbmFtZSkKICAgICByZXR1cm4gbG9nZmlsZV93OwogfQogCisvKgorICog IHVzZXJsb29rdXBfaGVscGVyX2dldHB3bmFtKGxpYnhsX19nYyosIGNvbnN0IGNoYXIgKnVzZXIs CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAqKnB3ZF9yKTsK KyAqCisgKiAgdXNlcmxvb2t1cF9oZWxwZXJfZ2V0cHd1aWQobGlieGxfX2djKiwgdWlkX3QgdWlk LAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKipwd2Rfcik7 CisgKgorICogIHJldHVybnMgMSBpZiB0aGUgdXNlciB3YXMgZm91bmQsIDAgaWYgaXQgd2FzIG5v dCwgLTEgb24gZXJyb3IKKyAqLworI2RlZmluZSBERUZJTkVfVVNFUkxPT0tVUF9IRUxQRVIoTkFN RSxTUEVDX1RZUEUsU1RSVUNUTkFNRSxTWVNDT05GKSAgICAgXAorICAgIHN0YXRpYyBpbnQgdXNl cmxvb2t1cF9oZWxwZXJfIyNOQU1FKGxpYnhsX19nYyAqZ2MsICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQRUNfVFlQRSBzcGVjLCAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBTVFJVQ1ROQU1FICpyZXN1bHRidWYsICAgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTVFJVQ1ROQU1FICoqb3V0KSAgICAgICAgXAorICAg IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICBzdHJ1Y3QgU1RSVUNUTkFNRSAqcmVzdWx0cCA9IE5VTEw7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjaGFyICpidWYgPSBOVUxM OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICBsb25nIGJ1Zl9zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBpbnQgcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBi dWZfc2l6ZSA9IHN5c2NvbmYoU1lTQ09ORik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICBpZiAoYnVmX3NpemUgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnVmX3NpemUgPSAyMDQ4OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg TE9HKERFQlVHLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICJzeXNjb25mIGZhaWxlZCwgc2V0dGluZyB0aGUgaW5pdGlhbCBidWZmZXIgc2l6 ZSB0byAlbGQiLCAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGJ1Zl9zaXplKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB3aGlsZSAoMSkgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnVmID0g bGlieGxfX3JlYWxsb2MoZ2MsIGJ1ZiwgYnVmX3NpemUpOyAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgcmV0ID0gTkFNRSMjX3Ioc3BlYywgcmVzdWx0YnVmLCBidWYsIGJ1Zl9zaXpl LCAmcmVzdWx0cCk7ICAgXAorICAgICAgICAgICAgaWYgKHJldCA9PSBFUkFOR0UpIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGJ1Zl9z aXplICs9IDEyODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHJldCAhPSAw KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg ICAgICAgICAgIHJldHVybiBFUlJPUl9GQUlMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHJlc3VsdHAgIT0gTlVMTCkgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChvdXQpICpv dXQgPSByZXN1bHRwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg ICAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgIH0KKworREVGSU5FX1VTRVJMT09LVVBfSEVMUEVSKGdldHB3bmFtLCBjb25zdCBj aGFyKiwgcGFzc3dkLCBfU0NfR0VUUFdfUl9TSVpFX01BWCk7CitERUZJTkVfVVNFUkxPT0tVUF9I RUxQRVIoZ2V0cHd1aWQsIHVpZF90LCAgICAgICBwYXNzd2QsIF9TQ19HRVRQV19SX1NJWkVfTUFY KTsKKworc3RhdGljIGludCBsaWJ4bF9fZG9tYWluX2dldF9kZXZpY2VfbW9kZWxfdWlkKGxpYnhs X19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfX2RtX3NwYXduX3N0YXRlICpkbXNzKQoreworICAgIGludCBndWVzdF9kb21pZCA9IGRt c3MtPmd1ZXN0X2RvbWlkOworICAgIGxpYnhsX19kb21haW5fYnVpbGRfc3RhdGUgKmNvbnN0IHN0 YXRlID0gZG1zcy0+YnVpbGRfc3RhdGU7CisgICAgY29uc3QgbGlieGxfZG9tYWluX2J1aWxkX2lu Zm8gKmJfaW5mbyA9ICZkbXNzLT5ndWVzdF9jb25maWctPmJfaW5mbzsKKyAgICAKKyAgICBzdHJ1 Y3QgcGFzc3dkICp1c2VyX2Jhc2UsIHVzZXJfcHdidWY7CisgICAgaW50IHJldDsKKyAgICBjaGFy ICp1c2VyOworCisgICAgLyogT25seSBxZW11LXVwc3RyZWFtIGNhbiBydW4gYXMgYSBkaWZmZXJl bnQgdWlkICovCisgICAgaWYgKGJfaW5mby0+ZGV2aWNlX21vZGVsX3ZlcnNpb24gIT0gTElCWExf REVWSUNFX01PREVMX1ZFUlNJT05fUUVNVV9YRU4pCisgICAgICAgIHJldHVybiAwOworICAgIAor ICAgIHVzZXIgPSBiX2luZm8tPmRldmljZV9tb2RlbF91c2VyOworICAgIGlmICh1c2VyKQorICAg ICAgICBnb3RvIGVuZF9zZWFyY2g7CisKKyAgICBpZiAoIWxpYnhsX2RlZmJvb2xfdmFsKGJfaW5m by0+ZG1fcmVzdHJpY3QpKSB7CisgICAgICAgIExPR0QoREVCVUcsIGd1ZXN0X2RvbWlkLAorICAg ICAgICAgICAgICJkbV9yZXN0cmljdCBkaXNhYmxlZCwgc3RhcnRpbmcgUUVNVSBhcyByb290Iik7 CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHVzZXIgPSBHQ1NQUklOVEYoIiVzJWQi LCBMSUJYTF9RRU1VX1VTRVJfQkFTRSwgZ3Vlc3RfZG9taWQpOworICAgIHJldCA9IHVzZXJsb29r dXBfaGVscGVyX2dldHB3bmFtKGdjLCB1c2VyLCAmdXNlcl9wd2J1ZiwgMCk7CisgICAgaWYgKHJl dCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisgICAgaWYgKHJldCA+IDApCisgICAgICAgIGdv dG8gZW5kX3NlYXJjaDsKKworICAgIHJldCA9IHVzZXJsb29rdXBfaGVscGVyX2dldHB3bmFtKGdj LCBMSUJYTF9RRU1VX1VTRVJfUkFOR0VfQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnVzZXJfcHdidWYsICZ1c2VyX2Jhc2UpOworICAgIGlmIChyZXQgPCAw KQorICAgICAgICByZXR1cm4gcmV0OworICAgIGlmIChyZXQgPiAwKSB7CisgICAgICAgIHN0cnVj dCBwYXNzd2QgKnVzZXJfY2xhc2gsIHVzZXJfY2xhc2hfcHdidWY7CisgICAgICAgIHVpZF90IGlu dGVuZGVkX3VpZCA9IHVzZXJfYmFzZS0+cHdfdWlkICsgZ3Vlc3RfZG9taWQ7CisgICAgICAgIHJl dCA9IHVzZXJsb29rdXBfaGVscGVyX2dldHB3dWlkKGdjLCBpbnRlbmRlZF91aWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyX2NsYXNoX3B3YnVmLCAmdXNl cl9jbGFzaCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsK KyAgICAgICAgaWYgKHJldCA+IDApIHsKKyAgICAgICAgICAgIExPR0QoRVJST1IsIGd1ZXN0X2Rv bWlkLAorICAgICAgICAgICAgICAgICAid2FudGVkIHRvIHVzZSB1aWQgJWxkICglcyArICVkKSBi dXQgdGhhdCBpcyB1c2VyICVzICEiLAorICAgICAgICAgICAgICAgICAobG9uZylpbnRlbmRlZF91 aWQsIExJQlhMX1FFTVVfVVNFUl9SQU5HRV9CQVNFLAorICAgICAgICAgICAgICAgICBndWVzdF9k b21pZCwgdXNlcl9jbGFzaC0+cHdfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gRVJST1JfRkFJ TDsKKyAgICAgICAgfQorICAgICAgICBMT0dEKERFQlVHLCBndWVzdF9kb21pZCwgInVzaW5nIHVp ZCAlbGQiLCAobG9uZylpbnRlbmRlZF91aWQpOworICAgICAgICB1c2VyID0gR0NTUFJJTlRGKCIl bGQ6JWxkIiwgKGxvbmcpaW50ZW5kZWRfdWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgIChs b25nKXVzZXJfYmFzZS0+cHdfZ2lkKTsKKyAgICAgICAgZ290byBlbmRfc2VhcmNoOworICAgIH0K KyAgICAKKyAgICB1c2VyID0gTElCWExfUUVNVV9VU0VSX1NIQVJFRDsKKyAgICByZXQgPSB1c2Vy bG9va3VwX2hlbHBlcl9nZXRwd25hbShnYywgdXNlciwgJnVzZXJfcHdidWYsIDApOworICAgIGlm IChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworICAgIGlmIChyZXQgPiAwKSB7CisgICAg ICAgIExPR0QoV0FSTiwgZ3Vlc3RfZG9taWQsICJDb3VsZCBub3QgZmluZCB1c2VyICVzJWQsIGZh bGxpbmcgYmFjayB0byAlcyIsCisgICAgICAgICAgICAgTElCWExfUUVNVV9VU0VSX0JBU0UsIGd1 ZXN0X2RvbWlkLCBMSUJYTF9RRU1VX1VTRVJfU0hBUkVEKTsKKyAgICAgICAgZ290byBlbmRfc2Vh cmNoOworICAgIH0KKyAgICAKKyAgICBMT0dEKEVSUk9SLCBndWVzdF9kb21pZCwKKyAgICAgICAg ICJDb3VsZCBub3QgZmluZCB1c2VyICVzJWQgb3IgJXMgb3IgcmFuZ2UgYmFzZSBwc2V1ZG8tdXNl ciAlcywgY2Fubm90IHJlc3RyaWN0IiwKKyAgICAgICAgIExJQlhMX1FFTVVfVVNFUl9CQVNFLCBn dWVzdF9kb21pZCwgTElCWExfUUVNVV9VU0VSX1NIQVJFRCwKKyAgICAgICAgIExJQlhMX1FFTVVf VVNFUl9SQU5HRV9CQVNFKTsKKyAgICByZXR1cm4gRVJST1JfSU5WQUw7CisgICAgCitlbmRfc2Vh cmNoOgorICAgIHN0YXRlLT5kbV9ydW5hcyA9IHVzZXI7CisgICAgcmV0dXJuIDA7Cit9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogY29uc3QgY2hhciAqbGlieGxfX2RvbWFp bl9kZXZpY2VfbW9kZWwobGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICppbmZvKQogewpAQCAt NzM3LDU0ICs4NjIsNiBAQCBsaWJ4bF9fZGV0ZWN0X2dmeF9wYXNzdGhydV9raW5kKGxpYnhsX19n YyAqZ2MsCiAgICAgcmV0dXJuIExJQlhMX0dGWF9QQVNTVEhSVV9LSU5EX0RFRkFVTFQ7CiB9CiAK LS8qCi0gKiAgdXNlcmxvb2t1cF9oZWxwZXJfZ2V0cHduYW0obGlieGxfX2djKiwgY29uc3QgY2hh ciAqdXNlciwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICoq cHdkX3IpOwotICoKLSAqICB1c2VybG9va3VwX2hlbHBlcl9nZXRwd3VpZChsaWJ4bF9fZ2MqLCB1 aWRfdCB1aWQsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAq KnB3ZF9yKTsKLSAqCi0gKiAgcmV0dXJucyAxIGlmIHRoZSB1c2VyIHdhcyBmb3VuZCwgMCBpZiBp dCB3YXMgbm90LCAtMSBvbiBlcnJvcgotICovCi0jZGVmaW5lIERFRklORV9VU0VSTE9PS1VQX0hF TFBFUihOQU1FLFNQRUNfVFlQRSxTVFJVQ1ROQU1FLFNZU0NPTkYpICAgICBcCi0gICAgc3RhdGlj IGludCB1c2VybG9va3VwX2hlbHBlcl8jI05BTUUobGlieGxfX2djICpnYywgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BFQ19UWVBF IHNwZWMsICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IFNUUlVDVE5BTUUgKnJlc3VsdGJ1ZiwgICBcCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNUUlVDVE5BTUUgKipvdXQpICAgICAg ICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCBTVFJVQ1ROQU1FICpyZXN1bHRw ID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNoYXIgKmJ1 ZiA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgIGxvbmcgYnVmX3NpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGludCByZXQ7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgIGJ1Zl9zaXplID0gc3lzY29uZihTWVNDT05GKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChidWZfc2l6ZSA8IDApIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBidWZfc2l6ZSA9 IDIwNDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg ICAgICAgICBMT0coREVCVUcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgInN5c2NvbmYgZmFpbGVkLCBzZXR0aW5nIHRoZSBpbml0aWFsIGJ1 ZmZlciBzaXplIHRvICVsZCIsICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgYnVmX3NpemUp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHdoaWxlICgxKSB7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICBidWYgPSBsaWJ4bF9fcmVhbGxvYyhnYywgYnVmLCBidWZfc2l6ZSk7ICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICByZXQgPSBOQU1FIyNfcihzcGVjLCByZXN1bHRidWYsIGJ1Ziwg YnVmX3NpemUsICZyZXN1bHRwKTsgICBcCi0gICAgICAgICAgICBpZiAocmV0ID09IEVSQU5HRSkg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg ICAgYnVmX3NpemUgKz0gMTI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAo cmV0ICE9IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAocmVzdWx0cCAhPSBOVUxMKSB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgaWYg KG91dCkgKm91dCA9IHJlc3VsdHA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gMDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgfQotCi1ERUZJTkVfVVNFUkxPT0tVUF9IRUxQRVIoZ2V0cHduYW0s IGNvbnN0IGNoYXIqLCBwYXNzd2QsIF9TQ19HRVRQV19SX1NJWkVfTUFYKTsKLURFRklORV9VU0VS TE9PS1VQX0hFTFBFUihnZXRwd3VpZCwgdWlkX3QsICAgICAgIHBhc3N3ZCwgX1NDX0dFVFBXX1Jf U0laRV9NQVgpOwotCiAvKiBjb2xvIG1vZGUgKi8KIGVudW0gewogICAgIExJQlhMX19DT0xPX05P TkUgPSAwLApAQCAtOTI4LDExICsxMDA1LDkgQEAgc3RhdGljIGludCBsaWJ4bF9fYnVpbGRfZGV2 aWNlX21vZGVsX2FyZ3NfbmV3KGxpYnhsX19nYyAqZ2MsCiAgICAgY29uc3QgY2hhciAqa2V5bWFw ID0gZG1fa2V5bWFwKGd1ZXN0X2NvbmZpZyk7CiAgICAgY2hhciAqbWFjaGluZWFyZzsKICAgICBm bGV4YXJyYXlfdCAqZG1fYXJncywgKmRtX2VudnM7Ci0gICAgaW50IGksIGNvbm5lY3Rpb24sIGRl dmlkLCByZXQ7CisgICAgaW50IGksIGNvbm5lY3Rpb24sIGRldmlkOwogICAgIHVpbnQ2NF90IHJh bV9zaXplOwogICAgIGNvbnN0IGNoYXIgKnBhdGgsICpjaGFyZGV2OwotICAgIGNoYXIgKnVzZXIg PSBOVUxMOwotICAgIHN0cnVjdCBwYXNzd2QgKnVzZXJfYmFzZSwgdXNlcl9wd2J1ZjsKIAogICAg IGRtX2FyZ3MgPSBmbGV4YXJyYXlfbWFrZShnYywgMTYsIDEpOwogICAgIGRtX2VudnMgPSBmbGV4 YXJyYXlfbWFrZShnYywgMTYsIDEpOwpAQCAtMTY4NSw3MSArMTc2MCw5IEBAIHN0YXRpYyBpbnQg bGlieGxfX2J1aWxkX2RldmljZV9tb2RlbF9hcmdzX25ldyhsaWJ4bF9fZ2MgKmdjLAogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYl9pbmZvLT5kZXZpY2VfbW9k ZWxfdXNlcikgewotICAgICAgICAgICAgdXNlciA9IGJfaW5mby0+ZGV2aWNlX21vZGVsX3VzZXI7 Ci0gICAgICAgICAgICBnb3RvIGVuZF9zZWFyY2g7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo IWxpYnhsX2RlZmJvb2xfdmFsKGJfaW5mby0+ZG1fcmVzdHJpY3QpKSB7Ci0gICAgICAgICAgICBM T0dEKERFQlVHLCBndWVzdF9kb21pZCwKLSAgICAgICAgICAgICAgICAgImRtX3Jlc3RyaWN0IGRp c2FibGVkLCBzdGFydGluZyBRRU1VIGFzIHJvb3QiKTsKLSAgICAgICAgICAgIGdvdG8gZW5kX3Nl YXJjaDsKLSAgICAgICAgfQotCi0gICAgICAgIHVzZXIgPSBHQ1NQUklOVEYoIiVzJWQiLCBMSUJY TF9RRU1VX1VTRVJfQkFTRSwgZ3Vlc3RfZG9taWQpOwotICAgICAgICByZXQgPSB1c2VybG9va3Vw X2hlbHBlcl9nZXRwd25hbShnYywgdXNlciwgJnVzZXJfcHdidWYsIDApOwotICAgICAgICBpZiAo cmV0IDwgMCkKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIGlmIChyZXQgPiAwKQot ICAgICAgICAgICAgZ290byBlbmRfc2VhcmNoOwotCi0gICAgICAgIHJldCA9IHVzZXJsb29rdXBf aGVscGVyX2dldHB3bmFtKGdjLCBMSUJYTF9RRU1VX1VTRVJfUkFOR0VfQkFTRSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXJfcHdidWYsICZ1c2VyX2Jhc2Up OwotICAgICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAg IGlmIChyZXQgPiAwKSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICp1c2VyX2NsYXNoLCB1 c2VyX2NsYXNoX3B3YnVmOwotICAgICAgICAgICAgdWlkX3QgaW50ZW5kZWRfdWlkID0gdXNlcl9i YXNlLT5wd191aWQgKyBndWVzdF9kb21pZDsKLSAgICAgICAgICAgIHJldCA9IHVzZXJsb29rdXBf aGVscGVyX2dldHB3dWlkKGdjLCBpbnRlbmRlZF91aWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmdXNlcl9jbGFzaF9wd2J1ZiwgJnVzZXJfY2xhc2gpOwot ICAgICAgICAgICAgaWYgKHJldCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAg ICAgICAgICAgIGlmIChyZXQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgTE9HRChFUlJPUiwgZ3Vl c3RfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAid2FudGVkIHRvIHVzZSB1aWQgJWxkICgl cyArICVkKSBidXQgdGhhdCBpcyB1c2VyICVzICEiLAotICAgICAgICAgICAgICAgICAgICAgKGxv bmcpaW50ZW5kZWRfdWlkLCBMSUJYTF9RRU1VX1VTRVJfUkFOR0VfQkFTRSwKLSAgICAgICAgICAg ICAgICAgICAgIGd1ZXN0X2RvbWlkLCB1c2VyX2NsYXNoLT5wd19uYW1lKTsKLSAgICAgICAgICAg ICAgICByZXR1cm4gRVJST1JfRkFJTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIExPR0Qo REVCVUcsIGd1ZXN0X2RvbWlkLCAidXNpbmcgdWlkICVsZCIsIChsb25nKWludGVuZGVkX3VpZCk7 CisgICAgICAgIGlmIChzdGF0ZS0+ZG1fcnVuYXMgJiYgc3RyY21wKHN0YXRlLT5kbV9ydW5hcywg InJvb3QiKSkgewogICAgICAgICAgICAgZmxleGFycmF5X2FwcGVuZChkbV9hcmdzLCAiLXJ1bmFz Iik7Ci0gICAgICAgICAgICBmbGV4YXJyYXlfYXBwZW5kKGRtX2FyZ3MsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWxkOiVsZCIsIChsb25nKWludGVuZGVkX3VpZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKXVzZXJfYmFzZS0+ cHdfZ2lkKSk7Ci0gICAgICAgICAgICB1c2VyID0gTlVMTDsgLyogd2UgaGF2ZSB0YWtlbiBjYXJl IG9mIGl0ICovCi0gICAgICAgICAgICBnb3RvIGVuZF9zZWFyY2g7Ci0gICAgICAgIH0KLQotICAg ICAgICB1c2VyID0gTElCWExfUUVNVV9VU0VSX1NIQVJFRDsKLSAgICAgICAgcmV0ID0gdXNlcmxv b2t1cF9oZWxwZXJfZ2V0cHduYW0oZ2MsIHVzZXIsICZ1c2VyX3B3YnVmLCAwKTsKLSAgICAgICAg aWYgKHJldCA8IDApCi0gICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICBpZiAocmV0ID4g MCkgewotICAgICAgICAgICAgTE9HRChXQVJOLCBndWVzdF9kb21pZCwgIkNvdWxkIG5vdCBmaW5k IHVzZXIgJXMlZCwgZmFsbGluZyBiYWNrIHRvICVzIiwKLSAgICAgICAgICAgICAgICAgICAgTElC WExfUUVNVV9VU0VSX0JBU0UsIGd1ZXN0X2RvbWlkLCBMSUJYTF9RRU1VX1VTRVJfU0hBUkVEKTsK LSAgICAgICAgICAgIGdvdG8gZW5kX3NlYXJjaDsKLSAgICAgICAgfQotCi0gICAgICAgIExPR0Qo RVJST1IsIGd1ZXN0X2RvbWlkLAotICJDb3VsZCBub3QgZmluZCB1c2VyICVzJWQgb3IgJXMgb3Ig cmFuZ2UgYmFzZSBwc2V1ZG8tdXNlciAlcywgY2Fubm90IHJlc3RyaWN0IiwKLSAgICAgICAgICAg ICBMSUJYTF9RRU1VX1VTRVJfQkFTRSwgZ3Vlc3RfZG9taWQsIExJQlhMX1FFTVVfVVNFUl9TSEFS RUQsCi0gICAgICAgICAgICAgTElCWExfUUVNVV9VU0VSX1JBTkdFX0JBU0UpOwotICAgICAgICBy ZXR1cm4gRVJST1JfSU5WQUw7Ci0KLWVuZF9zZWFyY2g6Ci0gICAgICAgIGlmICh1c2VyICE9IE5V TEwgJiYgc3RyY21wKHVzZXIsICJyb290IikpIHsKLSAgICAgICAgICAgIGZsZXhhcnJheV9hcHBl bmQoZG1fYXJncywgIi1ydW5hcyIpOwotICAgICAgICAgICAgZmxleGFycmF5X2FwcGVuZChkbV9h cmdzLCB1c2VyKTsKKyAgICAgICAgICAgIGZsZXhhcnJheV9hcHBlbmQoZG1fYXJncywgc3RhdGUt PmRtX3J1bmFzKTsKICAgICAgICAgfQogICAgIH0KICAgICBmbGV4YXJyYXlfYXBwZW5kKGRtX2Fy Z3MsIE5VTEwpOwpAQCAtMjMwMyw2ICsyMzE2LDExIEBAIHZvaWQgbGlieGxfX3NwYXduX2xvY2Fs X2RtKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2RtX3NwYXduX3N0YXRlICpkbXNzKQogICAgICAg ICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KKworICAgIHJjID0g bGlieGxfX2RvbWFpbl9nZXRfZGV2aWNlX21vZGVsX3VpZChnYywgZG1zcyk7CisgICAgaWYgKHJj KQorICAgICAgICBnb3RvIG91dDsKKyAgICAKICAgICByYyA9IGxpYnhsX19idWlsZF9kZXZpY2Vf bW9kZWxfYXJncyhnYywgZG0sIGRvbWlkLCBndWVzdF9jb25maWcsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJncywgJmVudnMsIHN0YXRlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtX3N0YXRlX2ZkKTsKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggYi90b29scy9saWJ4bC9saWJ4bF9pbnRl cm5hbC5oCmluZGV4IGU0OTg0MzVlMTYuLmEzNzBkZTU0ZWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsX2ludGVybmFsLmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaApA QCAtMTEzNSw2ICsxMTM1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNvbnN0IGNoYXIgKiBz aGltX2NtZGxpbmU7CiAgICAgY29uc3QgY2hhciAqIHB2X2NtZGxpbmU7CiAKKyAgICBjaGFyICog ZG1fcnVuYXM7CisKICAgICB4ZW5fdm1lbXJhbmdlX3QgKnZtZW1yYW5nZXM7CiAgICAgdWludDMy X3QgbnVtX3ZtZW1yYW5nZXM7CiAKLS0gCjIuMTkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=