From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99448C282E1 for ; Thu, 25 Apr 2019 12:30:44 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 674012081C for ; Thu, 25 Apr 2019 12:30:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="iiM/8DoW"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Oo2PWuwl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 674012081C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date: In-reply-to:Subject:To:From:References:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=UQICfup4DFJr7gjtjo+0CZlenSeWZlisLQEbV5cAaD8=; b=iiM/8DoWHFrNHa9D/d69dU9H+l 7niDaVCK/oEupE+cTX2lgO/Daseu1GzenIe3wQXsNLeIsqSf/zVNkn0vV5a6RO5ecWjnCSrl7gThb euejWcXZN4GLILHHpfudSCmJKLbEx839tsNi1Btlz+JyiN9Krmf212dK/ZiZLyrt2K8/gUm3jtBd1 Vi0XccRURfwXlH/Z9FRrpZuT8+h+zHkAiTsIBX3QdhRFzowNDzLoaxr0JiLhOGe8x9Xo8MkzUPZwl Eg/+EAutXW+ZReSMCvEpDpJo/UoEwAtuu3VFJiMk7AjSeh/ZMRdX20JrUrtkzvQz58aG0meFHvMm5 RF9+WlIQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJdWO-00038C-VK; Thu, 25 Apr 2019 12:30:36 +0000 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hJdWK-00037n-8F for linux-arm-kernel@lists.infradead.org; Thu, 25 Apr 2019 12:30:33 +0000 Received: by mail-wm1-x342.google.com with SMTP id w15so10322013wmc.3 for ; Thu, 25 Apr 2019 05:30:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version:content-transfer-encoding; bh=mfSLYzgc8k8xJk019Iy19VJIlfk1SudGomAx10rqcuI=; b=Oo2PWuwlZLQJz+2SGbEutydQtQEiYLwfYKd4r0KvG1ofgr27hR0BIB8EQJ+iKrjRQw /kx0t9Ykd0ncxz8Cm2LdGvWpChRKYxAQcrriYRhkxh1DS//X8VseqNlEgPubcDQUcD6a YW6BMRciTzwJwbiVQxWiBRBhgUWMdtOJtMZSJ1sBO1CZdPGD6rYQrO1owoejZWzI0ZbN qcIivvfbKt90D6w11Qb88CsWA30adukXOOYfSM/++HDdp+6vL/X9GykqYnccifE1fuG5 B40S/Xu1PZFqDnwiq5aalM3mQ8wbj0rqzg+a7T9R2a6IUmEmMmyFBeDtN9Xdmw7X8LTw QbdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version:content-transfer-encoding; bh=mfSLYzgc8k8xJk019Iy19VJIlfk1SudGomAx10rqcuI=; b=SZV+/6HXQlYmpdmwXNwtYsO9v855eNy/DsvR/ye/hrlZ2KutaaBkj9lrrVzN3yn6XH vMiYInmI+TlEYbhwJrjfIodkP9tyOluefuO6GUYNT9Ezq5mQWgkYPsA49VsUsWl5Soma b57bb4cfbnmkUuEjxcGrygcJtpdpoavc9JTwdoykku6EDNDiwJ+XpXRZz6repNb5V0PK OV/ldCJABU7PKUMAWOfuLf0Xg63Tw4+StpmnRyYYYxT7gtYhoTt/XHzATFTWLjNRdWw6 iod/QLAXm+fVZsNPECwkkg95MtamgpJwZjdiUeAiNGDq122P70b8KpmGbFw9I8F8g34m tXJA== X-Gm-Message-State: APjAAAVuyTjEwzfVJaOZt/BWrbttMd16DUtA9Yc//ua6BYpNLIz1K/wJ nzEVT1z6NK3hM+HLcwn9+LPOBA== X-Google-Smtp-Source: APXvYqzyIThko4tpS7XGIEK3t6QdcIGjogoo3Te9UdYZFJRwh9F3PPsZ9FKTBHuyiyKZ/Knko4BWow== X-Received: by 2002:a1c:9950:: with SMTP id b77mr3086017wme.133.1556195430474; Thu, 25 Apr 2019 05:30:30 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id s12sm18968642wmj.42.2019.04.25.05.30.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 25 Apr 2019 05:30:29 -0700 (PDT) Received: from zen (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 5FFBC1FF87; Thu, 25 Apr 2019 13:30:29 +0100 (BST) References: <1555603631-8107-1-git-send-email-Dave.Martin@arm.com> <1555603631-8107-8-git-send-email-Dave.Martin@arm.com> User-agent: mu4e 1.3.1; emacs 26.1 From: Alex =?utf-8?Q?Benn=C3=A9e?= To: Dave Martin Subject: Re: [PATCH v2 07/14] KVM: arm64/sve: Make register ioctl access errors more consistent In-reply-to: <1555603631-8107-8-git-send-email-Dave.Martin@arm.com> Date: Thu, 25 Apr 2019 13:30:29 +0100 Message-ID: <877ebiw9lm.fsf@zen.linaroharston> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190425_053032_299920_3F62A005 X-CRM114-Status: GOOD ( 25.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Okamoto Takayuki , Christoffer Dall , Ard Biesheuvel , Marc Zyngier , Catalin Marinas , Will Deacon , Andrew Jones , Zhang Lei , Julien Grall , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org CkRhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPiB3cml0ZXM6Cgo+IEN1cnJlbnRseSwg dGhlIHdheSBlcnJvciBjb2RlcyBhcmUgZ2VuZXJhdGVkIHdoZW4gcHJvY2Vzc2luZyB0aGUKPiBT VkUgcmVnaXN0ZXIgYWNjZXNzIGlvY3RscyBpbiBhIGJpdCBoYXBoYXphcmQuCj4KPiBUaGlzIHBh dGNoIHJlZmFjdG9ycyB0aGUgY29kZSBzbyB0aGF0IHRoZSBiZWhhdmlvdXIgaXMgbW9yZQo+IGNv bnNpc3RlbnQ6IG5vdywgLUVJTlZBTCBzaG91bGQgYmUgcmV0dXJuZWQgb25seSBmb3IgdW5yZWNv Z25pc2VkCj4gcmVnaXN0ZXIgSURzIG9yIHdoZW4gc29tZSBvdGhlciBydW50aW1lIGVycm9yIG9j Y3Vycy4gIC1FTk9FTlQgaXMKPiByZXR1cm5lZCBmb3IgcmVnaXN0ZXIgSURzIHRoYXQgYXJlIHJl Y29nbmlzZWQsIGJ1dCB3aG9zZQo+IGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIgKG9yIHNsaWNlKSBk b2VzIG5vdCBleGlzdCBmb3IgdGhlIHZjcHUuCj4KPiBUbyB0aGlzIGVuZCwgaW4ge2dldCxzZXR9 X3N2ZV9yZWcoKSB3ZSBub3cgZGVsZWdhdGUgdGhlCj4gdmNwdV9oYXNfc3ZlKCkgY2hlY2sgZG93 biBpbnRvIHtnZXQsc2V0fV9zdmVfdmxzKCkgYW5kCj4gc3ZlX3JlZ190b19yZWdpb24oKS4gIFRo ZSBLVk1fUkVHX0FSTTY0X1NWRV9WTFMgc3BlY2lhbCBjYXNlIGlzCj4gcGlja2VkIG9mZiBmaXJz dCwgdGhlbiBzdmVfcmVnX3RvX3JlZ2lvbigpIHBsYXlzIHRoZSByb2xlIG9mCj4gZXhoYXVzdGl2 ZWx5IHZhbGlkYXRpbmcgb3IgcmVqZWN0aW5nIHRoZSByZWdpc3RlciBJRCBhbmQgKHdoZXJlCj4g YWNjZXB0ZWQpIGNvbXB1dGluZyB0aGUgYXBwbGljYWJsZSByZWdpc3RlciByZWdpb24gYXMgYmVm b3JlLgo+Cj4gc3ZlX3JlZ190b19yZWdpb24oKSBpcyByZWFycmFuZ2VkIHNvIHRoYXQgLUVOT0VO VCBvciAtRVBFUk0gaXMgbm90Cj4gcmV0dXJuZWQgcHJlbWF0dXJlbHksIGJlZm9yZSBjaGVja2lu ZyB3aGV0aGVyIHJlZy0+aWQgaXMgaW4gYQo+IHJlY29nbmlzZWQgcmFuZ2UuCj4KPiAtRVBFUk0g aXMgbm93IG9ubHkgcmV0dXJuZWQgd2hlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gYWNjZXNzIGFu Cj4gYWN0dWFsbHkgZXhpc3RpbmcgcmVnaXN0ZXIgc2xpY2Ugb24gYW4gdW5maW5hbGl6ZWQgdmNw dS4KPgo+IEZpeGVzOiBlMWM5Yzk4MzQ1YjMgKCJLVk06IGFybTY0L3N2ZTogQWRkIFNWRSBzdXBw b3J0IHRvIHJlZ2lzdGVyIGFjY2VzcyBpb2N0bCBpbnRlcmZhY2UiKQo+IEZpeGVzOiA5MDMzYmJh NGI1MzUgKCJLVk06IGFybTY0L3N2ZTogQWRkIHBzZXVkby1yZWdpc3RlciBmb3IgdGhlIGd1ZXN0 J3MgdmVjdG9yIGxlbmd0aHMiKQo+IFN1Z2dlc3RlZC1ieTogQW5kcmV3IEpvbmVzIDxkcmpvbmVz QHJlZGhhdC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFy bS5jb20+Cj4gUmV2aWV3ZWQtYnk6IEFuZHJldyBKb25lcyA8ZHJqb25lc0ByZWRoYXQuY29tPgo+ IC0tLQo+ICBhcmNoL2FybTY0L2t2bS9ndWVzdC5jIHwgNTIgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDMxIGluc2Vy dGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3Zt L2d1ZXN0LmMgYi9hcmNoL2FybTY0L2t2bS9ndWVzdC5jCj4gaW5kZXggZjVmZjdhZS4uZTQ1YTA0 MiAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0L2t2bS9ndWVzdC5jCj4gKysrIGIvYXJjaC9hcm02 NC9rdm0vZ3Vlc3QuYwo+IEBAIC0yMjEsNiArMjIxLDkgQEAgc3RhdGljIGludCBnZXRfc3ZlX3Zs cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3JlZyAqcmVnKQo+ ICAJdW5zaWduZWQgaW50IG1heF92cSwgdnE7Cj4gIAl1NjQgdnFzW0RJVl9ST1VORF9VUChTVkVf VlFfTUFYIC0gU1ZFX1ZRX01JTiArIDEsIDY0KV07Cj4KPiArCWlmICghdmNwdV9oYXNfc3ZlKHZj cHUpKQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICsKPiAgCWlmIChXQVJOX09OKCFzdmVfdmxfdmFs aWQodmNwdS0+YXJjaC5zdmVfbWF4X3ZsKSkpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4KPiBAQCAt MjQyLDYgKzI0NSw5IEBAIHN0YXRpYyBpbnQgc2V0X3N2ZV92bHMoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZykKPiAgCXVuc2lnbmVkIGludCBtYXhf dnEsIHZxOwo+ICAJdTY0IHZxc1tESVZfUk9VTkRfVVAoU1ZFX1ZRX01BWCAtIFNWRV9WUV9NSU4g KyAxLCA2NCldOwo+Cj4gKwlpZiAoIXZjcHVfaGFzX3N2ZSh2Y3B1KSkKPiArCQlyZXR1cm4gLUVO T0VOVDsKPiArCj4gIAlpZiAoa3ZtX2FybV92Y3B1X3N2ZV9maW5hbGl6ZWQodmNwdSkpCj4gIAkJ cmV0dXJuIC1FUEVSTTsgLyogdG9vIGxhdGUhICovCj4KPiBAQCAtMzA0LDcgKzMxMCwxMCBAQCBz dHJ1Y3Qgc3ZlX3N0YXRlX3JlZ19yZWdpb24gewo+ICAJdW5zaWduZWQgaW50IHVwYWQ7CS8qIGV4 dHJhIHRyYWlsaW5nIHBhZGRpbmcgaW4gdXNlciBtZW1vcnkgKi8KPiAgfTsKPgo+IC0vKiBHZXQg c2FuaXRpc2VkIGJvdW5kcyBmb3IgdXNlci9rZXJuZWwgU1ZFIHJlZ2lzdGVyIGNvcHkgKi8KPiAr LyoKPiArICogVmFsaWRhdGUgU1ZFIHJlZ2lzdGVyIElEIGFuZCBnZXQgc2FuaXRpc2VkIGJvdW5k cyBmb3IgdXNlci9rZXJuZWwgU1ZFCj4gKyAqIHJlZ2lzdGVyIGNvcHkKPiArICovCj4gIHN0YXRp YyBpbnQgc3ZlX3JlZ190b19yZWdpb24oc3RydWN0IHN2ZV9zdGF0ZV9yZWdfcmVnaW9uICpyZWdp b24sCj4gIAkJCSAgICAgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICAJCQkgICAgIGNvbnN0IHN0 cnVjdCBrdm1fb25lX3JlZyAqcmVnKQo+IEBAIC0zMzUsMjUgKzM0NCwzMCBAQCBzdGF0aWMgaW50 IHN2ZV9yZWdfdG9fcmVnaW9uKHN0cnVjdCBzdmVfc3RhdGVfcmVnX3JlZ2lvbiAqcmVnaW9uLAo+ ICAJLyogVmVyaWZ5IHRoYXQgd2UgbWF0Y2ggdGhlIFVBUEkgaGVhZGVyOiAqLwo+ICAJQlVJTERf QlVHX09OKFNWRV9OVU1fU0xJQ0VTICE9IEtWTV9BUk02NF9TVkVfTUFYX1NMSUNFUyk7Cj4KPiAt CWlmICgocmVnLT5pZCAmIFNWRV9SRUdfU0xJQ0VfTUFTSykgPiAwKQo+IC0JCXJldHVybiAtRU5P RU5UOwo+IC0KPiAtCXZxID0gc3ZlX3ZxX2Zyb21fdmwodmNwdS0+YXJjaC5zdmVfbWF4X3ZsKTsK PiAtCj4gIAlyZWdfbnVtID0gKHJlZy0+aWQgJiBTVkVfUkVHX0lEX01BU0spID4+IFNWRV9SRUdf SURfU0hJRlQ7Cj4KPiAgCWlmIChyZWctPmlkID49IHpyZWdfaWRfbWluICYmIHJlZy0+aWQgPD0g enJlZ19pZF9tYXgpIHsKPiArCQlpZiAoIXZjcHVfaGFzX3N2ZSh2Y3B1KSB8fCAocmVnLT5pZCAm IFNWRV9SRUdfU0xJQ0VfTUFTSykgPiAwKQo+ICsJCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwkJ dnEgPSBzdmVfdnFfZnJvbV92bCh2Y3B1LT5hcmNoLnN2ZV9tYXhfdmwpOwo+ICsKPiAgCQlyZXFv ZmZzZXQgPSBTVkVfU0lHX1pSRUdfT0ZGU0VUKHZxLCByZWdfbnVtKSAtCj4gIAkJCQlTVkVfU0lH X1JFR1NfT0ZGU0VUOwo+ICAJCXJlcWxlbiA9IEtWTV9TVkVfWlJFR19TSVpFOwo+ICAJCW1heGxl biA9IFNWRV9TSUdfWlJFR19TSVpFKHZxKTsKPiAgCX0gZWxzZSBpZiAocmVnLT5pZCA+PSBwcmVn X2lkX21pbiAmJiByZWctPmlkIDw9IHByZWdfaWRfbWF4KSB7Cj4gKwkJaWYgKCF2Y3B1X2hhc19z dmUodmNwdSkgfHwgKHJlZy0+aWQgJiBTVkVfUkVHX1NMSUNFX01BU0spID4gMCkKPiArCQkJcmV0 dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJCXZxID0gc3ZlX3ZxX2Zyb21fdmwodmNwdS0+YXJjaC5zdmVf bWF4X3ZsKTsKPiArCgpJIHN1cHBvc2UgeW91IGNvdWxkIGFyZ3VlIGZvciBhOgoKCWlmIChyZWct PmlkID49IHpyZWdfaWRfbWluICYmIHJlZy0+aWQgPD0gcHJlZ19pZF9tYXgpIHsKCQlpZiAoIXZj cHVfaGFzX3N2ZSh2Y3B1KSB8fCAocmVnLT5pZCAmIFNWRV9SRUdfU0xJQ0VfTUFTSykgPiAwKQoJ CQlyZXR1cm4gLUVOT0VOVDsKCgkJdnEgPSBzdmVfdnFfZnJvbV92bCh2Y3B1LT5hcmNoLnN2ZV9t YXhfdmwpOwoKICAgICAgICAgICAgICAgIGlmIChyZWctPmlkIDw9IHpyZWdfaWRfbWF4KSB7CgkJ CXJlcW9mZnNldCA9IFNWRV9TSUdfWlJFR19PRkZTRVQodnEsIHJlZ19udW0pIC0KCQkJCVNWRV9T SUdfUkVHU19PRkZTRVQ7CgkJCXJlcWxlbiA9IEtWTV9TVkVfWlJFR19TSVpFOwoJCQltYXhsZW4g PSBTVkVfU0lHX1pSRUdfU0laRSh2cSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewoJCQlyZXFv ZmZzZXQgPSBTVkVfU0lHX1BSRUdfT0ZGU0VUKHZxLCByZWdfbnVtKSAtCgkJCQlTVkVfU0lHX1JF R1NfT0ZGU0VUOwoJCQlyZXFsZW4gPSBLVk1fU1ZFX1BSRUdfU0laRTsKCQkJbWF4bGVuID0gU1ZF X1NJR19QUkVHX1NJWkUodnEpOwoJCX0KCX0gZWxzZSB7CgkJcmV0dXJuIC1FSU5WQUw7Cgl9Cgpi dXQgb25seSBmb3IgbWluaW1hbCBEUlkgcmVhc29ucy4KCj4gIAkJcmVxb2Zmc2V0ID0gU1ZFX1NJ R19QUkVHX09GRlNFVCh2cSwgcmVnX251bSkgLQo+ICAJCQkJU1ZFX1NJR19SRUdTX09GRlNFVDsK PiAgCQlyZXFsZW4gPSBLVk1fU1ZFX1BSRUdfU0laRTsKPiAgCQltYXhsZW4gPSBTVkVfU0lHX1BS RUdfU0laRSh2cSk7Cj4gIAl9IGVsc2Ugewo+IC0JCXJldHVybiAtRU5PRU5UOwo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICAJfQo+Cj4gIAlzdmVfc3RhdGVfc2l6ZSA9IHZjcHVfc3ZlX3N0YXRlX3Np emUodmNwdSk7Cj4gQEAgLTM2OSwyNCArMzgzLDIyIEBAIHN0YXRpYyBpbnQgc3ZlX3JlZ190b19y ZWdpb24oc3RydWN0IHN2ZV9zdGF0ZV9yZWdfcmVnaW9uICpyZWdpb24sCj4KPiAgc3RhdGljIGlu dCBnZXRfc3ZlX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25l X3JlZyAqcmVnKQo+ICB7Cj4gKwlpbnQgcmV0Owo+ICAJc3RydWN0IHN2ZV9zdGF0ZV9yZWdfcmVn aW9uIHJlZ2lvbjsKPiAgCWNoYXIgX191c2VyICp1cHRyID0gKGNoYXIgX191c2VyICopcmVnLT5h ZGRyOwo+Cj4gLQlpZiAoIXZjcHVfaGFzX3N2ZSh2Y3B1KSkKPiAtCQlyZXR1cm4gLUVOT0VOVDsK PiAtCj4gIAkvKiBIYW5kbGUgdGhlIEtWTV9SRUdfQVJNNjRfU1ZFX1ZMUyBwc2V1ZG8tcmVnIGFz IGEgc3BlY2lhbCBjYXNlOiAqLwo+ICAJaWYgKHJlZy0+aWQgPT0gS1ZNX1JFR19BUk02NF9TVkVf VkxTKQo+ICAJCXJldHVybiBnZXRfc3ZlX3Zscyh2Y3B1LCByZWcpOwo+Cj4gLQkvKiBPdGhlcndp c2UsIHJlZyBpcyBhbiBhcmNoaXRlY3R1cmFsIFNWRSByZWdpc3Rlci4uLiAqLwo+ICsJLyogVHJ5 IHRvIGludGVycHJldCByZWcgSUQgYXMgYW4gYXJjaGl0ZWN0dXJhbCBTVkUgcmVnaXN0ZXIuLi4g Ki8KPiArCXJldCA9IHN2ZV9yZWdfdG9fcmVnaW9uKCZyZWdpb24sIHZjcHUsIHJlZyk7Cj4gKwlp ZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4KPiAgCWlmICgha3ZtX2FybV92Y3B1X3N2ZV9maW5h bGl6ZWQodmNwdSkpCj4gIAkJcmV0dXJuIC1FUEVSTTsKPgo+IC0JaWYgKHN2ZV9yZWdfdG9fcmVn aW9uKCZyZWdpb24sIHZjcHUsIHJlZykpCj4gLQkJcmV0dXJuIC1FTk9FTlQ7Cj4gLQo+ICAJaWYg KGNvcHlfdG9fdXNlcih1cHRyLCB2Y3B1LT5hcmNoLnN2ZV9zdGF0ZSArIHJlZ2lvbi5rb2Zmc2V0 LAo+ICAJCQkgcmVnaW9uLmtsZW4pIHx8Cj4gIAkgICAgY2xlYXJfdXNlcih1cHRyICsgcmVnaW9u LmtsZW4sIHJlZ2lvbi51cGFkKSkKPiBAQCAtMzk3LDI0ICs0MDksMjIgQEAgc3RhdGljIGludCBn ZXRfc3ZlX3JlZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGNvbnN0IHN0cnVjdCBrdm1fb25lX3Jl ZyAqcmVnKQo+Cj4gIHN0YXRpYyBpbnQgc2V0X3N2ZV9yZWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBjb25zdCBzdHJ1Y3Qga3ZtX29uZV9yZWcgKnJlZykKPiAgewo+ICsJaW50IHJldDsKPiAgCXN0 cnVjdCBzdmVfc3RhdGVfcmVnX3JlZ2lvbiByZWdpb247Cj4gIAljb25zdCBjaGFyIF9fdXNlciAq dXB0ciA9IChjb25zdCBjaGFyIF9fdXNlciAqKXJlZy0+YWRkcjsKPgo+IC0JaWYgKCF2Y3B1X2hh c19zdmUodmNwdSkpCj4gLQkJcmV0dXJuIC1FTk9FTlQ7Cj4gLQo+ICAJLyogSGFuZGxlIHRoZSBL Vk1fUkVHX0FSTTY0X1NWRV9WTFMgcHNldWRvLXJlZyBhcyBhIHNwZWNpYWwgY2FzZTogKi8KPiAg CWlmIChyZWctPmlkID09IEtWTV9SRUdfQVJNNjRfU1ZFX1ZMUykKPiAgCQlyZXR1cm4gc2V0X3N2 ZV92bHModmNwdSwgcmVnKTsKPgo+IC0JLyogT3RoZXJ3aXNlLCByZWcgaXMgYW4gYXJjaGl0ZWN0 dXJhbCBTVkUgcmVnaXN0ZXIuLi4gKi8KPiArCS8qIFRyeSB0byBpbnRlcnByZXQgcmVnIElEIGFz IGFuIGFyY2hpdGVjdHVyYWwgU1ZFIHJlZ2lzdGVyLi4uICovCj4gKwlyZXQgPSBzdmVfcmVnX3Rv X3JlZ2lvbigmcmVnaW9uLCB2Y3B1LCByZWcpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+Cj4gIAlpZiAoIWt2bV9hcm1fdmNwdV9zdmVfZmluYWxpemVkKHZjcHUpKQo+ICAJCXJldHVy biAtRVBFUk07Cj4KPiAtCWlmIChzdmVfcmVnX3RvX3JlZ2lvbigmcmVnaW9uLCB2Y3B1LCByZWcp KQo+IC0JCXJldHVybiAtRU5PRU5UOwo+IC0KPiAgCWlmIChjb3B5X2Zyb21fdXNlcih2Y3B1LT5h cmNoLnN2ZV9zdGF0ZSArIHJlZ2lvbi5rb2Zmc2V0LCB1cHRyLAo+ICAJCQkgICByZWdpb24ua2xl bikpCj4gIAkJcmV0dXJuIC1FRkFVTFQ7CgoKLS0KQWxleCBCZW5uw6llCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==