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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08543C433F5 for ; Thu, 6 Oct 2022 05:19:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229981AbiJFFTB (ORCPT ); Thu, 6 Oct 2022 01:19:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230152AbiJFFS6 (ORCPT ); Thu, 6 Oct 2022 01:18:58 -0400 Received: from mail-vs1-xe36.google.com (mail-vs1-xe36.google.com [IPv6:2607:f8b0:4864:20::e36]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 953EB89CF8 for ; Wed, 5 Oct 2022 22:18:54 -0700 (PDT) Received: by mail-vs1-xe36.google.com with SMTP id 3so963613vsh.5 for ; Wed, 05 Oct 2022 22:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=AljR3Frb1fNKMl2Wlwr9MQE1IKSI2l0hQHDbMIYXtmw=; b=NJluOgI/ubAdvj/94z9Pao9xK1DIgOBDl5YWfR/ws+wYtvUyRVZjNonXjh72IMJhYH l6xdRAZPDZUV4u4dyp9Wz6t5zKj1qLnUtZWtBGB/XSWAfKt0P97534WGWeKAGwQ2zcYg HBtzfbknFCnfohNc3nkRfn2vzfDW5rFLawsucp9vj7pukVNC/ENUDkCQE8d6zDR1cCNh 1+Cucqv+G9oGQTJaIlIQpwPJgiLsp55eCQafQ7fPilowFpQUeqYmJIcvgqSoyjRCAyZ8 gZWclQifLHm7zih6VhHF2KySSgqGSurFFNAeLYok3VNqhLzNeeqvctr5OyGu6Uiwp56d wwYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=AljR3Frb1fNKMl2Wlwr9MQE1IKSI2l0hQHDbMIYXtmw=; b=ZI2ykHUfhV4xgYVdMleWP73xgF29Jk+WPOHRrJzY8xxDF5qRkMgNj74uUsZ7HrVjKG +2w9AkWC6szBGe4ArHPqwLw+P7Uo9ErFwMk3w7wiXg5FALIwL0wCgwKj2zpGWaOsUuHj voIJxQB+uCuKBSd/TFUEcn4C64sUykg5AAFe9T1YKwzN0Zs6go9jhVvouZy5FIzVU8Ky ZuTgw/Ci/8/2rJRHsGG847vEmk1Ax/HgiWhVZiJItQx0zSf7V+TimXFyWXHrHsvC6JPO jlJ/R8jdG9XvwphFxTpl1R4ghN5KDFDnDtuLm2SdREqYcnLk2w47e9HBP28oyvfucmoL nVsg== X-Gm-Message-State: ACrzQf3vSzD6TaK0yMwawqIMMde+Y4S9lDyvH/pSlfnWXVlIxPWjdXvH nbXiK9frrAPRgPWbFYOZ0P4Ln73IwV5etky2FCM= X-Google-Smtp-Source: AMsMyM6fDihvO/2ftrwrz2E/PpGvArygwf0eOmaU1KpdEynLJzXtrQRW0IfIfACwyrdeBoT1GRiOUu/LGkXJh0UJZtA= X-Received: by 2002:a05:6102:3118:b0:3a6:5332:25c0 with SMTP id e24-20020a056102311800b003a6533225c0mr1399503vsh.60.1665033532941; Wed, 05 Oct 2022 22:18:52 -0700 (PDT) MIME-Version: 1.0 References: <20221006043609.1193398-1-lsahlber@redhat.com> <20221006043609.1193398-2-lsahlber@redhat.com> In-Reply-To: <20221006043609.1193398-2-lsahlber@redhat.com> From: Steve French Date: Thu, 6 Oct 2022 00:18:41 -0500 Message-ID: Subject: Re: [PATCH] cifs: fix skipping to incorrect offset in emit_cached_dirents To: Ronnie Sahlberg Cc: linux-cifs Content-Type: multipart/mixed; boundary="000000000000453fa405ea56d4ce" Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org --000000000000453fa405ea56d4ce Content-Type: text/plain; charset="UTF-8" here is the updated version of patch 4 which I was planning to use (minor rebase, and trivial checkpatch cleanup). Let me know if ok On Wed, Oct 5, 2022 at 11:36 PM Ronnie Sahlberg wrote: > > When application has done lseek() to a different offset on a directory fd > we skipped one entry too many before we start emitting directory entries > from the cache. > > Signed-off-by: Ronnie Sahlberg > --- > fs/cifs/readdir.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c > index 8e060c00c969..da0d1e188432 100644 > --- a/fs/cifs/readdir.c > +++ b/fs/cifs/readdir.c > @@ -847,9 +847,13 @@ static bool emit_cached_dirents(struct cached_dirents *cde, > int rc; > > list_for_each_entry(dirent, &cde->entries, entry) { > - if (ctx->pos >= dirent->pos) > + /* > + * Skip ahead until we get to the current position of the > + * directory. > + */ > + if (ctx->pos > dirent->pos) > continue; > - ctx->pos = dirent->pos; > + > rc = dir_emit(ctx, dirent->name, dirent->namelen, > dirent->fattr.cf_uniqueid, > dirent->fattr.cf_dtype); > -- > 2.35.3 > -- Thanks, Steve --000000000000453fa405ea56d4ce Content-Type: text/x-patch; charset="US-ASCII"; name="0001-cifs-enable-caching-of-directories-for-which-a-lease.patch" Content-Disposition: attachment; filename="0001-cifs-enable-caching-of-directories-for-which-a-lease.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l8wlyubp0 RnJvbSBjNDNiNjBlNmFlOTI4M2Y2NmJmNWQ2MWRmODUwOWJkODhlODg4MTkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb25uaWUgU2FobGJlcmcgPGxzYWhsYmVyQHJlZGhhdC5jb20+ CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAwMDoxNDozMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIGNp ZnM6IGVuYWJsZSBjYWNoaW5nIG9mIGRpcmVjdG9yaWVzIGZvciB3aGljaCBhIGxlYXNlIGlzIGhl bGQKClRoaXMgZXhwYW5kcyB0aGUgZGlyZWN0b3J5IGNhY2hpbmcgdG8gbm93IGNhY2hlIGFuIG9w ZW4gaGFuZGxlIGZvciBhbGwKZGlyZWN0b3JpZXMgKHVwIHRvIGEgbWF4aW11bSkgYW5kIG5vdCBq dXN0IHRoZSByb290IGRpcmVjdG9yeS4KCkluIHRoaXMgcGF0Y2gsIGxvY2tpbmcgYW5kIHJlZmNv dW50aW5nIGlzIGludGVuZGVkIHRvIHdvcmsgYXMgc286CgpUaGUgbWFpbiBmdW5jdGlvbiB0byBn ZXQgYSByZWZlcmVuY2UgdG8gYSBjYWNoZWQgaGFuZGxlIGlzCmZpbmRfb3JfY3JlYXRlX2NhY2hl ZF9kaXIoKSBjYWxsZWQgZnJvbSBvcGVuX2NhY2hlZF9kaXIoKQpUaGVzZSBmdW5jdGlvbnMgYXJl IHByb3RlY3RlZCB1bmRlciB0aGUgY2ZpZF9saXN0X2xvY2sgc3Bpbi1sb2NrCnRvIG1ha2Ugc3Vy ZSB3ZSBkbyBub3QgcmFjZSBjcmVhdGluZyBuZXcgcmVmZXJlbmNlcyBmb3IgY2FjaGVkIGRpcnMK d2l0aCBkZWxldGlvbiBvZiBleHBpcmVkIG9uZXMuCgpBbiBzdWNjZXNzZnVsIG9wZW5fY2FjaGVk X2RpcigpIHdpbGwgdGFrZSBvdXQgMiByZWZlcmVuY2VzIHRvIHRoZSBjZmlkIGlmCnRoaXMgd2Fz IHRoZSB2ZXJ5IGZpcnN0IGFuZCBzdWNjZXNzZnVsIGNhbGwgdG8gb3BlbiB0aGUgZGlyZWN0b3J5 IGFuZAppdCBhY3F1aXJlZCBhIGxlYXNlIGZyb20gdGhlIHNlcnZlci4KT25lIHJlZmVyZW5jZSBp cyBmb3IgdGhlIGxlYXNlICBhbmQgdGhlIG90aGVyIGlzIGZvciB0aGUgY2ZpZCB0aGF0IHdlCnJl dHVybi4gVGhlIGlzIGxlYXNlIHJlZmVyZW5jZSBpcyB0cmFja2VkIGJ5IGNmaWQtPmhhc19sZWFz ZS4KSWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGhhcyBhIGhhbmRsZSB3aXRoIGFuIGFjdGl2ZSBs ZWFzZSwgdGhlbiB3ZSBqdXN0CnRha2Ugb3V0IG9uZSBuZXcgcmVmZXJlbmNlIGZvciB0aGUgY2Zp ZCBhbmQgcmV0dXJuIGl0LgpJdCBjYW4gaGFwcGVuIHRoYXQgd2UgaGF2ZSBhIHRocmVhZCB0aGF0 IHRyaWVzIHRvIG9wZW4gYSBjYWNoZWQgZGlyZWN0b3J5CndoZXJlIHdlIGhhdmUgYSBjZmlkIGFs cmVhZHkgYnV0IHdlIGRvIG5vdCwgeWV0LCBoYXZlIGEgd29ya2luZyBsZWFzZS4gSW4KdGhpcyBj YXNlIHdlIHdpbGwganVzdCByZXR1cm4gTlVMTCwgYW5kIHRoaXMgdGhlIGNhbGxlciB3aWxsIGZh bGwgYmFjayB0bwp0aGUgY2FzZSB3aGVuIG5vIGhhbmRsZSB3YXMgYXZhaWxhYmxlLgoKSW4gdGhp cyBtb2RlbCB0aGUgdG90YWwgbnVtYmVyIG9mIHJlZmVyZW5jZXMgd2UgaGF2ZSBvbiBhIGNmaWQg aXMKMSBmb3Igd2hpbGUgdGhlIGhhbmRsZSBpcyBvcGVuIGFuZCB3ZSBoYXZlIGEgbGVhc2UsIGFu ZCBvbmUgYWRkaXRpb25hbApyZWZlcmVuY2UgZm9yIGVhY2ggb3BlbiBpbnN0YW5jZSBvZiBhIGNm aWQuCgpPbmNlIHdlIGdldCBhIGxlYXNlIGJyZWFrIChjYWNoZWRfZGlyX2xlYXNlX2JyZWFrKCkp IHdlIHJlbW92ZSB0aGUKY2ZpZCBmcm9tIHRoZSBsaXN0IHVuZGVyIHRoZSBzcGlubG9jay4gVGhp cyBwcmV2ZW50cyBhbnkgbmV3IHRocmVhZHMgdG8KdXNlIGl0LCBhbmQgd2UgYWxzbyBjYWxsIHNt YjJfY2FjaGVkX2xlYXNlX2JyZWFrKCkgdmlhIHRoZSB3b3JrX3F1ZXVlCmluIG9yZGVyIHRvIGRy b3AgdGhlIHJlZmVyZW5jZSB3ZSBnb3QgZm9yIHRoZSBsZWFzZSAod2UgZHJvcCBpdCBvdXRzaWRl Cm9mIHRoZSBzcGluLWxvY2suKQpBbnl0aW1lIGEgdGhyZWFkIGNhbGxzIGNsb3NlX2NhY2hlZF9k aXIoKSB3ZSBhbHNvIGRyb3AgYSByZWZlcmVuY2UgdG8gdGhlCmNmaWQuCldoZW4gdGhlIGxhc3Qg cmVmZXJlbmNlIHRvIHRoZSBjZmlkIGlzIHJlbGVhc2VkIHNtYjJfY2xvc2VfY2FjaGVkX2ZpZCgp CndpbGwgYmUgaW52b2tlZCB3aGljaCB3aWxsIGRyb3AgdGhlIHJlZmVyZW5jZSBvdCB0aGUgZGVu dHJ5IHdlIGhlbGQgZm9yCnRoaXMgY2ZpZCBhbmQgaXQgd2lsbCBhbHNvLCBpZiB3ZSB0aGUgaGFu ZGxlIGlzIG9wZW4vaGFzIGEgbGVhc2UKYWxzbyBjYWxsIFNNQjJfY2xvc2UoKSB0byBjbG9zZSB0 aGUgaGFuZGxlIG9uIHRoZSBzZXJ2ZXIuCgpUd28gZXZlbnRzIHJlcXVpcmUgc3BlY2lhbCBoYW5k bGluZzoKaW52YWxpZGF0ZV9hbGxfY2FjaGVkX2RpcnMoKSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCBmcm9tIFNNQjJfdGRpcygpCmFuZCBjaWZzX21hcmtfb3Blbl9maWxlc19pbnZhbGlkKCkuCklu IGJvdGggY2FzZXMgdGhlIHRjb24gaXMgZWl0aGVyIGdvbmUgYWxyZWFkeSBvciB3aWxsIGJlIHNo b3J0bHkgc28Kd2UgZG8gbm90IG5lZWQgdG8gYWN0dWFsbHkgY2xvc2UgdGhlIGhhbmRsZXMuIFRo ZXkgd2lsbCBiZSBkcm9wcGVkCnNlcnZlciBzaWRlIGFzIHBhcnQgb2YgdGhlIHRjb24gZHJvcHBp bmcuCkJ1dCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgYSBwb3RlbnRpYWwgcmFjZSB3aXRo IGEgY29uY3VycmVudApsZWFzZSBicmVhayBzbyB3ZSBuZWVkIHRvIHRha2Ugb3V0IGFkZGl0aW9u YWwgcmVmZW5jZXMgdG8gYXZvaWQgdGhlCmNmaWQgZnJvbSBiZWluZyBmcmVlZCB3aGlsZSB3ZSBh cmUgc3RpbGwgcmVmZXJlbmNpbmcgaXQuCgpmcmVlX2NhY2hlZF9kaXJzKCkgd2hpY2ggaXMgY2Fs bGVkIGZyb20gdGNvbkluZm9GcmVlKCkuClRoaXMgaXMgY2FsbGVkIHF1aXRlIGxhdGUgaW4gdGhl IHVtb3VudCBwcm9jZXNzIHNvIHRoZXJlIHNob3VsZCBubyBsb25nZXIKYmUgYW55IG9wZW4gaGFu ZGxlcyBvciBmaWxlcyBhbmQgd2UgY2FuIGp1c3QgZnJlZSBhbGwgdGhlIHJlbWFpbmluZyBkYXRh LgoKU2lnbmVkLW9mZi1ieTogUm9ubmllIFNhaGxiZXJnIDxsc2FobGJlckByZWRoYXQuY29tPgpT aWduZWQtb2ZmLWJ5OiBTdGV2ZSBGcmVuY2ggPHN0ZnJlbmNoQG1pY3Jvc29mdC5jb20+Ci0tLQog ZnMvY2lmcy9jYWNoZWRfZGlyLmMgfCA0MjggKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogZnMvY2lmcy9jYWNoZWRfZGlyLmggfCAgMjAgKy0KIGZzL2NpZnMvaW5v ZGUuYyAgICAgIHwgICA2ICstCiBmcy9jaWZzL3NtYjJvcHMuYyAgICB8ICAgMiArLQogNCBmaWxl cyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygrKSwgMTkzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2ZzL2NpZnMvY2FjaGVkX2Rpci5jIGIvZnMvY2lmcy9jYWNoZWRfZGlyLmMKaW5kZXggYjcw NWRhYzM4M2Y5Li5lNTU3M2Q0ZTJkODMgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY2FjaGVkX2Rpci5j CisrKyBiL2ZzL2NpZnMvY2FjaGVkX2Rpci5jCkBAIC0xMSw3ICsxMSw1MyBAQAogI2luY2x1ZGUg InNtYjJwcm90by5oIgogI2luY2x1ZGUgImNhY2hlZF9kaXIuaCIKIAotc3RydWN0IGNhY2hlZF9m aWQgKmluaXRfY2FjaGVkX2Rpcihjb25zdCBjaGFyICpwYXRoKTsKK3N0YXRpYyBzdHJ1Y3QgY2Fj aGVkX2ZpZCAqaW5pdF9jYWNoZWRfZGlyKGNvbnN0IGNoYXIgKnBhdGgpOworc3RhdGljIHZvaWQg ZnJlZV9jYWNoZWRfZGlyKHN0cnVjdCBjYWNoZWRfZmlkICpjZmlkKTsKKworc3RhdGljIHN0cnVj dCBjYWNoZWRfZmlkICpmaW5kX29yX2NyZWF0ZV9jYWNoZWRfZGlyKHN0cnVjdCBjYWNoZWRfZmlk cyAqY2ZpZHMsCisJCQkJCQkgICAgY29uc3QgY2hhciAqcGF0aCwKKwkJCQkJCSAgICBib29sIGxv b2t1cF9vbmx5KQoreworCXN0cnVjdCBjYWNoZWRfZmlkICpjZmlkOworCisJc3Bpbl9sb2NrKCZj Zmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2ZpZCwgJmNmaWRz LT5lbnRyaWVzLCBlbnRyeSkgeworCQlpZiAoIXN0cmNtcChjZmlkLT5wYXRoLCBwYXRoKSkgewor CQkJLyoKKwkJCSAqIElmIGl0IGRvZXNuJ3QgaGF2ZSBhIGxlYXNlIGl0IGlzIGVpdGhlciBub3Qg eWV0CisJCQkgKiBmdWxseSBjYWNoZWQgb3IgaXQgbWF5IGJlIGluIHRoZSBwcm9jZXNzIG9mCisJ CQkgKiBiZWluZyBkZWxldGVkIGR1ZSB0byBhIGxlYXNlIGJyZWFrLgorCQkJICovCisJCQlpZiAo IWNmaWQtPmhhc19sZWFzZSkgeworCQkJCXNwaW5fdW5sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0X2xv Y2spOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJa3JlZl9nZXQoJmNmaWQtPnJlZmNvdW50 KTsKKwkJCXNwaW5fdW5sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCQkJcmV0dXJuIGNm aWQ7CisJCX0KKwl9CisJaWYgKGxvb2t1cF9vbmx5KSB7CisJCXNwaW5fdW5sb2NrKCZjZmlkcy0+ Y2ZpZF9saXN0X2xvY2spOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaWYgKGNmaWRzLT5udW1fZW50 cmllcyA+PSBNQVhfQ0FDSEVEX0ZJRFMpIHsKKwkJc3Bpbl91bmxvY2soJmNmaWRzLT5jZmlkX2xp c3RfbG9jayk7CisJCXJldHVybiBOVUxMOworCX0KKwljZmlkID0gaW5pdF9jYWNoZWRfZGlyKHBh dGgpOworCWlmIChjZmlkID09IE5VTEwpIHsKKwkJc3Bpbl91bmxvY2soJmNmaWRzLT5jZmlkX2xp c3RfbG9jayk7CisJCXJldHVybiBOVUxMOworCX0KKwljZmlkLT5jZmlkcyA9IGNmaWRzOworCWNm aWRzLT5udW1fZW50cmllcysrOworCWxpc3RfYWRkKCZjZmlkLT5lbnRyeSwgJmNmaWRzLT5lbnRy aWVzKTsKKwljZmlkLT5vbl9saXN0ID0gdHJ1ZTsKKwlrcmVmX2dldCgmY2ZpZC0+cmVmY291bnQp OworCXNwaW5fdW5sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCXJldHVybiBjZmlkOwor fQogCiAvKgogICogT3BlbiB0aGUgYW5kIGNhY2hlIGEgZGlyZWN0b3J5IGhhbmRsZS4KQEAgLTMz LDYxICs3OSw2NSBAQCBpbnQgb3Blbl9jYWNoZWRfZGlyKHVuc2lnbmVkIGludCB4aWQsIHN0cnVj dCBjaWZzX3Rjb24gKnRjb24sCiAJc3RydWN0IGt2ZWMgb3Blbl9pb3ZbU01CMl9DUkVBVEVfSU9W X1NJWkVdOwogCXN0cnVjdCBrdmVjIHFpX2lvdlsxXTsKIAlpbnQgcmMsIGZsYWdzID0gMDsKLQlf X2xlMTYgdXRmMTZfcGF0aCA9IDA7IC8qIE51bGwgLSBzaW5jZSBhbiBvcGVuIG9mIHRvcCBvZiBz aGFyZSAqLworCV9fbGUxNiAqdXRmMTZfcGF0aCA9IE5VTEw7CiAJdTggb3Bsb2NrID0gU01CMl9P UExPQ0tfTEVWRUxfSUk7CiAJc3RydWN0IGNpZnNfZmlkICpwZmlkOwotCXN0cnVjdCBkZW50cnkg KmRlbnRyeTsKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBOVUxMOwogCXN0cnVjdCBjYWNoZWRf ZmlkICpjZmlkOworCXN0cnVjdCBjYWNoZWRfZmlkcyAqY2ZpZHM7CiAKLQlpZiAodGNvbiA9PSBO VUxMIHx8IHRjb24tPm5vaGFuZGxlY2FjaGUgfHwKKworCWlmICh0Y29uID09IE5VTEwgfHwgdGNv bi0+Y2ZpZHMgPT0gTlVMTCB8fCB0Y29uLT5ub2hhbmRsZWNhY2hlIHx8CiAJICAgIGlzX3NtYjFf c2VydmVyKHRjb24tPnNlcy0+c2VydmVyKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJc2Vz ID0gdGNvbi0+c2VzOwogCXNlcnZlciA9IHNlcy0+c2VydmVyOworCWNmaWRzID0gdGNvbi0+Y2Zp ZHM7CisKKwlpZiAoIXNlcnZlci0+b3BzLT5uZXdfbGVhc2Vfa2V5KQorCQlyZXR1cm4gLUVJTzsK IAogCWlmIChjaWZzX3NiLT5yb290ID09IE5VTEwpCiAJCXJldHVybiAtRU5PRU5UOwogCisJLyoK KwkgKiBUT0RPOiBmb3IgYmV0dGVyIGNhY2hpbmcgd2UgbmVlZCB0byBmaW5kIGFuZCB1c2UgdGhl IGRlbnRyeSBhbHNvCisJICogZm9yIG5vbi1yb290IGRpcmVjdG9yaWVzLgorCSAqLwogCWlmICgh cGF0aFswXSkKIAkJZGVudHJ5ID0gY2lmc19zYi0+cm9vdDsKLQllbHNlCi0JCXJldHVybiAtRU5P RU5UOwogCi0JY2ZpZCA9IHRjb24tPmNmaWRzLT5jZmlkOwotCWlmIChjZmlkID09IE5VTEwpIHsK LQkJY2ZpZCA9IGluaXRfY2FjaGVkX2RpcihwYXRoKTsKLQkJdGNvbi0+Y2ZpZHMtPmNmaWQgPSBj ZmlkOwotCX0KLQlpZiAoY2ZpZCA9PSBOVUxMKQorCXV0ZjE2X3BhdGggPSBjaWZzX2NvbnZlcnRf cGF0aF90b191dGYxNihwYXRoLCBjaWZzX3NiKTsKKwlpZiAoIXV0ZjE2X3BhdGgpCiAJCXJldHVy biAtRU5PTUVNOwogCi0JbXV0ZXhfbG9jaygmY2ZpZC0+ZmlkX211dGV4KTsKLQlpZiAoY2ZpZC0+ aXNfdmFsaWQpIHsKLQkJY2lmc19kYmcoRllJLCAiZm91bmQgYSBjYWNoZWQgcm9vdCBmaWxlIGhh bmRsZVxuIik7CisJY2ZpZCA9IGZpbmRfb3JfY3JlYXRlX2NhY2hlZF9kaXIoY2ZpZHMsIHBhdGgs IGxvb2t1cF9vbmx5KTsKKwlpZiAoY2ZpZCA9PSBOVUxMKSB7CisJCWtmcmVlKHV0ZjE2X3BhdGgp OworCQlyZXR1cm4gLUVOT0VOVDsKKwl9CisJLyoKKwkgKiBBdCB0aGlzIHBvaW50IHdlIGVpdGhl ciBoYXZlIGEgbGVhc2UgYWxyZWFkeSBhbmQgd2UgY2FuIGp1c3QKKwkgKiByZXR1cm4gaXQuIElm IG5vdCB3ZSBhcmUgZ3VhcmFudGVlZCB0byBiZSB0aGUgb25seSB0aHJlYWQgYWNjZXNzaW5nCisJ ICogdGhpcyBjZmlkLgorCSAqLworCWlmIChjZmlkLT5oYXNfbGVhc2UpIHsKIAkJKnJldF9jZmlk ID0gY2ZpZDsKLQkJa3JlZl9nZXQoJmNmaWQtPnJlZmNvdW50KTsKLQkJbXV0ZXhfdW5sb2NrKCZj ZmlkLT5maWRfbXV0ZXgpOworCQlrZnJlZSh1dGYxNl9wYXRoKTsKIAkJcmV0dXJuIDA7CiAJfQog CiAJLyoKIAkgKiBXZSBkbyBub3QgaG9sZCB0aGUgbG9jayBmb3IgdGhlIG9wZW4gYmVjYXVzZSBp biBjYXNlCi0JICogU01CMl9vcGVuIG5lZWRzIHRvIHJlY29ubmVjdCwgaXQgd2lsbCBlbmQgdXAg Y2FsbGluZwotCSAqIGNpZnNfbWFya19vcGVuX2ZpbGVzX2ludmFsaWQoKSB3aGljaCB0YWtlcyB0 aGUgbG9jayBhZ2FpbgotCSAqIHRodXMgY2F1c2luZyBhIGRlYWRsb2NrCisJICogU01CMl9vcGVu IG5lZWRzIHRvIHJlY29ubmVjdC4KKwkgKiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBubyBvdGhlciB0 aHJlYWQgd2lsbCBiZSBhYmxlIHRvIGdldCBhIHJlZgorCSAqIHRvIHRoZSBjZmlkIHVudGlsIHdl IGhhdmUgZmluaXNoZWQgb3BlbmluZyB0aGUgZmlsZSBhbmQgKHBvc3NpYmx5KQorCSAqIGFjcXVp cmVkIGEgbGVhc2UuCiAJICovCi0JbXV0ZXhfdW5sb2NrKCZjZmlkLT5maWRfbXV0ZXgpOwotCi0J aWYgKGxvb2t1cF9vbmx5KQotCQlyZXR1cm4gLUVOT0VOVDsKLQogCWlmIChzbWIzX2VuY3J5cHRp b25fcmVxdWlyZWQodGNvbikpCiAJCWZsYWdzIHw9IENJRlNfVFJBTlNGT1JNX1JFUTsKIAotCWlm ICghc2VydmVyLT5vcHMtPm5ld19sZWFzZV9rZXkpCi0JCXJldHVybiAtRUlPOwotCiAJcGZpZCA9 ICZjZmlkLT5maWQ7CiAJc2VydmVyLT5vcHMtPm5ld19sZWFzZV9rZXkocGZpZCk7CiAKQEAgLTEw OCw3ICsxNTgsNyBAQCBpbnQgb3Blbl9jYWNoZWRfZGlyKHVuc2lnbmVkIGludCB4aWQsIHN0cnVj dCBjaWZzX3Rjb24gKnRjb24sCiAJb3Bhcm1zLnJlY29ubmVjdCA9IGZhbHNlOwogCiAJcmMgPSBT TUIyX29wZW5faW5pdCh0Y29uLCBzZXJ2ZXIsCi0JCQkgICAgJnJxc3RbMF0sICZvcGxvY2ssICZv cGFybXMsICZ1dGYxNl9wYXRoKTsKKwkJCSAgICAmcnFzdFswXSwgJm9wbG9jaywgJm9wYXJtcywg dXRmMTZfcGF0aCk7CiAJaWYgKHJjKQogCQlnb3RvIG9zaHJfZnJlZTsKIAlzbWIyX3NldF9uZXh0 X2NvbW1hbmQodGNvbiwgJnJxc3RbMF0pOwpAQCAtMTMxLDQ3ICsxODEsMTMgQEAgaW50IG9wZW5f Y2FjaGVkX2Rpcih1bnNpZ25lZCBpbnQgeGlkLCBzdHJ1Y3QgY2lmc190Y29uICp0Y29uLAogCXJj ID0gY29tcG91bmRfc2VuZF9yZWN2KHhpZCwgc2VzLCBzZXJ2ZXIsCiAJCQkJZmxhZ3MsIDIsIHJx c3QsCiAJCQkJcmVzcF9idWZ0eXBlLCByc3BfaW92KTsKLQltdXRleF9sb2NrKCZjZmlkLT5maWRf bXV0ZXgpOwotCi0JLyoKLQkgKiBOb3cgd2UgbmVlZCB0byBjaGVjayBhZ2FpbiBhcyB0aGUgY2Fj aGVkIHJvb3QgbWlnaHQgaGF2ZQotCSAqIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlLW9wZW5lZCBmcm9t IGEgY29uY3VycmVudCBwcm9jZXNzCi0JICovCi0KLQlpZiAoY2ZpZC0+aXNfdmFsaWQpIHsKLQkJ Lyogd29yayB3YXMgYWxyZWFkeSBkb25lICovCi0KLQkJLyogc3Rhc2ggZmlkcyBmb3IgY2xvc2Uo KSBsYXRlciAqLwotCQlzdHJ1Y3QgY2lmc19maWQgZmlkID0gewotCQkJLnBlcnNpc3RlbnRfZmlk ID0gcGZpZC0+cGVyc2lzdGVudF9maWQsCi0JCQkudm9sYXRpbGVfZmlkID0gcGZpZC0+dm9sYXRp bGVfZmlkLAotCQl9OwotCi0JCS8qCi0JCSAqIGNhbGxlciBleHBlY3RzIHRoaXMgZnVuYyB0byBz ZXQgdGhlIGZpZCBpbiBjZmlkIHRvIHZhbGlkCi0JCSAqIGNhY2hlZCByb290LCBzbyBpbmNyZW1l bnQgdGhlIHJlZmNvdW50LgotCQkgKi8KLQkJa3JlZl9nZXQoJmNmaWQtPnJlZmNvdW50KTsKLQot CQltdXRleF91bmxvY2soJmNmaWQtPmZpZF9tdXRleCk7Ci0KLQkJaWYgKHJjID09IDApIHsKLQkJ CS8qIGNsb3NlIGV4dHJhIGhhbmRsZSBvdXRzaWRlIG9mIGNyaXQgc2VjICovCi0JCQlTTUIyX2Ns b3NlKHhpZCwgdGNvbiwgZmlkLnBlcnNpc3RlbnRfZmlkLCBmaWQudm9sYXRpbGVfZmlkKTsKLQkJ fQotCQlyYyA9IDA7Ci0JCWdvdG8gb3Nocl9mcmVlOwotCX0KLQotCS8qIENhY2hlZCByb290IGlz IHN0aWxsIGludmFsaWQsIGNvbnRpbnVlIG5vcm1hbHkgKi8KLQogCWlmIChyYykgewogCQlpZiAo cmMgPT0gLUVSRU1DSEcpIHsKIAkJCXRjb24tPm5lZWRfcmVjb25uZWN0ID0gdHJ1ZTsKIAkJCXBy X3dhcm5fb25jZSgic2VydmVyIHNoYXJlICVzIGRlbGV0ZWRcbiIsCiAJCQkJICAgICB0Y29uLT50 cmVlX25hbWUpOwogCQl9Ci0JCWdvdG8gb3Nocl9leGl0OworCQlnb3RvIG9zaHJfZnJlZTsKIAl9 CiAKIAlhdG9taWNfaW5jKCZ0Y29uLT5udW1fcmVtb3RlX29wZW5zKTsKQEAgLTE4NCw0NiArMjAw LDU0IEBAIGludCBvcGVuX2NhY2hlZF9kaXIodW5zaWduZWQgaW50IHhpZCwgc3RydWN0IGNpZnNf dGNvbiAqdGNvbiwKICNlbmRpZiAvKiBDSUZTX0RFQlVHMiAqLwogCiAJY2ZpZC0+dGNvbiA9IHRj b247Ci0JY2ZpZC0+aXNfdmFsaWQgPSB0cnVlOwotCWNmaWQtPmRlbnRyeSA9IGRlbnRyeTsKLQlp ZiAoZGVudHJ5KQorCWlmIChkZW50cnkpIHsKKwkJY2ZpZC0+ZGVudHJ5ID0gZGVudHJ5OwogCQlk Z2V0KGRlbnRyeSk7Ci0Ja3JlZl9pbml0KCZjZmlkLT5yZWZjb3VudCk7Ci0KKwl9CiAJLyogQkIg VEJEIGNoZWNrIHRvIHNlZSBpZiBvcGxvY2sgbGV2ZWwgY2hlY2sgY2FuIGJlIHJlbW92ZWQgYmVs b3cgKi8KLQlpZiAob19yc3AtPk9wbG9ja0xldmVsID09IFNNQjJfT1BMT0NLX0xFVkVMX0xFQVNF KSB7Ci0JCS8qCi0JCSAqIFNlZSBjb21taXQgMmY5NGEzMTI1Yjg3LiBJbmNyZW1lbnQgdGhlIHJl ZmNvdW50IHdoZW4gd2UKLQkJICogZ2V0IGEgbGVhc2UgZm9yIHJvb3QsIHJlbGVhc2UgaXQgaWYg bGVhc2UgYnJlYWsgb2NjdXJzCi0JCSAqLwotCQlrcmVmX2dldCgmY2ZpZC0+cmVmY291bnQpOwot CQljZmlkLT5oYXNfbGVhc2UgPSB0cnVlOwotCQlzbWIyX3BhcnNlX2NvbnRleHRzKHNlcnZlciwg b19yc3AsCi0JCQkJJm9wYXJtcy5maWQtPmVwb2NoLAotCQkJCSAgICBvcGFybXMuZmlkLT5sZWFz ZV9rZXksICZvcGxvY2ssCi0JCQkJICAgIE5VTEwsIE5VTEwpOwotCX0gZWxzZQotCQlnb3RvIG9z aHJfZXhpdDsKKwlpZiAob19yc3AtPk9wbG9ja0xldmVsICE9IFNNQjJfT1BMT0NLX0xFVkVMX0xF QVNFKQorCQlnb3RvIG9zaHJfZnJlZTsKKworCisJc21iMl9wYXJzZV9jb250ZXh0cyhzZXJ2ZXIs IG9fcnNwLAorCQkJICAgICZvcGFybXMuZmlkLT5lcG9jaCwKKwkJCSAgICBvcGFybXMuZmlkLT5s ZWFzZV9rZXksICZvcGxvY2ssCisJCQkgICAgTlVMTCwgTlVMTCk7CiAKIAlxaV9yc3AgPSAoc3Ry dWN0IHNtYjJfcXVlcnlfaW5mb19yc3AgKilyc3BfaW92WzFdLmlvdl9iYXNlOwogCWlmIChsZTMy X3RvX2NwdShxaV9yc3AtPk91dHB1dEJ1ZmZlckxlbmd0aCkgPCBzaXplb2Yoc3RydWN0IHNtYjJf ZmlsZV9hbGxfaW5mbykpCi0JCWdvdG8gb3Nocl9leGl0OworCQlnb3RvIG9zaHJfZnJlZTsKIAlp ZiAoIXNtYjJfdmFsaWRhdGVfYW5kX2NvcHlfaW92KAogCQkJCWxlMTZfdG9fY3B1KHFpX3JzcC0+ T3V0cHV0QnVmZmVyT2Zmc2V0KSwKIAkJCQlzaXplb2Yoc3RydWN0IHNtYjJfZmlsZV9hbGxfaW5m byksCiAJCQkJJnJzcF9pb3ZbMV0sIHNpemVvZihzdHJ1Y3Qgc21iMl9maWxlX2FsbF9pbmZvKSwK IAkJCQkoY2hhciAqKSZjZmlkLT5maWxlX2FsbF9pbmZvKSkKIAkJY2ZpZC0+ZmlsZV9hbGxfaW5m b19pc192YWxpZCA9IHRydWU7Ci0KIAljZmlkLT50aW1lID0gamlmZmllczsKKwljZmlkLT5pc19v cGVuID0gdHJ1ZTsKKwljZmlkLT5oYXNfbGVhc2UgPSB0cnVlOwogCi1vc2hyX2V4aXQ6Ci0JbXV0 ZXhfdW5sb2NrKCZjZmlkLT5maWRfbXV0ZXgpOwogb3Nocl9mcmVlOgorCWtmcmVlKHV0ZjE2X3Bh dGgpOwogCVNNQjJfb3Blbl9mcmVlKCZycXN0WzBdKTsKIAlTTUIyX3F1ZXJ5X2luZm9fZnJlZSgm cnFzdFsxXSk7CiAJZnJlZV9yc3BfYnVmKHJlc3BfYnVmdHlwZVswXSwgcnNwX2lvdlswXS5pb3Zf YmFzZSk7CiAJZnJlZV9yc3BfYnVmKHJlc3BfYnVmdHlwZVsxXSwgcnNwX2lvdlsxXS5pb3ZfYmFz ZSk7CisJc3Bpbl9sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCWlmICghY2ZpZC0+aGFz X2xlYXNlKSB7CisJCWlmIChjZmlkLT5vbl9saXN0KSB7CisJCQlsaXN0X2RlbCgmY2ZpZC0+ZW50 cnkpOworCQkJY2ZpZC0+b25fbGlzdCA9IGZhbHNlOworCQkJY2ZpZHMtPm51bV9lbnRyaWVzLS07 CisJCX0KKwkJcmMgPSAtRU5PRU5UOworCX0KKwlzcGluX3VubG9jaygmY2ZpZHMtPmNmaWRfbGlz dF9sb2NrKTsKKwlpZiAocmMpIHsKKwkJZnJlZV9jYWNoZWRfZGlyKGNmaWQpOworCQljZmlkID0g TlVMTDsKKwl9CisKIAlpZiAocmMgPT0gMCkKIAkJKnJldF9jZmlkID0gY2ZpZDsKIApAQCAtMjM1 LDIwICsyNTksMjIgQEAgaW50IG9wZW5fY2FjaGVkX2Rpcl9ieV9kZW50cnkoc3RydWN0IGNpZnNf dGNvbiAqdGNvbiwKIAkJCSAgICAgIHN0cnVjdCBjYWNoZWRfZmlkICoqcmV0X2NmaWQpCiB7CiAJ c3RydWN0IGNhY2hlZF9maWQgKmNmaWQ7CisJc3RydWN0IGNhY2hlZF9maWRzICpjZmlkcyA9IHRj b24tPmNmaWRzOwogCi0JY2ZpZCA9IHRjb24tPmNmaWRzLT5jZmlkOwotCWlmIChjZmlkID09IE5V TEwpCisJaWYgKGNmaWRzID09IE5VTEwpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9j aygmY2ZpZC0+ZmlkX211dGV4KTsKLQlpZiAoY2ZpZC0+ZGVudHJ5ID09IGRlbnRyeSkgewotCQlj aWZzX2RiZyhGWUksICJmb3VuZCBhIGNhY2hlZCByb290IGZpbGUgaGFuZGxlIGJ5IGRlbnRyeVxu Iik7Ci0JCSpyZXRfY2ZpZCA9IGNmaWQ7Ci0JCWtyZWZfZ2V0KCZjZmlkLT5yZWZjb3VudCk7Ci0J CW11dGV4X3VubG9jaygmY2ZpZC0+ZmlkX211dGV4KTsKLQkJcmV0dXJuIDA7CisJc3Bpbl9sb2Nr KCZjZmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkoY2ZpZCwgJmNm aWRzLT5lbnRyaWVzLCBlbnRyeSkgeworCQlpZiAoZGVudHJ5ICYmIGNmaWQtPmRlbnRyeSA9PSBk ZW50cnkpIHsKKwkJCWNpZnNfZGJnKEZZSSwgImZvdW5kIGEgY2FjaGVkIHJvb3QgZmlsZSBoYW5k bGUgYnkgZGVudHJ5XG4iKTsKKwkJCWtyZWZfZ2V0KCZjZmlkLT5yZWZjb3VudCk7CisJCQkqcmV0 X2NmaWQgPSBjZmlkOworCQkJc3Bpbl91bmxvY2soJmNmaWRzLT5jZmlkX2xpc3RfbG9jayk7CisJ CQlyZXR1cm4gMDsKKwkJfQogCX0KLQltdXRleF91bmxvY2soJmNmaWQtPmZpZF9tdXRleCk7CisJ c3Bpbl91bmxvY2soJmNmaWRzLT5jZmlkX2xpc3RfbG9jayk7CiAJcmV0dXJuIC1FTk9FTlQ7CiB9 CiAKQEAgLTI1Nyw2MyArMjgzLDI5IEBAIHNtYjJfY2xvc2VfY2FjaGVkX2ZpZChzdHJ1Y3Qga3Jl ZiAqcmVmKQogewogCXN0cnVjdCBjYWNoZWRfZmlkICpjZmlkID0gY29udGFpbmVyX29mKHJlZiwg c3RydWN0IGNhY2hlZF9maWQsCiAJCQkJCSAgICAgICByZWZjb3VudCk7Ci0Jc3RydWN0IGNhY2hl ZF9kaXJlbnQgKmRpcmVudCwgKnE7CiAKLQlpZiAoY2ZpZC0+aXNfdmFsaWQpIHsKLQkJY2lmc19k YmcoRllJLCAiY2xlYXIgY2FjaGVkIHJvb3QgZmlsZSBoYW5kbGVcbiIpOwotCQlTTUIyX2Nsb3Nl KDAsIGNmaWQtPnRjb24sIGNmaWQtPmZpZC5wZXJzaXN0ZW50X2ZpZCwKLQkJCSAgIGNmaWQtPmZp ZC52b2xhdGlsZV9maWQpOworCXNwaW5fbG9jaygmY2ZpZC0+Y2ZpZHMtPmNmaWRfbGlzdF9sb2Nr KTsKKwlpZiAoY2ZpZC0+b25fbGlzdCkgeworCQlsaXN0X2RlbCgmY2ZpZC0+ZW50cnkpOworCQlj ZmlkLT5vbl9saXN0ID0gZmFsc2U7CisJCWNmaWQtPmNmaWRzLT5udW1fZW50cmllcy0tOwogCX0K KwlzcGluX3VubG9jaygmY2ZpZC0+Y2ZpZHMtPmNmaWRfbGlzdF9sb2NrKTsKIAotCS8qCi0JICog V2Ugb25seSBjaGVjayB2YWxpZGl0eSBhYm92ZSB0byBzZW5kIFNNQjJfY2xvc2UsCi0JICogYnV0 IHdlIHN0aWxsIG5lZWQgdG8gaW52YWxpZGF0ZSB0aGVzZSBlbnRyaWVzCi0JICogd2hlbiB0aGlz IGZ1bmN0aW9uIGlzIGNhbGxlZAotCSAqLwotCWNmaWQtPmlzX3ZhbGlkID0gZmFsc2U7Ci0JY2Zp ZC0+ZmlsZV9hbGxfaW5mb19pc192YWxpZCA9IGZhbHNlOwotCWNmaWQtPmhhc19sZWFzZSA9IGZh bHNlOwotCWlmIChjZmlkLT5kZW50cnkpIHsKLQkJZHB1dChjZmlkLT5kZW50cnkpOwotCQljZmlk LT5kZW50cnkgPSBOVUxMOwotCX0KLQkvKgotCSAqIERlbGV0ZSBhbGwgY2FjaGVkIGRpcmVudCBu YW1lcwotCSAqLwotCW11dGV4X2xvY2soJmNmaWQtPmRpcmVudHMuZGVfbXV0ZXgpOwotCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShkaXJlbnQsIHEsICZjZmlkLT5kaXJlbnRzLmVudHJpZXMsIGVu dHJ5KSB7Ci0JCWxpc3RfZGVsKCZkaXJlbnQtPmVudHJ5KTsKLQkJa2ZyZWUoZGlyZW50LT5uYW1l KTsKLQkJa2ZyZWUoZGlyZW50KTsKKwlkcHV0KGNmaWQtPmRlbnRyeSk7CisJY2ZpZC0+ZGVudHJ5 ID0gTlVMTDsKKworCWlmIChjZmlkLT5pc19vcGVuKSB7CisJCVNNQjJfY2xvc2UoMCwgY2ZpZC0+ dGNvbiwgY2ZpZC0+ZmlkLnBlcnNpc3RlbnRfZmlkLAorCQkJICAgY2ZpZC0+ZmlkLnZvbGF0aWxl X2ZpZCk7CiAJfQotCWNmaWQtPmRpcmVudHMuaXNfdmFsaWQgPSAwOwotCWNmaWQtPmRpcmVudHMu aXNfZmFpbGVkID0gMDsKLQljZmlkLT5kaXJlbnRzLmN0eCA9IE5VTEw7Ci0JY2ZpZC0+ZGlyZW50 cy5wb3MgPSAwOwotCW11dGV4X3VubG9jaygmY2ZpZC0+ZGlyZW50cy5kZV9tdXRleCk7CiAKKwlm cmVlX2NhY2hlZF9kaXIoY2ZpZCk7CiB9CiAKIHZvaWQgY2xvc2VfY2FjaGVkX2RpcihzdHJ1Y3Qg Y2FjaGVkX2ZpZCAqY2ZpZCkKIHsKLQltdXRleF9sb2NrKCZjZmlkLT5maWRfbXV0ZXgpOwogCWty ZWZfcHV0KCZjZmlkLT5yZWZjb3VudCwgc21iMl9jbG9zZV9jYWNoZWRfZmlkKTsKLQltdXRleF91 bmxvY2soJmNmaWQtPmZpZF9tdXRleCk7Ci19Ci0KLXZvaWQgY2xvc2VfY2FjaGVkX2Rpcl9sZWFz ZV9sb2NrZWQoc3RydWN0IGNhY2hlZF9maWQgKmNmaWQpCi17Ci0JaWYgKGNmaWQtPmhhc19sZWFz ZSkgewotCQljZmlkLT5oYXNfbGVhc2UgPSBmYWxzZTsKLQkJa3JlZl9wdXQoJmNmaWQtPnJlZmNv dW50LCBzbWIyX2Nsb3NlX2NhY2hlZF9maWQpOwotCX0KLX0KLQotdm9pZCBjbG9zZV9jYWNoZWRf ZGlyX2xlYXNlKHN0cnVjdCBjYWNoZWRfZmlkICpjZmlkKQotewotCW11dGV4X2xvY2soJmNmaWQt PmZpZF9tdXRleCk7Ci0JY2xvc2VfY2FjaGVkX2Rpcl9sZWFzZV9sb2NrZWQoY2ZpZCk7Ci0JbXV0 ZXhfdW5sb2NrKCZjZmlkLT5maWRfbXV0ZXgpOwogfQogCiAvKgpAQCAtMzI2LDQxICszMTgsNjIg QEAgdm9pZCBjbG9zZV9hbGxfY2FjaGVkX2RpcnMoc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19z YikKIAlzdHJ1Y3QgY2FjaGVkX2ZpZCAqY2ZpZDsKIAlzdHJ1Y3QgY2lmc190Y29uICp0Y29uOwog CXN0cnVjdCB0Y29uX2xpbmsgKnRsaW5rOworCXN0cnVjdCBjYWNoZWRfZmlkcyAqY2ZpZHM7CiAK IAlmb3IgKG5vZGUgPSByYl9maXJzdChyb290KTsgbm9kZTsgbm9kZSA9IHJiX25leHQobm9kZSkp IHsKIAkJdGxpbmsgPSByYl9lbnRyeShub2RlLCBzdHJ1Y3QgdGNvbl9saW5rLCB0bF9yYm5vZGUp OwogCQl0Y29uID0gdGxpbmtfdGNvbih0bGluayk7CiAJCWlmIChJU19FUlIodGNvbikpCiAJCQlj b250aW51ZTsKLQkJY2ZpZCA9IHRjb24tPmNmaWRzLT5jZmlkOwotCQlpZiAoY2ZpZCA9PSBOVUxM KQorCQljZmlkcyA9IHRjb24tPmNmaWRzOworCQlpZiAoY2ZpZHMgPT0gTlVMTCkKIAkJCWNvbnRp bnVlOwotCQltdXRleF9sb2NrKCZjZmlkLT5maWRfbXV0ZXgpOwotCQlpZiAoY2ZpZC0+ZGVudHJ5 KSB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoY2ZpZCwgJmNmaWRzLT5lbnRyaWVzLCBlbnRyeSkg ewogCQkJZHB1dChjZmlkLT5kZW50cnkpOwogCQkJY2ZpZC0+ZGVudHJ5ID0gTlVMTDsKIAkJfQot CQltdXRleF91bmxvY2soJmNmaWQtPmZpZF9tdXRleCk7CiAJfQogfQogCiAvKgotICogSW52YWxp ZGF0ZSBhbmQgY2xvc2UgYWxsIGNhY2hlZCBkaXJzIHdoZW4gYSBUQ09OIGhhcyBiZWVuIHJlc2V0 CisgKiBJbnZhbGlkYXRlIGFsbCBjYWNoZWQgZGlycyB3aGVuIGEgVENPTiBoYXMgYmVlbiByZXNl dAogICogZHVlIHRvIGEgc2Vzc2lvbiBsb3NzLgogICovCiB2b2lkIGludmFsaWRhdGVfYWxsX2Nh Y2hlZF9kaXJzKHN0cnVjdCBjaWZzX3Rjb24gKnRjb24pCiB7Ci0Jc3RydWN0IGNhY2hlZF9maWQg KmNmaWQgPSB0Y29uLT5jZmlkcy0+Y2ZpZDsKLQotCWlmIChjZmlkID09IE5VTEwpCi0JCXJldHVy bjsKLQotCW11dGV4X2xvY2soJmNmaWQtPmZpZF9tdXRleCk7Ci0JY2ZpZC0+aXNfdmFsaWQgPSBm YWxzZTsKLQkvKiBjYWNoZWQgaGFuZGxlIGlzIG5vdCB2YWxpZCwgc28gU01CMl9DTE9TRSB3b24n dCBiZSBzZW50IGJlbG93ICovCi0JY2xvc2VfY2FjaGVkX2Rpcl9sZWFzZV9sb2NrZWQoY2ZpZCk7 Ci0JbWVtc2V0KCZjZmlkLT5maWQsIDAsIHNpemVvZihzdHJ1Y3QgY2lmc19maWQpKTsKLQltdXRl eF91bmxvY2soJmNmaWQtPmZpZF9tdXRleCk7CisJc3RydWN0IGNhY2hlZF9maWRzICpjZmlkcyA9 IHRjb24tPmNmaWRzOworCXN0cnVjdCBjYWNoZWRfZmlkICpjZmlkLCAqcTsKKwlzdHJ1Y3QgbGlz dF9oZWFkIGVudHJ5OworCisJSU5JVF9MSVNUX0hFQUQoJmVudHJ5KTsKKwlzcGluX2xvY2soJmNm aWRzLT5jZmlkX2xpc3RfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNmaWQsIHEs ICZjZmlkcy0+ZW50cmllcywgZW50cnkpIHsKKwkJbGlzdF9kZWwoJmNmaWQtPmVudHJ5KTsKKwkJ bGlzdF9hZGQoJmNmaWQtPmVudHJ5LCAmZW50cnkpOworCQljZmlkcy0+bnVtX2VudHJpZXMtLTsK KwkJY2ZpZC0+aXNfb3BlbiA9IGZhbHNlOworCQkvKiBUbyBwcmV2ZW50IHJhY2Ugd2l0aCBzbWIy X2NhY2hlZF9sZWFzZV9icmVhaygpICovCisJCWtyZWZfZ2V0KCZjZmlkLT5yZWZjb3VudCk7CisJ fQorCXNwaW5fdW5sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCisJbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKGNmaWQsIHEsICZlbnRyeSwgZW50cnkpIHsKKwkJY2ZpZC0+b25fbGlzdCA9 IGZhbHNlOworCQlsaXN0X2RlbCgmY2ZpZC0+ZW50cnkpOworCQljYW5jZWxfd29ya19zeW5jKCZj ZmlkLT5sZWFzZV9icmVhayk7CisJCWlmIChjZmlkLT5oYXNfbGVhc2UpIHsKKwkJCS8qCisJCQkg KiBXZSBsZWFzZSB3YXMgbmV2ZXIgY2FuY2VsbGVkIGZyb20gdGhlIHNlcnZlciBzbyB3ZQorCQkJ ICogbmVlZCB0byBkcm9wIHRoZSByZWZlcmVuY2UuCisJCQkgKi8KKwkJCXNwaW5fbG9jaygmY2Zp ZHMtPmNmaWRfbGlzdF9sb2NrKTsKKwkJCWNmaWQtPmhhc19sZWFzZSA9IGZhbHNlOworCQkJc3Bp bl91bmxvY2soJmNmaWRzLT5jZmlkX2xpc3RfbG9jayk7CisJCQlrcmVmX3B1dCgmY2ZpZC0+cmVm Y291bnQsIHNtYjJfY2xvc2VfY2FjaGVkX2ZpZCk7CisJCX0KKwkJLyogRHJvcCB0aGUgZXh0cmEg cmVmZXJlbmNlIG9wZW5lZCBhYm92ZSovCisJCWtyZWZfcHV0KCZjZmlkLT5yZWZjb3VudCwgc21i Ml9jbG9zZV9jYWNoZWRfZmlkKTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zNjksNTEgKzM4 Miw4MyBAQCBzbWIyX2NhY2hlZF9sZWFzZV9icmVhayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAJc3RydWN0IGNhY2hlZF9maWQgKmNmaWQgPSBjb250YWluZXJfb2Yod29yaywKIAkJCQlzdHJ1 Y3QgY2FjaGVkX2ZpZCwgbGVhc2VfYnJlYWspOwogCi0JY2xvc2VfY2FjaGVkX2Rpcl9sZWFzZShj ZmlkKTsKKwlzcGluX2xvY2soJmNmaWQtPmNmaWRzLT5jZmlkX2xpc3RfbG9jayk7CisJY2ZpZC0+ aGFzX2xlYXNlID0gZmFsc2U7CisJc3Bpbl91bmxvY2soJmNmaWQtPmNmaWRzLT5jZmlkX2xpc3Rf bG9jayk7CisJa3JlZl9wdXQoJmNmaWQtPnJlZmNvdW50LCBzbWIyX2Nsb3NlX2NhY2hlZF9maWQp OwogfQogCiBpbnQgY2FjaGVkX2Rpcl9sZWFzZV9icmVhayhzdHJ1Y3QgY2lmc190Y29uICp0Y29u LCBfX3U4IGxlYXNlX2tleVsxNl0pCiB7Ci0Jc3RydWN0IGNhY2hlZF9maWQgKmNmaWQgPSB0Y29u LT5jZmlkcy0+Y2ZpZDsKKwlzdHJ1Y3QgY2FjaGVkX2ZpZHMgKmNmaWRzID0gdGNvbi0+Y2ZpZHM7 CisJc3RydWN0IGNhY2hlZF9maWQgKmNmaWQ7CiAKLQlpZiAoY2ZpZCA9PSBOVUxMKQorCWlmIChj ZmlkcyA9PSBOVUxMKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoY2ZpZC0+aXNfdmFsaWQgJiYK LQkgICAgIW1lbWNtcChsZWFzZV9rZXksCi0JCSAgICBjZmlkLT5maWQubGVhc2Vfa2V5LAotCQkg ICAgU01CMl9MRUFTRV9LRVlfU0laRSkpIHsKLQkJY2ZpZC0+dGltZSA9IDA7Ci0JCUlOSVRfV09S SygmY2ZpZC0+bGVhc2VfYnJlYWssCi0JCQkgIHNtYjJfY2FjaGVkX2xlYXNlX2JyZWFrKTsKLQkJ cXVldWVfd29yayhjaWZzaW9kX3dxLAotCQkJICAgJmNmaWQtPmxlYXNlX2JyZWFrKTsKLQkJcmV0 dXJuIHRydWU7CisJc3Bpbl9sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0X2xvY2spOworCWxpc3RfZm9y X2VhY2hfZW50cnkoY2ZpZCwgJmNmaWRzLT5lbnRyaWVzLCBlbnRyeSkgeworCQlpZiAoY2ZpZC0+ aGFzX2xlYXNlICYmCisJCSAgICAhbWVtY21wKGxlYXNlX2tleSwKKwkJCSAgICBjZmlkLT5maWQu bGVhc2Vfa2V5LAorCQkJICAgIFNNQjJfTEVBU0VfS0VZX1NJWkUpKSB7CisJCQljZmlkLT50aW1l ID0gMDsKKwkJCS8qCisJCQkgKiBXZSBmb3VuZCBhIGxlYXNlIHJlbW92ZSBpdCBmcm9tIHRoZSBs aXN0CisJCQkgKiBzbyBubyB0aHJlYWRzIGNhbiBhY2Nlc3MgaXQuCisJCQkgKi8KKwkJCWxpc3Rf ZGVsKCZjZmlkLT5lbnRyeSk7CisJCQljZmlkLT5vbl9saXN0ID0gZmFsc2U7CisJCQljZmlkcy0+ bnVtX2VudHJpZXMtLTsKKworCQkJcXVldWVfd29yayhjaWZzaW9kX3dxLAorCQkJCSAgICZjZmlk LT5sZWFzZV9icmVhayk7CisJCQlzcGluX3VubG9jaygmY2ZpZHMtPmNmaWRfbGlzdF9sb2NrKTsK KwkJCXJldHVybiB0cnVlOworCQl9CiAJfQorCXNwaW5fdW5sb2NrKCZjZmlkcy0+Y2ZpZF9saXN0 X2xvY2spOwogCXJldHVybiBmYWxzZTsKIH0KIAotc3RydWN0IGNhY2hlZF9maWQgKmluaXRfY2Fj aGVkX2Rpcihjb25zdCBjaGFyICpwYXRoKQorc3RhdGljIHN0cnVjdCBjYWNoZWRfZmlkICppbml0 X2NhY2hlZF9kaXIoY29uc3QgY2hhciAqcGF0aCkKIHsKIAlzdHJ1Y3QgY2FjaGVkX2ZpZCAqY2Zp ZDsKIAotCWNmaWQgPSBremFsbG9jKHNpemVvZigqY2ZpZCksIEdGUF9LRVJORUwpOworCWNmaWQg PSBremFsbG9jKHNpemVvZigqY2ZpZCksIEdGUF9BVE9NSUMpOwogCWlmICghY2ZpZCkKIAkJcmV0 dXJuIE5VTEw7Ci0JY2ZpZC0+cGF0aCA9IGtzdHJkdXAocGF0aCwgR0ZQX0tFUk5FTCk7CisJY2Zp ZC0+cGF0aCA9IGtzdHJkdXAocGF0aCwgR0ZQX0FUT01JQyk7CiAJaWYgKCFjZmlkLT5wYXRoKSB7 CiAJCWtmcmVlKGNmaWQpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKKwlJTklUX1dPUksoJmNmaWQt PmxlYXNlX2JyZWFrLCBzbWIyX2NhY2hlZF9sZWFzZV9icmVhayk7CisJSU5JVF9MSVNUX0hFQUQo JmNmaWQtPmVudHJ5KTsKIAlJTklUX0xJU1RfSEVBRCgmY2ZpZC0+ZGlyZW50cy5lbnRyaWVzKTsK IAltdXRleF9pbml0KCZjZmlkLT5kaXJlbnRzLmRlX211dGV4KTsKLQltdXRleF9pbml0KCZjZmlk LT5maWRfbXV0ZXgpOworCXNwaW5fbG9ja19pbml0KCZjZmlkLT5maWRfbG9jayk7CisJa3JlZl9p bml0KCZjZmlkLT5yZWZjb3VudCk7CiAJcmV0dXJuIGNmaWQ7CiB9CiAKLXZvaWQgZnJlZV9jYWNo ZWRfZGlyKHN0cnVjdCBjYWNoZWRfZmlkICpjZmlkKQorc3RhdGljIHZvaWQgZnJlZV9jYWNoZWRf ZGlyKHN0cnVjdCBjYWNoZWRfZmlkICpjZmlkKQogeworCXN0cnVjdCBjYWNoZWRfZGlyZW50ICpk aXJlbnQsICpxOworCisJZHB1dChjZmlkLT5kZW50cnkpOworCWNmaWQtPmRlbnRyeSA9IE5VTEw7 CisKKwkvKgorCSAqIERlbGV0ZSBhbGwgY2FjaGVkIGRpcmVudCBuYW1lcworCSAqLworCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShkaXJlbnQsIHEsICZjZmlkLT5kaXJlbnRzLmVudHJpZXMsIGVu dHJ5KSB7CisJCWxpc3RfZGVsKCZkaXJlbnQtPmVudHJ5KTsKKwkJa2ZyZWUoZGlyZW50LT5uYW1l KTsKKwkJa2ZyZWUoZGlyZW50KTsKKwl9CisKIAlrZnJlZShjZmlkLT5wYXRoKTsKIAljZmlkLT5w YXRoID0gTlVMTDsKIAlrZnJlZShjZmlkKTsKQEAgLTQyNiwxNSArNDcxLDM0IEBAIHN0cnVjdCBj YWNoZWRfZmlkcyAqaW5pdF9jYWNoZWRfZGlycyh2b2lkKQogCWNmaWRzID0ga3phbGxvYyhzaXpl b2YoKmNmaWRzKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjZmlkcykKIAkJcmV0dXJuIE5VTEw7Ci0J bXV0ZXhfaW5pdCgmY2ZpZHMtPmNmaWRfbGlzdF9tdXRleCk7CisJc3Bpbl9sb2NrX2luaXQoJmNm aWRzLT5jZmlkX2xpc3RfbG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJmNmaWRzLT5lbnRyaWVzKTsK IAlyZXR1cm4gY2ZpZHM7CiB9CiAKKy8qCisgKiBDYWxsZWQgZnJvbSB0Y29uSW5mb0ZyZWUgd2hl biB3ZSBhcmUgdGVhcmluZyBkb3duIHRoZSB0Y29uLgorICogVGhlcmUgYXJlIG5vIGFjdGl2ZSB1 c2VycyBvciBvcGVuIGZpbGVzL2RpcmVjdG9yaWVzIGF0IHRoaXMgcG9pbnQuCisgKi8KIHZvaWQg ZnJlZV9jYWNoZWRfZGlycyhzdHJ1Y3QgY2FjaGVkX2ZpZHMgKmNmaWRzKQogewotCWlmIChjZmlk cy0+Y2ZpZCkgewotCQlmcmVlX2NhY2hlZF9kaXIoY2ZpZHMtPmNmaWQpOwotCQljZmlkcy0+Y2Zp ZCA9IE5VTEw7CisJc3RydWN0IGNhY2hlZF9maWQgKmNmaWQsICpxOworCXN0cnVjdCBsaXN0X2hl YWQgZW50cnk7CisKKwlJTklUX0xJU1RfSEVBRCgmZW50cnkpOworCXNwaW5fbG9jaygmY2ZpZHMt PmNmaWRfbGlzdF9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY2ZpZCwgcSwgJmNm aWRzLT5lbnRyaWVzLCBlbnRyeSkgeworCQljZmlkLT5vbl9saXN0ID0gZmFsc2U7CisJCWNmaWQt PmlzX29wZW4gPSBmYWxzZTsKKwkJbGlzdF9kZWwoJmNmaWQtPmVudHJ5KTsKKwkJbGlzdF9hZGQo JmNmaWQtPmVudHJ5LCAmZW50cnkpOwogCX0KKwlzcGluX3VubG9jaygmY2ZpZHMtPmNmaWRfbGlz dF9sb2NrKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjZmlkLCBxLCAmZW50cnksIGVu dHJ5KSB7CisJCWxpc3RfZGVsKCZjZmlkLT5lbnRyeSk7CisJCWZyZWVfY2FjaGVkX2RpcihjZmlk KTsKKwl9CisKIAlrZnJlZShjZmlkcyk7CiB9CmRpZmYgLS1naXQgYS9mcy9jaWZzL2NhY2hlZF9k aXIuaCBiL2ZzL2NpZnMvY2FjaGVkX2Rpci5oCmluZGV4IGJkZjZjMzg2NjY1My4uZTUzNjMwNGNh MmNlIDEwMDY0NAotLS0gYS9mcy9jaWZzL2NhY2hlZF9kaXIuaAorKysgYi9mcy9jaWZzL2NhY2hl ZF9kaXIuaApAQCAtMzEsMTQgKzMxLDE3IEBAIHN0cnVjdCBjYWNoZWRfZGlyZW50cyB7CiB9Owog CiBzdHJ1Y3QgY2FjaGVkX2ZpZCB7CisJc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKKwlzdHJ1Y3Qg Y2FjaGVkX2ZpZHMgKmNmaWRzOwogCWNvbnN0IGNoYXIgKnBhdGg7Ci0JYm9vbCBpc192YWxpZDox OwkvKiBEbyB3ZSBoYXZlIGEgdXNlYWJsZSByb290IGZpZCAqLwotCWJvb2wgZmlsZV9hbGxfaW5m b19pc192YWxpZDoxOwogCWJvb2wgaGFzX2xlYXNlOjE7CisJYm9vbCBpc19vcGVuOjE7CisJYm9v bCBvbl9saXN0OjE7CisJYm9vbCBmaWxlX2FsbF9pbmZvX2lzX3ZhbGlkOjE7CiAJdW5zaWduZWQg bG9uZyB0aW1lOyAvKiBqaWZmaWVzIG9mIHdoZW4gbGVhc2Ugd2FzIHRha2VuICovCiAJc3RydWN0 IGtyZWYgcmVmY291bnQ7CiAJc3RydWN0IGNpZnNfZmlkIGZpZDsKLQlzdHJ1Y3QgbXV0ZXggZmlk X211dGV4OworCXNwaW5sb2NrX3QgZmlkX2xvY2s7CiAJc3RydWN0IGNpZnNfdGNvbiAqdGNvbjsK IAlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAJc3RydWN0IHdvcmtfc3RydWN0IGxlYXNlX2JyZWFr OwpAQCAtNDYsOSArNDksMTQgQEAgc3RydWN0IGNhY2hlZF9maWQgewogCXN0cnVjdCBjYWNoZWRf ZGlyZW50cyBkaXJlbnRzOwogfTsKIAorI2RlZmluZSBNQVhfQ0FDSEVEX0ZJRFMgMTYKIHN0cnVj dCBjYWNoZWRfZmlkcyB7Ci0Jc3RydWN0IG11dGV4IGNmaWRfbGlzdF9tdXRleDsKLQlzdHJ1Y3Qg Y2FjaGVkX2ZpZCAqY2ZpZDsKKwkvKiBNdXN0IGJlIGhlbGQgd2hlbjoKKwkgKiAtIGFjY2Vzc2lu ZyB0aGUgY2ZpZHMtPmVudHJpZXMgbGlzdAorCSAqLworCXNwaW5sb2NrX3QgY2ZpZF9saXN0X2xv Y2s7CisJaW50IG51bV9lbnRyaWVzOworCXN0cnVjdCBsaXN0X2hlYWQgZW50cmllczsKIH07CiAK IGV4dGVybiBzdHJ1Y3QgY2FjaGVkX2ZpZHMgKmluaXRfY2FjaGVkX2RpcnModm9pZCk7CkBAIC02 MSw4ICs2OSw2IEBAIGV4dGVybiBpbnQgb3Blbl9jYWNoZWRfZGlyX2J5X2RlbnRyeShzdHJ1Y3Qg Y2lmc190Y29uICp0Y29uLAogCQkJCSAgICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCQkJCSAg ICAgc3RydWN0IGNhY2hlZF9maWQgKipjZmlkKTsKIGV4dGVybiB2b2lkIGNsb3NlX2NhY2hlZF9k aXIoc3RydWN0IGNhY2hlZF9maWQgKmNmaWQpOwotZXh0ZXJuIHZvaWQgY2xvc2VfY2FjaGVkX2Rp cl9sZWFzZShzdHJ1Y3QgY2FjaGVkX2ZpZCAqY2ZpZCk7Ci1leHRlcm4gdm9pZCBjbG9zZV9jYWNo ZWRfZGlyX2xlYXNlX2xvY2tlZChzdHJ1Y3QgY2FjaGVkX2ZpZCAqY2ZpZCk7CiBleHRlcm4gdm9p ZCBjbG9zZV9hbGxfY2FjaGVkX2RpcnMoc3RydWN0IGNpZnNfc2JfaW5mbyAqY2lmc19zYik7CiBl eHRlcm4gdm9pZCBpbnZhbGlkYXRlX2FsbF9jYWNoZWRfZGlycyhzdHJ1Y3QgY2lmc190Y29uICp0 Y29uKTsKIGV4dGVybiBpbnQgY2FjaGVkX2Rpcl9sZWFzZV9icmVhayhzdHJ1Y3QgY2lmc190Y29u ICp0Y29uLCBfX3U4IGxlYXNlX2tleVsxNl0pOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9pbm9kZS5j IGIvZnMvY2lmcy9pbm9kZS5jCmluZGV4IDM3ODRkM2E4ODA1My4uNTM0MGUzMmU3MzE1IDEwMDY0 NAotLS0gYS9mcy9jaWZzL2lub2RlLmMKKysrIGIvZnMvY2lmcy9pbm9kZS5jCkBAIC0yMjY1LDEz ICsyMjY1LDEzIEBAIGNpZnNfZGVudHJ5X25lZWRzX3JldmFsKHN0cnVjdCBkZW50cnkgKmRlbnRy eSkKIAkJcmV0dXJuIHRydWU7CiAKIAlpZiAoIW9wZW5fY2FjaGVkX2Rpcl9ieV9kZW50cnkodGNv biwgZGVudHJ5LT5kX3BhcmVudCwgJmNmaWQpKSB7Ci0JCW11dGV4X2xvY2soJmNmaWQtPmZpZF9t dXRleCk7CisJCXNwaW5fbG9jaygmY2ZpZC0+ZmlkX2xvY2spOwogCQlpZiAoY2ZpZC0+dGltZSAm JiBjaWZzX2ktPnRpbWUgPiBjZmlkLT50aW1lKSB7Ci0JCQltdXRleF91bmxvY2soJmNmaWQtPmZp ZF9tdXRleCk7CisJCQlzcGluX3VubG9jaygmY2ZpZC0+ZmlkX2xvY2spOwogCQkJY2xvc2VfY2Fj aGVkX2RpcihjZmlkKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQotCQltdXRleF91bmxvY2soJmNm aWQtPmZpZF9tdXRleCk7CisJCXNwaW5fdW5sb2NrKCZjZmlkLT5maWRfbG9jayk7CiAJCWNsb3Nl X2NhY2hlZF9kaXIoY2ZpZCk7CiAJfQogCS8qCmRpZmYgLS1naXQgYS9mcy9jaWZzL3NtYjJvcHMu YyBiL2ZzL2NpZnMvc21iMm9wcy5jCmluZGV4IDEwZjllZjY4ZTUxMC4uNTM3Yzc4YjMwOTMxIDEw MDY0NAotLS0gYS9mcy9jaWZzL3NtYjJvcHMuYworKysgYi9mcy9jaWZzL3NtYjJvcHMuYwpAQCAt ODAwLDcgKzgwMCw3IEBAIHNtYjJfaXNfcGF0aF9hY2Nlc3NpYmxlKGNvbnN0IHVuc2lnbmVkIGlu dCB4aWQsIHN0cnVjdCBjaWZzX3Rjb24gKnRjb24sCiAKIAlyYyA9IG9wZW5fY2FjaGVkX2Rpcih4 aWQsIHRjb24sIGZ1bGxfcGF0aCwgY2lmc19zYiwgdHJ1ZSwgJmNmaWQpOwogCWlmICghcmMpIHsK LQkJaWYgKGNmaWQtPmlzX3ZhbGlkKSB7CisJCWlmIChjZmlkLT5oYXNfbGVhc2UpIHsKIAkJCWNs b3NlX2NhY2hlZF9kaXIoY2ZpZCk7CiAJCQlyZXR1cm4gMDsKIAkJfQotLSAKMi4zNC4xCgo= --000000000000453fa405ea56d4ce--