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=-3.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 CED2EC7618F for ; Mon, 15 Jul 2019 22:18:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7228820665 for ; Mon, 15 Jul 2019 22:18:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563229087; bh=mEeqPew3GoYodSaQAUpybtiTWOcKIncIustJLie4ntw=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=d/+gXN8XeS3VhZKzqffSXJkq7S0pQ4Gcahg7oOEMsx3cNW3OSmaGbuHVvAAoMENQb JeQaFnqB/2AVrh/W5ZT44DQoDpYPgRhakDh3H9wd/+Q5fSgRTVYB7N4Hee987KBtEd OOe4yWD3Zsds0rUNopL8KtBYFr9fTCXy40AONc3g= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733056AbfGOWSG (ORCPT ); Mon, 15 Jul 2019 18:18:06 -0400 Received: from mail-lj1-f175.google.com ([209.85.208.175]:35934 "EHLO mail-lj1-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732140AbfGOWSF (ORCPT ); Mon, 15 Jul 2019 18:18:05 -0400 Received: by mail-lj1-f175.google.com with SMTP id i21so17873381ljj.3 for ; Mon, 15 Jul 2019 15:18:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ALtVC2mjcOfoOtbYGLPzGqQzAk414p2CT80xkGRCXXw=; b=Aed8ddN28TCztPWGe7fo8EBefY0NELk9ATBSUx5+QI9G2VVFgcrNFA5rZ2mTWgTKma CVZ8s2ApEfhFi0/7oQmRpJQ7YHRkJa0EDwOv5aaJuvqjS6BxFxpCrbmRx0k2YDpAXrYF ZCWIo2FsGhG0Iv8lpA/qHBf+flKdJDVkK84P8= 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; bh=ALtVC2mjcOfoOtbYGLPzGqQzAk414p2CT80xkGRCXXw=; b=bKIAaXlIEZpbIbwd/j76MvllYD3nOYt5AQ2jp/sDVIlzkOucCHSOsj5MTHQGC28ASA slwM5KV2NHa1Iv6kM9gIv7Mgq007aWZ/kDbTv6X1CFiMw65r9yYTHfM1xMal5iv6YEfd lx2b8VaP2fPDMmH85XSA4vKa6mm4+DzOpNK8a2JYY4pIRbNwenZhStCxFCnu4LITKBun Vp5zS3+gfKqDVH9SdRj3mN6xbvk0KB4ZCWlAr+5GzORZHt+1N4U71I7/JgxIXLywbT4L SF4PEVreOdboGtc2t94bW8tsevfnXGDuqmyH69jFHOC4raRZowlBSh9eR+VtzVjocNPs 91PA== X-Gm-Message-State: APjAAAWr9GIZ9qSYOj93IEXyGVyTfdhPztNq12nZtx6HTrugcatgU9kq KxNlt4g3xFsShsEkIgeCRjmdbL/dHII= X-Google-Smtp-Source: APXvYqyutKa9rBNhp74xLFXbwCe4v6L+qGwPd+FTRAM31YoqHZVNhCNva/0kzS5PJbS7tXnPyvvkSA== X-Received: by 2002:a2e:8455:: with SMTP id u21mr14891050ljh.20.1563229080893; Mon, 15 Jul 2019 15:18:00 -0700 (PDT) Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com. [209.85.208.170]) by smtp.gmail.com with ESMTPSA id d10sm3325546ljc.15.2019.07.15.15.17.59 for (version=TLS1_3 cipher=AEAD-AES128-GCM-SHA256 bits=128/128); Mon, 15 Jul 2019 15:17:59 -0700 (PDT) Received: by mail-lj1-f170.google.com with SMTP id t28so17853237lje.9 for ; Mon, 15 Jul 2019 15:17:59 -0700 (PDT) X-Received: by 2002:a2e:9192:: with SMTP id f18mr15239692ljg.52.1563229079111; Mon, 15 Jul 2019 15:17:59 -0700 (PDT) MIME-Version: 1.0 References: <48890b55-afc5-ced8-5913-5a755ce6c1ab@shipmail.org> In-Reply-To: From: Linus Torvalds Date: Mon, 15 Jul 2019 15:17:42 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: drm pull for v5.3-rc1 To: =?UTF-8?Q?Thomas_Hellstr=C3=B6m_=28VMware=29?= Cc: Dave Airlie , Thomas Hellstrom , Daniel Vetter , LKML , dri-devel , Jerome Glisse , Jason Gunthorpe , Andrew Morton Content-Type: multipart/mixed; boundary="000000000000f6c393058dbfa114" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --000000000000f6c393058dbfa114 Content-Type: text/plain; charset="UTF-8" On Mon, Jul 15, 2019 at 1:07 PM Linus Torvalds wrote: > > The mm_walk struct is indeed a bit similar, and is in fact a bit > problematic exactly because it mixes function pointers with non-const > data. This made me look at how nasty that would be to fix. Not too bad. The attached patch does add more lines than it removes, but in most cases it's actually a clear improvement. It results in: - smaller stackframes and less runtime initialization: the bulk of the 'mm_walk' structure was the ops pointers, and if we split them out and make them const, we can just initialize them statically, and the stack footprint now becomes just a single word. - the function pointers are now nicely in a const data section in addition to the whole "don't mix variable data with constants, and don't put function pointers on the stack" thing. Of course, I haven't _tested_ the end result, but since it compiles it must be perfect, right? Not that I tested all of the build either, since several of the mm_walk users were for other architectures. I'm not sure this is really worth it, but I'm throwing the patch out there in case somebody wants to look. Andrew, comments? I don't think we have anybody who is in charge of mm_walk outside of you... Linus --000000000000f6c393058dbfa114 Content-Type: text/x-patch; charset="US-ASCII"; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jy4y7kpa0 IGFyY2gvb3BlbnJpc2Mva2VybmVsL2RtYS5jICAgICAgICAgICAgICB8IDEwICsrKystLQogYXJj aC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jIHwgIDUgKystCiBhcmNoL3MzOTAv bW0vZ21hcC5jICAgICAgICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrLS0tLQogZnMvcHJv Yy90YXNrX21tdS5jICAgICAgICAgICAgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrLS0t LS0tLQogaW5jbHVkZS9saW51eC9tbS5oICAgICAgICAgICAgICAgICAgICAgIHwgMjMgKysrKysr KysrLS0tLQogbW0vaG1tLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzQgKysr KysrKysrKy0tLS0tLS0tLQogbW0vbWFkdmlzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTAgKysrKy0tCiBtbS9tZW1jb250cm9sLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAx MSArKysrLS0KIG1tL21lbXBvbGljeS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsr LQogbW0vbWlncmF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKystLS0t LS0KIG1tL21pbmNvcmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrLQogbW0v bXByb3RlY3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKystCiBtbS9wYWdld2Fs ay5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2MCArKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIDEzIGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCspLCA4OCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYyBiL2FyY2gv b3BlbnJpc2Mva2VybmVsL2RtYS5jCmluZGV4IGI0MWE3OWZjZGJkOS4uMWE2OWE2NmZlMjU3IDEw MDY0NAotLS0gYS9hcmNoL29wZW5yaXNjL2tlcm5lbC9kbWEuYworKysgYi9hcmNoL29wZW5yaXNj L2tlcm5lbC9kbWEuYwpAQCAtODAsOCArODAsMTEgQEAgYXJjaF9kbWFfYWxsb2Moc3RydWN0IGRl dmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwKIHsKIAl1bnNp Z25lZCBsb25nIHZhOwogCXZvaWQgKnBhZ2U7Ci0Jc3RydWN0IG1tX3dhbGsgd2FsayA9IHsKKwlz dGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIG9wcyA9IHsKIAkJLnB0ZV9lbnRyeSA9IHBh Z2Vfc2V0X25vY2FjaGUsCisJfTsKKwlzdHJ1Y3QgbW1fd2FsayB3YWxrID0geworCQkub3BzID0g Jm9wcywKIAkJLm1tID0gJmluaXRfbW0KIAl9OwogCkBAIC0xMTEsOCArMTE0LDExIEBAIGFyY2hf ZG1hX2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgdm9pZCAqdmFkZHIsCiAJ CWRtYV9hZGRyX3QgZG1hX2hhbmRsZSwgdW5zaWduZWQgbG9uZyBhdHRycykKIHsKIAl1bnNpZ25l ZCBsb25nIHZhID0gKHVuc2lnbmVkIGxvbmcpdmFkZHI7Ci0Jc3RydWN0IG1tX3dhbGsgd2FsayA9 IHsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIG9wcyA9IHsKIAkJLnB0ZV9lbnRy eSA9IHBhZ2VfY2xlYXJfbm9jYWNoZSwKKwl9OworCXN0cnVjdCBtbV93YWxrIHdhbGsgPSB7CisJ CS5vcHMgPSAmb3BzLAogCQkubW0gPSAmaW5pdF9tbQogCX07CiAKZGlmZiAtLWdpdCBhL2FyY2gv cG93ZXJwYy9tbS9ib29rM3M2NC9zdWJwYWdlX3Byb3QuYyBiL2FyY2gvcG93ZXJwYy9tbS9ib29r M3M2NC9zdWJwYWdlX3Byb3QuYwppbmRleCA5YmEwN2U1NWM0ODkuLjc4NzZiMzE2MTM4YiAxMDA2 NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3N1YnBhZ2VfcHJvdC5jCisrKyBiL2Fy Y2gvcG93ZXJwYy9tbS9ib29rM3M2NC9zdWJwYWdlX3Byb3QuYwpAQCAtMTQzLDkgKzE0MywxMiBA QCBzdGF0aWMgdm9pZCBzdWJwYWdlX21hcmtfdm1hX25vaHVnZShzdHJ1Y3QgbW1fc3RydWN0ICpt bSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJCSAgICB1bnNpZ25lZCBsb25nIGxlbikKIHsKIAlz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtf b3BzIG9wcyA9IHsKKwkJLnBtZF9lbnRyeSA9IHN1YnBhZ2Vfd2Fsa19wbWRfZW50cnksCisJfTsK IAlzdHJ1Y3QgbW1fd2FsayBzdWJwYWdlX3Byb3RvX3dhbGsgPSB7CisJCS5vcHMgPSAmb3BzLAog CQkubW0gPSBtbSwKLQkJLnBtZF9lbnRyeSA9IHN1YnBhZ2Vfd2Fsa19wbWRfZW50cnksCiAJfTsK IAogCS8qCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbW0vZ21hcC5jIGIvYXJjaC9zMzkwL21tL2dt YXAuYwppbmRleCAxZTY2OGI5NWUwYzYuLjllMGZlZWI0NjljMiAxMDA2NDQKLS0tIGEvYXJjaC9z MzkwL21tL2dtYXAuYworKysgYi9hcmNoL3MzOTAvbW0vZ21hcC5jCkBAIC0yNTIzLDkgKzI1MjMs MTQgQEAgc3RhdGljIGludCBfX3phcF96ZXJvX3BhZ2VzKHBtZF90ICpwbWQsIHVuc2lnbmVkIGxv bmcgc3RhcnQsCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB6YXBfemVyb19wYWdlcyhzdHJ1Y3QgbW1f c3RydWN0ICptbSkKIHsKLQlzdHJ1Y3QgbW1fd2FsayB3YWxrID0geyAucG1kX2VudHJ5ID0gX196 YXBfemVyb19wYWdlcyB9OworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0g eworCQkucG1kX2VudHJ5ID0gX196YXBfemVyb19wYWdlcywKKwl9OworCXN0cnVjdCBtbV93YWxr IHdhbGsgPSB7CisJCS5vcHMgPSAmb3BzLAorCQkubW0gPSBtbSwKKwl9OwogCi0Jd2Fsay5tbSA9 IG1tOwogCXdhbGtfcGFnZV9yYW5nZSgwLCBUQVNLX1NJWkUsICZ3YWxrKTsKIH0KIApAQCAtMjU5 MSwxMSArMjU5NiwxNSBAQCBzdGF0aWMgaW50IF9fczM5MF9lbmFibGVfc2tleV9odWdldGxiKHB0 ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAogaW50IHMzOTBfZW5hYmxlX3NrZXkodm9p ZCkKIHsKLQlzdHJ1Y3QgbW1fd2FsayB3YWxrID0geworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1f d2Fsa19vcHMgb3BzID0gewogCQkuaHVnZXRsYl9lbnRyeSA9IF9fczM5MF9lbmFibGVfc2tleV9o dWdldGxiLAogCQkucHRlX2VudHJ5ID0gX19zMzkwX2VuYWJsZV9za2V5X3B0ZSwKIAl9OwogCXN0 cnVjdCBtbV9zdHJ1Y3QgKm1tID0gY3VycmVudC0+bW07CisJc3RydWN0IG1tX3dhbGsgd2FsayA9 IHsKKwkJLm9wcyA9ICZvcHMsCisJCS5tbSA9IG1tLAorCX07CiAJc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWE7CiAJaW50IHJjID0gMDsKIApAQCAtMjYxNCw3ICsyNjIzLDYgQEAgaW50IHMzOTBf ZW5hYmxlX3NrZXkodm9pZCkKIAl9CiAJbW0tPmRlZl9mbGFncyAmPSB+Vk1fTUVSR0VBQkxFOwog Ci0Jd2Fsay5tbSA9IG1tOwogCXdhbGtfcGFnZV9yYW5nZSgwLCBUQVNLX1NJWkUsICZ3YWxrKTsK IAogb3V0X3VwOgpAQCAtMjYzNSwxMCArMjY0MywxNSBAQCBzdGF0aWMgaW50IF9fczM5MF9yZXNl dF9jbW1hKHB0ZV90ICpwdGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAogdm9pZCBzMzkwX3Jlc2V0 X2NtbWEoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7Ci0Jc3RydWN0IG1tX3dhbGsgd2FsayA9IHsg LnB0ZV9lbnRyeSA9IF9fczM5MF9yZXNldF9jbW1hIH07CisJc3RhdGljIGNvbnN0IHN0cnVjdCBt bV93YWxrX29wcyBvcHMgPSB7CisJCS5wdGVfZW50cnkgPSBfX3MzOTBfcmVzZXRfY21tYSwKKwl9 OworCXN0cnVjdCBtbV93YWxrIHdhbGsgPSB7CisJCS5vcHMgPSAmb3BzLAorCQkubW0gPSBtbSwK Kwl9OwogCiAJZG93bl93cml0ZSgmbW0tPm1tYXBfc2VtKTsKLQl3YWxrLm1tID0gbW07CiAJd2Fs a19wYWdlX3JhbmdlKDAsIFRBU0tfU0laRSwgJndhbGspOwogCXVwX3dyaXRlKCZtbS0+bW1hcF9z ZW0pOwogfQpkaWZmIC0tZ2l0IGEvZnMvcHJvYy90YXNrX21tdS5jIGIvZnMvcHJvYy90YXNrX21t dS5jCmluZGV4IDgxOGNlZGJlZDk1Zi4uZmI1NzEwODMwZmZjIDEwMDY0NAotLS0gYS9mcy9wcm9j L3Rhc2tfbW11LmMKKysrIGIvZnMvcHJvYy90YXNrX21tdS5jCkBAIC03MjksMTYgKzcyOSwxOSBA QCBzdGF0aWMgaW50IHNtYXBzX2h1Z2V0bGJfcmFuZ2UocHRlX3QgKnB0ZSwgdW5zaWduZWQgbG9u ZyBobWFzaywKIAl9CiAJcmV0dXJuIDA7CiB9CisjZWxzZQorICNkZWZpbmUgc21hcHNfaHVnZXRs Yl9yYW5nZSBOVUxMCiAjZW5kaWYgLyogSFVHRVRMQl9QQUdFICovCiAKIHN0YXRpYyB2b2lkIHNt YXBfZ2F0aGVyX3N0YXRzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkJICAgICBzdHJ1 Y3QgbWVtX3NpemVfc3RhdHMgKm1zcykKIHsKLQlzdHJ1Y3QgbW1fd2FsayBzbWFwc193YWxrID0g eworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0gewogCQkucG1kX2VudHJ5 ID0gc21hcHNfcHRlX3JhbmdlLAotI2lmZGVmIENPTkZJR19IVUdFVExCX1BBR0UKIAkJLmh1Z2V0 bGJfZW50cnkgPSBzbWFwc19odWdldGxiX3JhbmdlLAotI2VuZGlmCisJfTsKKwlzdHJ1Y3QgbW1f d2FsayBzbWFwc193YWxrID0geworCQkub3BzID0gJm9wcywKIAkJLm1tID0gdm1hLT52bV9tbSwK IAl9OwogCkBAIC03NjQsOCArNzY3LDEzIEBAIHN0YXRpYyB2b2lkIHNtYXBfZ2F0aGVyX3N0YXRz KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCQkJCQkhKHZtYS0+dm1fZmxhZ3MgJiBWTV9X UklURSkpIHsKIAkJCW1zcy0+c3dhcCArPSBzaG1lbV9zd2FwcGVkOwogCQl9IGVsc2UgeworCQkJ c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBvcHMgPSB7CisJCQkJLnBtZF9lbnRyeSA9 IHNtYXBzX3B0ZV9yYW5nZSwKKwkJCQkuaHVnZXRsYl9lbnRyeSA9IHNtYXBzX2h1Z2V0bGJfcmFu Z2UsCisJCQkJLnB0ZV9ob2xlID0gc21hcHNfcHRlX2hvbGUsCisJCQl9OwogCQkJbXNzLT5jaGVj a19zaG1lbV9zd2FwID0gdHJ1ZTsKLQkJCXNtYXBzX3dhbGsucHRlX2hvbGUgPSBzbWFwc19wdGVf aG9sZTsKKwkJCXNtYXBzX3dhbGsub3BzID0gJm9wczsKIAkJfQogCX0KICNlbmRpZgpAQCAtMTE1 MCw5ICsxMTU4LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGNsZWFyX3JlZnNfd3JpdGUoc3RydWN0IGZp bGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsCiAJCXN0cnVjdCBjbGVhcl9yZWZzX3By aXZhdGUgY3AgPSB7CiAJCQkudHlwZSA9IHR5cGUsCiAJCX07Ci0JCXN0cnVjdCBtbV93YWxrIGNs ZWFyX3JlZnNfd2FsayA9IHsKKwkJc3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBvcHMg PSB7CiAJCQkucG1kX2VudHJ5ID0gY2xlYXJfcmVmc19wdGVfcmFuZ2UsCiAJCQkudGVzdF93YWxr ID0gY2xlYXJfcmVmc190ZXN0X3dhbGssCisJCX07CisJCXN0cnVjdCBtbV93YWxrIGNsZWFyX3Jl ZnNfd2FsayA9IHsKKwkJCS5vcHMgPSAmb3BzLAogCQkJLm1tID0gbW0sCiAJCQkucHJpdmF0ZSA9 ICZjcCwKIAkJfTsKQEAgLTE0ODgsNiArMTQ5OSw4IEBAIHN0YXRpYyBpbnQgcGFnZW1hcF9odWdl dGxiX3JhbmdlKHB0ZV90ICpwdGVwLCB1bnNpZ25lZCBsb25nIGhtYXNrLAogCiAJcmV0dXJuIGVy cjsKIH0KKyNlbHNlCisgI2RlZmluZSBwYWdlbWFwX2h1Z2V0bGJfcmFuZ2UgTlVMTAogI2VuZGlm IC8qIEhVR0VUTEJfUEFHRSAqLwogCiAvKgpAQCAtMTUyMSw3ICsxNTM0LDEyIEBAIHN0YXRpYyBz c2l6ZV90IHBhZ2VtYXBfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZiwK IHsKIAlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAlzdHJ1Y3Qg cGFnZW1hcHJlYWQgcG07Ci0Jc3RydWN0IG1tX3dhbGsgcGFnZW1hcF93YWxrID0ge307CisJc3Rh dGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBvcHMgPSB7CisJCS5wbWRfZW50cnkgPSBwYWdl bWFwX3BtZF9yYW5nZSwKKwkJLnB0ZV9ob2xlID0gcGFnZW1hcF9wdGVfaG9sZSwKKwkJLmh1Z2V0 bGJfZW50cnkgPSBwYWdlbWFwX2h1Z2V0bGJfcmFuZ2UsCisJfTsKKwlzdHJ1Y3QgbW1fd2FsayBw YWdlbWFwX3dhbGsgPSB7IC5vcHMgPSAmb3BzLCB9OwogCXVuc2lnbmVkIGxvbmcgc3JjOwogCXVu c2lnbmVkIGxvbmcgc3ZwZm47CiAJdW5zaWduZWQgbG9uZyBzdGFydF92YWRkcjsKQEAgLTE1NDks MTEgKzE1NjcsNiBAQCBzdGF0aWMgc3NpemVfdCBwYWdlbWFwX3JlYWQoc3RydWN0IGZpbGUgKmZp bGUsIGNoYXIgX191c2VyICpidWYsCiAJaWYgKCFwbS5idWZmZXIpCiAJCWdvdG8gb3V0X21tOwog Ci0JcGFnZW1hcF93YWxrLnBtZF9lbnRyeSA9IHBhZ2VtYXBfcG1kX3JhbmdlOwotCXBhZ2VtYXBf d2Fsay5wdGVfaG9sZSA9IHBhZ2VtYXBfcHRlX2hvbGU7Ci0jaWZkZWYgQ09ORklHX0hVR0VUTEJf UEFHRQotCXBhZ2VtYXBfd2Fsay5odWdldGxiX2VudHJ5ID0gcGFnZW1hcF9odWdldGxiX3Jhbmdl OwotI2VuZGlmCiAJcGFnZW1hcF93YWxrLm1tID0gbW07CiAJcGFnZW1hcF93YWxrLnByaXZhdGUg PSAmcG07CiAKQEAgLTE4MDgsOSArMTgyMSwxMiBAQCBzdGF0aWMgaW50IHNob3dfbnVtYV9tYXAo c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KQogCXN0cnVjdCBudW1hX21hcHMgKm1kID0gJm51 bWFfcHJpdi0+bWQ7CiAJc3RydWN0IGZpbGUgKmZpbGUgPSB2bWEtPnZtX2ZpbGU7CiAJc3RydWN0 IG1tX3N0cnVjdCAqbW0gPSB2bWEtPnZtX21tOwotCXN0cnVjdCBtbV93YWxrIHdhbGsgPSB7CisJ c3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBvcHMgPSB7CiAJCS5odWdldGxiX2VudHJ5 ID0gZ2F0aGVyX2h1Z2V0bGJfc3RhdHMsCiAJCS5wbWRfZW50cnkgPSBnYXRoZXJfcHRlX3N0YXRz LAorCX07CisJc3RydWN0IG1tX3dhbGsgd2FsayA9IHsKKwkJLm9wcyA9ICZvcHMsCiAJCS5wcml2 YXRlID0gbWQsCiAJCS5tbSA9IG1tLAogCX07CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21t LmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggMDM4OWMzNGFjNTI5Li44MTMzZjI0YTNhMjgg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgK QEAgLTE0MjYsOCArMTQyNiwxMCBAQCB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiB2b2lkIHVubWFwX3ZtYXMoc3Ry dWN0IG1tdV9nYXRoZXIgKnRsYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpzdGFydF92bWEsCiAJ CXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKIAorc3RydWN0IG1tX3dh bGs7CisKIC8qKgotICogbW1fd2FsayAtIGNhbGxiYWNrcyBmb3Igd2Fsa19wYWdlX3JhbmdlCisg KiBtbV93YWxrX29wcyAtIGNhbGxiYWNrcyBmb3Igd2Fsa19wYWdlX3JhbmdlCiAgKiBAcHVkX2Vu dHJ5OiBpZiBzZXQsIGNhbGxlZCBmb3IgZWFjaCBub24tZW1wdHkgUFVEICgybmQtbGV2ZWwpIGVu dHJ5CiAgKgkgICAgICAgdGhpcyBoYW5kbGVyIHNob3VsZCBvbmx5IGhhbmRsZSBwdWRfdHJhbnNf aHVnZSgpIHB1ZHMuCiAgKgkgICAgICAgdGhlIHBtZF9lbnRyeSBvciBwdGVfZW50cnkgY2FsbGJh Y2tzIHdpbGwgYmUgdXNlZCBmb3IKQEAgLTE0NDQsMTMgKzE0NDYsOCBAQCB2b2lkIHVubWFwX3Zt YXMoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpzdGFydF92 bWEsCiAgKiAgICAgICAgICAgICB2YWx1ZSBtZWFucyAiZG8gcGFnZSB0YWJsZSB3YWxrIG92ZXIg dGhlIGN1cnJlbnQgdm1hLCIKICAqICAgICAgICAgICAgIGFuZCBhIG5lZ2F0aXZlIG9uZSBtZWFu cyAiYWJvcnQgY3VycmVudCBwYWdlIHRhYmxlIHdhbGsKICAqICAgICAgICAgICAgIHJpZ2h0IG5v dy4iIDEgbWVhbnMgInNraXAgdGhlIGN1cnJlbnQgdm1hLiIKLSAqIEBtbTogICAgICAgIG1tX3N0 cnVjdCByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBwcm9jZXNzIG9mIHBhZ2UgdGFibGUgd2Fsawot ICogQHZtYTogICAgICAgdm1hIGN1cnJlbnRseSB3YWxrZWQgKE5VTEwgaWYgd2Fsa2luZyBvdXRz aWRlIHZtYXMpCi0gKiBAcHJpdmF0ZTogICBwcml2YXRlIGRhdGEgZm9yIGNhbGxiYWNrcycgdXNh Z2UKLSAqCi0gKiAoc2VlIHRoZSBjb21tZW50IG9uIHdhbGtfcGFnZV9yYW5nZSgpIGZvciBtb3Jl IGRldGFpbHMpCiAgKi8KLXN0cnVjdCBtbV93YWxrIHsKK3N0cnVjdCBtbV93YWxrX29wcyB7CiAJ aW50ICgqcHVkX2VudHJ5KShwdWRfdCAqcHVkLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAJCQkgdW5z aWduZWQgbG9uZyBuZXh0LCBzdHJ1Y3QgbW1fd2FsayAqd2Fsayk7CiAJaW50ICgqcG1kX2VudHJ5 KShwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHIsCkBAIC0xNDY0LDYgKzE0NjEsMTggQEAg c3RydWN0IG1tX3dhbGsgewogCQkJICAgICBzdHJ1Y3QgbW1fd2FsayAqd2Fsayk7CiAJaW50ICgq dGVzdF93YWxrKSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgbmV4dCwKIAkJCXN0 cnVjdCBtbV93YWxrICp3YWxrKTsKK307CisKKy8qKgorICogbW1fd2FsayAtICAgd2Fsa19wYWdl X3JhbmdlIGRhdGEKKyAqIEBtbTogICAgICAgIG1tX3N0cnVjdCByZXByZXNlbnRpbmcgdGhlIHRh cmdldCBwcm9jZXNzIG9mIHBhZ2UgdGFibGUgd2FsaworICogQHZtYTogICAgICAgdm1hIGN1cnJl bnRseSB3YWxrZWQgKE5VTEwgaWYgd2Fsa2luZyBvdXRzaWRlIHZtYXMpCisgKiBAcHJpdmF0ZTog ICBwcml2YXRlIGRhdGEgZm9yIGNhbGxiYWNrcycgdXNhZ2UKKyAqCisgKiAoc2VlIHRoZSBjb21t ZW50IG9uIHdhbGtfcGFnZV9yYW5nZSgpIGZvciBtb3JlIGRldGFpbHMpCisgKi8KK3N0cnVjdCBt bV93YWxrIHsKKwljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wczsKIAlzdHJ1Y3QgbW1fc3Ry dWN0ICptbTsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKIAl2b2lkICpwcml2YXRlOwpk aWZmIC0tZ2l0IGEvbW0vaG1tLmMgYi9tbS9obW0uYwppbmRleCBlMWVlZGVmMTI5Y2YuLjc1Njg0 M2ZmYTdjYiAxMDA2NDQKLS0tIGEvbW0vaG1tLmMKKysrIGIvbW0vaG1tLmMKQEAgLTk2MSw3ICs5 NjEsMTUgQEAgbG9uZyBobW1fcmFuZ2Vfc25hcHNob3Qoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2Up CiAJc3RydWN0IGhtbV92bWFfd2FsayBobW1fdm1hX3dhbGs7CiAJc3RydWN0IGhtbSAqaG1tID0g cmFuZ2UtPmhtbTsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKLQlzdHJ1Y3QgbW1fd2Fs ayBtbV93YWxrOworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0geworCQku cHVkX2VudHJ5ID0gaG1tX3ZtYV93YWxrX3B1ZCwKKwkJLnBtZF9lbnRyeSA9IGhtbV92bWFfd2Fs a19wbWQsCisJCS5wdGVfaG9sZSA9IGhtbV92bWFfd2Fsa19ob2xlLAorCQkuaHVnZXRsYl9lbnRy eSA9IGhtbV92bWFfd2Fsa19odWdldGxiX2VudHJ5LAorCX07CisJc3RydWN0IG1tX3dhbGsgbW1f d2FsayA9IHsKKwkJLm9wcyA9ICZvcHMsCisJfTsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmht bS0+bW0tPm1tYXBfc2VtKTsKIAlkbyB7CkBAIC0xMDA0LDEzICsxMDEyLDYgQEAgbG9uZyBobW1f cmFuZ2Vfc25hcHNob3Qoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UpCiAKIAkJbW1fd2Fsay52bWEg PSB2bWE7CiAJCW1tX3dhbGsubW0gPSB2bWEtPnZtX21tOwotCQltbV93YWxrLnB0ZV9lbnRyeSA9 IE5VTEw7Ci0JCW1tX3dhbGsudGVzdF93YWxrID0gTlVMTDsKLQkJbW1fd2Fsay5odWdldGxiX2Vu dHJ5ID0gTlVMTDsKLQkJbW1fd2Fsay5wdWRfZW50cnkgPSBobW1fdm1hX3dhbGtfcHVkOwotCQlt bV93YWxrLnBtZF9lbnRyeSA9IGhtbV92bWFfd2Fsa19wbWQ7Ci0JCW1tX3dhbGsucHRlX2hvbGUg PSBobW1fdm1hX3dhbGtfaG9sZTsKLQkJbW1fd2Fsay5odWdldGxiX2VudHJ5ID0gaG1tX3ZtYV93 YWxrX2h1Z2V0bGJfZW50cnk7CiAKIAkJd2Fsa19wYWdlX3JhbmdlKHN0YXJ0LCBlbmQsICZtbV93 YWxrKTsKIAkJc3RhcnQgPSBlbmQ7CkBAIC0xMDU1LDcgKzEwNTYsMTUgQEAgbG9uZyBobW1fcmFu Z2VfZmF1bHQoc3RydWN0IGhtbV9yYW5nZSAqcmFuZ2UsIGJvb2wgYmxvY2spCiAJc3RydWN0IGht bV92bWFfd2FsayBobW1fdm1hX3dhbGs7CiAJc3RydWN0IGhtbSAqaG1tID0gcmFuZ2UtPmhtbTsK IAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKLQlzdHJ1Y3QgbW1fd2FsayBtbV93YWxrOwor CXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0geworCQkucHVkX2VudHJ5ID0g aG1tX3ZtYV93YWxrX3B1ZCwKKwkJLnBtZF9lbnRyeSA9IGhtbV92bWFfd2Fsa19wbWQsCisJCS5w dGVfaG9sZSA9IGhtbV92bWFfd2Fsa19ob2xlLAorCQkuaHVnZXRsYl9lbnRyeSA9IGhtbV92bWFf d2Fsa19odWdldGxiX2VudHJ5LAorCX07CisJc3RydWN0IG1tX3dhbGsgbW1fd2FsayA9IHsKKwkJ Lm9wcyA9ICZvcHMsCisJfTsKIAlpbnQgcmV0OwogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaG1t LT5tbS0+bW1hcF9zZW0pOwpAQCAtMTEwMywxMyArMTExMiw2IEBAIGxvbmcgaG1tX3JhbmdlX2Zh dWx0KHN0cnVjdCBobW1fcmFuZ2UgKnJhbmdlLCBib29sIGJsb2NrKQogCiAJCW1tX3dhbGsudm1h ID0gdm1hOwogCQltbV93YWxrLm1tID0gdm1hLT52bV9tbTsKLQkJbW1fd2Fsay5wdGVfZW50cnkg PSBOVUxMOwotCQltbV93YWxrLnRlc3Rfd2FsayA9IE5VTEw7Ci0JCW1tX3dhbGsuaHVnZXRsYl9l bnRyeSA9IE5VTEw7Ci0JCW1tX3dhbGsucHVkX2VudHJ5ID0gaG1tX3ZtYV93YWxrX3B1ZDsKLQkJ bW1fd2Fsay5wbWRfZW50cnkgPSBobW1fdm1hX3dhbGtfcG1kOwotCQltbV93YWxrLnB0ZV9ob2xl ID0gaG1tX3ZtYV93YWxrX2hvbGU7Ci0JCW1tX3dhbGsuaHVnZXRsYl9lbnRyeSA9IGhtbV92bWFf d2Fsa19odWdldGxiX2VudHJ5OwogCiAJCWRvIHsKIAkJCXJldCA9IHdhbGtfcGFnZV9yYW5nZShz dGFydCwgZW5kLCAmbW1fd2Fsayk7CmRpZmYgLS1naXQgYS9tbS9tYWR2aXNlLmMgYi9tbS9tYWR2 aXNlLmMKaW5kZXggOTY4ZGYzYWEwNjlmLi5iOTcwMDA2MGNhZmIgMTAwNjQ0Ci0tLSBhL21tL21h ZHZpc2UuYworKysgYi9tbS9tYWR2aXNlLmMKQEAgLTIyOCw5ICsyMjgsMTIgQEAgc3RhdGljIGlu dCBzd2FwaW5fd2Fsa19wbWRfZW50cnkocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBzdGFydCwK IHN0YXRpYyB2b2lkIGZvcmNlX3N3YXBpbl9yZWFkYWhlYWQoc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEsCiAJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogeworCXN0 YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0geworCQkucG1kX2VudHJ5ID0gc3dh cGluX3dhbGtfcG1kX2VudHJ5LAorCX07CiAJc3RydWN0IG1tX3dhbGsgd2FsayA9IHsKKwkJLm9w cyA9ICZvcHMsCiAJCS5tbSA9IHZtYS0+dm1fbW0sCi0JCS5wbWRfZW50cnkgPSBzd2FwaW5fd2Fs a19wbWRfZW50cnksCiAJCS5wcml2YXRlID0gdm1hLAogCX07CiAKQEAgLTQ0NCw4ICs0NDcsMTEg QEAgc3RhdGljIHZvaWQgbWFkdmlzZV9mcmVlX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIg KnRsYiwKIAkJCSAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJCQkgICAgIHVuc2ln bmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQpCiB7Ci0Jc3RydWN0IG1tX3dhbGsgZnJl ZV93YWxrID0geworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0gewogCQku cG1kX2VudHJ5ID0gbWFkdmlzZV9mcmVlX3B0ZV9yYW5nZSwKKwl9OworCXN0cnVjdCBtbV93YWxr IGZyZWVfd2FsayA9IHsKKwkJLm9wcyA9ICZvcHMsCiAJCS5tbSA9IHZtYS0+dm1fbW0sCiAJCS5w cml2YXRlID0gdGxiLAogCX07CmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1j b250cm9sLmMKaW5kZXggMjQ5NjcxODczYWE5Li42ZDM5MTJiOWU1MDggMTAwNjQ0Ci0tLSBhL21t L21lbWNvbnRyb2wuYworKysgYi9tbS9tZW1jb250cm9sLmMKQEAgLTUyMzksOSArNTIzOSwxMSBA QCBzdGF0aWMgaW50IG1lbV9jZ3JvdXBfY291bnRfcHJlY2hhcmdlX3B0ZV9yYW5nZShwbWRfdCAq cG1kLAogc3RhdGljIHVuc2lnbmVkIGxvbmcgbWVtX2Nncm91cF9jb3VudF9wcmVjaGFyZ2Uoc3Ry dWN0IG1tX3N0cnVjdCAqbW0pCiB7CiAJdW5zaWduZWQgbG9uZyBwcmVjaGFyZ2U7Ci0KLQlzdHJ1 Y3QgbW1fd2FsayBtZW1fY2dyb3VwX2NvdW50X3ByZWNoYXJnZV93YWxrID0geworCXN0YXRpYyBj b25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0gewogCQkucG1kX2VudHJ5ID0gbWVtX2Nncm91 cF9jb3VudF9wcmVjaGFyZ2VfcHRlX3JhbmdlLAorCX07CisJc3RydWN0IG1tX3dhbGsgbWVtX2Nn cm91cF9jb3VudF9wcmVjaGFyZ2Vfd2FsayA9IHsKKwkJLm9wcyA9ICZvcHMsCiAJCS5tbSA9IG1t LAogCX07CiAJZG93bl9yZWFkKCZtbS0+bW1hcF9zZW0pOwpAQCAtNTUxNyw4ICs1NTE5LDExIEBA IHN0YXRpYyBpbnQgbWVtX2Nncm91cF9tb3ZlX2NoYXJnZV9wdGVfcmFuZ2UocG1kX3QgKnBtZCwK IAogc3RhdGljIHZvaWQgbWVtX2Nncm91cF9tb3ZlX2NoYXJnZSh2b2lkKQogewotCXN0cnVjdCBt bV93YWxrIG1lbV9jZ3JvdXBfbW92ZV9jaGFyZ2Vfd2FsayA9IHsKKwlzdGF0aWMgY29uc3Qgc3Ry dWN0IG1tX3dhbGtfb3BzIG9wcyA9IHsKIAkJLnBtZF9lbnRyeSA9IG1lbV9jZ3JvdXBfbW92ZV9j aGFyZ2VfcHRlX3JhbmdlLAorCX07CisJc3RydWN0IG1tX3dhbGsgbWVtX2Nncm91cF9tb3ZlX2No YXJnZV93YWxrID0geworCQkub3BzID0gJm9wcywKIAkJLm1tID0gbWMubW0sCiAJfTsKIApkaWZm IC0tZ2l0IGEvbW0vbWVtcG9saWN5LmMgYi9tbS9tZW1wb2xpY3kuYwppbmRleCBmNDg2OTNmNzVi MzcuLmNhMTBjOWI1NTMzMyAxMDA2NDQKLS0tIGEvbW0vbWVtcG9saWN5LmMKKysrIGIvbW0vbWVt cG9saWN5LmMKQEAgLTY1MiwxMCArNjUyLDEzIEBAIHF1ZXVlX3BhZ2VzX3JhbmdlKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKIAkJ Lm5tYXNrID0gbm9kZXMsCiAJCS5wcmV2ID0gTlVMTCwKIAl9OwotCXN0cnVjdCBtbV93YWxrIHF1 ZXVlX3BhZ2VzX3dhbGsgPSB7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyBvcHMg PSB7CiAJCS5odWdldGxiX2VudHJ5ID0gcXVldWVfcGFnZXNfaHVnZXRsYiwKIAkJLnBtZF9lbnRy eSA9IHF1ZXVlX3BhZ2VzX3B0ZV9yYW5nZSwKIAkJLnRlc3Rfd2FsayA9IHF1ZXVlX3BhZ2VzX3Rl c3Rfd2FsaywKKwl9OworCXN0cnVjdCBtbV93YWxrIHF1ZXVlX3BhZ2VzX3dhbGsgPSB7CisJCS5v cHMgPSAmb3BzLAogCQkubW0gPSBtbSwKIAkJLnByaXZhdGUgPSAmcXAsCiAJfTsKZGlmZiAtLWdp dCBhL21tL21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuYwppbmRleCAzNDQ1NzQ3ZTIyOWQuLjBkMWRh MGQ3MjAxMSAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZS5jCisrKyBiL21tL21pZ3JhdGUuYwpAQCAt MjMzOSwxNiArMjMzOSwxNiBAQCBzdGF0aWMgaW50IG1pZ3JhdGVfdm1hX2NvbGxlY3RfcG1kKHBt ZF90ICpwbWRwLAogc3RhdGljIHZvaWQgbWlncmF0ZV92bWFfY29sbGVjdChzdHJ1Y3QgbWlncmF0 ZV92bWEgKm1pZ3JhdGUpCiB7CiAJc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSByYW5nZTsKLQlz dHJ1Y3QgbW1fd2FsayBtbV93YWxrOwotCi0JbW1fd2Fsay5wbWRfZW50cnkgPSBtaWdyYXRlX3Zt YV9jb2xsZWN0X3BtZDsKLQltbV93YWxrLnB0ZV9lbnRyeSA9IE5VTEw7Ci0JbW1fd2Fsay5wdGVf aG9sZSA9IG1pZ3JhdGVfdm1hX2NvbGxlY3RfaG9sZTsKLQltbV93YWxrLmh1Z2V0bGJfZW50cnkg PSBOVUxMOwotCW1tX3dhbGsudGVzdF93YWxrID0gTlVMTDsKLQltbV93YWxrLnZtYSA9IG1pZ3Jh dGUtPnZtYTsKLQltbV93YWxrLm1tID0gbWlncmF0ZS0+dm1hLT52bV9tbTsKLQltbV93YWxrLnBy aXZhdGUgPSBtaWdyYXRlOworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgb3BzID0g eworCQkucG1kX2VudHJ5ID0gbWlncmF0ZV92bWFfY29sbGVjdF9wbWQsCisJCS5wdGVfaG9sZSA9 IG1pZ3JhdGVfdm1hX2NvbGxlY3RfaG9sZSwKKwl9OworCXN0cnVjdCBtbV93YWxrIG1tX3dhbGsg PSB7CisJCS5vcHMgPSAmb3BzLAorCQkudm1hID0gbWlncmF0ZS0+dm1hLAorCQkubW0gPSBtaWdy YXRlLT52bWEtPnZtX21tLAorCQkucHJpdmF0ZSA9IG1pZ3JhdGUsCisJfTsKIAogCW1tdV9ub3Rp Zmllcl9yYW5nZV9pbml0KCZyYW5nZSwgTU1VX05PVElGWV9DTEVBUiwgMCwgTlVMTCwgbW1fd2Fs ay5tbSwKIAkJCQltaWdyYXRlLT5zdGFydCwKZGlmZiAtLWdpdCBhL21tL21pbmNvcmUuYyBiL21t L21pbmNvcmUuYwppbmRleCA0ZmU5MWQ0OTc0MzYuLjgxOTVkMjA5OWU3NyAxMDA2NDQKLS0tIGEv bW0vbWluY29yZS5jCisrKyBiL21tL21pbmNvcmUuYwpAQCAtMjAzLDEwICsyMDMsMTMgQEAgc3Rh dGljIGxvbmcgZG9fbWluY29yZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgcGFn ZXMsIHVuc2lnbmVkIGNoYXIgKnYKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTsKIAl1bnNp Z25lZCBsb25nIGVuZDsKIAlpbnQgZXJyOwotCXN0cnVjdCBtbV93YWxrIG1pbmNvcmVfd2FsayA9 IHsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IG1tX3dhbGtfb3BzIG9wcyA9IHsKIAkJLnBtZF9lbnRy eSA9IG1pbmNvcmVfcHRlX3JhbmdlLAogCQkucHRlX2hvbGUgPSBtaW5jb3JlX3VubWFwcGVkX3Jh bmdlLAogCQkuaHVnZXRsYl9lbnRyeSA9IG1pbmNvcmVfaHVnZXRsYiwKKwl9OworCXN0cnVjdCBt bV93YWxrIG1pbmNvcmVfd2FsayA9IHsKKwkJLm9wcyA9ICZvcHMsCiAJCS5wcml2YXRlID0gdmVj LAogCX07CiAKZGlmZiAtLWdpdCBhL21tL21wcm90ZWN0LmMgYi9tbS9tcHJvdGVjdC5jCmluZGV4 IGJmMzhkZmJiYjRiNC4uNzE5YjVmNGI5ZmU1IDEwMDY0NAotLS0gYS9tbS9tcHJvdGVjdC5jCisr KyBiL21tL21wcm90ZWN0LmMKQEAgLTMzMywxMCArMzMzLDEzIEBAIHN0YXRpYyBpbnQgcHJvdF9u b25lX3dhbGsoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQs CiAJCQkgICB1bnNpZ25lZCBsb25nIGVuZCwgdW5zaWduZWQgbG9uZyBuZXdmbGFncykKIHsKIAlw Z3Byb3RfdCBuZXdfcGdwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdChuZXdmbGFncyk7Ci0Jc3RydWN0 IG1tX3dhbGsgcHJvdF9ub25lX3dhbGsgPSB7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBtbV93YWxr X29wcyBvcHMgPSB7CiAJCS5wdGVfZW50cnkgPSBwcm90X25vbmVfcHRlX2VudHJ5LAogCQkuaHVn ZXRsYl9lbnRyeSA9IHByb3Rfbm9uZV9odWdldGxiX2VudHJ5LAogCQkudGVzdF93YWxrID0gcHJv dF9ub25lX3Rlc3QsCisJfTsKKwlzdHJ1Y3QgbW1fd2FsayBwcm90X25vbmVfd2FsayA9IHsKKwkJ Lm9wcyA9ICZvcHMsCiAJCS5tbSA9IGN1cnJlbnQtPm1tLAogCQkucHJpdmF0ZSA9ICZuZXdfcGdw cm90LAogCX07CmRpZmYgLS1naXQgYS9tbS9wYWdld2Fsay5jIGIvbW0vcGFnZXdhbGsuYwppbmRl eCBjMzA4NGZmMjU2OWQuLjM4YWI3NjJhZWY0NCAxMDA2NDQKLS0tIGEvbW0vcGFnZXdhbGsuYwor KysgYi9tbS9wYWdld2Fsay5jCkBAIC05LDEwICs5LDExIEBAIHN0YXRpYyBpbnQgd2Fsa19wdGVf cmFuZ2UocG1kX3QgKnBtZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCwK IHsKIAlwdGVfdCAqcHRlOwogCWludCBlcnIgPSAwOworCWNvbnN0IHN0cnVjdCBtbV93YWxrX29w cyAqb3BzID0gd2Fsay0+b3BzOwogCiAJcHRlID0gcHRlX29mZnNldF9tYXAocG1kLCBhZGRyKTsK IAlmb3IgKDs7KSB7Ci0JCWVyciA9IHdhbGstPnB0ZV9lbnRyeShwdGUsIGFkZHIsIGFkZHIgKyBQ QUdFX1NJWkUsIHdhbGspOworCQllcnIgPSBvcHMtPnB0ZV9lbnRyeShwdGUsIGFkZHIsIGFkZHIg KyBQQUdFX1NJWkUsIHdhbGspOwogCQlpZiAoZXJyKQogCQkgICAgICAgYnJlYWs7CiAJCWFkZHIg Kz0gUEFHRV9TSVpFOwpAQCAtMzAsNiArMzEsNyBAQCBzdGF0aWMgaW50IHdhbGtfcG1kX3Jhbmdl KHB1ZF90ICpwdWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCiB7CiAJ cG1kX3QgKnBtZDsKIAl1bnNpZ25lZCBsb25nIG5leHQ7CisJY29uc3Qgc3RydWN0IG1tX3dhbGtf b3BzICpvcHMgPSB3YWxrLT5vcHM7CiAJaW50IGVyciA9IDA7CiAKIAlwbWQgPSBwbWRfb2Zmc2V0 KHB1ZCwgYWRkcik7CkBAIC0zNyw4ICszOSw4IEBAIHN0YXRpYyBpbnQgd2Fsa19wbWRfcmFuZ2Uo cHVkX3QgKnB1ZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCwKIGFnYWlu OgogCQluZXh0ID0gcG1kX2FkZHJfZW5kKGFkZHIsIGVuZCk7CiAJCWlmIChwbWRfbm9uZSgqcG1k KSB8fCAhd2Fsay0+dm1hKSB7Ci0JCQlpZiAod2Fsay0+cHRlX2hvbGUpCi0JCQkJZXJyID0gd2Fs ay0+cHRlX2hvbGUoYWRkciwgbmV4dCwgd2Fsayk7CisJCQlpZiAob3BzLT5wdGVfaG9sZSkKKwkJ CQllcnIgPSBvcHMtPnB0ZV9ob2xlKGFkZHIsIG5leHQsIHdhbGspOwogCQkJaWYgKGVycikKIAkJ CQlicmVhazsKIAkJCWNvbnRpbnVlOwpAQCAtNDcsOCArNDksOCBAQCBzdGF0aWMgaW50IHdhbGtf cG1kX3JhbmdlKHB1ZF90ICpwdWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBl bmQsCiAJCSAqIFRoaXMgaW1wbGllcyB0aGF0IGVhY2ggLT5wbWRfZW50cnkoKSBoYW5kbGVyCiAJ CSAqIG5lZWRzIHRvIGtub3cgYWJvdXQgcG1kX3RyYW5zX2h1Z2UoKSBwbWRzCiAJCSAqLwotCQlp ZiAod2Fsay0+cG1kX2VudHJ5KQotCQkJZXJyID0gd2Fsay0+cG1kX2VudHJ5KHBtZCwgYWRkciwg bmV4dCwgd2Fsayk7CisJCWlmIChvcHMtPnBtZF9lbnRyeSkKKwkJCWVyciA9IG9wcy0+cG1kX2Vu dHJ5KHBtZCwgYWRkciwgbmV4dCwgd2Fsayk7CiAJCWlmIChlcnIpCiAJCQlicmVhazsKIApAQCAt NTYsNyArNTgsNyBAQCBzdGF0aWMgaW50IHdhbGtfcG1kX3JhbmdlKHB1ZF90ICpwdWQsIHVuc2ln bmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCiAJCSAqIENoZWNrIHRoaXMgaGVyZSBz byB3ZSBvbmx5IGJyZWFrIGRvd24gdHJhbnNfaHVnZQogCQkgKiBwYWdlcyB3aGVuIHdlIF9uZWVk XyB0bwogCQkgKi8KLQkJaWYgKCF3YWxrLT5wdGVfZW50cnkpCisJCWlmICghb3BzLT5wdGVfZW50 cnkpCiAJCQljb250aW51ZTsKIAogCQlzcGxpdF9odWdlX3BtZCh3YWxrLT52bWEsIHBtZCwgYWRk cik7CkBAIC03NSw2ICs3Nyw3IEBAIHN0YXRpYyBpbnQgd2Fsa19wdWRfcmFuZ2UocDRkX3QgKnA0 ZCwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGVuZCwKIHsKIAlwdWRfdCAqcHVk OwogCXVuc2lnbmVkIGxvbmcgbmV4dDsKKwljb25zdCBzdHJ1Y3QgbW1fd2Fsa19vcHMgKm9wcyA9 IHdhbGstPm9wczsKIAlpbnQgZXJyID0gMDsKIAogCXB1ZCA9IHB1ZF9vZmZzZXQocDRkLCBhZGRy KTsKQEAgLTgyLDE4ICs4NSwxOCBAQCBzdGF0aWMgaW50IHdhbGtfcHVkX3JhbmdlKHA0ZF90ICpw NGQsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCiAgYWdhaW46CiAJCW5l eHQgPSBwdWRfYWRkcl9lbmQoYWRkciwgZW5kKTsKIAkJaWYgKHB1ZF9ub25lKCpwdWQpIHx8ICF3 YWxrLT52bWEpIHsKLQkJCWlmICh3YWxrLT5wdGVfaG9sZSkKLQkJCQllcnIgPSB3YWxrLT5wdGVf aG9sZShhZGRyLCBuZXh0LCB3YWxrKTsKKwkJCWlmIChvcHMtPnB0ZV9ob2xlKQorCQkJCWVyciA9 IG9wcy0+cHRlX2hvbGUoYWRkciwgbmV4dCwgd2Fsayk7CiAJCQlpZiAoZXJyKQogCQkJCWJyZWFr OwogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAod2Fsay0+cHVkX2VudHJ5KSB7CisJCWlmIChv cHMtPnB1ZF9lbnRyeSkgewogCQkJc3BpbmxvY2tfdCAqcHRsID0gcHVkX3RyYW5zX2h1Z2VfbG9j ayhwdWQsIHdhbGstPnZtYSk7CiAKIAkJCWlmIChwdGwpIHsKLQkJCQllcnIgPSB3YWxrLT5wdWRf ZW50cnkocHVkLCBhZGRyLCBuZXh0LCB3YWxrKTsKKwkJCQllcnIgPSBvcHMtPnB1ZF9lbnRyeShw dWQsIGFkZHIsIG5leHQsIHdhbGspOwogCQkJCXNwaW5fdW5sb2NrKHB0bCk7CiAJCQkJaWYgKGVy cikKIAkJCQkJYnJlYWs7CkBAIC0xMDUsNyArMTA4LDcgQEAgc3RhdGljIGludCB3YWxrX3B1ZF9y YW5nZShwNGRfdCAqcDRkLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgZW5kLAog CQlpZiAocHVkX25vbmUoKnB1ZCkpCiAJCQlnb3RvIGFnYWluOwogCi0JCWlmICh3YWxrLT5wbWRf ZW50cnkgfHwgd2Fsay0+cHRlX2VudHJ5KQorCQlpZiAob3BzLT5wbWRfZW50cnkgfHwgb3BzLT5w dGVfZW50cnkpCiAJCQllcnIgPSB3YWxrX3BtZF9yYW5nZShwdWQsIGFkZHIsIG5leHQsIHdhbGsp OwogCQlpZiAoZXJyKQogCQkJYnJlYWs7CkBAIC0xMTksMTkgKzEyMiwyMCBAQCBzdGF0aWMgaW50 IHdhbGtfcDRkX3JhbmdlKHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQg bG9uZyBlbmQsCiB7CiAJcDRkX3QgKnA0ZDsKIAl1bnNpZ25lZCBsb25nIG5leHQ7CisJY29uc3Qg c3RydWN0IG1tX3dhbGtfb3BzICpvcHMgPSB3YWxrLT5vcHM7CiAJaW50IGVyciA9IDA7CiAKIAlw NGQgPSBwNGRfb2Zmc2V0KHBnZCwgYWRkcik7CiAJZG8gewogCQluZXh0ID0gcDRkX2FkZHJfZW5k KGFkZHIsIGVuZCk7CiAJCWlmIChwNGRfbm9uZV9vcl9jbGVhcl9iYWQocDRkKSkgewotCQkJaWYg KHdhbGstPnB0ZV9ob2xlKQotCQkJCWVyciA9IHdhbGstPnB0ZV9ob2xlKGFkZHIsIG5leHQsIHdh bGspOworCQkJaWYgKG9wcy0+cHRlX2hvbGUpCisJCQkJZXJyID0gb3BzLT5wdGVfaG9sZShhZGRy LCBuZXh0LCB3YWxrKTsKIAkJCWlmIChlcnIpCiAJCQkJYnJlYWs7CiAJCQljb250aW51ZTsKIAkJ fQotCQlpZiAod2Fsay0+cG1kX2VudHJ5IHx8IHdhbGstPnB0ZV9lbnRyeSkKKwkJaWYgKG9wcy0+ cG1kX2VudHJ5IHx8IG9wcy0+cHRlX2VudHJ5KQogCQkJZXJyID0gd2Fsa19wdWRfcmFuZ2UocDRk LCBhZGRyLCBuZXh0LCB3YWxrKTsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwpAQCAtMTQ1LDE5ICsx NDksMjAgQEAgc3RhdGljIGludCB3YWxrX3BnZF9yYW5nZSh1bnNpZ25lZCBsb25nIGFkZHIsIHVu c2lnbmVkIGxvbmcgZW5kLAogewogCXBnZF90ICpwZ2Q7CiAJdW5zaWduZWQgbG9uZyBuZXh0Owor CWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzID0gd2Fsay0+b3BzOwogCWludCBlcnIgPSAw OwogCiAJcGdkID0gcGdkX29mZnNldCh3YWxrLT5tbSwgYWRkcik7CiAJZG8gewogCQluZXh0ID0g cGdkX2FkZHJfZW5kKGFkZHIsIGVuZCk7CiAJCWlmIChwZ2Rfbm9uZV9vcl9jbGVhcl9iYWQocGdk KSkgewotCQkJaWYgKHdhbGstPnB0ZV9ob2xlKQotCQkJCWVyciA9IHdhbGstPnB0ZV9ob2xlKGFk ZHIsIG5leHQsIHdhbGspOworCQkJaWYgKG9wcy0+cHRlX2hvbGUpCisJCQkJZXJyID0gb3BzLT5w dGVfaG9sZShhZGRyLCBuZXh0LCB3YWxrKTsKIAkJCWlmIChlcnIpCiAJCQkJYnJlYWs7CiAJCQlj b250aW51ZTsKIAkJfQotCQlpZiAod2Fsay0+cG1kX2VudHJ5IHx8IHdhbGstPnB0ZV9lbnRyeSkK KwkJaWYgKG9wcy0+cG1kX2VudHJ5IHx8IG9wcy0+cHRlX2VudHJ5KQogCQkJZXJyID0gd2Fsa19w NGRfcmFuZ2UocGdkLCBhZGRyLCBuZXh0LCB3YWxrKTsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwpA QCAtMTgzLDYgKzE4OCw3IEBAIHN0YXRpYyBpbnQgd2Fsa19odWdldGxiX3JhbmdlKHVuc2lnbmVk IGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQsCiAJdW5zaWduZWQgbG9uZyBobWFzayA9IGh1 Z2VfcGFnZV9tYXNrKGgpOwogCXVuc2lnbmVkIGxvbmcgc3ogPSBodWdlX3BhZ2Vfc2l6ZShoKTsK IAlwdGVfdCAqcHRlOworCWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzID0gd2Fsay0+b3Bz OwogCWludCBlcnIgPSAwOwogCiAJZG8gewpAQCAtMTkwLDkgKzE5Niw5IEBAIHN0YXRpYyBpbnQg d2Fsa19odWdldGxiX3JhbmdlKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQs CiAJCXB0ZSA9IGh1Z2VfcHRlX29mZnNldCh3YWxrLT5tbSwgYWRkciAmIGhtYXNrLCBzeik7CiAK IAkJaWYgKHB0ZSkKLQkJCWVyciA9IHdhbGstPmh1Z2V0bGJfZW50cnkocHRlLCBobWFzaywgYWRk ciwgbmV4dCwgd2Fsayk7Ci0JCWVsc2UgaWYgKHdhbGstPnB0ZV9ob2xlKQotCQkJZXJyID0gd2Fs ay0+cHRlX2hvbGUoYWRkciwgbmV4dCwgd2Fsayk7CisJCQllcnIgPSBvcHMtPmh1Z2V0bGJfZW50 cnkocHRlLCBobWFzaywgYWRkciwgbmV4dCwgd2Fsayk7CisJCWVsc2UgaWYgKG9wcy0+cHRlX2hv bGUpCisJCQllcnIgPSBvcHMtPnB0ZV9ob2xlKGFkZHIsIG5leHQsIHdhbGspOwogCiAJCWlmIChl cnIpCiAJCQlicmVhazsKQEAgLTIyMCw5ICsyMjYsMTAgQEAgc3RhdGljIGludCB3YWxrX3BhZ2Vf dGVzdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwKIAkJCXN0cnVjdCBt bV93YWxrICp3YWxrKQogewogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gd2Fsay0+dm1h OworCWNvbnN0IHN0cnVjdCBtbV93YWxrX29wcyAqb3BzID0gd2Fsay0+b3BzOwogCi0JaWYgKHdh bGstPnRlc3Rfd2FsaykKLQkJcmV0dXJuIHdhbGstPnRlc3Rfd2FsayhzdGFydCwgZW5kLCB3YWxr KTsKKwlpZiAob3BzLT50ZXN0X3dhbGspCisJCXJldHVybiBvcHMtPnRlc3Rfd2FsayhzdGFydCwg ZW5kLCB3YWxrKTsKIAogCS8qCiAJICogdm1hKFZNX1BGTk1BUCkgZG9lc24ndCBoYXZlIGFueSB2 YWxpZCBzdHJ1Y3QgcGFnZXMgYmVoaW5kIFZNX1BGTk1BUApAQCAtMjM0LDggKzI0MSw4IEBAIHN0 YXRpYyBpbnQgd2Fsa19wYWdlX3Rlc3QodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9u ZyBlbmQsCiAJICovCiAJaWYgKHZtYS0+dm1fZmxhZ3MgJiBWTV9QRk5NQVApIHsKIAkJaW50IGVy ciA9IDE7Ci0JCWlmICh3YWxrLT5wdGVfaG9sZSkKLQkJCWVyciA9IHdhbGstPnB0ZV9ob2xlKHN0 YXJ0LCBlbmQsIHdhbGspOworCQlpZiAob3BzLT5wdGVfaG9sZSkKKwkJCWVyciA9IG9wcy0+cHRl X2hvbGUoc3RhcnQsIGVuZCwgd2Fsayk7CiAJCXJldHVybiBlcnIgPyBlcnIgOiAxOwogCX0KIAly ZXR1cm4gMDsKQEAgLTI0OCw3ICsyNTUsOCBAQCBzdGF0aWMgaW50IF9fd2Fsa19wYWdlX3Jhbmdl KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCXN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hID0gd2Fsay0+dm1hOwogCiAJaWYgKHZtYSAmJiBpc192bV9odWdldGxiX3Bh Z2Uodm1hKSkgewotCQlpZiAod2Fsay0+aHVnZXRsYl9lbnRyeSkKKwkJY29uc3Qgc3RydWN0IG1t X3dhbGtfb3BzICpvcHMgPSB3YWxrLT5vcHM7CisJCWlmIChvcHMtPmh1Z2V0bGJfZW50cnkpCiAJ CQllcnIgPSB3YWxrX2h1Z2V0bGJfcmFuZ2Uoc3RhcnQsIGVuZCwgd2Fsayk7CiAJfSBlbHNlCiAJ CWVyciA9IHdhbGtfcGdkX3JhbmdlKHN0YXJ0LCBlbmQsIHdhbGspOwpAQCAtMzMxLDcgKzMzOSw3 IEBAIGludCB3YWxrX3BhZ2VfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9u ZyBlbmQsCiAJCQlpZiAoZXJyIDwgMCkKIAkJCQlicmVhazsKIAkJfQotCQlpZiAod2Fsay0+dm1h IHx8IHdhbGstPnB0ZV9ob2xlKQorCQlpZiAod2Fsay0+dm1hIHx8IHdhbGstPm9wcy0+cHRlX2hv bGUpCiAJCQllcnIgPSBfX3dhbGtfcGFnZV9yYW5nZShzdGFydCwgbmV4dCwgd2Fsayk7CiAJCWlm IChlcnIpCiAJCQlicmVhazsK --000000000000f6c393058dbfa114--