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=-6.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,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 F2775C2D0DB for ; Mon, 27 Jan 2020 22:38:32 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 C2EC224656 for ; Mon, 27 Jan 2020 22:38:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pP+OUKUr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C2EC224656 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DC4A76EC0E; Mon, 27 Jan 2020 22:38:31 +0000 (UTC) Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by gabe.freedesktop.org (Postfix) with ESMTPS id F1A7E6EC0E; Mon, 27 Jan 2020 22:38:30 +0000 (UTC) Received: by mail-wr1-x436.google.com with SMTP id g17so13673519wro.2; Mon, 27 Jan 2020 14:38:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=9CIFRRM6ox7lWSQtmrrJ6Gay4i6NbvbkEo0rHhRIs2Y=; b=pP+OUKUrb+5wz7vKfrSsrDWThkBg/zAw0piXd4bt56u0fiE+pnSW+IYPc/m9duxgpC w+m34kggNLLyezBbXtZ5Vq6puX6wbA3YNnaf0mQAoqeVQ9BfGPUMILKr9+zJWdOelhDf 0MluZsuMlOaWAznBzOXJn1yqi9HISZkDl5zmo2d3DtSFodBhHWvHbx8w0SNK45pKT0Le zV9Frbm2ih1YkflqOOSvnuBOsyWeIU9eCvw9nGprHvodQsGRO0SS1wdfKZRDN8TkOJKJ kII2Njfnmy1+pRybeAB8ptkxR6gP9kMMeIzYrXvlleHgv+7UNFasZjBPxjjUqwPfd/O/ dzyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=9CIFRRM6ox7lWSQtmrrJ6Gay4i6NbvbkEo0rHhRIs2Y=; b=IG3GjLG4BYpe7Lc4babIxAT/6+TaBzqtRIhuq9mMA7es6FXz1sTCXlq/djvXbM75bw acMspUyecxP2gdEHoMTb6mHGBPye9L+tpL6ppF1fo9SZermoF06PT9VsUXP5rVI7MVq+ qDA2yGOWr2WbxOE3Mu1Vujcq62B/qdemANmA1XrRa8fvCSwmHkklnRdFnY/BR+nvzREj JVwS+zKfgXQV9Be12BjQI/4wXdJHYS5ZvHDnLYfpHIHur7CDZb0Qr0JBLoogF91XeOD9 n6kMAafDeKdSNNBKaMRqRq/REt0SQBQXapuFXmKh/HRVRP6jQLJg90qBa5PiocBE8BN5 Q5lA== X-Gm-Message-State: APjAAAWg1AFQag2GjkuK8Wk/SmrQhnrs73quzCDUhge4nTR6Oz0dwqhd 2ji9B5w7BBnW9L6A7hFLTq3t5++2qujltFRLh7EHiQ== X-Google-Smtp-Source: APXvYqx38nMBVm/VdXSv20uRhtcYoOkLyL/qvphTrR/56wUzukTxZtLuuBJ+Dr0+x/TiK2y8BbNpDA477e7pG8GSYwQ= X-Received: by 2002:a5d:5491:: with SMTP id h17mr24851804wrv.374.1580164709139; Mon, 27 Jan 2020 14:38:29 -0800 (PST) MIME-Version: 1.0 References: <20200124200231.10517-1-ville.syrjala@linux.intel.com> <20200124200231.10517-7-ville.syrjala@linux.intel.com> In-Reply-To: <20200124200231.10517-7-ville.syrjala@linux.intel.com> From: Alex Deucher Date: Mon, 27 Jan 2020 17:38:15 -0500 Message-ID: Subject: Re: [PATCH 7/8] drm/edid: Constify lots of things To: Ville Syrjala X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Intel Graphics Development , Maling list - DRI developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gRnJpLCBKYW4gMjQsIDIwMjAgYXQgMzowMyBQTSBWaWxsZSBTeXJqYWxhCjx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4KPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Cj4gTGV0J3MgdHJ5IHRvIG1ha2UgYSBsb3Qg bW9yZSBzdHVmZiBjb25zdCBpbiB0aGUgZWRpZCBwYXJzZXIuCj4KPiBUaGUgImRvd25zaWRlIiBp cyB0aGF0IHdlIGNhbiBubyBsb25nZXIgbWFuZ2xlIHRoZSBFRElEIGluIHRoZQo+IG1pZGRsZSBv ZiB0aGUgcGFyc2luZyB0byBhcHBseSBxdWlya3MgKGRybV9tb2RlX2RldGFpbGVkKCkpLgo+IEkg ZG9uJ3QgcmVhbGx5IHRoaW5rIG1hbmdsaW5nIHRoZSBibG9iIGl0c2VsZiBpcyBzdWNoIGEgZ3Jl YXQKPiBpZGVhIGFueXdheSBzbyBJIHdvbid0IG1pc3MgdGhhdCBwYXJ0LiBCdXQgaWYgd2UgZG8g d2FudCBpdAo+IGJhY2sgSSBndWVzcyB3ZSBzaG91bGQgZG8gdGhlIG1hbmdsaW5nIGluIG9uZSBl eHBsaWNpdCBwbGFjZQo+IGJlZm9yZSB3ZSBvdGhlcndpc2UgcGFyc2UgdGhlIEVESUQuCj4KPiBT aWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgoKSSBnZW5lcmFsbHkgYWdyZWUsIGJ1dCBhcmUgdGhlcmUgYW55IHVzZXJzcGFjZSBleHBl Y3RhdGlvbnMgdGhhdCB0aGV5CndpbGwgYmUgZ2V0dGluZyBhIGNvcnJlY3RlZCBFRElEIGluIHNv bWUgY2FzZXM/CgpBbGV4Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5j IHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jICAgICAgfCAzMDMgKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o ICAgICB8ICAgNCArLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCspLCAxMzUg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0 b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiBpbmRleCBmNjMyY2EwNTk2 MGUuLjkyYTVjZDZmZjZiMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5l Y3Rvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+IEBAIC0yMzc3 LDcgKzIzNzcsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX3B1dF90aWxlX2dyb3VwKTsKPiAg ICogdGlsZSBncm91cCBvciBOVUxMIGlmIG5vdCBmb3VuZC4KPiAgICovCj4gIHN0cnVjdCBkcm1f dGlsZV9ncm91cCAqZHJtX21vZGVfZ2V0X3RpbGVfZ3JvdXAoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg dG9wb2xvZ3lbOF0pCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1OCB0b3BvbG9neVs4XSkKPiAgewo+ICAgICAgICAgc3RydWN0IGRybV90aWxl X2dyb3VwICp0ZzsKPiAgICAgICAgIGludCBpZDsKPiBAQCAtMjQwNyw3ICsyNDA3LDcgQEAgRVhQ T1JUX1NZTUJPTChkcm1fbW9kZV9nZXRfdGlsZV9ncm91cCk7Cj4gICAqIG5ldyB0aWxlIGdyb3Vw IG9yIE5VTEwuCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX3RpbGVfZ3JvdXAgKmRybV9tb2RlX2NyZWF0 ZV90aWxlX2dyb3VwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHRvcG9sb2d5WzhdKQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggdG9w b2xvZ3lbOF0pCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fdGlsZV9ncm91cCAqdGc7Cj4gICAg ICAgICBpbnQgcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gaW5kZXggZmQ5YjcyNDA2N2E3Li44ZTc2ZWZl MTY1NGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+IEBAIC04OCw3ICs4OCw3IEBACj4KPiAgc3RydWN0 IGRldGFpbGVkX21vZGVfY2xvc3VyZSB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwo+IC0gICAgICAgc3RydWN0IGVkaWQgKmVkaWQ7Cj4gKyAgICAgICBjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZDsKPiAgICAgICAgIGJvb2wgcHJlZmVycmVkOwo+ICAgICAgICAgdTMy IHF1aXJrczsKPiAgICAgICAgIGludCBtb2RlczsKPiBAQCAtMTU4NCw4ICsxNTg0LDggQEAgTU9E VUxFX1BBUk1fREVTQyhlZGlkX2ZpeHVwLAo+ICAgICAgICAgICAgICAgICAgIk1pbmltdW0gbnVt YmVyIG9mIHZhbGlkIEVESUQgaGVhZGVyIGJ5dGVzICgwLTgsIGRlZmF1bHQgNikiKTsKPgo+ICBz dGF0aWMgdm9pZCBkcm1fZ2V0X2Rpc3BsYXlpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBlZGlkICplZGlkKTsK PiAtc3RhdGljIGludCB2YWxpZGF0ZV9kaXNwbGF5aWQodTggKmRpc3BsYXlpZCwgaW50IGxlbmd0 aCwgaW50IGlkeCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGVkaWQgKmVkaWQpOwo+ICtzdGF0aWMgaW50IHZhbGlkYXRlX2Rpc3BsYXlpZChjb25zdCB1OCAq ZGlzcGxheWlkLCBpbnQgbGVuZ3RoLCBpbnQgaWR4KTsKPgo+ICBzdGF0aWMgaW50IGRybV9lZGlk X2Jsb2NrX2NoZWNrc3VtKGNvbnN0IHU4ICpyYXdfZWRpZCkKPiAgewo+IEBAIC0yMjA3LDQxICsy MjA3LDQxIEBAIHN0YXRpYyBib29sIGlzX2RldGFpbGVkX3RpbWluZ19kZXNjcmlwdG9yKGNvbnN0 IHU4IGRbMThdKQo+ICAgICAgICAgcmV0dXJuIGRbMF0gIT0gMHgwMCB8fCBkWzFdICE9IDB4MDA7 Cj4gIH0KPgo+IC10eXBlZGVmIHZvaWQgZGV0YWlsZWRfY2Ioc3RydWN0IGRldGFpbGVkX3RpbWlu ZyAqdGltaW5nLCB2b2lkICpjbG9zdXJlKTsKPiArdHlwZWRlZiB2b2lkIGRldGFpbGVkX2NiKGNv bnN0IHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqY2xvc3VyZSk7Cj4KPiAg c3RhdGljIHZvaWQKPiAtY2VhX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKHU4ICpleHQsIGRldGFp bGVkX2NiICpjYiwgdm9pZCAqY2xvc3VyZSkKPiArY2VhX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2Nr KGNvbnN0IHU4ICpleHQsIGRldGFpbGVkX2NiICpjYiwgdm9pZCAqY2xvc3VyZSkKPiAgewo+ICAg ICAgICAgaW50IGksIG47Cj4gICAgICAgICB1OCBkID0gZXh0WzB4MDJdOwo+IC0gICAgICAgdTgg KmRldF9iYXNlID0gZXh0ICsgZDsKPiArICAgICAgIGNvbnN0IHU4ICpkZXRfYmFzZSA9IGV4dCAr IGQ7Cj4KPiAgICAgICAgIGlmIChkIDwgNCB8fCBkID4gMTI3KQo+ICAgICAgICAgICAgICAgICBy ZXR1cm47Cj4KPiAgICAgICAgIG4gPSAoMTI3IC0gZCkgLyAxODsKPiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpKyspCj4gLSAgICAgICAgICAgICAgIGNiKChzdHJ1Y3QgZGV0YWlsZWRfdGlt aW5nICopKGRldF9iYXNlICsgMTggKiBpKSwgY2xvc3VyZSk7Cj4gKyAgICAgICAgICAgICAgIGNi KChjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICopKGRldF9iYXNlICsgMTggKiBpKSwgY2xv c3VyZSk7Cj4gIH0KPgo+ICBzdGF0aWMgdm9pZAo+IC12dGJfZm9yX2VhY2hfZGV0YWlsZWRfYmxv Y2sodTggKmV4dCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpjbG9zdXJlKQo+ICt2dGJfZm9yX2Vh Y2hfZGV0YWlsZWRfYmxvY2soY29uc3QgdTggKmV4dCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpj bG9zdXJlKQo+ICB7Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgaSwgbiA9IG1pbigoaW50KWV4dFsw eDAyXSwgNik7Cj4gLSAgICAgICB1OCAqZGV0X2Jhc2UgPSBleHQgKyA1Owo+ICsgICAgICAgY29u c3QgdTggKmRldF9iYXNlID0gZXh0ICsgNTsKPgo+ICAgICAgICAgaWYgKGV4dFsweDAxXSAhPSAx KQo+ICAgICAgICAgICAgICAgICByZXR1cm47IC8qIHVua25vd24gdmVyc2lvbiAqLwo+Cj4gICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQo+IC0gICAgICAgICAgICAgICBjYigoc3RydWN0 IGRldGFpbGVkX3RpbWluZyAqKShkZXRfYmFzZSArIDE4ICogaSksIGNsb3N1cmUpOwo+ICsgICAg ICAgICAgICAgICBjYigoY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqKShkZXRfYmFzZSAr IDE4ICogaSksIGNsb3N1cmUpOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQKPiAtZHJtX2Zvcl9lYWNo X2RldGFpbGVkX2Jsb2NrKHU4ICpyYXdfZWRpZCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpjbG9z dXJlKQo+ICtkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soY29uc3QgdTggKnJhd19lZGlkLCBk ZXRhaWxlZF9jYiAqY2IsIHZvaWQgKmNsb3N1cmUpCj4gIHsKPiArICAgICAgIGNvbnN0IHN0cnVj dCBlZGlkICplZGlkID0gKHN0cnVjdCBlZGlkICopcmF3X2VkaWQ7Cj4gICAgICAgICBpbnQgaTsK PiAtICAgICAgIHN0cnVjdCBlZGlkICplZGlkID0gKHN0cnVjdCBlZGlkICopcmF3X2VkaWQ7Cj4K PiAgICAgICAgIGlmIChlZGlkID09IE5VTEwpCj4gICAgICAgICAgICAgICAgIHJldHVybjsKPiBA QCAtMjI1MCw3ICsyMjUwLDcgQEAgZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKHU4ICpyYXdf ZWRpZCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpjbG9zdXJlKQo+ICAgICAgICAgICAgICAgICBj YigmKGVkaWQtPmRldGFpbGVkX3RpbWluZ3NbaV0pLCBjbG9zdXJlKTsKPgo+ICAgICAgICAgZm9y IChpID0gMTsgaSA8PSByYXdfZWRpZFsweDdlXTsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgIHU4 ICpleHQgPSByYXdfZWRpZCArIChpICogRURJRF9MRU5HVEgpOwo+ICsgICAgICAgICAgICAgICBj b25zdCB1OCAqZXh0ID0gcmF3X2VkaWQgKyAoaSAqIEVESURfTEVOR1RIKTsKPiAgICAgICAgICAg ICAgICAgc3dpdGNoICgqZXh0KSB7Cj4gICAgICAgICAgICAgICAgIGNhc2UgQ0VBX0VYVDoKPiAg ICAgICAgICAgICAgICAgICAgICAgICBjZWFfZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soZXh0LCBj YiwgY2xvc3VyZSk7Cj4gQEAgLTIyNjQsODEgKzIyNjQsMTA1IEBAIGRybV9mb3JfZWFjaF9kZXRh aWxlZF9ibG9jayh1OCAqcmF3X2VkaWQsIGRldGFpbGVkX2NiICpjYiwgdm9pZCAqY2xvc3VyZSkK PiAgICAgICAgIH0KPiAgfQo+Cj4gK3N0cnVjdCBib29sX2Nsb3N1cmUgewo+ICsgICAgICAgYm9v bCByZXQ7Cj4gK307Cj4gKwo+ICBzdGF0aWMgdm9pZAo+IC1pc19yYihzdHJ1Y3QgZGV0YWlsZWRf dGltaW5nICp0LCB2b2lkICpkYXRhKQo+ICtpc19yYihjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGlt aW5nICp0LCB2b2lkICpjKQo+ICB7Cj4gLSAgICAgICB1OCAqciA9ICh1OCAqKXQ7Cj4gKyAgICAg ICBzdHJ1Y3QgYm9vbF9jbG9zdXJlICpjbG9zdXJlID0gYzsKPiArICAgICAgIGNvbnN0IHU4ICpy ID0gKGNvbnN0IHU4ICopdDsKPgo+ICAgICAgICAgaWYgKCFpc19kaXNwbGF5X2Rlc2NyaXB0b3Io ciwgRURJRF9ERVRBSUxfTU9OSVRPUl9SQU5HRSkpCj4gICAgICAgICAgICAgICAgIHJldHVybjsK Pgo+ICAgICAgICAgaWYgKHJbMTVdICYgMHgxMCkKPiAtICAgICAgICAgICAgICAgKihib29sICop ZGF0YSA9IHRydWU7Cj4gKyAgICAgICAgICAgICAgIGNsb3N1cmUtPnJldCA9IHRydWU7Cj4gIH0K Pgo+ICAvKiBFRElEIDEuNCBkZWZpbmVzIHRoaXMgZXhwbGljaXRseS4gIEZvciBFRElEIDEuMywg d2UgZ3Vlc3MsIGJhZGx5LiAqLwo+ICBzdGF0aWMgYm9vbAo+IC1kcm1fbW9uaXRvcl9zdXBwb3J0 c19yYihzdHJ1Y3QgZWRpZCAqZWRpZCkKPiArZHJtX21vbml0b3Jfc3VwcG9ydHNfcmIoY29uc3Qg c3RydWN0IGVkaWQgKmVkaWQpCj4gIHsKPiAgICAgICAgIGlmIChlZGlkLT5yZXZpc2lvbiA+PSA0 KSB7Cj4gLSAgICAgICAgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7Cj4gLSAgICAgICAgICAgICAg IGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBpc19yYiwgJnJldCk7Cj4g LSAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBib29s X2Nsb3N1cmUgY2xvc3VyZSA9IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAucmV0ID0gZmFs c2UsCj4gKyAgICAgICAgICAgICAgIH07Cj4gKwo+ICsgICAgICAgICAgICAgICBkcm1fZm9yX2Vh Y2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRpZCwgaXNfcmIsICZjbG9zdXJlKTsKPiArCj4gKyAg ICAgICAgICAgICAgIHJldHVybiBjbG9zdXJlLnJldDsKPiAgICAgICAgIH0KPgo+ICAgICAgICAg cmV0dXJuICgoZWRpZC0+aW5wdXQgJiBEUk1fRURJRF9JTlBVVF9ESUdJVEFMKSAhPSAwKTsKPiAg fQo+Cj4gK3N0cnVjdCBkYXRhX2Nsb3N1cmUgewo+ICsgICAgICAgY29uc3QgdTggKmRhdGE7Cj4g K307Cj4gKwo+ICBzdGF0aWMgdm9pZAo+IC1maW5kX2d0ZjIoc3RydWN0IGRldGFpbGVkX3RpbWlu ZyAqdCwgdm9pZCAqZGF0YSkKPiArZG9fZmluZF9ndGYyKGNvbnN0IHN0cnVjdCBkZXRhaWxlZF90 aW1pbmcgKnQsIHZvaWQgKmMpCj4gIHsKPiAtICAgICAgIHU4ICpyID0gKHU4ICopdDsKPiArICAg ICAgIHN0cnVjdCBkYXRhX2Nsb3N1cmUgKmNsb3N1cmUgPSBjOwo+ICsgICAgICAgY29uc3QgdTgg KnIgPSAoY29uc3QgdTggKil0Owo+Cj4gICAgICAgICBpZiAoIWlzX2Rpc3BsYXlfZGVzY3JpcHRv cihyLCBFRElEX0RFVEFJTF9NT05JVE9SX1JBTkdFKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJu Owo+Cj4gICAgICAgICBpZiAoclsxMF0gPT0gMHgwMikKPiAtICAgICAgICAgICAgICAgKih1OCAq KilkYXRhID0gcjsKPiArICAgICAgICAgICAgICAgY2xvc3VyZS0+ZGF0YSA9IHI7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCB1OCAqCj4gK2ZpbmRfZ3RmMl9kZXNjcmlwdG9yKGNvbnN0IHN0cnVj dCBlZGlkICplZGlkKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGF0YV9jbG9zdXJlIGNsb3N1cmUg PSB7fTsKPiArCj4gKyAgICAgICBkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRp ZCwgZG9fZmluZF9ndGYyLCAmY2xvc3VyZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIGNsb3N1cmUu ZGF0YTsKPiAgfQo+Cj4gIC8qIFNlY29uZGFyeSBHVEYgY3VydmUga2lja3MgaW4gYWJvdmUgc29t ZSBicmVhayBmcmVxdWVuY3kgKi8KPiAgc3RhdGljIGludAo+IC1kcm1fZ3RmMl9oYnJlYWsoc3Ry dWN0IGVkaWQgKmVkaWQpCj4gK2RybV9ndGYyX2hicmVhayhjb25zdCBzdHJ1Y3QgZWRpZCAqZWRp ZCkKPiAgewo+IC0gICAgICAgdTggKnIgPSBOVUxMOwo+IC0gICAgICAgZHJtX2Zvcl9lYWNoX2Rl dGFpbGVkX2Jsb2NrKCh1OCAqKWVkaWQsIGZpbmRfZ3RmMiwgJnIpOwo+IC0gICAgICAgcmV0dXJu IHIgPyAoclsxMl0gKiAyKSA6IDA7Cj4gKyAgICAgICBjb25zdCB1OCAqciA9IGZpbmRfZ3RmMl9k ZXNjcmlwdG9yKGVkaWQpOwo+ICsKPiArICAgICAgIHJldHVybiByID8gclsxMl0gKiAyIDogMDsK PiAgfQo+Cj4gIHN0YXRpYyBpbnQKPiAtZHJtX2d0ZjJfMmMoc3RydWN0IGVkaWQgKmVkaWQpCj4g K2RybV9ndGYyXzJjKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQo+ICB7Cj4gLSAgICAgICB1OCAq ciA9IE5VTEw7Cj4gLSAgICAgICBkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRp ZCwgZmluZF9ndGYyLCAmcik7Cj4gKyAgICAgICBjb25zdCB1OCAqciA9IGZpbmRfZ3RmMl9kZXNj cmlwdG9yKGVkaWQpOwo+ICsKPiAgICAgICAgIHJldHVybiByID8gclsxM10gOiAwOwo+ICB9Cj4K PiAgc3RhdGljIGludAo+IC1kcm1fZ3RmMl9tKHN0cnVjdCBlZGlkICplZGlkKQo+ICtkcm1fZ3Rm Ml9tKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQo+ICB7Cj4gLSAgICAgICB1OCAqciA9IE5VTEw7 Cj4gLSAgICAgICBkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRpZCwgZmluZF9n dGYyLCAmcik7Cj4gLSAgICAgICByZXR1cm4gciA/IChyWzE1XSA8PCA4KSArIHJbMTRdIDogMDsK PiArICAgICAgIGNvbnN0IHU4ICpyID0gZmluZF9ndGYyX2Rlc2NyaXB0b3IoZWRpZCk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIHIgPyAoclsxNV0gPDwgOCkgfCByWzE0XSA6IDA7Cj4gIH0KPgo+ICBz dGF0aWMgaW50Cj4gLWRybV9ndGYyX2soc3RydWN0IGVkaWQgKmVkaWQpCj4gK2RybV9ndGYyX2so Y29uc3Qgc3RydWN0IGVkaWQgKmVkaWQpCj4gIHsKPiAtICAgICAgIHU4ICpyID0gTlVMTDsKPiAt ICAgICAgIGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBmaW5kX2d0ZjIs ICZyKTsKPiArICAgICAgIGNvbnN0IHU4ICpyID0gZmluZF9ndGYyX2Rlc2NyaXB0b3IoZWRpZCk7 Cj4gKwo+ICAgICAgICAgcmV0dXJuIHIgPyByWzE2XSA6IDA7Cj4gIH0KPgo+ICBzdGF0aWMgaW50 Cj4gLWRybV9ndGYyXzJqKHN0cnVjdCBlZGlkICplZGlkKQo+ICtkcm1fZ3RmMl8yaihjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+IC0gICAgICAgdTggKnIgPSBOVUxMOwo+IC0gICAgICAg ZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKCh1OCAqKWVkaWQsIGZpbmRfZ3RmMiwgJnIpOwo+ ICsgICAgICAgY29uc3QgdTggKnIgPSBmaW5kX2d0ZjJfZGVzY3JpcHRvcihlZGlkKTsKPiArCj4g ICAgICAgICByZXR1cm4gciA/IHJbMTddIDogMDsKPiAgfQo+Cj4gQEAgLTIzNDYsNyArMjM3MCw3 IEBAIGRybV9ndGYyXzJqKHN0cnVjdCBlZGlkICplZGlkKQo+ICAgKiBzdGFuZGFyZF90aW1pbmdf bGV2ZWwgLSBnZXQgc3RkLiB0aW1pbmcgbGV2ZWwoQ1ZUL0dURi9ETVQpCj4gICAqIEBlZGlkOiBF RElEIGJsb2NrIHRvIHNjYW4KPiAgICovCj4gLXN0YXRpYyBpbnQgc3RhbmRhcmRfdGltaW5nX2xl dmVsKHN0cnVjdCBlZGlkICplZGlkKQo+ICtzdGF0aWMgaW50IHN0YW5kYXJkX3RpbWluZ19sZXZl bChjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgaWYgKGVkaWQtPnJldmlz aW9uID49IDIpIHsKPiAgICAgICAgICAgICAgICAgaWYgKGVkaWQtPnJldmlzaW9uID49IDQgJiYg KGVkaWQtPmZlYXR1cmVzICYgRFJNX0VESURfRkVBVFVSRV9ERUZBVUxUX0dURikpCj4gQEAgLTIz ODEsOCArMjQwNSw5IEBAIGJhZF9zdGRfdGltaW5nKHU4IGEsIHU4IGIpCj4gICAqIGFuZCBjb252 ZXJ0IHRoZW0gaW50byBhIHJlYWwgbW9kZSB1c2luZyBDVlQvR1RGL0RNVC4KPiAgICovCj4gIHN0 YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqCj4gLWRybV9tb2RlX3N0ZChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAtICAgICAgICAgICAg c3RydWN0IHN0ZF90aW1pbmcgKnQpCj4gK2RybV9tb2RlX3N0ZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAr ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHN0ZF90aW1pbmcgKnQpCj4gIHsKPiAgICAgICAgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiAgICAgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptLCAqbW9kZSA9IE5VTEw7Cj4gQEAgLTI1MDAsNyArMjUyNSw3IEBA IGRybV9tb2RlX3N0ZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRp ZCAqZWRpZCwKPiAgICovCj4gIHN0YXRpYyB2b2lkCj4gIGRybV9tb2RlX2RvX2ludGVybGFjZV9x dWlyayhzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRldGFpbGVkX3BpeGVsX3RpbWluZyAqcHQpCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxlZF9waXhlbF90aW1pbmcgKnB0KQo+ ICB7Cj4gICAgICAgICBpbnQgaTsKPiAgICAgICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+IEBA IC0yNTQzLDEyICsyNTY4LDEyIEBAIGRybV9tb2RlX2RvX2ludGVybGFjZV9xdWlyayhzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAgICogcmV0dXJuIGEgbmV3IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlLgo+ICAgKi8KPiAgc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1f bW9kZV9kZXRhaWxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGVkaWQgKmVkaWQsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV0 YWlsZWRfdGltaW5nICp0aW1pbmcsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxl ZF90aW1pbmcgKnRpbWluZywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUzMiBxdWlya3MpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlOwo+IC0gICAgICAgc3RydWN0IGRldGFpbGVkX3BpeGVsX3RpbWluZyAqcHQg PSAmdGltaW5nLT5kYXRhLnBpeGVsX2RhdGE7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZGV0YWls ZWRfcGl4ZWxfdGltaW5nICpwdCA9ICZ0aW1pbmctPmRhdGEucGl4ZWxfZGF0YTsKPiAgICAgICAg IHVuc2lnbmVkIGhhY3RpdmUgPSAocHQtPmhhY3RpdmVfaGJsYW5rX2hpICYgMHhmMCkgPDwgNCB8 IHB0LT5oYWN0aXZlX2xvOwo+ICAgICAgICAgdW5zaWduZWQgdmFjdGl2ZSA9IChwdC0+dmFjdGl2 ZV92YmxhbmtfaGkgJiAweGYwKSA8PCA0IHwgcHQtPnZhY3RpdmVfbG87Cj4gICAgICAgICB1bnNp Z25lZCBoYmxhbmsgPSAocHQtPmhhY3RpdmVfaGJsYW5rX2hpICYgMHhmKSA8PCA4IHwgcHQtPmhi bGFua19sbzsKPiBAQCAtMjU5MCw5ICsyNjE1LDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpkcm1fbW9kZV9kZXRhaWxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgICAg ICAgICAgICAgICByZXR1cm4gTlVMTDsKPgo+ICAgICAgICAgaWYgKHF1aXJrcyAmIEVESURfUVVJ UktfMTM1X0NMT0NLX1RPT19ISUdIKQo+IC0gICAgICAgICAgICAgICB0aW1pbmctPnBpeGVsX2Ns b2NrID0gY3B1X3RvX2xlMTYoMTA4OCk7Cj4gLQo+IC0gICAgICAgbW9kZS0+Y2xvY2sgPSBsZTE2 X3RvX2NwdSh0aW1pbmctPnBpeGVsX2Nsb2NrKSAqIDEwOwo+ICsgICAgICAgICAgICAgICBtb2Rl LT5jbG9jayA9IDEwODggKiAxMDsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgbW9k ZS0+Y2xvY2sgPSBsZTE2X3RvX2NwdSh0aW1pbmctPnBpeGVsX2Nsb2NrKSAqIDEwOwo+Cj4gICAg ICAgICBtb2RlLT5oZGlzcGxheSA9IGhhY3RpdmU7Cj4gICAgICAgICBtb2RlLT5oc3luY19zdGFy dCA9IG1vZGUtPmhkaXNwbGF5ICsgaHN5bmNfb2Zmc2V0Owo+IEBAIC0yNjEzLDE0ICsyNjM4LDE0 IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVfZGV0YWlsZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgICAgICAgIGRybV9tb2RlX2RvX2ludGVybGFjZV9xdWly ayhtb2RlLCBwdCk7Cj4KPiAgICAgICAgIGlmIChxdWlya3MgJiBFRElEX1FVSVJLX0RFVEFJTEVE X1NZTkNfUFApIHsKPiAtICAgICAgICAgICAgICAgcHQtPm1pc2MgfD0gRFJNX0VESURfUFRfSFNZ TkNfUE9TSVRJVkUgfCBEUk1fRURJRF9QVF9WU1lOQ19QT1NJVElWRTsKPiArICAgICAgICAgICAg ICAgbW9kZS0+ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX05W U1lOQzsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIG1vZGUtPmZsYWdzIHw9 IChwdC0+bWlzYyAmIERSTV9FRElEX1BUX0hTWU5DX1BPU0lUSVZFKSA/Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgRFJNX01PREVfRkxBR19QSFNZTkMgOiBEUk1fTU9ERV9GTEFHX05IU1lOQzsK PiArICAgICAgICAgICAgICAgbW9kZS0+ZmxhZ3MgfD0gKHB0LT5taXNjICYgRFJNX0VESURfUFRf VlNZTkNfUE9TSVRJVkUpID8KPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9GTEFH X1BWU1lOQyA6IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwo+ICAgICAgICAgfQo+Cj4gLSAgICAgICBt b2RlLT5mbGFncyB8PSAocHQtPm1pc2MgJiBEUk1fRURJRF9QVF9IU1lOQ19QT1NJVElWRSkgPwo+ IC0gICAgICAgICAgICAgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyA6IERSTV9NT0RFX0ZMQUdfTkhT WU5DOwo+IC0gICAgICAgbW9kZS0+ZmxhZ3MgfD0gKHB0LT5taXNjICYgRFJNX0VESURfUFRfVlNZ TkNfUE9TSVRJVkUpID8KPiAtICAgICAgICAgICAgICAgRFJNX01PREVfRkxBR19QVlNZTkMgOiBE Uk1fTU9ERV9GTEFHX05WU1lOQzsKPiAtCj4gIHNldF9zaXplOgo+ICAgICAgICAgbW9kZS0+d2lk dGhfbW0gPSBwdC0+d2lkdGhfbW1fbG8gfCAocHQtPndpZHRoX2hlaWdodF9tbV9oaSAmIDB4ZjAp IDw8IDQ7Cj4gICAgICAgICBtb2RlLT5oZWlnaHRfbW0gPSBwdC0+aGVpZ2h0X21tX2xvIHwgKHB0 LT53aWR0aF9oZWlnaHRfbW1faGkgJiAweGYpIDw8IDg7Cj4gQEAgLTI2NDQsNyArMjY2OSw3IEBA IHN0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVfZGV0YWlsZWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPgo+ICBzdGF0aWMgYm9vbAo+ICBtb2RlX2luX2hzeW5jX3Jhbmdl KGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+IC0gICAgICAgICAgICAgICAg ICAgc3RydWN0IGVkaWQgKmVkaWQsIHU4ICp0KQo+ICsgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGVkaWQgKmVkaWQsIGNvbnN0IHU4ICp0KQo+ICB7Cj4gICAgICAgICBpbnQgaHN5bmMs IGhtaW4sIGhtYXg7Cj4KPiBAQCAtMjY2MSw3ICsyNjg2LDcgQEAgbW9kZV9pbl9oc3luY19yYW5n ZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPgo+ICBzdGF0aWMgYm9vbAo+ ICBtb2RlX2luX3ZzeW5jX3JhbmdlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl LAo+IC0gICAgICAgICAgICAgICAgICAgc3RydWN0IGVkaWQgKmVkaWQsIHU4ICp0KQo+ICsgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQsIGNvbnN0IHU4ICp0KQo+ICB7 Cj4gICAgICAgICBpbnQgdnN5bmMsIHZtaW4sIHZtYXg7Cj4KPiBAQCAtMjY3Nyw3ICsyNzAyLDcg QEAgbW9kZV9pbl92c3luY19yYW5nZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSwKPiAgfQo+Cj4gIHN0YXRpYyB1MzIKPiAtcmFuZ2VfcGl4ZWxfY2xvY2soc3RydWN0IGVkaWQg KmVkaWQsIHU4ICp0KQo+ICtyYW5nZV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgZWRpZCAqZWRp ZCwgY29uc3QgdTggKnQpCj4gIHsKPiAgICAgICAgIC8qIHVuc3BlY2lmaWVkICovCj4gICAgICAg ICBpZiAodFs5XSA9PSAwIHx8IHRbOV0gPT0gMjU1KQo+IEBAIC0yNjkyLDExICsyNzE3LDEyIEBA IHJhbmdlX3BpeGVsX2Nsb2NrKHN0cnVjdCBlZGlkICplZGlkLCB1OCAqdCkKPiAgfQo+Cj4gIHN0 YXRpYyBib29sCj4gLW1vZGVfaW5fcmFuZ2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUsIHN0cnVjdCBlZGlkICplZGlkLAo+IC0gICAgICAgICAgICAgc3RydWN0IGRldGFpbGVk X3RpbWluZyAqdGltaW5nKQo+ICttb2RlX2luX3JhbmdlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlLAo+ICsgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQsCj4g KyAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsK PiAgICAgICAgIHUzMiBtYXhfY2xvY2s7Cj4gLSAgICAgICB1OCAqdCA9ICh1OCAqKXRpbWluZzsK PiArICAgICAgIGNvbnN0IHU4ICp0ID0gKGNvbnN0IHU4ICopdGltaW5nOwo+Cj4gICAgICAgICBp ZiAoIW1vZGVfaW5faHN5bmNfcmFuZ2UobW9kZSwgZWRpZCwgdCkpCj4gICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiBAQCAtMjczOCw4ICsyNzY0LDkgQEAgc3RhdGljIGJvb2wgdmFsaWRf aW5mZXJyZWRfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICB9 Cj4KPiAgc3RhdGljIGludAo+IC1kcm1fZG10X21vZGVzX2Zvcl9yYW5nZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAtICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gK2RybV9kbXRfbW9kZXNf Zm9yX3JhbmdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nKQo+ICB7Cj4gICAgICAg ICBpbnQgaSwgbW9kZXMgPSAwOwo+ICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5l d21vZGU7Cj4gQEAgLTI3NzMsOCArMjgwMCw5IEBAIHZvaWQgZHJtX21vZGVfZml4dXBfMTM2Nng3 Njgoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gIH0KPgo+ICBzdGF0aWMgaW50Cj4g LWRybV9ndGZfbW9kZXNfZm9yX3JhbmdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IHN0cnVjdCBlZGlkICplZGlkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXRh aWxlZF90aW1pbmcgKnRpbWluZykKPiArZHJtX2d0Zl9tb2Rlc19mb3JfcmFuZ2Uoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBpLCBtb2RlcyA9IDA7 Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiBAQCAtMjgwMSw4 ICsyODI5LDkgQEAgZHJtX2d0Zl9tb2Rlc19mb3JfcmFuZ2Uoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQsCj4gIH0KPgo+ICBzdGF0aWMgaW50Cj4gLWRy bV9jdnRfbW9kZXNfZm9yX3JhbmdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0 cnVjdCBlZGlkICplZGlkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXRhaWxl ZF90aW1pbmcgKnRpbWluZykKPiArZHJtX2N2dF9tb2Rlc19mb3JfcmFuZ2Uoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGV0 YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBpLCBtb2RlcyA9IDA7Cj4g ICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiBAQCAtMjgzMCwxMSAr Mjg1OSwxMSBAQCBkcm1fY3Z0X21vZGVzX2Zvcl9yYW5nZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAgfQo+Cj4gIHN0YXRpYyB2b2lkCj4gLWRv X2luZmVycmVkX21vZGVzKHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykK PiArZG9faW5mZXJyZWRfbW9kZXMoY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5n LCB2b2lkICpjKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlICpj bG9zdXJlID0gYzsKPiAtICAgICAgIHN0cnVjdCBkZXRhaWxlZF9ub25fcGl4ZWwgKmRhdGEgPSAm dGltaW5nLT5kYXRhLm90aGVyX2RhdGE7Cj4gLSAgICAgICBzdHJ1Y3QgZGV0YWlsZWRfZGF0YV9t b25pdG9yX3JhbmdlICpyYW5nZSA9ICZkYXRhLT5kYXRhLnJhbmdlOwo+ICsgICAgICAgY29uc3Qg c3RydWN0IGRldGFpbGVkX25vbl9waXhlbCAqZGF0YSA9ICZ0aW1pbmctPmRhdGEub3RoZXJfZGF0 YTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxlZF9kYXRhX21vbml0b3JfcmFuZ2UgKnJh bmdlID0gJmRhdGEtPmRhdGEucmFuZ2U7Cj4KPiAgICAgICAgIGlmICghaXNfZGlzcGxheV9kZXNj cmlwdG9yKChjb25zdCB1OCAqKXRpbWluZywgRURJRF9ERVRBSUxfTU9OSVRPUl9SQU5HRSkpCj4g ICAgICAgICAgICAgICAgIHJldHVybjsKPiBAQCAtMjg2OCw3ICsyODk3LDggQEAgZG9faW5mZXJy ZWRfbW9kZXMoc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB9Cj4K PiAgc3RhdGljIGludAo+IC1hZGRfaW5mZXJyZWRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gK2FkZF9pbmZlcnJlZF9tb2RlcyhzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgc3RydWN0IGRldGFpbGVkX21vZGVfY2xv c3VyZSBjbG9zdXJlID0gewo+ICAgICAgICAgICAgICAgICAuY29ubmVjdG9yID0gY29ubmVjdG9y LAo+IEBAIC0yODc2LDE4ICsyOTA2LDIwIEBAIGFkZF9pbmZlcnJlZF9tb2RlcyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgICAgICAgIH07Cj4K PiAgICAgICAgIGlmICh2ZXJzaW9uX2dyZWF0ZXIoZWRpZCwgMSwgMCkpCj4gLSAgICAgICAgICAg ICAgIGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBkb19pbmZlcnJlZF9t b2RlcywKPiArICAgICAgICAgICAgICAgZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKChjb25z dCB1OCAqKWVkaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb19pbmZlcnJlZF9tb2RlcywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZjbG9zdXJlKTsKPgo+ICAgICAgICAgcmV0dXJuIGNsb3N1cmUubW9kZXM7Cj4g IH0KPgo+ICBzdGF0aWMgaW50Cj4gLWRybV9lc3QzX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsIHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZykKPiArZHJtX2VzdDNf bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBp LCBqLCBtLCBtb2RlcyA9IDA7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZTsKPiAtICAgICAgIHU4ICplc3QgPSAoKHU4ICopdGltaW5nKSArIDY7Cj4gKyAgICAgICBjb25z dCB1OCAqZXN0ID0gKChjb25zdCB1OCAqKXRpbWluZykgKyA2Owo+Cj4gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgNjsgaSsrKSB7Cj4gICAgICAgICAgICAgICAgIGZvciAoaiA9IDc7IGogPj0gMDsg ai0tKSB7Cj4gQEAgLTI5MTIsNyArMjk0NCw3IEBAIGRybV9lc3QzX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZykKPiAg fQo+Cj4gIHN0YXRpYyB2b2lkCj4gLWRvX2VzdGFibGlzaGVkX21vZGVzKHN0cnVjdCBkZXRhaWxl ZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykKPiArZG9fZXN0YWJsaXNoZWRfbW9kZXMoY29uc3Qg c3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB7Cj4gICAgICAgICBz dHJ1Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlICpjbG9zdXJlID0gYzsKPgo+IEBAIC0yOTMxLDcg KzI5NjMsOCBAQCBkb19lc3RhYmxpc2hlZF9tb2RlcyhzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0 aW1pbmcsIHZvaWQgKmMpCj4gICAqIChkZWZpbmVkIGFib3ZlKS4gIFRlYXNlIHRoZW0gb3V0IGFu ZCBhZGQgdGhlbSB0byB0aGUgZ2xvYmFsIG1vZGVzIGxpc3QuCj4gICAqLwo+ICBzdGF0aWMgaW50 Cj4gLWFkZF9lc3RhYmxpc2hlZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiArYWRkX2VzdGFibGlzaGVkX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBlZGlkICplZGlkKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIGVzdF9iaXRzID0gZWRpZC0+ZXN0 YWJsaXNoZWRfdGltaW5ncy50MSB8Cj4gQEAgLTI5NjIsMTkgKzI5OTUsMTkgQEAgYWRkX2VzdGFi bGlzaGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlk ICplZGlkKQo+ICB9Cj4KPiAgc3RhdGljIHZvaWQKPiAtZG9fc3RhbmRhcmRfbW9kZXMoc3RydWN0 IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICtkb19zdGFuZGFyZF9tb2Rlcyhj b25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcsIHZvaWQgKmMpCj4gIHsKPiAgICAg ICAgIHN0cnVjdCBkZXRhaWxlZF9tb2RlX2Nsb3N1cmUgKmNsb3N1cmUgPSBjOwo+IC0gICAgICAg c3RydWN0IGRldGFpbGVkX25vbl9waXhlbCAqZGF0YSA9ICZ0aW1pbmctPmRhdGEub3RoZXJfZGF0 YTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxlZF9ub25fcGl4ZWwgKmRhdGEgPSAmdGlt aW5nLT5kYXRhLm90aGVyX2RhdGE7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yID0gY2xvc3VyZS0+Y29ubmVjdG9yOwo+IC0gICAgICAgc3RydWN0IGVkaWQgKmVkaWQg PSBjbG9zdXJlLT5lZGlkOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQgPSBjbG9z dXJlLT5lZGlkOwo+ICAgICAgICAgaW50IGk7Cj4KPiAgICAgICAgIGlmICghaXNfZGlzcGxheV9k ZXNjcmlwdG9yKChjb25zdCB1OCAqKXRpbWluZywgRURJRF9ERVRBSUxfU1REX01PREVTKSkKPiAg ICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsr KSB7Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBzdGRfdGltaW5nICpzdGQgPSAmZGF0YS0+ZGF0 YS50aW1pbmdzW2ldOwo+ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc3RkX3RpbWluZyAq c3RkID0gJmRhdGEtPmRhdGEudGltaW5nc1tpXTsKPiAgICAgICAgICAgICAgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4KPiAgICAgICAgICAgICAgICAgbmV3bW9kZSA9IGRy bV9tb2RlX3N0ZChjb25uZWN0b3IsIGVkaWQsIHN0ZCk7Cj4gQEAgLTI5OTQsNyArMzAyNyw4IEBA IGRvX3N0YW5kYXJkX21vZGVzKHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAq YykKPiAgICogR1RGIG9yIENWVC4gR3JhYiB0aGVtIGZyb20gQGVkaWQgYW5kIGFkZCB0aGVtIHRv IHRoZSBsaXN0Lgo+ICAgKi8KPiAgc3RhdGljIGludAo+IC1hZGRfc3RhbmRhcmRfbW9kZXMoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gK2FkZF9z dGFuZGFyZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgaW50IGks IG1vZGVzID0gMDsKPiAgICAgICAgIHN0cnVjdCBkZXRhaWxlZF9tb2RlX2Nsb3N1cmUgY2xvc3Vy ZSA9IHsKPiBAQCAtMzAyMywxOCArMzA1NywxOCBAQCBhZGRfc3RhbmRhcmRfbW9kZXMoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gIH0KPgo+ICBz dGF0aWMgaW50IGRybV9jdnRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5n KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5n ICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBpLCBqLCBtb2RlcyA9IDA7Cj4gICAgICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiAgICAgICAgIHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiAtICAgICAgIHN0cnVjdCBjdnRfdGltaW5nICpj dnQ7Cj4gICAgICAgICBjb25zdCBpbnQgcmF0ZXNbXSA9IHsgNjAsIDg1LCA3NSwgNjAsIDUwIH07 Cj4gICAgICAgICBjb25zdCB1OCBlbXB0eVszXSA9IHsgMCwgMCwgMCB9Owo+Cj4gICAgICAgICBm b3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gICAgICAgICAgICAgICAgIGludCB1bmluaXRpYWxp emVkX3Zhcih3aWR0aCksIGhlaWdodDsKPiAtICAgICAgICAgICAgICAgY3Z0ID0gJih0aW1pbmct PmRhdGEub3RoZXJfZGF0YS5kYXRhLmN2dFtpXSk7Cj4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBjdnRfdGltaW5nICpjdnQgPQo+ICsgICAgICAgICAgICAgICAgICAgICAgICZ0aW1pbmct PmRhdGEub3RoZXJfZGF0YS5kYXRhLmN2dFtpXTsKPgo+ICAgICAgICAgICAgICAgICBpZiAoIW1l bWNtcChjdnQtPmNvZGUsIGVtcHR5LCAzKSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKPiBAQCAtMzA3Miw3ICszMTA2LDcgQEAgc3RhdGljIGludCBkcm1fY3Z0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIH0KPgo+ICBzdGF0aWMgdm9pZAo+IC1k b19jdnRfbW9kZShzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcsIHZvaWQgKmMpCj4gK2Rv X2N2dF9tb2RlKGNvbnN0IHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykK PiAgewo+ICAgICAgICAgc3RydWN0IGRldGFpbGVkX21vZGVfY2xvc3VyZSAqY2xvc3VyZSA9IGM7 Cj4KPiBAQCAtMzA4Myw3ICszMTE3LDggQEAgZG9fY3Z0X21vZGUoc3RydWN0IGRldGFpbGVkX3Rp bWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB9Cj4KPiAgc3RhdGljIGludAo+IC1hZGRfY3Z0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+ ICthZGRfY3Z0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgc3RydWN0IGRl dGFpbGVkX21vZGVfY2xvc3VyZSBjbG9zdXJlID0gewo+ICAgICAgICAgICAgICAgICAuY29ubmVj dG9yID0gY29ubmVjdG9yLAo+IEBAIC0zMTAxLDcgKzMxMzYsNyBAQCBhZGRfY3Z0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+ICBzdGF0 aWMgdm9pZCBmaXh1cF9kZXRhaWxlZF9jZWFfbW9kZV9jbG9jayhzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSk7Cj4KPiAgc3RhdGljIHZvaWQKPiAtZG9fZGV0YWlsZWRfbW9kZShzdHJ1Y3Qg ZGV0YWlsZWRfdGltaW5nICp0aW1pbmcsIHZvaWQgKmMpCj4gK2RvX2RldGFpbGVkX21vZGUoY29u c3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB7Cj4gICAgICAg ICBzdHJ1Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlICpjbG9zdXJlID0gYzsKPiAgICAgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdtb2RlOwo+IEBAIC0zMTM3LDggKzMxNzIsOCBAQCBk b19kZXRhaWxlZF9tb2RlKHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykK PiAgICogQHF1aXJrczogcXVpcmtzIHRvIGFwcGx5Cj4gICAqLwo+ICBzdGF0aWMgaW50Cj4gLWFk ZF9kZXRhaWxlZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3Qg ZWRpZCAqZWRpZCwKPiAtICAgICAgICAgICAgICAgICAgdTMyIHF1aXJrcykKPiArYWRkX2RldGFp bGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAgICAgICAg ICAgICAgIHN0cnVjdCBlZGlkICplZGlkLCB1MzIgcXVpcmtzKQo+ICB7Cj4gICAgICAgICBzdHJ1 Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlIGNsb3N1cmUgPSB7Cj4gICAgICAgICAgICAgICAgIC5j b25uZWN0b3IgPSBjb25uZWN0b3IsCj4gQEAgLTMxNzMsOSArMzIwOCwxMCBAQCBhZGRfZGV0YWls ZWRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVk aWQsCj4gIC8qCj4gICAqIFNlYXJjaCBFRElEIGZvciBDRUEgZXh0ZW5zaW9uIGJsb2NrLgo+ICAg Ki8KPiAtc3RhdGljIHU4ICpkcm1fZmluZF9lZGlkX2V4dGVuc2lvbihjb25zdCBzdHJ1Y3QgZWRp ZCAqZWRpZCwgaW50IGV4dF9pZCkKPiArc3RhdGljIGNvbnN0IHU4ICpkcm1fZmluZF9lZGlkX2V4 dGVuc2lvbihjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBleHRfaWQpCj4gIHsKPiAtICAgICAgIHU4ICplZGlkX2V4 dCA9IE5VTEw7Cj4gKyAgICAgICBjb25zdCB1OCAqZWRpZF9leHQgPSBOVUxMOwo+ICAgICAgICAg aW50IGk7Cj4KPiAgICAgICAgIC8qIE5vIEVESUQgb3IgRURJRCBleHRlbnNpb25zICovCj4gQEAg LTMxODQsNyArMzIyMCw3IEBAIHN0YXRpYyB1OCAqZHJtX2ZpbmRfZWRpZF9leHRlbnNpb24oY29u c3Qgc3RydWN0IGVkaWQgKmVkaWQsIGludCBleHRfaWQpCj4KPiAgICAgICAgIC8qIEZpbmQgQ0VB IGV4dGVuc2lvbiAqLwo+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVkaWQtPmV4dGVuc2lvbnM7 IGkrKykgewo+IC0gICAgICAgICAgICAgICBlZGlkX2V4dCA9ICh1OCAqKWVkaWQgKyBFRElEX0xF TkdUSCAqIChpICsgMSk7Cj4gKyAgICAgICAgICAgICAgIGVkaWRfZXh0ID0gKGNvbnN0IHU4ICop ZWRpZCArIEVESURfTEVOR1RIICogKGkgKyAxKTsKPiAgICAgICAgICAgICAgICAgaWYgKGVkaWRf ZXh0WzBdID09IGV4dF9pZCkKPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAg ICAgIH0KPiBAQCAtMzE5NiwxOSArMzIzMiwxOSBAQCBzdGF0aWMgdTggKmRybV9maW5kX2VkaWRf ZXh0ZW5zaW9uKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkLCBpbnQgZXh0X2lkKQo+ICB9Cj4KPgo+ IC1zdGF0aWMgdTggKmRybV9maW5kX2Rpc3BsYXlpZF9leHRlbnNpb24oY29uc3Qgc3RydWN0IGVk aWQgKmVkaWQpCj4gK3N0YXRpYyBjb25zdCB1OCAqZHJtX2ZpbmRfZGlzcGxheWlkX2V4dGVuc2lv bihjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgcmV0dXJuIGRybV9maW5k X2VkaWRfZXh0ZW5zaW9uKGVkaWQsIERJU1BMQVlJRF9FWFQpOwo+ICB9Cj4KPiAtc3RhdGljIHU4 ICpkcm1fZmluZF9jZWFfZXh0ZW5zaW9uKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQo+ICtzdGF0 aWMgY29uc3QgdTggKmRybV9maW5kX2NlYV9leHRlbnNpb24oY29uc3Qgc3RydWN0IGVkaWQgKmVk aWQpCj4gIHsKPiAgICAgICAgIGludCByZXQ7Cj4gICAgICAgICBpbnQgaWR4ID0gMTsKPiAgICAg ICAgIGludCBsZW5ndGggPSBFRElEX0xFTkdUSDsKPiAtICAgICAgIHN0cnVjdCBkaXNwbGF5aWRf YmxvY2sgKmJsb2NrOwo+IC0gICAgICAgdTggKmNlYTsKPiAtICAgICAgIHU4ICpkaXNwbGF5aWQ7 Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZGlzcGxheWlkX2Jsb2NrICpibG9jazsKPiArICAgICAg IGNvbnN0IHU4ICpjZWE7Cj4gKyAgICAgICBjb25zdCB1OCAqZGlzcGxheWlkOwo+Cj4gICAgICAg ICAvKiBMb29rIGZvciBhIHRvcCBsZXZlbCBDRUEgZXh0ZW5zaW9uIGJsb2NrICovCj4gICAgICAg ICBjZWEgPSBkcm1fZmluZF9lZGlkX2V4dGVuc2lvbihlZGlkLCBDRUFfRVhUKTsKPiBAQCAtNDMx NSwyOCArNDM1MSwzMCBAQCBkcm1fcGFyc2VfaGRtaV92c2RiX2F1ZGlvKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGNvbnN0IHU4ICpkYikKPiAgfQo+Cj4gIHN0YXRpYyB2b2lkCj4g LW1vbml0b3JfbmFtZShzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0LCB2b2lkICpkYXRhKQo+ICtt b25pdG9yX25hbWUoY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdCwgdm9pZCAqYykKPiAg ewo+ICsgICAgICAgc3RydWN0IGRhdGFfY2xvc3VyZSAqY2xvc3VyZSA9IGM7Cj4gKwo+ICAgICAg ICAgaWYgKCFpc19kaXNwbGF5X2Rlc2NyaXB0b3IoKGNvbnN0IHU4ICopdCwgRURJRF9ERVRBSUxf TU9OSVRPUl9OQU1FKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gLSAgICAgICAqKHU4 ICoqKWRhdGEgPSB0LT5kYXRhLm90aGVyX2RhdGEuZGF0YS5zdHIuc3RyOwo+ICsgICAgICAgY2xv c3VyZS0+ZGF0YSA9IHQtPmRhdGEub3RoZXJfZGF0YS5kYXRhLnN0ci5zdHI7Cj4gIH0KPgo+ICBz dGF0aWMgaW50IGdldF9tb25pdG9yX25hbWUoc3RydWN0IGVkaWQgKmVkaWQsIGNoYXIgbmFtZVsx M10pCj4gIHsKPiAtICAgICAgIGNoYXIgKmVkaWRfbmFtZSA9IE5VTEw7Cj4gKyAgICAgICBzdHJ1 Y3QgZGF0YV9jbG9zdXJlIGNsb3N1cmUgPSB7fTsKPiAgICAgICAgIGludCBtbmw7Cj4KPiAgICAg ICAgIGlmICghZWRpZCB8fCAhbmFtZSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4KPiAt ICAgICAgIGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBtb25pdG9yX25h bWUsICZlZGlkX25hbWUpOwo+IC0gICAgICAgZm9yIChtbmwgPSAwOyBlZGlkX25hbWUgJiYgbW5s IDwgMTM7IG1ubCsrKSB7Cj4gLSAgICAgICAgICAgICAgIGlmIChlZGlkX25hbWVbbW5sXSA9PSAw eDBhKQo+ICsgICAgICAgZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKChjb25zdCB1OCAqKWVk aWQsIG1vbml0b3JfbmFtZSwgJmNsb3N1cmUpOwo+ICsgICAgICAgZm9yIChtbmwgPSAwOyBjbG9z dXJlLmRhdGEgJiYgbW5sIDwgMTM7IG1ubCsrKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChjbG9z dXJlLmRhdGFbbW5sXSA9PSAweDBhKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ Cj4gLSAgICAgICAgICAgICAgIG5hbWVbbW5sXSA9IGVkaWRfbmFtZVttbmxdOwo+ICsgICAgICAg ICAgICAgICBuYW1lW21ubF0gPSBjbG9zdXJlLmRhdGFbbW5sXTsKPiAgICAgICAgIH0KPgo+ICAg ICAgICAgcmV0dXJuIG1ubDsKPiBAQCAtNDM4NiwxMSArNDQyNCw5IEBAIHN0YXRpYyB2b2lkIGNs ZWFyX2VsZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICBzdGF0aWMgdm9pZCBk cm1fZWRpZF90b19lbGQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVk aWQgKmVkaWQpCj4gIHsKPiAgICAgICAgIHVpbnQ4X3QgKmVsZCA9IGNvbm5lY3Rvci0+ZWxkOwo+ IC0gICAgICAgdTggKmNlYTsKPiAtICAgICAgIHU4ICpkYjsKPiArICAgICAgIGNvbnN0IHU4ICpj ZWE7Cj4gICAgICAgICBpbnQgdG90YWxfc2FkX2NvdW50ID0gMDsKPiAgICAgICAgIGludCBtbmw7 Cj4gLSAgICAgICBpbnQgZGJsOwo+Cj4gICAgICAgICBjbGVhcl9lbGQoY29ubmVjdG9yKTsKPgo+ IEBAIC00NDI1LDggKzQ0NjEsOCBAQCBzdGF0aWMgdm9pZCBkcm1fZWRpZF90b19lbGQoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gICAgICAgICAg ICAgICAgIH0KPgo+ICAgICAgICAgICAgICAgICBmb3JfZWFjaF9jZWFfZGIoY2VhLCBpLCBzdGFy dCwgZW5kKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZGIgPSAmY2VhW2ldOwo+IC0gICAg ICAgICAgICAgICAgICAgICAgIGRibCA9IGNlYV9kYl9wYXlsb2FkX2xlbihkYik7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdTggKmRiID0gJmNlYVtpXTsKPiArICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZGJsID0gY2VhX2RiX3BheWxvYWRfbGVuKGRiKTsKPgo+ICAgICAgICAg ICAgICAgICAgICAgICAgIHN3aXRjaCAoY2VhX2RiX3RhZyhkYikpIHsKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBzYWRfY291bnQ7Cj4gQEAgLTQ0ODQsNyArNDUyMCw3IEBA IGludCBkcm1fZWRpZF90b19zYWQoc3RydWN0IGVkaWQgKmVkaWQsIHN0cnVjdCBjZWFfc2FkICoq c2FkcykKPiAgewo+ICAgICAgICAgaW50IGNvdW50ID0gMDsKPiAgICAgICAgIGludCBpLCBzdGFy dCwgZW5kLCBkYmw7Cj4gLSAgICAgICB1OCAqY2VhOwo+ICsgICAgICAgY29uc3QgdTggKmNlYTsK Pgo+ICAgICAgICAgY2VhID0gZHJtX2ZpbmRfY2VhX2V4dGVuc2lvbihlZGlkKTsKPiAgICAgICAg IGlmICghY2VhKSB7Cj4gQEAgLTQ1MDMsNyArNDUzOSw3IEBAIGludCBkcm1fZWRpZF90b19zYWQo c3RydWN0IGVkaWQgKmVkaWQsIHN0cnVjdCBjZWFfc2FkICoqc2FkcykKPiAgICAgICAgIH0KPgo+ ICAgICAgICAgZm9yX2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQsIGVuZCkgewo+IC0gICAgICAg ICAgICAgICB1OCAqZGIgPSAmY2VhW2ldOwo+ICsgICAgICAgICAgICAgICBjb25zdCB1OCAqZGIg PSAmY2VhW2ldOwo+Cj4gICAgICAgICAgICAgICAgIGlmIChjZWFfZGJfdGFnKGRiKSA9PSBBVURJ T19CTE9DSykgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqOwo+IEBAIC00NTE0LDcg KzQ1NTAsNyBAQCBpbnQgZHJtX2VkaWRfdG9fc2FkKHN0cnVjdCBlZGlkICplZGlkLCBzdHJ1Y3Qg Y2VhX3NhZCAqKnNhZHMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEqc2FkcykKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICAgICAg ICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7Cj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1OCAqc2FkID0gJmRiWzEgKyBqICogM107Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1OCAqc2FkID0gJmRiWzEgKyBqICogM107 Cj4KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqc2Fkcylbal0uZm9ybWF0ID0g KHNhZFswXSAmIDB4NzgpID4+IDM7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KnNhZHMpW2pdLmNoYW5uZWxzID0gc2FkWzBdICYgMHg3Owo+IEBAIC00NjM1LDcgKzQ2NzEsNyBA QCBFWFBPUlRfU1lNQk9MKGRybV9hdl9zeW5jX2RlbGF5KTsKPiAgICovCj4gIGJvb2wgZHJtX2Rl dGVjdF9oZG1pX21vbml0b3Ioc3RydWN0IGVkaWQgKmVkaWQpCj4gIHsKPiAtICAgICAgIHU4ICpl ZGlkX2V4dDsKPiArICAgICAgIGNvbnN0IHU4ICplZGlkX2V4dDsKPiAgICAgICAgIGludCBpOwo+ ICAgICAgICAgaW50IHN0YXJ0X29mZnNldCwgZW5kX29mZnNldDsKPgo+IEBAIC00NjczLDcgKzQ3 MDksNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9kZXRlY3RfaGRtaV9tb25pdG9yKTsKPiAgICovCj4g IGJvb2wgZHJtX2RldGVjdF9tb25pdG9yX2F1ZGlvKHN0cnVjdCBlZGlkICplZGlkKQo+ICB7Cj4g LSAgICAgICB1OCAqZWRpZF9leHQ7Cj4gKyAgICAgICBjb25zdCB1OCAqZWRpZF9leHQ7Cj4gICAg ICAgICBpbnQgaSwgajsKPiAgICAgICAgIGJvb2wgaGFzX2F1ZGlvID0gZmFsc2U7Cj4gICAgICAg ICBpbnQgc3RhcnRfb2Zmc2V0LCBlbmRfb2Zmc2V0Owo+IEBAIC01MDE3LDEzICs1MDUzLDEzIEBA IHUzMiBkcm1fYWRkX2Rpc3BsYXlfaW5mbyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpCj4gICAgICAgICByZXR1cm4gcXVpcmtzOwo+ICB9Cj4K PiAtc3RhdGljIGludCB2YWxpZGF0ZV9kaXNwbGF5aWQodTggKmRpc3BsYXlpZCwgaW50IGxlbmd0 aCwgaW50IGlkeCkKPiArc3RhdGljIGludCB2YWxpZGF0ZV9kaXNwbGF5aWQoY29uc3QgdTggKmRp c3BsYXlpZCwgaW50IGxlbmd0aCwgaW50IGlkeCkKPiAgewo+ICAgICAgICAgaW50IGk7Cj4gICAg ICAgICB1OCBjc3VtID0gMDsKPiAtICAgICAgIHN0cnVjdCBkaXNwbGF5aWRfaGRyICpiYXNlOwo+ ICsgICAgICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9oZHIgKmJhc2U7Cj4KPiAtICAgICAgIGJh c2UgPSAoc3RydWN0IGRpc3BsYXlpZF9oZHIgKikmZGlzcGxheWlkW2lkeF07Cj4gKyAgICAgICBi YXNlID0gKGNvbnN0IHN0cnVjdCBkaXNwbGF5aWRfaGRyICopJmRpc3BsYXlpZFtpZHhdOwo+Cj4g ICAgICAgICBEUk1fREVCVUdfS01TKCJiYXNlIHJldmlzaW9uIDB4JXgsIGxlbmd0aCAlZCwgJWQg JWRcbiIsCj4gICAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnJldiwgYmFzZS0+Ynl0ZXMsIGJh c2UtPnByb2RfaWQsIGJhc2UtPmV4dF9jb3VudCk7Cj4gQEAgLTUwNDEsNyArNTA3Nyw3IEBAIHN0 YXRpYyBpbnQgdmFsaWRhdGVfZGlzcGxheWlkKHU4ICpkaXNwbGF5aWQsIGludCBsZW5ndGgsIGlu dCBpZHgpCj4gIH0KPgo+ICBzdGF0aWMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRybV9tb2Rl X2Rpc3BsYXlpZF9kZXRhaWxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk aXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nc18xICp0aW1pbmdzKQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBk aXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nc18xICp0aW1pbmdzKQo+ICB7Cj4gICAgICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiAgICAgICAgIHVuc2lnbmVkIHBpeGVsX2Nsb2Nr ID0gKHRpbWluZ3MtPnBpeGVsX2Nsb2NrWzBdIHwKPiBAQCAtNTA1Nyw2ICs1MDkzLDcgQEAgc3Rh dGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fbW9kZV9kaXNwbGF5aWRfZGV0YWlsZWQo c3RydWN0IGRybV9kZXZpY2UgKmQKPiAgICAgICAgIHVuc2lnbmVkIHZzeW5jX3dpZHRoID0gKHRp bWluZ3MtPnZzd1swXSB8IHRpbWluZ3MtPnZzd1sxXSA8PCA4KSArIDE7Cj4gICAgICAgICBib29s IGhzeW5jX3Bvc2l0aXZlID0gKHRpbWluZ3MtPmhzeW5jWzFdID4+IDcpICYgMHgxOwo+ICAgICAg ICAgYm9vbCB2c3luY19wb3NpdGl2ZSA9ICh0aW1pbmdzLT52c3luY1sxXSA+PiA3KSAmIDB4MTsK PiArCj4gICAgICAgICBtb2RlID0gZHJtX21vZGVfY3JlYXRlKGRldik7Cj4gICAgICAgICBpZiAo IW1vZGUpCj4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+IEBAIC01MDg2LDkgKzUxMjMs MTAgQEAgc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fbW9kZV9kaXNwbGF5aWRf ZGV0YWlsZWQoc3RydWN0IGRybV9kZXZpY2UgKmQKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgYWRkX2Rp c3BsYXlpZF9kZXRhaWxlZF8xX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpc3Bs YXlpZF9ibG9jayAqYmxvY2spCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9ibG9jayAqYmxvY2spCj4gIHsKPiAtICAgICAg IHN0cnVjdCBkaXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nX2Jsb2NrICpkZXQgPSAoc3RydWN0IGRp c3BsYXlpZF9kZXRhaWxlZF90aW1pbmdfYmxvY2sgKilibG9jazsKPiArICAgICAgIGNvbnN0IHN0 cnVjdCBkaXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nX2Jsb2NrICpkZXQgPQo+ICsgICAgICAgICAg ICAgICAoY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9kZXRhaWxlZF90aW1pbmdfYmxvY2sgKilibG9j azsKPiAgICAgICAgIGludCBpOwo+ICAgICAgICAgaW50IG51bV90aW1pbmdzOwo+ICAgICAgICAg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4gQEAgLTUwOTksNyArNTEzNyw3IEBA IHN0YXRpYyBpbnQgYWRkX2Rpc3BsYXlpZF9kZXRhaWxlZF8xX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4KPiAgICAgICAgIG51bV90aW1pbmdzID0gYmxvY2stPm51bV9i eXRlcyAvIDIwOwo+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV90aW1pbmdzOyBpKyspIHsK PiAtICAgICAgICAgICAgICAgc3RydWN0IGRpc3BsYXlpZF9kZXRhaWxlZF90aW1pbmdzXzEgKnRp bWluZ3MgPSAmZGV0LT50aW1pbmdzW2ldOwo+ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZGlzcGxheWlkX2RldGFpbGVkX3RpbWluZ3NfMSAqdGltaW5ncyA9ICZkZXQtPnRpbWluZ3NbaV07 Cj4KPiAgICAgICAgICAgICAgICAgbmV3bW9kZSA9IGRybV9tb2RlX2Rpc3BsYXlpZF9kZXRhaWxl ZChjb25uZWN0b3ItPmRldiwgdGltaW5ncyk7Cj4gICAgICAgICAgICAgICAgIGlmICghbmV3bW9k ZSkKPiBAQCAtNTExMiwxMyArNTE1MCwxMyBAQCBzdGF0aWMgaW50IGFkZF9kaXNwbGF5aWRfZGV0 YWlsZWRfMV9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICB9Cj4KPiAg c3RhdGljIGludCBhZGRfZGlzcGxheWlkX2RldGFpbGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBlZGlkICplZGlkKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+IC0gICAgICAgdTggKmRpc3BsYXlp ZDsKPiArICAgICAgIGNvbnN0IHU4ICpkaXNwbGF5aWQ7Cj4gICAgICAgICBpbnQgcmV0Owo+ICAg ICAgICAgaW50IGlkeCA9IDE7Cj4gICAgICAgICBpbnQgbGVuZ3RoID0gRURJRF9MRU5HVEg7Cj4g LSAgICAgICBzdHJ1Y3QgZGlzcGxheWlkX2Jsb2NrICpibG9jazsKPiArICAgICAgIGNvbnN0IHN0 cnVjdCBkaXNwbGF5aWRfYmxvY2sgKmJsb2NrOwo+ICAgICAgICAgaW50IG51bV9tb2RlcyA9IDA7 Cj4KPiAgICAgICAgIGRpc3BsYXlpZCA9IGRybV9maW5kX2Rpc3BsYXlpZF9leHRlbnNpb24oZWRp ZCk7Cj4gQEAgLTU3MjAsOSArNTc1OCwxMCBAQCBkcm1faGRtaV92ZW5kb3JfaW5mb2ZyYW1lX2Zy b21fZGlzcGxheV9tb2RlKHN0cnVjdCBoZG1pX3ZlbmRvcl9pbmZvZnJhbWUgKmZyYW1lLAo+ICBF WFBPUlRfU1lNQk9MKGRybV9oZG1pX3ZlbmRvcl9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUp Owo+Cj4gIHN0YXRpYyBpbnQgZHJtX3BhcnNlX3RpbGVkX2Jsb2NrKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRpc3BsYXlpZF9ibG9jayAqYmxvY2spCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9ibG9jayAqYmxvY2spCj4gIHsKPiAtICAgICAgIHN0 cnVjdCBkaXNwbGF5aWRfdGlsZWRfYmxvY2sgKnRpbGUgPSAoc3RydWN0IGRpc3BsYXlpZF90aWxl ZF9ibG9jayAqKWJsb2NrOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF90aWxlZF9i bG9jayAqdGlsZSA9Cj4gKyAgICAgICAgICAgICAgIChjb25zdCBzdHJ1Y3QgZGlzcGxheWlkX3Rp bGVkX2Jsb2NrICopYmxvY2s7Cj4gICAgICAgICB1MTYgdywgaDsKPiAgICAgICAgIHU4IHRpbGVf dl9sb2MsIHRpbGVfaF9sb2M7Cj4gICAgICAgICB1OCBudW1fdl90aWxlLCBudW1faF90aWxlOwo+ IEBAIC01Nzc0LDEyICs1ODEzLDEyIEBAIHN0YXRpYyBpbnQgZHJtX3BhcnNlX3RpbGVkX2Jsb2Nr KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIH0KPgo+ICBzdGF0aWMgaW50IGRy bV9wYXJzZV9kaXNwbGF5X2lkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqZGlzcGxheWlkLCBpbnQgbGVuZ3RoLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggKmRpc3BsYXlpZCwgaW50 IGxlbmd0aCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZWRpZF9l eHRlbnNpb24pCj4gIHsKPiAgICAgICAgIC8qIGlmIHRoaXMgaXMgYW4gRURJRCBleHRlbnNpb24g dGhlIGZpcnN0IGJ5dGUgd2lsbCBiZSAweDcwICovCj4gICAgICAgICBpbnQgaWR4ID0gMDsKPiAt ICAgICAgIHN0cnVjdCBkaXNwbGF5aWRfYmxvY2sgKmJsb2NrOwo+ICsgICAgICAgY29uc3Qgc3Ry dWN0IGRpc3BsYXlpZF9ibG9jayAqYmxvY2s7Cj4gICAgICAgICBpbnQgcmV0Owo+Cj4gICAgICAg ICBpZiAoaXNfZWRpZF9leHRlbnNpb24pCj4gQEAgLTU4MTUsMTEgKzU4NTQsMTMgQEAgc3RhdGlj IGludCBkcm1fcGFyc2VfZGlzcGxheV9pZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgZHJtX2dldF9kaXNwbGF5aWQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZWRpZCAqZWRpZCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZWRpZCAqZWRpZCkKPiAgewo+IC0gICAgICAgdm9pZCAqZGlzcGxheWlkID0gTlVMTDsKPiArICAg ICAgIGNvbnN0IHZvaWQgKmRpc3BsYXlpZDsKPiAgICAgICAgIGludCByZXQ7Cj4gKwo+ICAgICAg ICAgY29ubmVjdG9yLT5oYXNfdGlsZSA9IGZhbHNlOwo+ICsKPiAgICAgICAgIGRpc3BsYXlpZCA9 IGRybV9maW5kX2Rpc3BsYXlpZF9leHRlbnNpb24oZWRpZCk7Cj4gICAgICAgICBpZiAoIWRpc3Bs YXlpZCkgewo+ICAgICAgICAgICAgICAgICAvKiBkcm9wIHJlZmVyZW5jZSB0byBhbnkgdGlsZSBn cm91cCB3ZSBoYWQgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o IGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gaW5kZXggMjExMzUwMGI0MDc1Li5jMGY5 Y2UzZjRiMjQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gQEAgLTE1ODAsOSArMTU4MCw5IEBAIHN0 cnVjdCBkcm1fdGlsZV9ncm91cCB7Cj4gIH07Cj4KPiAgc3RydWN0IGRybV90aWxlX2dyb3VwICpk cm1fbW9kZV9jcmVhdGVfdGlsZV9ncm91cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciB0b3BvbG9n eVs4XSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1OCB0b3BvbG9neVs4XSk7Cj4gIHN0cnVjdCBkcm1fdGlsZV9ncm91cCAqZHJtX21v ZGVfZ2V0X3RpbGVfZ3JvdXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgdG9wb2xvZ3lbOF0pOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggdG9w b2xvZ3lbOF0pOwo+ICB2b2lkIGRybV9tb2RlX3B1dF90aWxlX2dyb3VwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3RpbGVf Z3JvdXAgKnRnKTsKPgo+IC0tCj4gMi4yNC4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg== 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=-6.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 792ECC2D0DB for ; Mon, 27 Jan 2020 22:38:36 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 4E8DF24656 for ; Mon, 27 Jan 2020 22:38:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pP+OUKUr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E8DF24656 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 10D5E6EC0F; Mon, 27 Jan 2020 22:38:32 +0000 (UTC) Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by gabe.freedesktop.org (Postfix) with ESMTPS id F1A7E6EC0E; Mon, 27 Jan 2020 22:38:30 +0000 (UTC) Received: by mail-wr1-x436.google.com with SMTP id g17so13673519wro.2; Mon, 27 Jan 2020 14:38:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=9CIFRRM6ox7lWSQtmrrJ6Gay4i6NbvbkEo0rHhRIs2Y=; b=pP+OUKUrb+5wz7vKfrSsrDWThkBg/zAw0piXd4bt56u0fiE+pnSW+IYPc/m9duxgpC w+m34kggNLLyezBbXtZ5Vq6puX6wbA3YNnaf0mQAoqeVQ9BfGPUMILKr9+zJWdOelhDf 0MluZsuMlOaWAznBzOXJn1yqi9HISZkDl5zmo2d3DtSFodBhHWvHbx8w0SNK45pKT0Le zV9Frbm2ih1YkflqOOSvnuBOsyWeIU9eCvw9nGprHvodQsGRO0SS1wdfKZRDN8TkOJKJ kII2Njfnmy1+pRybeAB8ptkxR6gP9kMMeIzYrXvlleHgv+7UNFasZjBPxjjUqwPfd/O/ dzyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=9CIFRRM6ox7lWSQtmrrJ6Gay4i6NbvbkEo0rHhRIs2Y=; b=IG3GjLG4BYpe7Lc4babIxAT/6+TaBzqtRIhuq9mMA7es6FXz1sTCXlq/djvXbM75bw acMspUyecxP2gdEHoMTb6mHGBPye9L+tpL6ppF1fo9SZermoF06PT9VsUXP5rVI7MVq+ qDA2yGOWr2WbxOE3Mu1Vujcq62B/qdemANmA1XrRa8fvCSwmHkklnRdFnY/BR+nvzREj JVwS+zKfgXQV9Be12BjQI/4wXdJHYS5ZvHDnLYfpHIHur7CDZb0Qr0JBLoogF91XeOD9 n6kMAafDeKdSNNBKaMRqRq/REt0SQBQXapuFXmKh/HRVRP6jQLJg90qBa5PiocBE8BN5 Q5lA== X-Gm-Message-State: APjAAAWg1AFQag2GjkuK8Wk/SmrQhnrs73quzCDUhge4nTR6Oz0dwqhd 2ji9B5w7BBnW9L6A7hFLTq3t5++2qujltFRLh7EHiQ== X-Google-Smtp-Source: APXvYqx38nMBVm/VdXSv20uRhtcYoOkLyL/qvphTrR/56wUzukTxZtLuuBJ+Dr0+x/TiK2y8BbNpDA477e7pG8GSYwQ= X-Received: by 2002:a5d:5491:: with SMTP id h17mr24851804wrv.374.1580164709139; Mon, 27 Jan 2020 14:38:29 -0800 (PST) MIME-Version: 1.0 References: <20200124200231.10517-1-ville.syrjala@linux.intel.com> <20200124200231.10517-7-ville.syrjala@linux.intel.com> In-Reply-To: <20200124200231.10517-7-ville.syrjala@linux.intel.com> From: Alex Deucher Date: Mon, 27 Jan 2020 17:38:15 -0500 Message-ID: To: Ville Syrjala Subject: Re: [Intel-gfx] [PATCH 7/8] drm/edid: Constify lots of things X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Intel Graphics Development , Maling list - DRI developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gRnJpLCBKYW4gMjQsIDIwMjAgYXQgMzowMyBQTSBWaWxsZSBTeXJqYWxhCjx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4KPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Cj4gTGV0J3MgdHJ5IHRvIG1ha2UgYSBsb3Qg bW9yZSBzdHVmZiBjb25zdCBpbiB0aGUgZWRpZCBwYXJzZXIuCj4KPiBUaGUgImRvd25zaWRlIiBp cyB0aGF0IHdlIGNhbiBubyBsb25nZXIgbWFuZ2xlIHRoZSBFRElEIGluIHRoZQo+IG1pZGRsZSBv ZiB0aGUgcGFyc2luZyB0byBhcHBseSBxdWlya3MgKGRybV9tb2RlX2RldGFpbGVkKCkpLgo+IEkg ZG9uJ3QgcmVhbGx5IHRoaW5rIG1hbmdsaW5nIHRoZSBibG9iIGl0c2VsZiBpcyBzdWNoIGEgZ3Jl YXQKPiBpZGVhIGFueXdheSBzbyBJIHdvbid0IG1pc3MgdGhhdCBwYXJ0LiBCdXQgaWYgd2UgZG8g d2FudCBpdAo+IGJhY2sgSSBndWVzcyB3ZSBzaG91bGQgZG8gdGhlIG1hbmdsaW5nIGluIG9uZSBl eHBsaWNpdCBwbGFjZQo+IGJlZm9yZSB3ZSBvdGhlcndpc2UgcGFyc2UgdGhlIEVESUQuCj4KPiBT aWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgoKSSBnZW5lcmFsbHkgYWdyZWUsIGJ1dCBhcmUgdGhlcmUgYW55IHVzZXJzcGFjZSBleHBl Y3RhdGlvbnMgdGhhdCB0aGV5CndpbGwgYmUgZ2V0dGluZyBhIGNvcnJlY3RlZCBFRElEIGluIHNv bWUgY2FzZXM/CgpBbGV4Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5j IHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jICAgICAgfCAzMDMgKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o ICAgICB8ICAgNCArLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCspLCAxMzUg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0 b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiBpbmRleCBmNjMyY2EwNTk2 MGUuLjkyYTVjZDZmZjZiMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5l Y3Rvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+IEBAIC0yMzc3 LDcgKzIzNzcsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX3B1dF90aWxlX2dyb3VwKTsKPiAg ICogdGlsZSBncm91cCBvciBOVUxMIGlmIG5vdCBmb3VuZC4KPiAgICovCj4gIHN0cnVjdCBkcm1f dGlsZV9ncm91cCAqZHJtX21vZGVfZ2V0X3RpbGVfZ3JvdXAoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg dG9wb2xvZ3lbOF0pCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1OCB0b3BvbG9neVs4XSkKPiAgewo+ICAgICAgICAgc3RydWN0IGRybV90aWxl X2dyb3VwICp0ZzsKPiAgICAgICAgIGludCBpZDsKPiBAQCAtMjQwNyw3ICsyNDA3LDcgQEAgRVhQ T1JUX1NZTUJPTChkcm1fbW9kZV9nZXRfdGlsZV9ncm91cCk7Cj4gICAqIG5ldyB0aWxlIGdyb3Vw IG9yIE5VTEwuCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX3RpbGVfZ3JvdXAgKmRybV9tb2RlX2NyZWF0 ZV90aWxlX2dyb3VwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHRvcG9sb2d5WzhdKQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggdG9w b2xvZ3lbOF0pCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fdGlsZV9ncm91cCAqdGc7Cj4gICAg ICAgICBpbnQgcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gaW5kZXggZmQ5YjcyNDA2N2E3Li44ZTc2ZWZl MTY1NGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+IEBAIC04OCw3ICs4OCw3IEBACj4KPiAgc3RydWN0 IGRldGFpbGVkX21vZGVfY2xvc3VyZSB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwo+IC0gICAgICAgc3RydWN0IGVkaWQgKmVkaWQ7Cj4gKyAgICAgICBjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZDsKPiAgICAgICAgIGJvb2wgcHJlZmVycmVkOwo+ICAgICAgICAgdTMy IHF1aXJrczsKPiAgICAgICAgIGludCBtb2RlczsKPiBAQCAtMTU4NCw4ICsxNTg0LDggQEAgTU9E VUxFX1BBUk1fREVTQyhlZGlkX2ZpeHVwLAo+ICAgICAgICAgICAgICAgICAgIk1pbmltdW0gbnVt YmVyIG9mIHZhbGlkIEVESUQgaGVhZGVyIGJ5dGVzICgwLTgsIGRlZmF1bHQgNikiKTsKPgo+ICBz dGF0aWMgdm9pZCBkcm1fZ2V0X2Rpc3BsYXlpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBlZGlkICplZGlkKTsK PiAtc3RhdGljIGludCB2YWxpZGF0ZV9kaXNwbGF5aWQodTggKmRpc3BsYXlpZCwgaW50IGxlbmd0 aCwgaW50IGlkeCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGVkaWQgKmVkaWQpOwo+ICtzdGF0aWMgaW50IHZhbGlkYXRlX2Rpc3BsYXlpZChjb25zdCB1OCAq ZGlzcGxheWlkLCBpbnQgbGVuZ3RoLCBpbnQgaWR4KTsKPgo+ICBzdGF0aWMgaW50IGRybV9lZGlk X2Jsb2NrX2NoZWNrc3VtKGNvbnN0IHU4ICpyYXdfZWRpZCkKPiAgewo+IEBAIC0yMjA3LDQxICsy MjA3LDQxIEBAIHN0YXRpYyBib29sIGlzX2RldGFpbGVkX3RpbWluZ19kZXNjcmlwdG9yKGNvbnN0 IHU4IGRbMThdKQo+ICAgICAgICAgcmV0dXJuIGRbMF0gIT0gMHgwMCB8fCBkWzFdICE9IDB4MDA7 Cj4gIH0KPgo+IC10eXBlZGVmIHZvaWQgZGV0YWlsZWRfY2Ioc3RydWN0IGRldGFpbGVkX3RpbWlu ZyAqdGltaW5nLCB2b2lkICpjbG9zdXJlKTsKPiArdHlwZWRlZiB2b2lkIGRldGFpbGVkX2NiKGNv bnN0IHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqY2xvc3VyZSk7Cj4KPiAg c3RhdGljIHZvaWQKPiAtY2VhX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKHU4ICpleHQsIGRldGFp bGVkX2NiICpjYiwgdm9pZCAqY2xvc3VyZSkKPiArY2VhX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2Nr KGNvbnN0IHU4ICpleHQsIGRldGFpbGVkX2NiICpjYiwgdm9pZCAqY2xvc3VyZSkKPiAgewo+ICAg ICAgICAgaW50IGksIG47Cj4gICAgICAgICB1OCBkID0gZXh0WzB4MDJdOwo+IC0gICAgICAgdTgg KmRldF9iYXNlID0gZXh0ICsgZDsKPiArICAgICAgIGNvbnN0IHU4ICpkZXRfYmFzZSA9IGV4dCAr IGQ7Cj4KPiAgICAgICAgIGlmIChkIDwgNCB8fCBkID4gMTI3KQo+ICAgICAgICAgICAgICAgICBy ZXR1cm47Cj4KPiAgICAgICAgIG4gPSAoMTI3IC0gZCkgLyAxODsKPiAgICAgICAgIGZvciAoaSA9 IDA7IGkgPCBuOyBpKyspCj4gLSAgICAgICAgICAgICAgIGNiKChzdHJ1Y3QgZGV0YWlsZWRfdGlt aW5nICopKGRldF9iYXNlICsgMTggKiBpKSwgY2xvc3VyZSk7Cj4gKyAgICAgICAgICAgICAgIGNi KChjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICopKGRldF9iYXNlICsgMTggKiBpKSwgY2xv c3VyZSk7Cj4gIH0KPgo+ICBzdGF0aWMgdm9pZAo+IC12dGJfZm9yX2VhY2hfZGV0YWlsZWRfYmxv Y2sodTggKmV4dCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpjbG9zdXJlKQo+ICt2dGJfZm9yX2Vh Y2hfZGV0YWlsZWRfYmxvY2soY29uc3QgdTggKmV4dCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpj bG9zdXJlKQo+ICB7Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgaSwgbiA9IG1pbigoaW50KWV4dFsw eDAyXSwgNik7Cj4gLSAgICAgICB1OCAqZGV0X2Jhc2UgPSBleHQgKyA1Owo+ICsgICAgICAgY29u c3QgdTggKmRldF9iYXNlID0gZXh0ICsgNTsKPgo+ICAgICAgICAgaWYgKGV4dFsweDAxXSAhPSAx KQo+ICAgICAgICAgICAgICAgICByZXR1cm47IC8qIHVua25vd24gdmVyc2lvbiAqLwo+Cj4gICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQo+IC0gICAgICAgICAgICAgICBjYigoc3RydWN0 IGRldGFpbGVkX3RpbWluZyAqKShkZXRfYmFzZSArIDE4ICogaSksIGNsb3N1cmUpOwo+ICsgICAg ICAgICAgICAgICBjYigoY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqKShkZXRfYmFzZSAr IDE4ICogaSksIGNsb3N1cmUpOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQKPiAtZHJtX2Zvcl9lYWNo X2RldGFpbGVkX2Jsb2NrKHU4ICpyYXdfZWRpZCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpjbG9z dXJlKQo+ICtkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soY29uc3QgdTggKnJhd19lZGlkLCBk ZXRhaWxlZF9jYiAqY2IsIHZvaWQgKmNsb3N1cmUpCj4gIHsKPiArICAgICAgIGNvbnN0IHN0cnVj dCBlZGlkICplZGlkID0gKHN0cnVjdCBlZGlkICopcmF3X2VkaWQ7Cj4gICAgICAgICBpbnQgaTsK PiAtICAgICAgIHN0cnVjdCBlZGlkICplZGlkID0gKHN0cnVjdCBlZGlkICopcmF3X2VkaWQ7Cj4K PiAgICAgICAgIGlmIChlZGlkID09IE5VTEwpCj4gICAgICAgICAgICAgICAgIHJldHVybjsKPiBA QCAtMjI1MCw3ICsyMjUwLDcgQEAgZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKHU4ICpyYXdf ZWRpZCwgZGV0YWlsZWRfY2IgKmNiLCB2b2lkICpjbG9zdXJlKQo+ICAgICAgICAgICAgICAgICBj YigmKGVkaWQtPmRldGFpbGVkX3RpbWluZ3NbaV0pLCBjbG9zdXJlKTsKPgo+ICAgICAgICAgZm9y IChpID0gMTsgaSA8PSByYXdfZWRpZFsweDdlXTsgaSsrKSB7Cj4gLSAgICAgICAgICAgICAgIHU4 ICpleHQgPSByYXdfZWRpZCArIChpICogRURJRF9MRU5HVEgpOwo+ICsgICAgICAgICAgICAgICBj b25zdCB1OCAqZXh0ID0gcmF3X2VkaWQgKyAoaSAqIEVESURfTEVOR1RIKTsKPiAgICAgICAgICAg ICAgICAgc3dpdGNoICgqZXh0KSB7Cj4gICAgICAgICAgICAgICAgIGNhc2UgQ0VBX0VYVDoKPiAg ICAgICAgICAgICAgICAgICAgICAgICBjZWFfZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soZXh0LCBj YiwgY2xvc3VyZSk7Cj4gQEAgLTIyNjQsODEgKzIyNjQsMTA1IEBAIGRybV9mb3JfZWFjaF9kZXRh aWxlZF9ibG9jayh1OCAqcmF3X2VkaWQsIGRldGFpbGVkX2NiICpjYiwgdm9pZCAqY2xvc3VyZSkK PiAgICAgICAgIH0KPiAgfQo+Cj4gK3N0cnVjdCBib29sX2Nsb3N1cmUgewo+ICsgICAgICAgYm9v bCByZXQ7Cj4gK307Cj4gKwo+ICBzdGF0aWMgdm9pZAo+IC1pc19yYihzdHJ1Y3QgZGV0YWlsZWRf dGltaW5nICp0LCB2b2lkICpkYXRhKQo+ICtpc19yYihjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGlt aW5nICp0LCB2b2lkICpjKQo+ICB7Cj4gLSAgICAgICB1OCAqciA9ICh1OCAqKXQ7Cj4gKyAgICAg ICBzdHJ1Y3QgYm9vbF9jbG9zdXJlICpjbG9zdXJlID0gYzsKPiArICAgICAgIGNvbnN0IHU4ICpy ID0gKGNvbnN0IHU4ICopdDsKPgo+ICAgICAgICAgaWYgKCFpc19kaXNwbGF5X2Rlc2NyaXB0b3Io ciwgRURJRF9ERVRBSUxfTU9OSVRPUl9SQU5HRSkpCj4gICAgICAgICAgICAgICAgIHJldHVybjsK Pgo+ICAgICAgICAgaWYgKHJbMTVdICYgMHgxMCkKPiAtICAgICAgICAgICAgICAgKihib29sICop ZGF0YSA9IHRydWU7Cj4gKyAgICAgICAgICAgICAgIGNsb3N1cmUtPnJldCA9IHRydWU7Cj4gIH0K Pgo+ICAvKiBFRElEIDEuNCBkZWZpbmVzIHRoaXMgZXhwbGljaXRseS4gIEZvciBFRElEIDEuMywg d2UgZ3Vlc3MsIGJhZGx5LiAqLwo+ICBzdGF0aWMgYm9vbAo+IC1kcm1fbW9uaXRvcl9zdXBwb3J0 c19yYihzdHJ1Y3QgZWRpZCAqZWRpZCkKPiArZHJtX21vbml0b3Jfc3VwcG9ydHNfcmIoY29uc3Qg c3RydWN0IGVkaWQgKmVkaWQpCj4gIHsKPiAgICAgICAgIGlmIChlZGlkLT5yZXZpc2lvbiA+PSA0 KSB7Cj4gLSAgICAgICAgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7Cj4gLSAgICAgICAgICAgICAg IGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBpc19yYiwgJnJldCk7Cj4g LSAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBib29s X2Nsb3N1cmUgY2xvc3VyZSA9IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAucmV0ID0gZmFs c2UsCj4gKyAgICAgICAgICAgICAgIH07Cj4gKwo+ICsgICAgICAgICAgICAgICBkcm1fZm9yX2Vh Y2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRpZCwgaXNfcmIsICZjbG9zdXJlKTsKPiArCj4gKyAg ICAgICAgICAgICAgIHJldHVybiBjbG9zdXJlLnJldDsKPiAgICAgICAgIH0KPgo+ICAgICAgICAg cmV0dXJuICgoZWRpZC0+aW5wdXQgJiBEUk1fRURJRF9JTlBVVF9ESUdJVEFMKSAhPSAwKTsKPiAg fQo+Cj4gK3N0cnVjdCBkYXRhX2Nsb3N1cmUgewo+ICsgICAgICAgY29uc3QgdTggKmRhdGE7Cj4g K307Cj4gKwo+ICBzdGF0aWMgdm9pZAo+IC1maW5kX2d0ZjIoc3RydWN0IGRldGFpbGVkX3RpbWlu ZyAqdCwgdm9pZCAqZGF0YSkKPiArZG9fZmluZF9ndGYyKGNvbnN0IHN0cnVjdCBkZXRhaWxlZF90 aW1pbmcgKnQsIHZvaWQgKmMpCj4gIHsKPiAtICAgICAgIHU4ICpyID0gKHU4ICopdDsKPiArICAg ICAgIHN0cnVjdCBkYXRhX2Nsb3N1cmUgKmNsb3N1cmUgPSBjOwo+ICsgICAgICAgY29uc3QgdTgg KnIgPSAoY29uc3QgdTggKil0Owo+Cj4gICAgICAgICBpZiAoIWlzX2Rpc3BsYXlfZGVzY3JpcHRv cihyLCBFRElEX0RFVEFJTF9NT05JVE9SX1JBTkdFKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJu Owo+Cj4gICAgICAgICBpZiAoclsxMF0gPT0gMHgwMikKPiAtICAgICAgICAgICAgICAgKih1OCAq KilkYXRhID0gcjsKPiArICAgICAgICAgICAgICAgY2xvc3VyZS0+ZGF0YSA9IHI7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCB1OCAqCj4gK2ZpbmRfZ3RmMl9kZXNjcmlwdG9yKGNvbnN0IHN0cnVj dCBlZGlkICplZGlkKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZGF0YV9jbG9zdXJlIGNsb3N1cmUg PSB7fTsKPiArCj4gKyAgICAgICBkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRp ZCwgZG9fZmluZF9ndGYyLCAmY2xvc3VyZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIGNsb3N1cmUu ZGF0YTsKPiAgfQo+Cj4gIC8qIFNlY29uZGFyeSBHVEYgY3VydmUga2lja3MgaW4gYWJvdmUgc29t ZSBicmVhayBmcmVxdWVuY3kgKi8KPiAgc3RhdGljIGludAo+IC1kcm1fZ3RmMl9oYnJlYWsoc3Ry dWN0IGVkaWQgKmVkaWQpCj4gK2RybV9ndGYyX2hicmVhayhjb25zdCBzdHJ1Y3QgZWRpZCAqZWRp ZCkKPiAgewo+IC0gICAgICAgdTggKnIgPSBOVUxMOwo+IC0gICAgICAgZHJtX2Zvcl9lYWNoX2Rl dGFpbGVkX2Jsb2NrKCh1OCAqKWVkaWQsIGZpbmRfZ3RmMiwgJnIpOwo+IC0gICAgICAgcmV0dXJu IHIgPyAoclsxMl0gKiAyKSA6IDA7Cj4gKyAgICAgICBjb25zdCB1OCAqciA9IGZpbmRfZ3RmMl9k ZXNjcmlwdG9yKGVkaWQpOwo+ICsKPiArICAgICAgIHJldHVybiByID8gclsxMl0gKiAyIDogMDsK PiAgfQo+Cj4gIHN0YXRpYyBpbnQKPiAtZHJtX2d0ZjJfMmMoc3RydWN0IGVkaWQgKmVkaWQpCj4g K2RybV9ndGYyXzJjKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQo+ICB7Cj4gLSAgICAgICB1OCAq ciA9IE5VTEw7Cj4gLSAgICAgICBkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRp ZCwgZmluZF9ndGYyLCAmcik7Cj4gKyAgICAgICBjb25zdCB1OCAqciA9IGZpbmRfZ3RmMl9kZXNj cmlwdG9yKGVkaWQpOwo+ICsKPiAgICAgICAgIHJldHVybiByID8gclsxM10gOiAwOwo+ICB9Cj4K PiAgc3RhdGljIGludAo+IC1kcm1fZ3RmMl9tKHN0cnVjdCBlZGlkICplZGlkKQo+ICtkcm1fZ3Rm Ml9tKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQo+ICB7Cj4gLSAgICAgICB1OCAqciA9IE5VTEw7 Cj4gLSAgICAgICBkcm1fZm9yX2VhY2hfZGV0YWlsZWRfYmxvY2soKHU4ICopZWRpZCwgZmluZF9n dGYyLCAmcik7Cj4gLSAgICAgICByZXR1cm4gciA/IChyWzE1XSA8PCA4KSArIHJbMTRdIDogMDsK PiArICAgICAgIGNvbnN0IHU4ICpyID0gZmluZF9ndGYyX2Rlc2NyaXB0b3IoZWRpZCk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIHIgPyAoclsxNV0gPDwgOCkgfCByWzE0XSA6IDA7Cj4gIH0KPgo+ICBz dGF0aWMgaW50Cj4gLWRybV9ndGYyX2soc3RydWN0IGVkaWQgKmVkaWQpCj4gK2RybV9ndGYyX2so Y29uc3Qgc3RydWN0IGVkaWQgKmVkaWQpCj4gIHsKPiAtICAgICAgIHU4ICpyID0gTlVMTDsKPiAt ICAgICAgIGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBmaW5kX2d0ZjIs ICZyKTsKPiArICAgICAgIGNvbnN0IHU4ICpyID0gZmluZF9ndGYyX2Rlc2NyaXB0b3IoZWRpZCk7 Cj4gKwo+ICAgICAgICAgcmV0dXJuIHIgPyByWzE2XSA6IDA7Cj4gIH0KPgo+ICBzdGF0aWMgaW50 Cj4gLWRybV9ndGYyXzJqKHN0cnVjdCBlZGlkICplZGlkKQo+ICtkcm1fZ3RmMl8yaihjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+IC0gICAgICAgdTggKnIgPSBOVUxMOwo+IC0gICAgICAg ZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKCh1OCAqKWVkaWQsIGZpbmRfZ3RmMiwgJnIpOwo+ ICsgICAgICAgY29uc3QgdTggKnIgPSBmaW5kX2d0ZjJfZGVzY3JpcHRvcihlZGlkKTsKPiArCj4g ICAgICAgICByZXR1cm4gciA/IHJbMTddIDogMDsKPiAgfQo+Cj4gQEAgLTIzNDYsNyArMjM3MCw3 IEBAIGRybV9ndGYyXzJqKHN0cnVjdCBlZGlkICplZGlkKQo+ICAgKiBzdGFuZGFyZF90aW1pbmdf bGV2ZWwgLSBnZXQgc3RkLiB0aW1pbmcgbGV2ZWwoQ1ZUL0dURi9ETVQpCj4gICAqIEBlZGlkOiBF RElEIGJsb2NrIHRvIHNjYW4KPiAgICovCj4gLXN0YXRpYyBpbnQgc3RhbmRhcmRfdGltaW5nX2xl dmVsKHN0cnVjdCBlZGlkICplZGlkKQo+ICtzdGF0aWMgaW50IHN0YW5kYXJkX3RpbWluZ19sZXZl bChjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgaWYgKGVkaWQtPnJldmlz aW9uID49IDIpIHsKPiAgICAgICAgICAgICAgICAgaWYgKGVkaWQtPnJldmlzaW9uID49IDQgJiYg KGVkaWQtPmZlYXR1cmVzICYgRFJNX0VESURfRkVBVFVSRV9ERUZBVUxUX0dURikpCj4gQEAgLTIz ODEsOCArMjQwNSw5IEBAIGJhZF9zdGRfdGltaW5nKHU4IGEsIHU4IGIpCj4gICAqIGFuZCBjb252 ZXJ0IHRoZW0gaW50byBhIHJlYWwgbW9kZSB1c2luZyBDVlQvR1RGL0RNVC4KPiAgICovCj4gIHN0 YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqCj4gLWRybV9tb2RlX3N0ZChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAtICAgICAgICAgICAg c3RydWN0IHN0ZF90aW1pbmcgKnQpCj4gK2RybV9tb2RlX3N0ZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAr ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHN0ZF90aW1pbmcgKnQpCj4gIHsKPiAgICAgICAgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiAgICAgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptLCAqbW9kZSA9IE5VTEw7Cj4gQEAgLTI1MDAsNyArMjUyNSw3IEBA IGRybV9tb2RlX3N0ZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRp ZCAqZWRpZCwKPiAgICovCj4gIHN0YXRpYyB2b2lkCj4gIGRybV9tb2RlX2RvX2ludGVybGFjZV9x dWlyayhzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRldGFpbGVkX3BpeGVsX3RpbWluZyAqcHQpCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxlZF9waXhlbF90aW1pbmcgKnB0KQo+ ICB7Cj4gICAgICAgICBpbnQgaTsKPiAgICAgICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+IEBA IC0yNTQzLDEyICsyNTY4LDEyIEBAIGRybV9tb2RlX2RvX2ludGVybGFjZV9xdWlyayhzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAgICogcmV0dXJuIGEgbmV3IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlLgo+ICAgKi8KPiAgc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1f bW9kZV9kZXRhaWxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGVkaWQgKmVkaWQsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV0 YWlsZWRfdGltaW5nICp0aW1pbmcsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxl ZF90aW1pbmcgKnRpbWluZywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUzMiBxdWlya3MpCj4gIHsKPiAgICAgICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlOwo+IC0gICAgICAgc3RydWN0IGRldGFpbGVkX3BpeGVsX3RpbWluZyAqcHQg PSAmdGltaW5nLT5kYXRhLnBpeGVsX2RhdGE7Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZGV0YWls ZWRfcGl4ZWxfdGltaW5nICpwdCA9ICZ0aW1pbmctPmRhdGEucGl4ZWxfZGF0YTsKPiAgICAgICAg IHVuc2lnbmVkIGhhY3RpdmUgPSAocHQtPmhhY3RpdmVfaGJsYW5rX2hpICYgMHhmMCkgPDwgNCB8 IHB0LT5oYWN0aXZlX2xvOwo+ICAgICAgICAgdW5zaWduZWQgdmFjdGl2ZSA9IChwdC0+dmFjdGl2 ZV92YmxhbmtfaGkgJiAweGYwKSA8PCA0IHwgcHQtPnZhY3RpdmVfbG87Cj4gICAgICAgICB1bnNp Z25lZCBoYmxhbmsgPSAocHQtPmhhY3RpdmVfaGJsYW5rX2hpICYgMHhmKSA8PCA4IHwgcHQtPmhi bGFua19sbzsKPiBAQCAtMjU5MCw5ICsyNjE1LDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpkcm1fbW9kZV9kZXRhaWxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgICAg ICAgICAgICAgICByZXR1cm4gTlVMTDsKPgo+ICAgICAgICAgaWYgKHF1aXJrcyAmIEVESURfUVVJ UktfMTM1X0NMT0NLX1RPT19ISUdIKQo+IC0gICAgICAgICAgICAgICB0aW1pbmctPnBpeGVsX2Ns b2NrID0gY3B1X3RvX2xlMTYoMTA4OCk7Cj4gLQo+IC0gICAgICAgbW9kZS0+Y2xvY2sgPSBsZTE2 X3RvX2NwdSh0aW1pbmctPnBpeGVsX2Nsb2NrKSAqIDEwOwo+ICsgICAgICAgICAgICAgICBtb2Rl LT5jbG9jayA9IDEwODggKiAxMDsKPiArICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgbW9k ZS0+Y2xvY2sgPSBsZTE2X3RvX2NwdSh0aW1pbmctPnBpeGVsX2Nsb2NrKSAqIDEwOwo+Cj4gICAg ICAgICBtb2RlLT5oZGlzcGxheSA9IGhhY3RpdmU7Cj4gICAgICAgICBtb2RlLT5oc3luY19zdGFy dCA9IG1vZGUtPmhkaXNwbGF5ICsgaHN5bmNfb2Zmc2V0Owo+IEBAIC0yNjEzLDE0ICsyNjM4LDE0 IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVfZGV0YWlsZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgICAgICAgIGRybV9tb2RlX2RvX2ludGVybGFjZV9xdWly ayhtb2RlLCBwdCk7Cj4KPiAgICAgICAgIGlmIChxdWlya3MgJiBFRElEX1FVSVJLX0RFVEFJTEVE X1NZTkNfUFApIHsKPiAtICAgICAgICAgICAgICAgcHQtPm1pc2MgfD0gRFJNX0VESURfUFRfSFNZ TkNfUE9TSVRJVkUgfCBEUk1fRURJRF9QVF9WU1lOQ19QT1NJVElWRTsKPiArICAgICAgICAgICAg ICAgbW9kZS0+ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX05W U1lOQzsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgICAgIG1vZGUtPmZsYWdzIHw9 IChwdC0+bWlzYyAmIERSTV9FRElEX1BUX0hTWU5DX1BPU0lUSVZFKSA/Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgRFJNX01PREVfRkxBR19QSFNZTkMgOiBEUk1fTU9ERV9GTEFHX05IU1lOQzsK PiArICAgICAgICAgICAgICAgbW9kZS0+ZmxhZ3MgfD0gKHB0LT5taXNjICYgRFJNX0VESURfUFRf VlNZTkNfUE9TSVRJVkUpID8KPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9GTEFH X1BWU1lOQyA6IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwo+ICAgICAgICAgfQo+Cj4gLSAgICAgICBt b2RlLT5mbGFncyB8PSAocHQtPm1pc2MgJiBEUk1fRURJRF9QVF9IU1lOQ19QT1NJVElWRSkgPwo+ IC0gICAgICAgICAgICAgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyA6IERSTV9NT0RFX0ZMQUdfTkhT WU5DOwo+IC0gICAgICAgbW9kZS0+ZmxhZ3MgfD0gKHB0LT5taXNjICYgRFJNX0VESURfUFRfVlNZ TkNfUE9TSVRJVkUpID8KPiAtICAgICAgICAgICAgICAgRFJNX01PREVfRkxBR19QVlNZTkMgOiBE Uk1fTU9ERV9GTEFHX05WU1lOQzsKPiAtCj4gIHNldF9zaXplOgo+ICAgICAgICAgbW9kZS0+d2lk dGhfbW0gPSBwdC0+d2lkdGhfbW1fbG8gfCAocHQtPndpZHRoX2hlaWdodF9tbV9oaSAmIDB4ZjAp IDw8IDQ7Cj4gICAgICAgICBtb2RlLT5oZWlnaHRfbW0gPSBwdC0+aGVpZ2h0X21tX2xvIHwgKHB0 LT53aWR0aF9oZWlnaHRfbW1faGkgJiAweGYpIDw8IDg7Cj4gQEAgLTI2NDQsNyArMjY2OSw3IEBA IHN0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVfZGV0YWlsZWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPgo+ICBzdGF0aWMgYm9vbAo+ICBtb2RlX2luX2hzeW5jX3Jhbmdl KGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+IC0gICAgICAgICAgICAgICAg ICAgc3RydWN0IGVkaWQgKmVkaWQsIHU4ICp0KQo+ICsgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGVkaWQgKmVkaWQsIGNvbnN0IHU4ICp0KQo+ICB7Cj4gICAgICAgICBpbnQgaHN5bmMs IGhtaW4sIGhtYXg7Cj4KPiBAQCAtMjY2MSw3ICsyNjg2LDcgQEAgbW9kZV9pbl9oc3luY19yYW5n ZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPgo+ICBzdGF0aWMgYm9vbAo+ ICBtb2RlX2luX3ZzeW5jX3JhbmdlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl LAo+IC0gICAgICAgICAgICAgICAgICAgc3RydWN0IGVkaWQgKmVkaWQsIHU4ICp0KQo+ICsgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQsIGNvbnN0IHU4ICp0KQo+ICB7 Cj4gICAgICAgICBpbnQgdnN5bmMsIHZtaW4sIHZtYXg7Cj4KPiBAQCAtMjY3Nyw3ICsyNzAyLDcg QEAgbW9kZV9pbl92c3luY19yYW5nZShjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSwKPiAgfQo+Cj4gIHN0YXRpYyB1MzIKPiAtcmFuZ2VfcGl4ZWxfY2xvY2soc3RydWN0IGVkaWQg KmVkaWQsIHU4ICp0KQo+ICtyYW5nZV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgZWRpZCAqZWRp ZCwgY29uc3QgdTggKnQpCj4gIHsKPiAgICAgICAgIC8qIHVuc3BlY2lmaWVkICovCj4gICAgICAg ICBpZiAodFs5XSA9PSAwIHx8IHRbOV0gPT0gMjU1KQo+IEBAIC0yNjkyLDExICsyNzE3LDEyIEBA IHJhbmdlX3BpeGVsX2Nsb2NrKHN0cnVjdCBlZGlkICplZGlkLCB1OCAqdCkKPiAgfQo+Cj4gIHN0 YXRpYyBib29sCj4gLW1vZGVfaW5fcmFuZ2UoY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUsIHN0cnVjdCBlZGlkICplZGlkLAo+IC0gICAgICAgICAgICAgc3RydWN0IGRldGFpbGVk X3RpbWluZyAqdGltaW5nKQo+ICttb2RlX2luX3JhbmdlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlLAo+ICsgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQsCj4g KyAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsK PiAgICAgICAgIHUzMiBtYXhfY2xvY2s7Cj4gLSAgICAgICB1OCAqdCA9ICh1OCAqKXRpbWluZzsK PiArICAgICAgIGNvbnN0IHU4ICp0ID0gKGNvbnN0IHU4ICopdGltaW5nOwo+Cj4gICAgICAgICBp ZiAoIW1vZGVfaW5faHN5bmNfcmFuZ2UobW9kZSwgZWRpZCwgdCkpCj4gICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiBAQCAtMjczOCw4ICsyNzY0LDkgQEAgc3RhdGljIGJvb2wgdmFsaWRf aW5mZXJyZWRfbW9kZShjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICB9 Cj4KPiAgc3RhdGljIGludAo+IC1kcm1fZG10X21vZGVzX2Zvcl9yYW5nZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAtICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gK2RybV9kbXRfbW9kZXNf Zm9yX3JhbmdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nKQo+ICB7Cj4gICAgICAg ICBpbnQgaSwgbW9kZXMgPSAwOwo+ICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5l d21vZGU7Cj4gQEAgLTI3NzMsOCArMjgwMCw5IEBAIHZvaWQgZHJtX21vZGVfZml4dXBfMTM2Nng3 Njgoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gIH0KPgo+ICBzdGF0aWMgaW50Cj4g LWRybV9ndGZfbW9kZXNfZm9yX3JhbmdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IHN0cnVjdCBlZGlkICplZGlkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXRh aWxlZF90aW1pbmcgKnRpbWluZykKPiArZHJtX2d0Zl9tb2Rlc19mb3JfcmFuZ2Uoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBpLCBtb2RlcyA9IDA7 Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiBAQCAtMjgwMSw4 ICsyODI5LDkgQEAgZHJtX2d0Zl9tb2Rlc19mb3JfcmFuZ2Uoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQsCj4gIH0KPgo+ICBzdGF0aWMgaW50Cj4gLWRy bV9jdnRfbW9kZXNfZm9yX3JhbmdlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0 cnVjdCBlZGlkICplZGlkLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXRhaWxl ZF90aW1pbmcgKnRpbWluZykKPiArZHJtX2N2dF9tb2Rlc19mb3JfcmFuZ2Uoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGV0 YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBpLCBtb2RlcyA9IDA7Cj4g ICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiBAQCAtMjgzMCwxMSAr Mjg1OSwxMSBAQCBkcm1fY3Z0X21vZGVzX2Zvcl9yYW5nZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiAgfQo+Cj4gIHN0YXRpYyB2b2lkCj4gLWRv X2luZmVycmVkX21vZGVzKHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykK PiArZG9faW5mZXJyZWRfbW9kZXMoY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5n LCB2b2lkICpjKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlICpj bG9zdXJlID0gYzsKPiAtICAgICAgIHN0cnVjdCBkZXRhaWxlZF9ub25fcGl4ZWwgKmRhdGEgPSAm dGltaW5nLT5kYXRhLm90aGVyX2RhdGE7Cj4gLSAgICAgICBzdHJ1Y3QgZGV0YWlsZWRfZGF0YV9t b25pdG9yX3JhbmdlICpyYW5nZSA9ICZkYXRhLT5kYXRhLnJhbmdlOwo+ICsgICAgICAgY29uc3Qg c3RydWN0IGRldGFpbGVkX25vbl9waXhlbCAqZGF0YSA9ICZ0aW1pbmctPmRhdGEub3RoZXJfZGF0 YTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxlZF9kYXRhX21vbml0b3JfcmFuZ2UgKnJh bmdlID0gJmRhdGEtPmRhdGEucmFuZ2U7Cj4KPiAgICAgICAgIGlmICghaXNfZGlzcGxheV9kZXNj cmlwdG9yKChjb25zdCB1OCAqKXRpbWluZywgRURJRF9ERVRBSUxfTU9OSVRPUl9SQU5HRSkpCj4g ICAgICAgICAgICAgICAgIHJldHVybjsKPiBAQCAtMjg2OCw3ICsyODk3LDggQEAgZG9faW5mZXJy ZWRfbW9kZXMoc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB9Cj4K PiAgc3RhdGljIGludAo+IC1hZGRfaW5mZXJyZWRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gK2FkZF9pbmZlcnJlZF9tb2RlcyhzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgc3RydWN0IGRldGFpbGVkX21vZGVfY2xv c3VyZSBjbG9zdXJlID0gewo+ICAgICAgICAgICAgICAgICAuY29ubmVjdG9yID0gY29ubmVjdG9y LAo+IEBAIC0yODc2LDE4ICsyOTA2LDIwIEBAIGFkZF9pbmZlcnJlZF9tb2RlcyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgICAgICAgIH07Cj4K PiAgICAgICAgIGlmICh2ZXJzaW9uX2dyZWF0ZXIoZWRpZCwgMSwgMCkpCj4gLSAgICAgICAgICAg ICAgIGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBkb19pbmZlcnJlZF9t b2RlcywKPiArICAgICAgICAgICAgICAgZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKChjb25z dCB1OCAqKWVkaWQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb19pbmZlcnJlZF9tb2RlcywKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZjbG9zdXJlKTsKPgo+ICAgICAgICAgcmV0dXJuIGNsb3N1cmUubW9kZXM7Cj4g IH0KPgo+ICBzdGF0aWMgaW50Cj4gLWRybV9lc3QzX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsIHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZykKPiArZHJtX2VzdDNf bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBp LCBqLCBtLCBtb2RlcyA9IDA7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZTsKPiAtICAgICAgIHU4ICplc3QgPSAoKHU4ICopdGltaW5nKSArIDY7Cj4gKyAgICAgICBjb25z dCB1OCAqZXN0ID0gKChjb25zdCB1OCAqKXRpbWluZykgKyA2Owo+Cj4gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgNjsgaSsrKSB7Cj4gICAgICAgICAgICAgICAgIGZvciAoaiA9IDc7IGogPj0gMDsg ai0tKSB7Cj4gQEAgLTI5MTIsNyArMjk0NCw3IEBAIGRybV9lc3QzX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZykKPiAg fQo+Cj4gIHN0YXRpYyB2b2lkCj4gLWRvX2VzdGFibGlzaGVkX21vZGVzKHN0cnVjdCBkZXRhaWxl ZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykKPiArZG9fZXN0YWJsaXNoZWRfbW9kZXMoY29uc3Qg c3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB7Cj4gICAgICAgICBz dHJ1Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlICpjbG9zdXJlID0gYzsKPgo+IEBAIC0yOTMxLDcg KzI5NjMsOCBAQCBkb19lc3RhYmxpc2hlZF9tb2RlcyhzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0 aW1pbmcsIHZvaWQgKmMpCj4gICAqIChkZWZpbmVkIGFib3ZlKS4gIFRlYXNlIHRoZW0gb3V0IGFu ZCBhZGQgdGhlbSB0byB0aGUgZ2xvYmFsIG1vZGVzIGxpc3QuCj4gICAqLwo+ICBzdGF0aWMgaW50 Cj4gLWFkZF9lc3RhYmxpc2hlZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiArYWRkX2VzdGFibGlzaGVkX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBlZGlkICplZGlkKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5kZXY7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIGVzdF9iaXRzID0gZWRpZC0+ZXN0 YWJsaXNoZWRfdGltaW5ncy50MSB8Cj4gQEAgLTI5NjIsMTkgKzI5OTUsMTkgQEAgYWRkX2VzdGFi bGlzaGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlk ICplZGlkKQo+ICB9Cj4KPiAgc3RhdGljIHZvaWQKPiAtZG9fc3RhbmRhcmRfbW9kZXMoc3RydWN0 IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICtkb19zdGFuZGFyZF9tb2Rlcyhj b25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcsIHZvaWQgKmMpCj4gIHsKPiAgICAg ICAgIHN0cnVjdCBkZXRhaWxlZF9tb2RlX2Nsb3N1cmUgKmNsb3N1cmUgPSBjOwo+IC0gICAgICAg c3RydWN0IGRldGFpbGVkX25vbl9waXhlbCAqZGF0YSA9ICZ0aW1pbmctPmRhdGEub3RoZXJfZGF0 YTsKPiArICAgICAgIGNvbnN0IHN0cnVjdCBkZXRhaWxlZF9ub25fcGl4ZWwgKmRhdGEgPSAmdGlt aW5nLT5kYXRhLm90aGVyX2RhdGE7Cj4gICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yID0gY2xvc3VyZS0+Y29ubmVjdG9yOwo+IC0gICAgICAgc3RydWN0IGVkaWQgKmVkaWQg PSBjbG9zdXJlLT5lZGlkOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGVkaWQgKmVkaWQgPSBjbG9z dXJlLT5lZGlkOwo+ICAgICAgICAgaW50IGk7Cj4KPiAgICAgICAgIGlmICghaXNfZGlzcGxheV9k ZXNjcmlwdG9yKChjb25zdCB1OCAqKXRpbWluZywgRURJRF9ERVRBSUxfU1REX01PREVTKSkKPiAg ICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsr KSB7Cj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBzdGRfdGltaW5nICpzdGQgPSAmZGF0YS0+ZGF0 YS50aW1pbmdzW2ldOwo+ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc3RkX3RpbWluZyAq c3RkID0gJmRhdGEtPmRhdGEudGltaW5nc1tpXTsKPiAgICAgICAgICAgICAgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4KPiAgICAgICAgICAgICAgICAgbmV3bW9kZSA9IGRy bV9tb2RlX3N0ZChjb25uZWN0b3IsIGVkaWQsIHN0ZCk7Cj4gQEAgLTI5OTQsNyArMzAyNyw4IEBA IGRvX3N0YW5kYXJkX21vZGVzKHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAq YykKPiAgICogR1RGIG9yIENWVC4gR3JhYiB0aGVtIGZyb20gQGVkaWQgYW5kIGFkZCB0aGVtIHRv IHRoZSBsaXN0Lgo+ICAgKi8KPiAgc3RhdGljIGludAo+IC1hZGRfc3RhbmRhcmRfbW9kZXMoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gK2FkZF9z dGFuZGFyZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgaW50IGks IG1vZGVzID0gMDsKPiAgICAgICAgIHN0cnVjdCBkZXRhaWxlZF9tb2RlX2Nsb3N1cmUgY2xvc3Vy ZSA9IHsKPiBAQCAtMzAyMywxOCArMzA1NywxOCBAQCBhZGRfc3RhbmRhcmRfbW9kZXMoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gIH0KPgo+ICBz dGF0aWMgaW50IGRybV9jdnRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5n KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGV0YWlsZWRfdGltaW5n ICp0aW1pbmcpCj4gIHsKPiAgICAgICAgIGludCBpLCBqLCBtb2RlcyA9IDA7Cj4gICAgICAgICBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKPiAgICAgICAgIHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiAtICAgICAgIHN0cnVjdCBjdnRfdGltaW5nICpj dnQ7Cj4gICAgICAgICBjb25zdCBpbnQgcmF0ZXNbXSA9IHsgNjAsIDg1LCA3NSwgNjAsIDUwIH07 Cj4gICAgICAgICBjb25zdCB1OCBlbXB0eVszXSA9IHsgMCwgMCwgMCB9Owo+Cj4gICAgICAgICBm b3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gICAgICAgICAgICAgICAgIGludCB1bmluaXRpYWxp emVkX3Zhcih3aWR0aCksIGhlaWdodDsKPiAtICAgICAgICAgICAgICAgY3Z0ID0gJih0aW1pbmct PmRhdGEub3RoZXJfZGF0YS5kYXRhLmN2dFtpXSk7Cj4gKyAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBjdnRfdGltaW5nICpjdnQgPQo+ICsgICAgICAgICAgICAgICAgICAgICAgICZ0aW1pbmct PmRhdGEub3RoZXJfZGF0YS5kYXRhLmN2dFtpXTsKPgo+ICAgICAgICAgICAgICAgICBpZiAoIW1l bWNtcChjdnQtPmNvZGUsIGVtcHR5LCAzKSkKPiAgICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKPiBAQCAtMzA3Miw3ICszMTA2LDcgQEAgc3RhdGljIGludCBkcm1fY3Z0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIH0KPgo+ICBzdGF0aWMgdm9pZAo+IC1k b19jdnRfbW9kZShzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0aW1pbmcsIHZvaWQgKmMpCj4gK2Rv X2N2dF9tb2RlKGNvbnN0IHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykK PiAgewo+ICAgICAgICAgc3RydWN0IGRldGFpbGVkX21vZGVfY2xvc3VyZSAqY2xvc3VyZSA9IGM7 Cj4KPiBAQCAtMzA4Myw3ICszMTE3LDggQEAgZG9fY3Z0X21vZGUoc3RydWN0IGRldGFpbGVkX3Rp bWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB9Cj4KPiAgc3RhdGljIGludAo+IC1hZGRfY3Z0X21v ZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+ ICthZGRfY3Z0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgc3RydWN0IGRl dGFpbGVkX21vZGVfY2xvc3VyZSBjbG9zdXJlID0gewo+ICAgICAgICAgICAgICAgICAuY29ubmVj dG9yID0gY29ubmVjdG9yLAo+IEBAIC0zMTAxLDcgKzMxMzYsNyBAQCBhZGRfY3Z0X21vZGVzKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQo+ICBzdGF0 aWMgdm9pZCBmaXh1cF9kZXRhaWxlZF9jZWFfbW9kZV9jbG9jayhzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSk7Cj4KPiAgc3RhdGljIHZvaWQKPiAtZG9fZGV0YWlsZWRfbW9kZShzdHJ1Y3Qg ZGV0YWlsZWRfdGltaW5nICp0aW1pbmcsIHZvaWQgKmMpCj4gK2RvX2RldGFpbGVkX21vZGUoY29u c3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdGltaW5nLCB2b2lkICpjKQo+ICB7Cj4gICAgICAg ICBzdHJ1Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlICpjbG9zdXJlID0gYzsKPiAgICAgICAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdtb2RlOwo+IEBAIC0zMTM3LDggKzMxNzIsOCBAQCBk b19kZXRhaWxlZF9tb2RlKHN0cnVjdCBkZXRhaWxlZF90aW1pbmcgKnRpbWluZywgdm9pZCAqYykK PiAgICogQHF1aXJrczogcXVpcmtzIHRvIGFwcGx5Cj4gICAqLwo+ICBzdGF0aWMgaW50Cj4gLWFk ZF9kZXRhaWxlZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3Qg ZWRpZCAqZWRpZCwKPiAtICAgICAgICAgICAgICAgICAgdTMyIHF1aXJrcykKPiArYWRkX2RldGFp bGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKyAgICAgICAgICAg ICAgICAgIHN0cnVjdCBlZGlkICplZGlkLCB1MzIgcXVpcmtzKQo+ICB7Cj4gICAgICAgICBzdHJ1 Y3QgZGV0YWlsZWRfbW9kZV9jbG9zdXJlIGNsb3N1cmUgPSB7Cj4gICAgICAgICAgICAgICAgIC5j b25uZWN0b3IgPSBjb25uZWN0b3IsCj4gQEAgLTMxNzMsOSArMzIwOCwxMCBAQCBhZGRfZGV0YWls ZWRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVk aWQsCj4gIC8qCj4gICAqIFNlYXJjaCBFRElEIGZvciBDRUEgZXh0ZW5zaW9uIGJsb2NrLgo+ICAg Ki8KPiAtc3RhdGljIHU4ICpkcm1fZmluZF9lZGlkX2V4dGVuc2lvbihjb25zdCBzdHJ1Y3QgZWRp ZCAqZWRpZCwgaW50IGV4dF9pZCkKPiArc3RhdGljIGNvbnN0IHU4ICpkcm1fZmluZF9lZGlkX2V4 dGVuc2lvbihjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBleHRfaWQpCj4gIHsKPiAtICAgICAgIHU4ICplZGlkX2V4 dCA9IE5VTEw7Cj4gKyAgICAgICBjb25zdCB1OCAqZWRpZF9leHQgPSBOVUxMOwo+ICAgICAgICAg aW50IGk7Cj4KPiAgICAgICAgIC8qIE5vIEVESUQgb3IgRURJRCBleHRlbnNpb25zICovCj4gQEAg LTMxODQsNyArMzIyMCw3IEBAIHN0YXRpYyB1OCAqZHJtX2ZpbmRfZWRpZF9leHRlbnNpb24oY29u c3Qgc3RydWN0IGVkaWQgKmVkaWQsIGludCBleHRfaWQpCj4KPiAgICAgICAgIC8qIEZpbmQgQ0VB IGV4dGVuc2lvbiAqLwo+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVkaWQtPmV4dGVuc2lvbnM7 IGkrKykgewo+IC0gICAgICAgICAgICAgICBlZGlkX2V4dCA9ICh1OCAqKWVkaWQgKyBFRElEX0xF TkdUSCAqIChpICsgMSk7Cj4gKyAgICAgICAgICAgICAgIGVkaWRfZXh0ID0gKGNvbnN0IHU4ICop ZWRpZCArIEVESURfTEVOR1RIICogKGkgKyAxKTsKPiAgICAgICAgICAgICAgICAgaWYgKGVkaWRf ZXh0WzBdID09IGV4dF9pZCkKPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAg ICAgIH0KPiBAQCAtMzE5NiwxOSArMzIzMiwxOSBAQCBzdGF0aWMgdTggKmRybV9maW5kX2VkaWRf ZXh0ZW5zaW9uKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkLCBpbnQgZXh0X2lkKQo+ICB9Cj4KPgo+ IC1zdGF0aWMgdTggKmRybV9maW5kX2Rpc3BsYXlpZF9leHRlbnNpb24oY29uc3Qgc3RydWN0IGVk aWQgKmVkaWQpCj4gK3N0YXRpYyBjb25zdCB1OCAqZHJtX2ZpbmRfZGlzcGxheWlkX2V4dGVuc2lv bihjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+ICAgICAgICAgcmV0dXJuIGRybV9maW5k X2VkaWRfZXh0ZW5zaW9uKGVkaWQsIERJU1BMQVlJRF9FWFQpOwo+ICB9Cj4KPiAtc3RhdGljIHU4 ICpkcm1fZmluZF9jZWFfZXh0ZW5zaW9uKGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQo+ICtzdGF0 aWMgY29uc3QgdTggKmRybV9maW5kX2NlYV9leHRlbnNpb24oY29uc3Qgc3RydWN0IGVkaWQgKmVk aWQpCj4gIHsKPiAgICAgICAgIGludCByZXQ7Cj4gICAgICAgICBpbnQgaWR4ID0gMTsKPiAgICAg ICAgIGludCBsZW5ndGggPSBFRElEX0xFTkdUSDsKPiAtICAgICAgIHN0cnVjdCBkaXNwbGF5aWRf YmxvY2sgKmJsb2NrOwo+IC0gICAgICAgdTggKmNlYTsKPiAtICAgICAgIHU4ICpkaXNwbGF5aWQ7 Cj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZGlzcGxheWlkX2Jsb2NrICpibG9jazsKPiArICAgICAg IGNvbnN0IHU4ICpjZWE7Cj4gKyAgICAgICBjb25zdCB1OCAqZGlzcGxheWlkOwo+Cj4gICAgICAg ICAvKiBMb29rIGZvciBhIHRvcCBsZXZlbCBDRUEgZXh0ZW5zaW9uIGJsb2NrICovCj4gICAgICAg ICBjZWEgPSBkcm1fZmluZF9lZGlkX2V4dGVuc2lvbihlZGlkLCBDRUFfRVhUKTsKPiBAQCAtNDMx NSwyOCArNDM1MSwzMCBAQCBkcm1fcGFyc2VfaGRtaV92c2RiX2F1ZGlvKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGNvbnN0IHU4ICpkYikKPiAgfQo+Cj4gIHN0YXRpYyB2b2lkCj4g LW1vbml0b3JfbmFtZShzdHJ1Y3QgZGV0YWlsZWRfdGltaW5nICp0LCB2b2lkICpkYXRhKQo+ICtt b25pdG9yX25hbWUoY29uc3Qgc3RydWN0IGRldGFpbGVkX3RpbWluZyAqdCwgdm9pZCAqYykKPiAg ewo+ICsgICAgICAgc3RydWN0IGRhdGFfY2xvc3VyZSAqY2xvc3VyZSA9IGM7Cj4gKwo+ICAgICAg ICAgaWYgKCFpc19kaXNwbGF5X2Rlc2NyaXB0b3IoKGNvbnN0IHU4ICopdCwgRURJRF9ERVRBSUxf TU9OSVRPUl9OQU1FKSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gLSAgICAgICAqKHU4 ICoqKWRhdGEgPSB0LT5kYXRhLm90aGVyX2RhdGEuZGF0YS5zdHIuc3RyOwo+ICsgICAgICAgY2xv c3VyZS0+ZGF0YSA9IHQtPmRhdGEub3RoZXJfZGF0YS5kYXRhLnN0ci5zdHI7Cj4gIH0KPgo+ICBz dGF0aWMgaW50IGdldF9tb25pdG9yX25hbWUoc3RydWN0IGVkaWQgKmVkaWQsIGNoYXIgbmFtZVsx M10pCj4gIHsKPiAtICAgICAgIGNoYXIgKmVkaWRfbmFtZSA9IE5VTEw7Cj4gKyAgICAgICBzdHJ1 Y3QgZGF0YV9jbG9zdXJlIGNsb3N1cmUgPSB7fTsKPiAgICAgICAgIGludCBtbmw7Cj4KPiAgICAg ICAgIGlmICghZWRpZCB8fCAhbmFtZSkKPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4KPiAt ICAgICAgIGRybV9mb3JfZWFjaF9kZXRhaWxlZF9ibG9jaygodTggKillZGlkLCBtb25pdG9yX25h bWUsICZlZGlkX25hbWUpOwo+IC0gICAgICAgZm9yIChtbmwgPSAwOyBlZGlkX25hbWUgJiYgbW5s IDwgMTM7IG1ubCsrKSB7Cj4gLSAgICAgICAgICAgICAgIGlmIChlZGlkX25hbWVbbW5sXSA9PSAw eDBhKQo+ICsgICAgICAgZHJtX2Zvcl9lYWNoX2RldGFpbGVkX2Jsb2NrKChjb25zdCB1OCAqKWVk aWQsIG1vbml0b3JfbmFtZSwgJmNsb3N1cmUpOwo+ICsgICAgICAgZm9yIChtbmwgPSAwOyBjbG9z dXJlLmRhdGEgJiYgbW5sIDwgMTM7IG1ubCsrKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChjbG9z dXJlLmRhdGFbbW5sXSA9PSAweDBhKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ Cj4gLSAgICAgICAgICAgICAgIG5hbWVbbW5sXSA9IGVkaWRfbmFtZVttbmxdOwo+ICsgICAgICAg ICAgICAgICBuYW1lW21ubF0gPSBjbG9zdXJlLmRhdGFbbW5sXTsKPiAgICAgICAgIH0KPgo+ICAg ICAgICAgcmV0dXJuIG1ubDsKPiBAQCAtNDM4NiwxMSArNDQyNCw5IEBAIHN0YXRpYyB2b2lkIGNs ZWFyX2VsZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICBzdGF0aWMgdm9pZCBk cm1fZWRpZF90b19lbGQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVk aWQgKmVkaWQpCj4gIHsKPiAgICAgICAgIHVpbnQ4X3QgKmVsZCA9IGNvbm5lY3Rvci0+ZWxkOwo+ IC0gICAgICAgdTggKmNlYTsKPiAtICAgICAgIHU4ICpkYjsKPiArICAgICAgIGNvbnN0IHU4ICpj ZWE7Cj4gICAgICAgICBpbnQgdG90YWxfc2FkX2NvdW50ID0gMDsKPiAgICAgICAgIGludCBtbmw7 Cj4gLSAgICAgICBpbnQgZGJsOwo+Cj4gICAgICAgICBjbGVhcl9lbGQoY29ubmVjdG9yKTsKPgo+ IEBAIC00NDI1LDggKzQ0NjEsOCBAQCBzdGF0aWMgdm9pZCBkcm1fZWRpZF90b19lbGQoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCj4gICAgICAgICAg ICAgICAgIH0KPgo+ICAgICAgICAgICAgICAgICBmb3JfZWFjaF9jZWFfZGIoY2VhLCBpLCBzdGFy dCwgZW5kKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZGIgPSAmY2VhW2ldOwo+IC0gICAg ICAgICAgICAgICAgICAgICAgIGRibCA9IGNlYV9kYl9wYXlsb2FkX2xlbihkYik7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdTggKmRiID0gJmNlYVtpXTsKPiArICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZGJsID0gY2VhX2RiX3BheWxvYWRfbGVuKGRiKTsKPgo+ICAgICAgICAg ICAgICAgICAgICAgICAgIHN3aXRjaCAoY2VhX2RiX3RhZyhkYikpIHsKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBzYWRfY291bnQ7Cj4gQEAgLTQ0ODQsNyArNDUyMCw3IEBA IGludCBkcm1fZWRpZF90b19zYWQoc3RydWN0IGVkaWQgKmVkaWQsIHN0cnVjdCBjZWFfc2FkICoq c2FkcykKPiAgewo+ICAgICAgICAgaW50IGNvdW50ID0gMDsKPiAgICAgICAgIGludCBpLCBzdGFy dCwgZW5kLCBkYmw7Cj4gLSAgICAgICB1OCAqY2VhOwo+ICsgICAgICAgY29uc3QgdTggKmNlYTsK Pgo+ICAgICAgICAgY2VhID0gZHJtX2ZpbmRfY2VhX2V4dGVuc2lvbihlZGlkKTsKPiAgICAgICAg IGlmICghY2VhKSB7Cj4gQEAgLTQ1MDMsNyArNDUzOSw3IEBAIGludCBkcm1fZWRpZF90b19zYWQo c3RydWN0IGVkaWQgKmVkaWQsIHN0cnVjdCBjZWFfc2FkICoqc2FkcykKPiAgICAgICAgIH0KPgo+ ICAgICAgICAgZm9yX2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQsIGVuZCkgewo+IC0gICAgICAg ICAgICAgICB1OCAqZGIgPSAmY2VhW2ldOwo+ICsgICAgICAgICAgICAgICBjb25zdCB1OCAqZGIg PSAmY2VhW2ldOwo+Cj4gICAgICAgICAgICAgICAgIGlmIChjZWFfZGJfdGFnKGRiKSA9PSBBVURJ T19CTE9DSykgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqOwo+IEBAIC00NTE0LDcg KzQ1NTAsNyBAQCBpbnQgZHJtX2VkaWRfdG9fc2FkKHN0cnVjdCBlZGlkICplZGlkLCBzdHJ1Y3Qg Y2VhX3NhZCAqKnNhZHMpCj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEqc2FkcykKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICAgICAgICAg ICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7Cj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1OCAqc2FkID0gJmRiWzEgKyBqICogM107Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1OCAqc2FkID0gJmRiWzEgKyBqICogM107 Cj4KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqc2Fkcylbal0uZm9ybWF0ID0g KHNhZFswXSAmIDB4NzgpID4+IDM7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KnNhZHMpW2pdLmNoYW5uZWxzID0gc2FkWzBdICYgMHg3Owo+IEBAIC00NjM1LDcgKzQ2NzEsNyBA QCBFWFBPUlRfU1lNQk9MKGRybV9hdl9zeW5jX2RlbGF5KTsKPiAgICovCj4gIGJvb2wgZHJtX2Rl dGVjdF9oZG1pX21vbml0b3Ioc3RydWN0IGVkaWQgKmVkaWQpCj4gIHsKPiAtICAgICAgIHU4ICpl ZGlkX2V4dDsKPiArICAgICAgIGNvbnN0IHU4ICplZGlkX2V4dDsKPiAgICAgICAgIGludCBpOwo+ ICAgICAgICAgaW50IHN0YXJ0X29mZnNldCwgZW5kX29mZnNldDsKPgo+IEBAIC00NjczLDcgKzQ3 MDksNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9kZXRlY3RfaGRtaV9tb25pdG9yKTsKPiAgICovCj4g IGJvb2wgZHJtX2RldGVjdF9tb25pdG9yX2F1ZGlvKHN0cnVjdCBlZGlkICplZGlkKQo+ICB7Cj4g LSAgICAgICB1OCAqZWRpZF9leHQ7Cj4gKyAgICAgICBjb25zdCB1OCAqZWRpZF9leHQ7Cj4gICAg ICAgICBpbnQgaSwgajsKPiAgICAgICAgIGJvb2wgaGFzX2F1ZGlvID0gZmFsc2U7Cj4gICAgICAg ICBpbnQgc3RhcnRfb2Zmc2V0LCBlbmRfb2Zmc2V0Owo+IEBAIC01MDE3LDEzICs1MDUzLDEzIEBA IHUzMiBkcm1fYWRkX2Rpc3BsYXlfaW5mbyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpCj4gICAgICAgICByZXR1cm4gcXVpcmtzOwo+ICB9Cj4K PiAtc3RhdGljIGludCB2YWxpZGF0ZV9kaXNwbGF5aWQodTggKmRpc3BsYXlpZCwgaW50IGxlbmd0 aCwgaW50IGlkeCkKPiArc3RhdGljIGludCB2YWxpZGF0ZV9kaXNwbGF5aWQoY29uc3QgdTggKmRp c3BsYXlpZCwgaW50IGxlbmd0aCwgaW50IGlkeCkKPiAgewo+ICAgICAgICAgaW50IGk7Cj4gICAg ICAgICB1OCBjc3VtID0gMDsKPiAtICAgICAgIHN0cnVjdCBkaXNwbGF5aWRfaGRyICpiYXNlOwo+ ICsgICAgICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9oZHIgKmJhc2U7Cj4KPiAtICAgICAgIGJh c2UgPSAoc3RydWN0IGRpc3BsYXlpZF9oZHIgKikmZGlzcGxheWlkW2lkeF07Cj4gKyAgICAgICBi YXNlID0gKGNvbnN0IHN0cnVjdCBkaXNwbGF5aWRfaGRyICopJmRpc3BsYXlpZFtpZHhdOwo+Cj4g ICAgICAgICBEUk1fREVCVUdfS01TKCJiYXNlIHJldmlzaW9uIDB4JXgsIGxlbmd0aCAlZCwgJWQg JWRcbiIsCj4gICAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnJldiwgYmFzZS0+Ynl0ZXMsIGJh c2UtPnByb2RfaWQsIGJhc2UtPmV4dF9jb3VudCk7Cj4gQEAgLTUwNDEsNyArNTA3Nyw3IEBAIHN0 YXRpYyBpbnQgdmFsaWRhdGVfZGlzcGxheWlkKHU4ICpkaXNwbGF5aWQsIGludCBsZW5ndGgsIGlu dCBpZHgpCj4gIH0KPgo+ICBzdGF0aWMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRybV9tb2Rl X2Rpc3BsYXlpZF9kZXRhaWxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk aXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nc18xICp0aW1pbmdzKQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBk aXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nc18xICp0aW1pbmdzKQo+ICB7Cj4gICAgICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiAgICAgICAgIHVuc2lnbmVkIHBpeGVsX2Nsb2Nr ID0gKHRpbWluZ3MtPnBpeGVsX2Nsb2NrWzBdIHwKPiBAQCAtNTA1Nyw2ICs1MDkzLDcgQEAgc3Rh dGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fbW9kZV9kaXNwbGF5aWRfZGV0YWlsZWQo c3RydWN0IGRybV9kZXZpY2UgKmQKPiAgICAgICAgIHVuc2lnbmVkIHZzeW5jX3dpZHRoID0gKHRp bWluZ3MtPnZzd1swXSB8IHRpbWluZ3MtPnZzd1sxXSA8PCA4KSArIDE7Cj4gICAgICAgICBib29s IGhzeW5jX3Bvc2l0aXZlID0gKHRpbWluZ3MtPmhzeW5jWzFdID4+IDcpICYgMHgxOwo+ICAgICAg ICAgYm9vbCB2c3luY19wb3NpdGl2ZSA9ICh0aW1pbmdzLT52c3luY1sxXSA+PiA3KSAmIDB4MTsK PiArCj4gICAgICAgICBtb2RlID0gZHJtX21vZGVfY3JlYXRlKGRldik7Cj4gICAgICAgICBpZiAo IW1vZGUpCj4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+IEBAIC01MDg2LDkgKzUxMjMs MTAgQEAgc3RhdGljIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkcm1fbW9kZV9kaXNwbGF5aWRf ZGV0YWlsZWQoc3RydWN0IGRybV9kZXZpY2UgKmQKPiAgfQo+Cj4gIHN0YXRpYyBpbnQgYWRkX2Rp c3BsYXlpZF9kZXRhaWxlZF8xX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRpc3Bs YXlpZF9ibG9jayAqYmxvY2spCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9ibG9jayAqYmxvY2spCj4gIHsKPiAtICAgICAg IHN0cnVjdCBkaXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nX2Jsb2NrICpkZXQgPSAoc3RydWN0IGRp c3BsYXlpZF9kZXRhaWxlZF90aW1pbmdfYmxvY2sgKilibG9jazsKPiArICAgICAgIGNvbnN0IHN0 cnVjdCBkaXNwbGF5aWRfZGV0YWlsZWRfdGltaW5nX2Jsb2NrICpkZXQgPQo+ICsgICAgICAgICAg ICAgICAoY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9kZXRhaWxlZF90aW1pbmdfYmxvY2sgKilibG9j azsKPiAgICAgICAgIGludCBpOwo+ICAgICAgICAgaW50IG51bV90aW1pbmdzOwo+ICAgICAgICAg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm5ld21vZGU7Cj4gQEAgLTUwOTksNyArNTEzNyw3IEBA IHN0YXRpYyBpbnQgYWRkX2Rpc3BsYXlpZF9kZXRhaWxlZF8xX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4KPiAgICAgICAgIG51bV90aW1pbmdzID0gYmxvY2stPm51bV9i eXRlcyAvIDIwOwo+ICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV90aW1pbmdzOyBpKyspIHsK PiAtICAgICAgICAgICAgICAgc3RydWN0IGRpc3BsYXlpZF9kZXRhaWxlZF90aW1pbmdzXzEgKnRp bWluZ3MgPSAmZGV0LT50aW1pbmdzW2ldOwo+ICsgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZGlzcGxheWlkX2RldGFpbGVkX3RpbWluZ3NfMSAqdGltaW5ncyA9ICZkZXQtPnRpbWluZ3NbaV07 Cj4KPiAgICAgICAgICAgICAgICAgbmV3bW9kZSA9IGRybV9tb2RlX2Rpc3BsYXlpZF9kZXRhaWxl ZChjb25uZWN0b3ItPmRldiwgdGltaW5ncyk7Cj4gICAgICAgICAgICAgICAgIGlmICghbmV3bW9k ZSkKPiBAQCAtNTExMiwxMyArNTE1MCwxMyBAQCBzdGF0aWMgaW50IGFkZF9kaXNwbGF5aWRfZGV0 YWlsZWRfMV9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICB9Cj4KPiAg c3RhdGljIGludCBhZGRfZGlzcGxheWlkX2RldGFpbGVkX21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBlZGlkICplZGlkKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgZWRpZCAqZWRpZCkKPiAgewo+IC0gICAgICAgdTggKmRpc3BsYXlp ZDsKPiArICAgICAgIGNvbnN0IHU4ICpkaXNwbGF5aWQ7Cj4gICAgICAgICBpbnQgcmV0Owo+ICAg ICAgICAgaW50IGlkeCA9IDE7Cj4gICAgICAgICBpbnQgbGVuZ3RoID0gRURJRF9MRU5HVEg7Cj4g LSAgICAgICBzdHJ1Y3QgZGlzcGxheWlkX2Jsb2NrICpibG9jazsKPiArICAgICAgIGNvbnN0IHN0 cnVjdCBkaXNwbGF5aWRfYmxvY2sgKmJsb2NrOwo+ICAgICAgICAgaW50IG51bV9tb2RlcyA9IDA7 Cj4KPiAgICAgICAgIGRpc3BsYXlpZCA9IGRybV9maW5kX2Rpc3BsYXlpZF9leHRlbnNpb24oZWRp ZCk7Cj4gQEAgLTU3MjAsOSArNTc1OCwxMCBAQCBkcm1faGRtaV92ZW5kb3JfaW5mb2ZyYW1lX2Zy b21fZGlzcGxheV9tb2RlKHN0cnVjdCBoZG1pX3ZlbmRvcl9pbmZvZnJhbWUgKmZyYW1lLAo+ICBF WFBPUlRfU1lNQk9MKGRybV9oZG1pX3ZlbmRvcl9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUp Owo+Cj4gIHN0YXRpYyBpbnQgZHJtX3BhcnNlX3RpbGVkX2Jsb2NrKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRpc3BsYXlpZF9ibG9jayAqYmxvY2spCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF9ibG9jayAqYmxvY2spCj4gIHsKPiAtICAgICAgIHN0 cnVjdCBkaXNwbGF5aWRfdGlsZWRfYmxvY2sgKnRpbGUgPSAoc3RydWN0IGRpc3BsYXlpZF90aWxl ZF9ibG9jayAqKWJsb2NrOwo+ICsgICAgICAgY29uc3Qgc3RydWN0IGRpc3BsYXlpZF90aWxlZF9i bG9jayAqdGlsZSA9Cj4gKyAgICAgICAgICAgICAgIChjb25zdCBzdHJ1Y3QgZGlzcGxheWlkX3Rp bGVkX2Jsb2NrICopYmxvY2s7Cj4gICAgICAgICB1MTYgdywgaDsKPiAgICAgICAgIHU4IHRpbGVf dl9sb2MsIHRpbGVfaF9sb2M7Cj4gICAgICAgICB1OCBudW1fdl90aWxlLCBudW1faF90aWxlOwo+ IEBAIC01Nzc0LDEyICs1ODEzLDEyIEBAIHN0YXRpYyBpbnQgZHJtX3BhcnNlX3RpbGVkX2Jsb2Nr KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIH0KPgo+ICBzdGF0aWMgaW50IGRy bV9wYXJzZV9kaXNwbGF5X2lkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqZGlzcGxheWlkLCBpbnQgbGVuZ3RoLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggKmRpc3BsYXlpZCwgaW50 IGxlbmd0aCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfZWRpZF9l eHRlbnNpb24pCj4gIHsKPiAgICAgICAgIC8qIGlmIHRoaXMgaXMgYW4gRURJRCBleHRlbnNpb24g dGhlIGZpcnN0IGJ5dGUgd2lsbCBiZSAweDcwICovCj4gICAgICAgICBpbnQgaWR4ID0gMDsKPiAt ICAgICAgIHN0cnVjdCBkaXNwbGF5aWRfYmxvY2sgKmJsb2NrOwo+ICsgICAgICAgY29uc3Qgc3Ry dWN0IGRpc3BsYXlpZF9ibG9jayAqYmxvY2s7Cj4gICAgICAgICBpbnQgcmV0Owo+Cj4gICAgICAg ICBpZiAoaXNfZWRpZF9leHRlbnNpb24pCj4gQEAgLTU4MTUsMTEgKzU4NTQsMTMgQEAgc3RhdGlj IGludCBkcm1fcGFyc2VfZGlzcGxheV9pZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgZHJtX2dldF9kaXNwbGF5aWQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZWRpZCAqZWRpZCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg ZWRpZCAqZWRpZCkKPiAgewo+IC0gICAgICAgdm9pZCAqZGlzcGxheWlkID0gTlVMTDsKPiArICAg ICAgIGNvbnN0IHZvaWQgKmRpc3BsYXlpZDsKPiAgICAgICAgIGludCByZXQ7Cj4gKwo+ICAgICAg ICAgY29ubmVjdG9yLT5oYXNfdGlsZSA9IGZhbHNlOwo+ICsKPiAgICAgICAgIGRpc3BsYXlpZCA9 IGRybV9maW5kX2Rpc3BsYXlpZF9leHRlbnNpb24oZWRpZCk7Cj4gICAgICAgICBpZiAoIWRpc3Bs YXlpZCkgewo+ICAgICAgICAgICAgICAgICAvKiBkcm9wIHJlZmVyZW5jZSB0byBhbnkgdGlsZSBn cm91cCB3ZSBoYWQgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5o IGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gaW5kZXggMjExMzUwMGI0MDc1Li5jMGY5 Y2UzZjRiMjQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gQEAgLTE1ODAsOSArMTU4MCw5IEBAIHN0 cnVjdCBkcm1fdGlsZV9ncm91cCB7Cj4gIH07Cj4KPiAgc3RydWN0IGRybV90aWxlX2dyb3VwICpk cm1fbW9kZV9jcmVhdGVfdGlsZV9ncm91cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciB0b3BvbG9n eVs4XSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1OCB0b3BvbG9neVs4XSk7Cj4gIHN0cnVjdCBkcm1fdGlsZV9ncm91cCAqZHJtX21v ZGVfZ2V0X3RpbGVfZ3JvdXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgdG9wb2xvZ3lbOF0pOwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggdG9w b2xvZ3lbOF0pOwo+ICB2b2lkIGRybV9tb2RlX3B1dF90aWxlX2dyb3VwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3RpbGVf Z3JvdXAgKnRnKTsKPgo+IC0tCj4gMi4yNC4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==