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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 47EB2C7619A for ; Sat, 15 Apr 2023 16:48:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=U43z4Weo2y/Np3xt3UoQRMptstRnJDvZIzr1RhyR9Xw=; b=CXz3PZaPXDBFhk 3CujhmdO4WmQ+Aup/OSAhfS0+hI3p6cenrgpaXLRXS+GwkKHhL1c51/1GiJZZRJw7l95n/SFgFvFJ 4FWwxHQBv581S6xGezTQwDTOMtiP3mf8o66XyD5JkwvScMCXPqH3QCsnD/Mod+365VEW00hvHZrN0 SH5k0XoifxojdcifdJ8mEPBAgizUjTON5qCzf3KjA8VlI0oQv5iL8BW/LB9zfbifuIwxCrjrj5R13 HdAlPJz3wMjnXfi9GDzmPuHKZfMT4spa37u8kKOuigCcsqr5ofVRLli4RJ457Lsq7fr2PmX6zyaor 0hquvJWUf/0PDPqgjyHQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pnj55-00CUKs-0k; Sat, 15 Apr 2023 16:48:55 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pnj51-00CUK2-1F for linux-um@lists.infradead.org; Sat, 15 Apr 2023 16:48:54 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-50489c6171dso5865690a12.3 for ; Sat, 15 Apr 2023 09:48:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681577329; x=1684169329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sXmYBkrMyrAk67EERC0t5e06ZgKPFoD3TSkoI9tWTvs=; b=bIBLCARH9lC/g8qZycvgybdxaX4b6MDa3SdgDVgYvcnfFXxbJMd49JCwBitOkwWx8b o4s9jJ9nFsw6LSrRcI/ACftwlR9ot13jQVAj4wIanEYcC3VvC80uCMR2wktnQCq6wHFi 3tqSWYP7SBjNWrVz1YvhtysxZT8QGHg+V3NHqHjUApkCTcfVebmX5iOcE5HUfdK6yK7u doxed/HAZS6Y2WWjYIKEBLPNTmk2XTkf0czA+TVc9QklUnYcoT0Eky9V2vFUIsaDKBRi ihT/7kS2cSiadqbkqag3bCfz9eSIlO5DNBMQgl6GHNkObNU3Lj76kfb8wotw6pB7PUCH PGfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681577329; x=1684169329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sXmYBkrMyrAk67EERC0t5e06ZgKPFoD3TSkoI9tWTvs=; b=kFZ247y/lXpvcvQB8Gz1jmP+8vCMBsnwaVc3ecpBNzkNWWPV1rqKpkcgLJMkx0aKS3 A/2vpLwl8fPLZdfxg3vW09XQW5/7h+RUJlx6WxJxMPCgI2x5X4QS7y7TZUnjNyMMEoVg eZxmEOQF98m7w35lwSfcs2MJON0B5qoRm3dg2mDIUMo6sjWu70T/1/bu3nC/shqbXXU1 8rPD6ohWAotfbbYXTgsyG0sd0fl+zmpK639yhcUdGFTRQcfYIseDrMPlZEOPiAuOjZqn PuN2mhKcPTqDFbZQ/Hu/bnYEfzI+dRP4KQrn9rbtRiVnn/aqUO1mGeym8cSjc6p9RtEa ZC2g== X-Gm-Message-State: AAQBX9ccxO1Ka/rTkmD+bHhAVlVbab8/mVL1q8GFSjv7FtT3K9K3Cw5W V/mmnXQnGswzgBnL02u85Kt2MnD1Ccib09Di X-Google-Smtp-Source: AKy350YzCSzrHwcgxfzezEUn6XcgZH9Rfg/FLNZtKJfuYhW4OvinyzCrVoaDMaZv4HdDVWMyiGM7+g== X-Received: by 2002:aa7:cd64:0:b0:506:747f:3bf0 with SMTP id ca4-20020aa7cd64000000b00506747f3bf0mr8816121edb.8.1681577328402; Sat, 15 Apr 2023 09:48:48 -0700 (PDT) Received: from laptop-fedora.. ([79.175.90.109]) by smtp.gmail.com with ESMTPSA id sc2-20020a1709078a0200b0093f322187f0sm3974270ejc.189.2023.04.15.09.48.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Apr 2023 09:48:47 -0700 (PDT) From: =?UTF-8?q?Marko=20Petrovi=C4=87?= To: linux-um@lists.infradead.org Cc: richard@nod.at, anton.ivanov@cambridgegreys.com, johannes@sipsolutions.net, =?UTF-8?q?Marko=20Petrovi=C4=87?= Subject: [PATCH v3 2/2] hostfs: store permissions in extended attributes Date: Sat, 15 Apr 2023 18:48:21 +0200 Message-Id: <20230415164821.166606-1-petrovicmarko2006@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230413223024.11513-1-petrovicmarko2006@gmail.com> References: <20230413223024.11513-1-petrovicmarko2006@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230415_094851_429643_33D2F195 X-CRM114-Status: GOOD ( 27.42 ) X-BeenThere: linux-um@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-um" Errors-To: linux-um-bounces+linux-um=archiver.kernel.org@lists.infradead.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHhhdHRycGVybSBob3N0ZnMga2VybmVsIGNvbW1h bmQgbGluZSBvcHRpb24Kd2hpY2ggZW5hYmxlcyB0aGUgdXNlIG9mIGV4dGVuZGVkIGF0dHJpYnV0 ZXMgZm9yIHN0b3JpbmcgcGVybWlzc2lvbnMgYnkKZGVmYXVsdCBvbiBhbGwgbW91bnRlZCBob3N0 ZnMgZmlsZXN5c3RlbXMuCgpUaGUgc3VwcG9ydCBmb3IgcGVyLW1vdW50cG9pbnQgeGF0dHJwZXJt L25veGF0dHJwZXJtIGlzIGFkZGVkLgoKJ3N0cnVjdCBzdXBlcl9ibG9jayAtPiBzX2ZzX2luZm8n IG5vdyBwb2ludHMgdG8gJ3N0cnVjdCBob3N0ZnNfZnNfaW5mbycuCkFsbCBjb2RlIHRoYXQgcmVs aWVkIG9uIHNfZnNfaW5mbyBwb2ludGluZyB0byBhIHN0cmluZyBpcyBjaGFuZ2VkIHRvIHVzZQp0 aGUgc2FtZSBzdHJpbmcgc3RvcmVkIGluc2lkZSAnc3RydWN0IGhvc3Rmc19mc19pbmZvJy4gVGhp cyBhbGxvd3MgZWFzeQpleHRlbnNpb25zIG9mIHRoZSBzdXBlcl9ibG9jayBkYXRhIGluIHRoZSBm dXR1cmUgZm9yIHN0b3JpbmcgbW91bnQKb3B0aW9ucy4KCkZ1bmN0aW9uIGhvc3Rmc19wYXJzZV9v cHRpb25zKCkgaXMgYWRkZWQgZm9yIHBhcnNpbmcgdGhlIHN0cmluZyBvZgptb3VudCBvcHRpb25z IGFuZCBzdG9yaW5nIHRoZW0gaW4gJ3N0cnVjdCBob3N0ZnNfZnNfaW5mbycuCgpXaGVuIHhhdHRy cGVybSBpcyBlbmFibGVkLCBmaWxlc3lzdGVtIHN0b3JlcyBwZXJtaXNzaW9ucyBpbiBhCmh1bWFu LXJlYWRhYmxlIHN0cmluZyBpbiBhdHRyaWJ1dGVzIHVzZXIudW1sbW9kZSAoZm9yIG1vZGUpIGFu ZAp1c2VyLnVtbGNyZWQgKGZvciB1aWQgYW5kIGdpZCkuCgpTaWduZWQtb2ZmLWJ5OiBNYXJrbyBQ ZXRyb3ZpxIcgPHBldHJvdmljbWFya28yMDA2QGdtYWlsLmNvbT4KLS0tCiBmcy9ob3N0ZnMvaG9z dGZzLmggICAgICB8ICAxMyArKy0KIGZzL2hvc3Rmcy9ob3N0ZnNfa2Vybi5jIHwgMTI5ICsrKysr KysrKysrKysrKysrLS0tLQogZnMvaG9zdGZzL2hvc3Rmc191c2VyLmMgfCAyNDIgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzNDAgaW5z ZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvaG9zdGZzL2hvc3Rm cy5oIGIvZnMvaG9zdGZzL2hvc3Rmcy5oCmluZGV4IDY5Y2I3OTZmNjI3MC4uMDNmNzczYjdjNDIz IDEwMDY0NAotLS0gYS9mcy9ob3N0ZnMvaG9zdGZzLmgKKysrIGIvZnMvaG9zdGZzL2hvc3Rmcy5o CkBAIC0zNyw2ICszNyw3IEBACiAgKiBpcyBvbiwgYW5kIHJlbW92ZSB0aGUgYXBwcm9wcmlhdGUg Yml0cyBmcm9tIGF0dHItPmlhX21vZGUgKGF0dHIgaXMgYQogICogInN0cnVjdCBpYXR0ciAqIiku IC1CbGFpc29yQmxhZGUKICAqLworZXh0ZXJuIGludCB1c2VfeGF0dHI7CiBzdHJ1Y3QgaG9zdGZz X3RpbWVzcGVjIHsKIAlsb25nIGxvbmcgdHZfc2VjOwogCWxvbmcgbG9uZyB0dl9uc2VjOwpAQCAt NjcsNyArNjgsOCBAQCBzdHJ1Y3QgaG9zdGZzX3N0YXQgewogCXVuc2lnbmVkIGludCBtaW47CiB9 OwogCi1leHRlcm4gaW50IHN0YXRfZmlsZShjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgaG9zdGZz X3N0YXQgKnAsIGludCBmZCk7CitleHRlcm4gaW50IHN0YXRfZmlsZShjb25zdCBjaGFyICpwYXRo LCBzdHJ1Y3QgaG9zdGZzX3N0YXQgKnAsIGludCBmZCwKKwkJCQkJCQlpbnQgbW50X3VzZV94YXR0 cik7CiBleHRlcm4gaW50IGFjY2Vzc19maWxlKGNoYXIgKnBhdGgsIGludCByLCBpbnQgdywgaW50 IHgpOwogZXh0ZXJuIGludCBvcGVuX2ZpbGUoY2hhciAqcGF0aCwgaW50IHIsIGludCB3LCBpbnQg YXBwZW5kKTsKIGV4dGVybiB2b2lkICpvcGVuX2RpcihjaGFyICpwYXRoLCBpbnQgKmVycl9vdXQp OwpAQCAtODMsMTEgKzg1LDE0IEBAIGV4dGVybiBpbnQgd3JpdGVfZmlsZShpbnQgZmQsIHVuc2ln bmVkIGxvbmcgbG9uZyAqb2Zmc2V0LCBjb25zdCBjaGFyICpidWYsCiAJCSAgICAgIGludCBsZW4p OwogZXh0ZXJuIGludCBsc2Vla19maWxlKGludCBmZCwgbG9uZyBsb25nIG9mZnNldCwgaW50IHdo ZW5jZSk7CiBleHRlcm4gaW50IGZzeW5jX2ZpbGUoaW50IGZkLCBpbnQgZGF0YXN5bmMpOwotZXh0 ZXJuIGludCBmaWxlX2NyZWF0ZShjaGFyICpuYW1lLCBpbnQgbW9kZSk7Ci1leHRlcm4gaW50IHNl dF9hdHRyKGNvbnN0IGNoYXIgKmZpbGUsIHN0cnVjdCBob3N0ZnNfaWF0dHIgKmF0dHJzLCBpbnQg ZmQpOworZXh0ZXJuIGludCBmaWxlX2NyZWF0ZShjaGFyICpuYW1lLCBpbnQgbW9kZSwgdWlkX3Qg dWlkLCBnaWRfdCBnaWQsCisJCQkJCQkJaW50IG1udF91c2VfeGF0dHIpOworZXh0ZXJuIGludCBz ZXRfYXR0cihjb25zdCBjaGFyICpmaWxlLCBzdHJ1Y3QgaG9zdGZzX2lhdHRyICphdHRycywgaW50 IGZkLAorCQkJCQkJCSAgICBpbnQgbW50X3VzZV94YXR0cik7CiBleHRlcm4gaW50IG1ha2Vfc3lt bGluayhjb25zdCBjaGFyICpmcm9tLCBjb25zdCBjaGFyICp0byk7CiBleHRlcm4gaW50IHVubGlu a19maWxlKGNvbnN0IGNoYXIgKmZpbGUpOwotZXh0ZXJuIGludCBkb19ta2Rpcihjb25zdCBjaGFy ICpmaWxlLCBpbnQgbW9kZSk7CitleHRlcm4gaW50IGRvX21rZGlyKGNvbnN0IGNoYXIgKmZpbGUs IGludCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKKwkJCQkJCQlpbnQgbW50X3VzZV94YXR0 cik7CiBleHRlcm4gaW50IGhvc3Rmc19kb19ybWRpcihjb25zdCBjaGFyICpmaWxlKTsKIGV4dGVy biBpbnQgZG9fbWtub2QoY29uc3QgY2hhciAqZmlsZSwgaW50IG1vZGUsIHVuc2lnbmVkIGludCBt YWpvciwKIAkJICAgIHVuc2lnbmVkIGludCBtaW5vcik7CmRpZmYgLS1naXQgYS9mcy9ob3N0ZnMv aG9zdGZzX2tlcm4uYyBiL2ZzL2hvc3Rmcy9ob3N0ZnNfa2Vybi5jCmluZGV4IDI4YjRmMTVjMTll Yi4uYTJhZmU3MGFiZjE0IDEwMDY0NAotLS0gYS9mcy9ob3N0ZnMvaG9zdGZzX2tlcm4uYworKysg Yi9mcy9ob3N0ZnMvaG9zdGZzX2tlcm4uYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgPGxp bnV4L3dyaXRlYmFjay5oPgogI2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+CiAjaW5jbHVkZSA8bGlu dXgvbmFtZWkuaD4KKyNpbmNsdWRlIDxsaW51eC91aWRnaWQuaD4KICNpbmNsdWRlICJob3N0ZnMu aCIKICNpbmNsdWRlIDxpbml0Lmg+CiAjaW5jbHVkZSA8a2Vybi5oPgpAQCAtMjgsNiArMjksMTEg QEAgc3RydWN0IGhvc3Rmc19pbm9kZV9pbmZvIHsKIAlzdHJ1Y3QgbXV0ZXggb3Blbl9tdXRleDsK IH07CiAKK3N0cnVjdCBob3N0ZnNfZnNfaW5mbyB7CisJY2hhciBob3N0X3Jvb3RfcGF0aFtQQVRI X01BWCsxXTsKKwlpbnQgdXNlX3hhdHRyOworfTsKKwogc3RhdGljIGlubGluZSBzdHJ1Y3QgaG9z dGZzX2lub2RlX2luZm8gKkhPU1RGU19JKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CiAJcmV0dXJu IGxpc3RfZW50cnkoaW5vZGUsIHN0cnVjdCBob3N0ZnNfaW5vZGVfaW5mbywgdmZzX2lub2RlKTsK QEAgLTY0LDYgKzcwLDggQEAgc3RhdGljIGludCBfX2luaXQgaG9zdGZzX2FyZ3MoY2hhciAqb3B0 aW9ucywgaW50ICphZGQpCiAJCWlmICgqb3B0aW9ucyAhPSAnXDAnKSB7CiAJCQlpZiAoIXN0cmNt cChvcHRpb25zLCAiYXBwZW5kIikpCiAJCQkJYXBwZW5kID0gMTsKKwkJCWVsc2UgaWYgKCFzdHJj bXAob3B0aW9ucywgInhhdHRycGVybSIpKQorCQkJCXVzZV94YXR0ciA9IDE7CiAJCQllbHNlIHBy aW50ZigiaG9zdGZzX2FyZ3MgLSB1bnN1cHBvcnRlZCBvcHRpb24gLSAlc1xuIiwKIAkJCQkgICAg b3B0aW9ucyk7CiAJCX0KQEAgLTc5LDE4ICs4NywyMiBAQCBfX3VtbF9zZXR1cCgiaG9zdGZzPSIs IGhvc3Rmc19hcmdzLAogIiAgICB0cmVlIG9uIHRoZSBob3N0LiAgSWYgdGhpcyBpc24ndCBzcGVj aWZpZWQsIHRoZW4gYSB1c2VyIGluc2lkZSBVTUwgY2FuXG4iCiAiICAgIG1vdW50IGFueXRoaW5n IG9uIHRoZSBob3N0IHRoYXQncyBhY2Nlc3NpYmxlIHRvIHRoZSB1c2VyIHRoYXQncyBydW5uaW5n XG4iCiAiICAgIGl0LlxuIgotIiAgICBUaGUgb25seSBmbGFnIGN1cnJlbnRseSBzdXBwb3J0ZWQg aXMgJ2FwcGVuZCcsIHdoaWNoIHNwZWNpZmllcyB0aGF0IGFsbFxuIgotIiAgICBmaWxlcyBvcGVu ZWQgYnkgaG9zdGZzIHdpbGwgYmUgb3BlbmVkIGluIGFwcGVuZCBtb2RlLlxuXG4iCisiICAgIFRo ZSBvbmx5IGZsYWdzIGN1cnJlbnRseSBzdXBwb3J0ZWQgYXJlICdhcHBlbmQnLCB3aGljaCBzcGVj aWZpZXMgdGhhdFxuIgorIiAgICBhbGwgZmlsZXMgb3BlbmVkIGJ5IGhvc3RmcyB3aWxsIGJlIG9w ZW5lZCBpbiBhcHBlbmQgbW9kZSBhbmQgJ3hhdHRycGVybSdcbiIKKyIgICAgd2hpY2ggc3BlY2lm aWVzIHRoYXQgcGVybWlzc2lvbnMgb2YgZmlsZXMgd2lsbCBiZSBzdG9yZWQgaW4gZXh0ZW5kZWRc biIKKyIgICAgYXR0cmlidXRlcy5cblxuIgogKTsKICNlbmRpZgogCiBzdGF0aWMgY2hhciAqX19k ZW50cnlfbmFtZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNoYXIgKm5hbWUpCiB7CiAJY2hhciAq cCA9IGRlbnRyeV9wYXRoX3JhdyhkZW50cnksIG5hbWUsIFBBVEhfTUFYKTsKKwlzdHJ1Y3QgaG9z dGZzX2ZzX2luZm8gKnNiX2RhdGE7CiAJY2hhciAqcm9vdDsKIAlzaXplX3QgbGVuOwogCi0Jcm9v dCA9IGRlbnRyeS0+ZF9zYi0+c19mc19pbmZvOworCXNiX2RhdGEgPSBkZW50cnktPmRfc2ItPnNf ZnNfaW5mbzsKKwlyb290ID0gc2JfZGF0YS0+aG9zdF9yb290X3BhdGg7CiAJbGVuID0gc3RybGVu KHJvb3QpOwogCWlmIChJU19FUlIocCkpIHsKIAkJX19wdXRuYW1lKG5hbWUpOwpAQCAtMjAzLDgg KzIxNSwxMCBAQCBzdGF0aWMgaW50IGhvc3Rmc19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5 LCBzdHJ1Y3Qga3N0YXRmcyAqc2YpCiAJbG9uZyBsb25nIGZfYmF2YWlsOwogCWxvbmcgbG9uZyBm X2ZpbGVzOwogCWxvbmcgbG9uZyBmX2ZmcmVlOworCXN0cnVjdCBob3N0ZnNfZnNfaW5mbyAqc2Jf ZGF0YTsKIAotCWVyciA9IGRvX3N0YXRmcyhkZW50cnktPmRfc2ItPnNfZnNfaW5mbywKKwlzYl9k YXRhID0gZGVudHJ5LT5kX3NiLT5zX2ZzX2luZm87CisJZXJyID0gZG9fc3RhdGZzKHNiX2RhdGEt Pmhvc3Rfcm9vdF9wYXRoLAogCQkJJnNmLT5mX2JzaXplLCAmZl9ibG9ja3MsICZmX2JmcmVlLCAm Zl9iYXZhaWwsICZmX2ZpbGVzLAogCQkJJmZfZmZyZWUsICZzZi0+Zl9mc2lkLCBzaXplb2Yoc2Yt PmZfZnNpZCksCiAJCQkmc2YtPmZfbmFtZWxlbik7CkBAIC0yNTAsMTUgKzI2NCwyMSBAQCBzdGF0 aWMgdm9pZCBob3N0ZnNfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCiBzdGF0aWMg aW50IGhvc3Rmc19zaG93X29wdGlvbnMoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBkZW50 cnkgKnJvb3QpCiB7Ci0JY29uc3QgY2hhciAqcm9vdF9wYXRoID0gcm9vdC0+ZF9zYi0+c19mc19p bmZvOworCXN0cnVjdCBob3N0ZnNfZnNfaW5mbyAqc2JfZGF0YSA9IHJvb3QtPmRfc2ItPnNfZnNf aW5mbzsKIAlzaXplX3Qgb2Zmc2V0ID0gc3RybGVuKHJvb3RfaW5vKSArIDE7CiAKLQlpZiAoc3Ry bGVuKHJvb3RfcGF0aCkgPiBvZmZzZXQpCi0JCXNlcV9zaG93X29wdGlvbihzZXEsIHJvb3RfcGF0 aCArIG9mZnNldCwgTlVMTCk7CisJaWYgKHN0cmxlbihzYl9kYXRhLT5ob3N0X3Jvb3RfcGF0aCkg PiBvZmZzZXQpCisJCXNlcV9zaG93X29wdGlvbihzZXEsIHNiX2RhdGEtPmhvc3Rfcm9vdF9wYXRo ICsgb2Zmc2V0LCBOVUxMKTsKIAogCWlmIChhcHBlbmQpCiAJCXNlcV9wdXRzKHNlcSwgIixhcHBl bmQiKTsKIAorCWlmIChzYl9kYXRhLT51c2VfeGF0dHIgPT0gMCkKKwkJc2VxX3B1dHMoc2VxLCAi LG5veGF0dHJwZXJtIik7CisKKwlpZiAoc2JfZGF0YS0+dXNlX3hhdHRyID09IDEpCisJCXNlcV9w dXRzKHNlcSwgIix4YXR0cnBlcm0iKTsKKwogCXJldHVybiAwOwogfQogCkBAIC01MTYsNyArNTM2 LDggQEAgc3RhdGljIGludCByZWFkX25hbWUoc3RydWN0IGlub2RlICppbm8sIGNoYXIgKm5hbWUp CiB7CiAJZGV2X3QgcmRldjsKIAlzdHJ1Y3QgaG9zdGZzX3N0YXQgc3Q7Ci0JaW50IGVyciA9IHN0 YXRfZmlsZShuYW1lLCAmc3QsIC0xKTsKKwlzdHJ1Y3QgaG9zdGZzX2ZzX2luZm8gKnNiX2RhdGEg PSBpbm8tPmlfc2ItPnNfZnNfaW5mbzsKKwlpbnQgZXJyID0gc3RhdF9maWxlKG5hbWUsICZzdCwg LTEsIHNiX2RhdGEtPnVzZV94YXR0cik7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIApAQCAt NTY0LDkgKzU4NSwxMyBAQCBzdGF0aWMgaW50IGhvc3Rmc19jcmVhdGUoc3RydWN0IG1udF9pZG1h cCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLAogCQkJIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg dW1vZGVfdCBtb2RlLCBib29sIGV4Y2wpCiB7CiAJc3RydWN0IGlub2RlICppbm9kZTsKKwlzdHJ1 Y3QgaG9zdGZzX2ZzX2luZm8gKnNiX2RhdGE7CiAJY2hhciAqbmFtZTsKIAlpbnQgZXJyb3IsIGZk OworCXVuc2lnbmVkIGludCBjdXJyZW50dWlkOworCXVuc2lnbmVkIGludCBjdXJyZW50Z2lkOwog CisJc2JfZGF0YSA9IGRlbnRyeS0+ZF9zYi0+c19mc19pbmZvOwogCWlub2RlID0gaG9zdGZzX2ln ZXQoZGlyLT5pX3NiKTsKIAlpZiAoSVNfRVJSKGlub2RlKSkgewogCQllcnJvciA9IFBUUl9FUlIo aW5vZGUpOwpAQCAtNTc4LDcgKzYwMywxMCBAQCBzdGF0aWMgaW50IGhvc3Rmc19jcmVhdGUoc3Ry dWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLAogCWlmIChuYW1lID09IE5V TEwpCiAJCWdvdG8gb3V0X3B1dDsKIAotCWZkID0gZmlsZV9jcmVhdGUobmFtZSwgbW9kZSAmIDA3 NzcpOworCWN1cnJlbnR1aWQgPSBmcm9tX2t1aWQoY3VycmVudC0+Y3JlZC0+dXNlcl9ucywgY3Vy cmVudC0+Y3JlZC0+ZXVpZCk7CisJY3VycmVudGdpZCA9IGZyb21fa2dpZChjdXJyZW50LT5jcmVk LT51c2VyX25zLCBjdXJyZW50LT5jcmVkLT5lZ2lkKTsKKwlmZCA9IGZpbGVfY3JlYXRlKG5hbWUs IG1vZGUgJiAwNzc3LCBjdXJyZW50dWlkLCBjdXJyZW50Z2lkLAorCQkJCQkJCSAgIHNiX2RhdGEt PnVzZV94YXR0cik7CiAJaWYgKGZkIDwgMCkKIAkJZXJyb3IgPSBmZDsKIAllbHNlCkBAIC02NzUs MTIgKzcwMywxOCBAQCBzdGF0aWMgaW50IGhvc3Rmc19zeW1saW5rKHN0cnVjdCBtbnRfaWRtYXAg KmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmlubywKIHN0YXRpYyBpbnQgaG9zdGZzX21rZGlyKHN0cnVj dCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmlubywKIAkJCXN0cnVjdCBkZW50cnkg KmRlbnRyeSwgdW1vZGVfdCBtb2RlKQogeworCXN0cnVjdCBob3N0ZnNfZnNfaW5mbyAqc2JfZGF0 YTsKIAljaGFyICpmaWxlOwogCWludCBlcnI7CisJdW5zaWduZWQgaW50IGN1cnJlbnR1aWQ7CisJ dW5zaWduZWQgaW50IGN1cnJlbnRnaWQ7CiAKKwlzYl9kYXRhID0gZGVudHJ5LT5kX3NiLT5zX2Zz X2luZm87CiAJaWYgKChmaWxlID0gZGVudHJ5X25hbWUoZGVudHJ5KSkgPT0gTlVMTCkKIAkJcmV0 dXJuIC1FTk9NRU07Ci0JZXJyID0gZG9fbWtkaXIoZmlsZSwgbW9kZSk7CisJY3VycmVudHVpZCA9 IGZyb21fa3VpZChjdXJyZW50LT5jcmVkLT51c2VyX25zLCBjdXJyZW50LT5jcmVkLT5ldWlkKTsK KwljdXJyZW50Z2lkID0gZnJvbV9rZ2lkKGN1cnJlbnQtPmNyZWQtPnVzZXJfbnMsIGN1cnJlbnQt PmNyZWQtPmVnaWQpOworCWVyciA9IGRvX21rZGlyKGZpbGUsIG1vZGUsIGN1cnJlbnR1aWQsIGN1 cnJlbnRnaWQsIHNiX2RhdGEtPnVzZV94YXR0cik7CiAJX19wdXRuYW1lKGZpbGUpOwogCXJldHVy biBlcnI7CiB9CkBAIC03OTYsMTAgKzgzMCwxMiBAQCBzdGF0aWMgaW50IGhvc3Rmc19zZXRhdHRy KHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLAogewogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkX2lu b2RlKGRlbnRyeSk7CiAJc3RydWN0IGhvc3Rmc19pYXR0ciBhdHRyczsKKwlzdHJ1Y3QgaG9zdGZz X2ZzX2luZm8gKnNiX2RhdGE7CiAJY2hhciAqbmFtZTsKIAlpbnQgZXJyOwogCiAJaW50IGZkID0g SE9TVEZTX0koaW5vZGUpLT5mZDsKKwlzYl9kYXRhID0gZGVudHJ5LT5kX3NiLT5zX2ZzX2luZm87 CiAKIAllcnIgPSBzZXRhdHRyX3ByZXBhcmUoJm5vcF9tbnRfaWRtYXAsIGRlbnRyeSwgYXR0cik7 CiAJaWYgKGVycikKQEAgLTg0OSw3ICs4ODUsNyBAQCBzdGF0aWMgaW50IGhvc3Rmc19zZXRhdHRy KHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLAogCW5hbWUgPSBkZW50cnlfbmFtZShkZW50cnkpOwog CWlmIChuYW1lID09IE5VTEwpCiAJCXJldHVybiAtRU5PTUVNOwotCWVyciA9IHNldF9hdHRyKG5h bWUsICZhdHRycywgZmQpOworCWVyciA9IHNldF9hdHRyKG5hbWUsICZhdHRycywgZmQsIHNiX2Rh dGEtPnVzZV94YXR0cik7CiAJX19wdXRuYW1lKG5hbWUpOwogCWlmIChlcnIpCiAJCXJldHVybiBl cnI7CkBAIC05MTUsMTAgKzk1MSw1OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJh dGlvbnMgaG9zdGZzX2xpbmtfaW9wcyA9IHsKIAkuZ2V0X2xpbmsJPSBob3N0ZnNfZ2V0X2xpbmss CiB9OwogCitzdGF0aWMgaW50IGhvc3Rmc19wYXJzZV9vcHRpb25zKHN0cnVjdCBob3N0ZnNfZnNf aW5mbyAqc2JfZGF0YSwgY29uc3QgY2hhciAqZCkKK3sKKwlpbnQgZXJyID0gMCwgdW5rbm93biA9 IDA7CisJY2hhciAqcHRyLCAqb3B0aW9ucywgKnN0cmluZzsKKworCXNucHJpbnRmKHNiX2RhdGEt Pmhvc3Rfcm9vdF9wYXRoLCBQQVRIX01BWCwgIiVzLyIsIHJvb3RfaW5vKTsKKwlzYl9kYXRhLT51 c2VfeGF0dHIgPSAtMTsKKwlpZiAoZCA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCXN0cmluZyA9 IGttYWxsb2Moc3RybGVuKGQpICsgMSwgR0ZQX0tFUk5FTCk7CisJaWYgKHN0cmluZyA9PSBOVUxM KSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gb3V0OworCX0KKwlvcHRpb25zID0gc3RyaW5n OworCXN0cmNweShvcHRpb25zLCBkKTsKKworCXdoaWxlIChvcHRpb25zKSB7CisJCXB0ciA9IHN0 cmNocihvcHRpb25zLCAnLCcpOworCQlpZiAocHRyICE9IE5VTEwpCisJCQkqcHRyKysgPSAnXDAn OworCQlpZiAoKm9wdGlvbnMgIT0gJ1wwJykgeworCQkJaWYgKCFzdHJjbXAob3B0aW9ucywgIm5v eGF0dHJwZXJtIikpIHsKKwkJCQlzYl9kYXRhLT51c2VfeGF0dHIgPSAwOworCQkJCWdvdG8gX2Jy ZWFrOworCQkJfQorCQkJaWYgKCFzdHJjbXAob3B0aW9ucywgInhhdHRycGVybSIpKSB7CisJCQkJ c2JfZGF0YS0+dXNlX3hhdHRyID0gMTsKKwkJCQlnb3RvIF9icmVhazsKKwkJCX0KKwkJCWlmICgh dW5rbm93bikgeworCQkJCXVua25vd24gPSAxOworCQkJCXN0cmNhdChzYl9kYXRhLT5ob3N0X3Jv b3RfcGF0aCwgb3B0aW9ucyk7CisJCQkJZ290byBfYnJlYWs7CisJCQl9CisJCQlwcl93YXJuKCJo b3N0ZnM6IHVuc3VwcG9ydGVkIG1vdW50IG9wdGlvblxuIik7CisJCQllcnIgPSAtRUlOVkFMOwor CQkJZ290byBvdXQ7CisJCX0KK19icmVhazoKKwkJb3B0aW9ucyA9IHB0cjsKKwl9CisKK291dDoK KwlrZnJlZShzdHJpbmcpOworCXJldHVybiBlcnI7Cit9CiBzdGF0aWMgaW50IGhvc3Rmc19maWxs X3NiX2NvbW1vbihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB2b2lkICpkLCBpbnQgc2lsZW50KQog ewogCXN0cnVjdCBpbm9kZSAqcm9vdF9pbm9kZTsKLQljaGFyICpob3N0X3Jvb3RfcGF0aCwgKnJl cV9yb290ID0gZDsKKwlzdHJ1Y3QgaG9zdGZzX2ZzX2luZm8gKnNiX2RhdGE7CiAJaW50IGVycjsK IAogCXNiLT5zX2Jsb2Nrc2l6ZSA9IDEwMjQ7CkBAIC05MzEsMjYgKzEwMTUsMjYgQEAgc3RhdGlj IGludCBob3N0ZnNfZmlsbF9zYl9jb21tb24oc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9pZCAq ZCwgaW50IHNpbGVudCkKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIAotCS8qIE5VTEwgaXMgcHJp bnRlZCBhcyAnKG51bGwpJyBieSBwcmludGYoKTogYXZvaWQgdGhhdC4gKi8KLQlpZiAocmVxX3Jv b3QgPT0gTlVMTCkKLQkJcmVxX3Jvb3QgPSAiIjsKLQogCWVyciA9IC1FTk9NRU07Ci0Jc2ItPnNf ZnNfaW5mbyA9IGhvc3Rfcm9vdF9wYXRoID0KLQkJa2FzcHJpbnRmKEdGUF9LRVJORUwsICIlcy8l cyIsIHJvb3RfaW5vLCByZXFfcm9vdCk7Ci0JaWYgKGhvc3Rfcm9vdF9wYXRoID09IE5VTEwpCisJ c2JfZGF0YSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBob3N0ZnNfZnNfaW5mbyksIEdGUF9LRVJO RUwpOworCWlmIChzYl9kYXRhID09IE5VTEwpCisJCWdvdG8gb3V0OworCisJZXJyID0gaG9zdGZz X3BhcnNlX29wdGlvbnMoc2JfZGF0YSwgZCk7CisJaWYgKGVyciAhPSAwKQogCQlnb3RvIG91dDsK KwlzYi0+c19mc19pbmZvID0gc2JfZGF0YTsKIAogCXJvb3RfaW5vZGUgPSBuZXdfaW5vZGUoc2Ip OwogCWlmICghcm9vdF9pbm9kZSkKIAkJZ290byBvdXQ7CiAKLQllcnIgPSByZWFkX25hbWUocm9v dF9pbm9kZSwgaG9zdF9yb290X3BhdGgpOworCWVyciA9IHJlYWRfbmFtZShyb290X2lub2RlLCBz Yl9kYXRhLT5ob3N0X3Jvb3RfcGF0aCk7CiAJaWYgKGVycikKIAkJZ290byBvdXRfcHV0OwogCiAJ aWYgKFNfSVNMTksocm9vdF9pbm9kZS0+aV9tb2RlKSkgewotCQljaGFyICpuYW1lID0gZm9sbG93 X2xpbmsoaG9zdF9yb290X3BhdGgpOworCQljaGFyICpuYW1lID0gZm9sbG93X2xpbmsoc2JfZGF0 YS0+aG9zdF9yb290X3BhdGgpOwogCQlpZiAoSVNfRVJSKG5hbWUpKSB7CiAJCQllcnIgPSBQVFJf RVJSKG5hbWUpOwogCQkJZ290byBvdXRfcHV0OwpAQCAtMTAwMSw2ICsxMDg1LDkgQEAgc3RhdGlj IGludCBfX2luaXQgaW5pdF9ob3N0ZnModm9pZCkKIAlob3N0ZnNfaW5vZGVfY2FjaGUgPSBLTUVN X0NBQ0hFKGhvc3Rmc19pbm9kZV9pbmZvLCAwKTsKIAlpZiAoIWhvc3Rmc19pbm9kZV9jYWNoZSkK IAkJcmV0dXJuIC1FTk9NRU07CisJI2lmZGVmIE1PRFVMRQorCXVzZV94YXR0ciA9IDA7CisJI2Vu ZGlmCiAJcmV0dXJuIHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oJmhvc3Rmc190eXBlKTsKIH0KIApkaWZm IC0tZ2l0IGEvZnMvaG9zdGZzL2hvc3Rmc191c2VyLmMgYi9mcy9ob3N0ZnMvaG9zdGZzX3VzZXIu YwppbmRleCA1ZWNjNDcwNjE3MmIuLmY1ZGQ1MjRjZDE1MyAxMDA2NDQKLS0tIGEvZnMvaG9zdGZz L2hvc3Rmc191c2VyLmMKKysrIGIvZnMvaG9zdGZzL2hvc3Rmc191c2VyLmMKQEAgLTEwLDE0ICsx MCwxOSBAQAogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRl IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgog I2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8 c3lzL3Zmcy5oPgogI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaW5jbHVkZSA8c3lzL3hhdHRy Lmg+CisjaW5jbHVkZSA8dW1fbWFsbG9jLmg+CiAjaW5jbHVkZSAiaG9zdGZzLmgiCiAjaW5jbHVk ZSA8dXRpbWUuaD4KIAoraW50IHVzZV94YXR0cjsKKwogc3RhdGljIHZvaWQgc3RhdDY0X3RvX2hv c3Rmcyhjb25zdCBzdHJ1Y3Qgc3RhdDY0ICpidWYsIHN0cnVjdCBob3N0ZnNfc3RhdCAqcCkKIHsK IAlwLT5pbm8gPSBidWYtPnN0X2lubzsKQEAgLTM4LDcgKzQzLDE4NCBAQCBzdGF0aWMgdm9pZCBz dGF0NjRfdG9faG9zdGZzKGNvbnN0IHN0cnVjdCBzdGF0NjQgKmJ1Ziwgc3RydWN0IGhvc3Rmc19z dGF0ICpwKQogCXAtPm1pbiA9IG9zX21pbm9yKGJ1Zi0+c3RfcmRldik7CiB9CiAKLWludCBzdGF0 X2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGhvc3Rmc19zdGF0ICpwLCBpbnQgZmQpCitz dGF0aWMgaW50IHVtbF9jaG93bihjb25zdCBjaGFyICpwYXRobmFtZSwgdWlkX3Qgb3duZXIsIGdp ZF90IGdyb3VwLAorCQkJCQkJCWludCBtbnRfdXNlX3hhdHRyKQoreworCWludCB4YXR0ciA9ICht bnRfdXNlX3hhdHRyID09IC0xKSA/IHVzZV94YXR0ciA6IG1udF91c2VfeGF0dHI7CisJLyogMTAg ZGlnaXRzIHVpZCwgMTAgZGlnaXRzIGdpZCwgbnVsbCBieXRlIGFuZCAnLCcgKi8KKwljaGFyIHVt bGNyZWRbMjJdOworCS8qIG1heF9naWQ9NDI5NDk2NzI5NSAtIDEwIGRpZ2l0cyArIG51bGwgYnl0 ZSAqLworCWNoYXIgZ2lkWzExXTsKKwlpbnQgaSA9IDA7CisKKwlpZiAoeGF0dHIpIHsKKwkJbWVt c2V0KHVtbGNyZWQsIDAsIHNpemVvZih1bWxjcmVkKSk7CisJCWdldHhhdHRyKHBhdGhuYW1lLCAi dXNlci51bWxjcmVkIiwgdW1sY3JlZCwgc2l6ZW9mKHVtbGNyZWQpKTsKKworCQl3aGlsZSAodW1s Y3JlZFtpXSAhPSAnLCcgJiYgdW1sY3JlZFtpXSAhPSAnXDAnKQorCQkJaSsrOworCQl1bWxjcmVk W2ldID0gJ1wwJzsKKworCQlpZiAoZ3JvdXAgPT0gLTEpCisJCQlzdHJuY3B5KGdpZCwgJnVtbGNy ZWRbaSsxXSwgc2l6ZW9mKGdpZCkpOworCQllbHNlCisJCQlzbnByaW50ZihnaWQsIHNpemVvZihn aWQpLCAiJXUiLCBncm91cCk7CisJCWlmIChvd25lciAhPSAtMSkKKwkJCXNucHJpbnRmKHVtbGNy ZWQsIHNpemVvZihnaWQpLCAiJXUiLCBvd25lcik7CisKKwkJc3RyY2F0KHVtbGNyZWQsICIsIik7 CisJCXN0cm5jYXQodW1sY3JlZCwgZ2lkLCBzaXplb2YoZ2lkLTEpKTsKKwkJaWYgKHNldHhhdHRy KHBhdGhuYW1lLCAidXNlci51bWxjcmVkIiwgdW1sY3JlZCwKKwkJCQkJCXN0cmxlbih1bWxjcmVk KSsxLCAwKSkKKwkJCXJldHVybiAtZXJybm87CisKKwkJcmV0dXJuIDA7CisJfQorCWlmIChjaG93 bihwYXRobmFtZSwgb3duZXIsIGdyb3VwKSkKKwkJcmV0dXJuIC1lcnJubzsKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCB1bWxfZmNob3duKGludCBmZCwgdWlkX3Qgb3duZXIsIGdpZF90IGdy b3VwLCBpbnQgbW50X3VzZV94YXR0cikKK3sKKwlpbnQgeGF0dHIgPSAobW50X3VzZV94YXR0ciA9 PSAtMSkgPyB1c2VfeGF0dHIgOiBtbnRfdXNlX3hhdHRyOworCS8qIDEwIGRpZ2l0cyB1aWQsIDEw IGRpZ2l0cyBnaWQsIG51bGwgYnl0ZSBhbmQgJywnICovCisJY2hhciB1bWxjcmVkWzIyXTsKKwkv KiBtYXhfZ2lkPTQyOTQ5NjcyOTUgLSAxMCBkaWdpdHMgKyBudWxsIGJ5dGUgKi8KKwljaGFyIGdp ZFsxMV07CisJaW50IGkgPSAwOworCisJaWYgKHhhdHRyKSB7CisJCW1lbXNldCh1bWxjcmVkLCAw LCBzaXplb2YodW1sY3JlZCkpOworCQlmZ2V0eGF0dHIoZmQsICJ1c2VyLnVtbGNyZWQiLCB1bWxj cmVkLCBzaXplb2YodW1sY3JlZCkpOworCisJCXdoaWxlICh1bWxjcmVkW2ldICE9ICcsJyAmJiB1 bWxjcmVkW2ldICE9ICdcMCcpCisJCQlpKys7CisJCXVtbGNyZWRbaV0gPSAnXDAnOworCisJCWlm IChncm91cCA9PSAtMSkKKwkJCXN0cm5jcHkoZ2lkLCAmdW1sY3JlZFtpKzFdLCBzaXplb2YoZ2lk KSk7CisJCWVsc2UKKwkJCXNucHJpbnRmKGdpZCwgc2l6ZW9mKGdpZCksICIldSIsIGdyb3VwKTsK KwkJaWYgKG93bmVyICE9IC0xKQorCQkJc25wcmludGYodW1sY3JlZCwgc2l6ZW9mKGdpZCksICIl dSIsIG93bmVyKTsKKworCQlzdHJjYXQodW1sY3JlZCwgIiwiKTsKKwkJc3RybmNhdCh1bWxjcmVk LCBnaWQsIHNpemVvZihnaWQtMSkpOworCQlpZiAoZnNldHhhdHRyKGZkLCAidXNlci51bWxjcmVk IiwgdW1sY3JlZCwgc3RybGVuKHVtbGNyZWQpKzEsIDApKQorCQkJcmV0dXJuIC1lcnJubzsKKwor CQlyZXR1cm4gMDsKKwl9CisJaWYgKGZjaG93bihmZCwgb3duZXIsIGdyb3VwKSkKKwkJcmV0dXJu IC1lcnJubzsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1bWxfY2htb2QoY29uc3QgY2hh ciAqcGF0aG5hbWUsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQgbW50X3VzZV94YXR0cikKK3sKKwlp bnQgeGF0dHIgPSAobW50X3VzZV94YXR0ciA9PSAtMSkgPyB1c2VfeGF0dHIgOiBtbnRfdXNlX3hh dHRyOworCWludCBpOworCWNoYXIgbW9kZV9zdHJpbmdbN107CS8qIG1vZGUgaXMgMTYtYml0IC0+ IG1heCA2IGRpZ2l0cyBpbiBvY3RhbCAqLworCisJaWYgKHhhdHRyKSB7CisJCXN0cmNweShtb2Rl X3N0cmluZywgIjAwMDAwMCIpOworCQlpID0gc2l6ZW9mKG1vZGVfc3RyaW5nKSAtIDE7CisJCXdo aWxlIChtb2RlID4gMCkgeworCQkJbW9kZV9zdHJpbmdbaV0gPSAobW9kZSAlIDgpICsgJzAnOwor CQkJbW9kZSA9IG1vZGUgLyA4OworCQkJaS0tOworCQl9CisJCWlmIChzZXR4YXR0cihwYXRobmFt ZSwgInVzZXIudW1sbW9kZSIsIG1vZGVfc3RyaW5nLAorCQkJCQkJICAgICAgIHNpemVvZihtb2Rl X3N0cmluZyksIDApKQorCQkJcmV0dXJuIC1lcnJubzsKKwkJcmV0dXJuIDA7CisJfQorCWlmIChj aG1vZChwYXRobmFtZSwgbW9kZSkpCisJCXJldHVybiAtZXJybm87CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgdW1sX2ZjaG1vZChpbnQgZmQsIHVuc2lnbmVkIGludCBtb2RlLCBpbnQgbW50 X3VzZV94YXR0cikKK3sKKwlpbnQgeGF0dHIgPSAobW50X3VzZV94YXR0ciA9PSAtMSkgPyB1c2Vf eGF0dHIgOiBtbnRfdXNlX3hhdHRyOworCWludCBpOworCWNoYXIgbW9kZV9zdHJpbmdbN107CS8q IG1vZGUgaXMgMTYtYml0IC0+IG1heCA2IGRpZ2l0cyBpbiBvY3RhbCAqLworCisJaWYgKHhhdHRy KSB7CisJCXN0cmNweShtb2RlX3N0cmluZywgIjAwMDAwMCIpOworCQlpID0gc2l6ZW9mKG1vZGVf c3RyaW5nKSAtIDE7CisJCXdoaWxlIChtb2RlID4gMCkgeworCQkJbW9kZV9zdHJpbmdbaV0gPSAo bW9kZSAlIDgpICsgJzAnOworCQkJbW9kZSA9IG1vZGUgLyA4OworCQkJaS0tOworCQl9CisJCWlm IChmc2V0eGF0dHIoZmQsICJ1c2VyLnVtbG1vZGUiLCBtb2RlX3N0cmluZywKKwkJCQkJCSAgc2l6 ZW9mKG1vZGVfc3RyaW5nKSwgMCkpCisJCQlyZXR1cm4gLWVycm5vOworCQlyZXR1cm4gMDsKKwl9 CisJaWYgKGZjaG1vZChmZCwgbW9kZSkpCisJCXJldHVybiAtZXJybm87CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyB2b2lkIHJlYWRfcGVybWlzc2lvbnMoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0 IHN0YXQ2NCAqcCwKKwkJCQkJCQlpbnQgbW50X3VzZV94YXR0cikKK3sKKwl1bnNpZ25lZCBpbnQg bW9kZSA9IDAsIGk7CisJY2hhciBtb2RlX3N0cmluZ1s3XSwgdW1sY3JlZFsyMl07CisJaW50IHhh dHRyID0gKG1udF91c2VfeGF0dHIgPT0gLTEpID8gdXNlX3hhdHRyIDogbW50X3VzZV94YXR0cjsK KworCWlmICgheGF0dHIpCisJCXJldHVybjsKKworCWlmIChnZXR4YXR0cihwYXRoLCAidXNlci51 bWxtb2RlIiwgbW9kZV9zdHJpbmcsIHNpemVvZihtb2RlX3N0cmluZykpICE9IC0xKSB7CisJCWkg PSAwOworCQl3aGlsZSAobW9kZV9zdHJpbmdbaV0gIT0gJ1wwJykgeworCQkJbW9kZSAqPSA4Owor CQkJbW9kZSArPSBtb2RlX3N0cmluZ1tpXSAtICcwJzsKKwkJCWkrKzsKKwkJfQorCQlwLT5zdF9t b2RlID0gbW9kZTsKKwl9CisKKwlpZiAoZ2V0eGF0dHIocGF0aCwgInVzZXIudW1sY3JlZCIsIHVt bGNyZWQsIHNpemVvZih1bWxjcmVkKSkgIT0gLTEpIHsKKwkJaSA9IDA7CisJCXdoaWxlICh1bWxj cmVkW2ldICE9ICcsJykKKwkJCWkrKzsKKwkJdW1sY3JlZFtpXSA9ICdcMCc7CisKKwkJaWYgKHN0 cmxlbih1bWxjcmVkKSA+IDApCisJCQlwLT5zdF91aWQgPSBhdG9pKHVtbGNyZWQpOworCQlpZiAo c3RybGVuKCZ1bWxjcmVkW2krMV0pID4gMCkKKwkJCXAtPnN0X2dpZCA9IGF0b2koJnVtbGNyZWRb aSsxXSk7CisJfQorfQorCitzdGF0aWMgbG9uZyBpc19zZXRfZ2lkKGNvbnN0IGNoYXIgKnBhdGgs IGludCBtbnRfdXNlX3hhdHRyKQoreworCWludCBpID0gc3RybGVuKHBhdGgpICsgMTsKKwljaGFy ICpwYXJlbnQgPSB1bWxfa21hbGxvYyhpLCBVTV9HRlBfS0VSTkVMKTsKKwlzdHJ1Y3Qgc3RhdDY0 IGJ1ZiA9IHsgMCB9OworCisJaWYgKHBhcmVudCA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisJc3Ry Y3B5KHBhcmVudCwgcGF0aCk7CisJaSA9IGkgLSAzOworCXdoaWxlIChwYXJlbnRbaV0gIT0gJy8n KQorCQlpLS07CisJcGFyZW50W2ldID0gJ1wwJzsKKworCXN0YXQ2NChwYXJlbnQsICZidWYpOwor CXJlYWRfcGVybWlzc2lvbnMocGFyZW50LCAmYnVmLCBtbnRfdXNlX3hhdHRyKTsKKwlrZnJlZShw YXJlbnQpOworCWlmIChidWYuc3RfbW9kZSAmIFNfSVNHSUQpCisJCXJldHVybiBidWYuc3RfZ2lk OworCXJldHVybiAtMTsKK30KKworaW50IHN0YXRfZmlsZShjb25zdCBjaGFyICpwYXRoLCBzdHJ1 Y3QgaG9zdGZzX3N0YXQgKnAsIGludCBmZCwgaW50IG1udF91c2VfeGF0dHIpCiB7CiAJc3RydWN0 IHN0YXQ2NCBidWY7CiAKQEAgLTQ4LDYgKzIzMCw3IEBAIGludCBzdGF0X2ZpbGUoY29uc3QgY2hh ciAqcGF0aCwgc3RydWN0IGhvc3Rmc19zdGF0ICpwLCBpbnQgZmQpCiAJfSBlbHNlIGlmIChsc3Rh dDY0KHBhdGgsICZidWYpIDwgMCkgewogCQlyZXR1cm4gLWVycm5vOwogCX0KKwlyZWFkX3Blcm1p c3Npb25zKHBhdGgsICZidWYsIG1udF91c2VfeGF0dHIpOwogCXN0YXQ2NF90b19ob3N0ZnMoJmJ1 ZiwgcCk7CiAJcmV0dXJuIDA7CiB9CkBAIC0xODEsNDQgKzM2NCw2MCBAQCB2b2lkIGNsb3NlX2Rp cih2b2lkICpzdHJlYW0pCiAJY2xvc2VkaXIoc3RyZWFtKTsKIH0KIAotaW50IGZpbGVfY3JlYXRl KGNoYXIgKm5hbWUsIGludCBtb2RlKQoraW50IGZpbGVfY3JlYXRlKGNoYXIgKm5hbWUsIGludCBt b2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgaW50IG1udF91c2VfeGF0dHIpCiB7CiAJaW50IGZk OworCWxvbmcgcmV0OwogCiAJZmQgPSBvcGVuNjQobmFtZSwgT19DUkVBVCB8IE9fUkRXUiwgbW9k ZSk7CiAJaWYgKGZkIDwgMCkKIAkJcmV0dXJuIC1lcnJubzsKKworCXJldCA9IGlzX3NldF9naWQo bmFtZSwgbW50X3VzZV94YXR0cik7CisJaWYgKHJldCAhPSAtMSkKKwkJZ2lkID0gcmV0OworCXVt bF9jaG93bihuYW1lLCB1aWQsIGdpZCwgbW50X3VzZV94YXR0cik7CiAJcmV0dXJuIGZkOwogfQog Ci1pbnQgc2V0X2F0dHIoY29uc3QgY2hhciAqZmlsZSwgc3RydWN0IGhvc3Rmc19pYXR0ciAqYXR0 cnMsIGludCBmZCkKK2ludCBzZXRfYXR0cihjb25zdCBjaGFyICpmaWxlLCBzdHJ1Y3QgaG9zdGZz X2lhdHRyICphdHRycywgaW50IGZkLAorCQkJCQkJCSAgICAgaW50IG1udF91c2VfeGF0dHIpCiB7 CiAJc3RydWN0IGhvc3Rmc19zdGF0IHN0OwogCXN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdOwotCWlu dCBlcnIsIG1hOworCWludCBlcnIsIG1hLCByZXQ7CiAKIAlpZiAoYXR0cnMtPmlhX3ZhbGlkICYg SE9TVEZTX0FUVFJfTU9ERSkgewogCQlpZiAoZmQgPj0gMCkgewotCQkJaWYgKGZjaG1vZChmZCwg YXR0cnMtPmlhX21vZGUpICE9IDApCi0JCQkJcmV0dXJuIC1lcnJubzsKLQkJfSBlbHNlIGlmIChj aG1vZChmaWxlLCBhdHRycy0+aWFfbW9kZSkgIT0gMCkgewotCQkJcmV0dXJuIC1lcnJubzsKKwkJ CXJldCA9IHVtbF9mY2htb2QoZmQsIGF0dHJzLT5pYV9tb2RlLCBtbnRfdXNlX3hhdHRyKTsKKwkJ CWlmIChyZXQgIT0gMCkKKwkJCQlyZXR1cm4gcmV0OworCQl9IGVsc2UgeworCQkJcmV0ID0gdW1s X2NobW9kKGZpbGUsIGF0dHJzLT5pYV9tb2RlLCBtbnRfdXNlX3hhdHRyKTsKKwkJCWlmIChyZXQg IT0gMCkKKwkJCQlyZXR1cm4gcmV0OwogCQl9CiAJfQogCWlmIChhdHRycy0+aWFfdmFsaWQgJiBI T1NURlNfQVRUUl9VSUQpIHsKIAkJaWYgKGZkID49IDApIHsKLQkJCWlmIChmY2hvd24oZmQsIGF0 dHJzLT5pYV91aWQsIC0xKSkKLQkJCQlyZXR1cm4gLWVycm5vOwotCQl9IGVsc2UgaWYgKGNob3du KGZpbGUsIGF0dHJzLT5pYV91aWQsIC0xKSkgewotCQkJcmV0dXJuIC1lcnJubzsKKwkJCXJldCA9 IHVtbF9mY2hvd24oZmQsIGF0dHJzLT5pYV91aWQsIC0xLCBtbnRfdXNlX3hhdHRyKTsKKwkJCWlm IChyZXQgIT0gMCkKKwkJCQlyZXR1cm4gcmV0OworCQl9IGVsc2UgeworCQkJcmV0ID0gdW1sX2No b3duKGZpbGUsIGF0dHJzLT5pYV91aWQsIC0xLCBtbnRfdXNlX3hhdHRyKTsKKwkJCWlmIChyZXQg IT0gMCkKKwkJCQlyZXR1cm4gcmV0OwogCQl9CiAJfQogCWlmIChhdHRycy0+aWFfdmFsaWQgJiBI T1NURlNfQVRUUl9HSUQpIHsKIAkJaWYgKGZkID49IDApIHsKLQkJCWlmIChmY2hvd24oZmQsIC0x LCBhdHRycy0+aWFfZ2lkKSkKLQkJCQlyZXR1cm4gLWVycm5vOwotCQl9IGVsc2UgaWYgKGNob3du KGZpbGUsIC0xLCBhdHRycy0+aWFfZ2lkKSkgewotCQkJcmV0dXJuIC1lcnJubzsKKwkJCXJldCA9 IHVtbF9mY2hvd24oZmQsIC0xLCBhdHRycy0+aWFfZ2lkLCBtbnRfdXNlX3hhdHRyKTsKKwkJCWlm IChyZXQgIT0gMCkKKwkJCQlyZXR1cm4gcmV0OworCQl9IGVsc2UgeworCQkJcmV0ID0gdW1sX2No b3duKGZpbGUsIC0xLCBhdHRycy0+aWFfZ2lkLCBtbnRfdXNlX3hhdHRyKTsKKwkJCWlmIChyZXQg IT0gMCkKKwkJCQlyZXR1cm4gcmV0OwogCQl9CiAJfQogCWlmIChhdHRycy0+aWFfdmFsaWQgJiBI T1NURlNfQVRUUl9TSVpFKSB7CkBAIC0yMzcsNyArNDM2LDcgQEAgaW50IHNldF9hdHRyKGNvbnN0 IGNoYXIgKmZpbGUsIHN0cnVjdCBob3N0ZnNfaWF0dHIgKmF0dHJzLCBpbnQgZmQpCiAJICovCiAJ bWEgPSAoSE9TVEZTX0FUVFJfQVRJTUVfU0VUIHwgSE9TVEZTX0FUVFJfTVRJTUVfU0VUKTsKIAlp ZiAoYXR0cnMtPmlhX3ZhbGlkICYgbWEpIHsKLQkJZXJyID0gc3RhdF9maWxlKGZpbGUsICZzdCwg ZmQpOworCQllcnIgPSBzdGF0X2ZpbGUoZmlsZSwgJnN0LCBmZCwgbW50X3VzZV94YXR0cik7CiAJ CWlmIChlcnIgIT0gMCkKIAkJCXJldHVybiBlcnI7CiAKQEAgLTI2NSw3ICs0NjQsNyBAQCBpbnQg c2V0X2F0dHIoY29uc3QgY2hhciAqZmlsZSwgc3RydWN0IGhvc3Rmc19pYXR0ciAqYXR0cnMsIGlu dCBmZCkKIAogCS8qIE5vdGU6IGN0aW1lIGlzIG5vdCBoYW5kbGVkICovCiAJaWYgKGF0dHJzLT5p YV92YWxpZCAmIChIT1NURlNfQVRUUl9BVElNRSB8IEhPU1RGU19BVFRSX01USU1FKSkgewotCQll cnIgPSBzdGF0X2ZpbGUoZmlsZSwgJnN0LCBmZCk7CisJCWVyciA9IHN0YXRfZmlsZShmaWxlLCAm c3QsIGZkLCBtbnRfdXNlX3hhdHRyKTsKIAkJYXR0cnMtPmlhX2F0aW1lID0gc3QuYXRpbWU7CiAJ CWF0dHJzLT5pYV9tdGltZSA9IHN0Lm10aW1lOwogCQlpZiAoZXJyICE9IDApCkBAIC0yOTQsMTMg KzQ5MywxOCBAQCBpbnQgdW5saW5rX2ZpbGUoY29uc3QgY2hhciAqZmlsZSkKIAlyZXR1cm4gMDsK IH0KIAotaW50IGRvX21rZGlyKGNvbnN0IGNoYXIgKmZpbGUsIGludCBtb2RlKQoraW50IGRvX21r ZGlyKGNvbnN0IGNoYXIgKmZpbGUsIGludCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgaW50 IG1udF91c2VfeGF0dHIpCiB7CiAJaW50IGVycjsKKwlsb25nIHJldDsKIAogCWVyciA9IG1rZGly KGZpbGUsIG1vZGUpOwogCWlmIChlcnIpCiAJCXJldHVybiAtZXJybm87CisJcmV0ID0gaXNfc2V0 X2dpZChmaWxlLCBtbnRfdXNlX3hhdHRyKTsKKwlpZiAocmV0ICE9IC0xKQorCQlnaWQgPSByZXQ7 CisJdW1sX2Nob3duKGZpbGUsIHVpZCwgZ2lkLCBtbnRfdXNlX3hhdHRyKTsKIAlyZXR1cm4gMDsK IH0KIAotLSAKMi4zOS4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtdW0gbWFpbGluZyBsaXN0CmxpbnV4LXVtQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC11bQo=