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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CEAAC4167B for ; Mon, 4 Dec 2023 04:09:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B08A46B025E; Sun, 3 Dec 2023 23:09:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AB8616B026B; Sun, 3 Dec 2023 23:09:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9CFDF6B0278; Sun, 3 Dec 2023 23:09:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 8E6A36B025E for ; Sun, 3 Dec 2023 23:09:25 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 537DFA0973 for ; Mon, 4 Dec 2023 04:09:25 +0000 (UTC) X-FDA: 81527806290.06.33E75A1 Received: from mail-yw1-f180.google.com (mail-yw1-f180.google.com [209.85.128.180]) by imf05.hostedemail.com (Postfix) with ESMTP id 7C376100003 for ; Mon, 4 Dec 2023 04:09:23 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="wX/RvowV"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of surenb@google.com designates 209.85.128.180 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701662963; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=GYEy8kccuU/d4RqwnKbLSWjVNxsFIN3X39pgAqk88hU=; b=WAwyoRN7WnxHfSFhrOzGxOwwbEQSocezl5//gWySSLwqHZTvG3uH3WviXiEEjimC5RiI49 b+yZJbuBCDwjMUVZYHT5GNXVWh7bWilaAfP6bbIrW9ne8/sgXmwl9GD4AdOU+ZLu00Vfuc RPQx/TSN7uWqAAthHxTM2MWgZDIgMxE= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="wX/RvowV"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of surenb@google.com designates 209.85.128.180 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701662963; a=rsa-sha256; cv=none; b=7uhQrwVzMrz4paXP0qbKn4KE4f5yQzEfOVDFNPqknH+BOnVx17xWjuCca7ASarPE3p0EwU Q15M98nuJ6fQ7ICxVleGGS6DaDZ0S1VKVk7wRb5vGgUvDonxV5cwl1jbUzOpwHURRiGBTB EADYERXIP/csvQC0nGBWm0qRK5iJ1ZQ= Received: by mail-yw1-f180.google.com with SMTP id 00721157ae682-5d226f51f71so44162167b3.3 for ; Sun, 03 Dec 2023 20:09:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701662962; x=1702267762; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GYEy8kccuU/d4RqwnKbLSWjVNxsFIN3X39pgAqk88hU=; b=wX/RvowVzcV3Cxmb4YUuSC3vaZ/d2FnPWfFhPLTo3MfAao0BSQKWNWAuBrbU0eyjFv ITZAg1TzHUnoonTEtoDSQc8NG0EyZ3BY0UtMQThLBA9JW7RHZUDzVJJ32co6pU9Z7VSE GC03Kai2P3ZNrZG6GRXRYDwHIlP9VSidwsDZ/uQQV9Y0Mqdb44IHK0IGPa4S2ZGgHEhh Jx9r0xot0GwJMOxdoymzIRfwW9X+VJ8nNl33kTU/lyVzf67IlZXmtMyXmEgYZISWdpj3 JYc61Uy1KglpPpwGT1Ou0fQl/JVdOCfRyKK4f7ZR1+HhODEltofiBQ6jED63oto8gF/x a2wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701662962; x=1702267762; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=GYEy8kccuU/d4RqwnKbLSWjVNxsFIN3X39pgAqk88hU=; b=KRBE2LOC0l28MZvV6Hm7mLtv0tslT9m6LqixBqSvLxa6zf/zrcSm1cATGKNr889BmW i/qayJowl8b955t4eWHtTFju3yn6/QZEepwfQa1kS3zf4FZ4ZZtJ2mTNlf11XPobuNzN H4AJ++qzeYKllDZXbOAiMg5ie2dhCebg3tyz0R9t+ti+46AUroekz4f+YX5dJ8WQned8 uR0tN24TcW+O9iBxSEc4zazT2vkuKyf0wd5Lq4DYGfDCV1X6386AhyhhfNMYMfe79uaj hWk7fja0IlxGWNWn20VKuJcofJZxOQYaop41E5+WVZTtNYnuKrnVa8f+lB6D/VS+4k69 +QoQ== X-Gm-Message-State: AOJu0YzGw+eoPqnp21JXgWOCPGxSXks4RnPajO1ROPPxzKrQ4UiEFYkW AiviCP+qCAAxBJaJbkqai0P9r3cdynRSfA3Wt/G3Qw== X-Google-Smtp-Source: AGHT+IGtIjOu7QUUMAWbu6y/ebKjsFXSJGR6VL4GtZ4TI3ggL5oP9LK19DHSITX5Fg7tD5y+3IjDQcKZ2xMiwVQZDIc= X-Received: by 2002:a05:690c:f85:b0:5d7:1940:dd62 with SMTP id df5-20020a05690c0f8500b005d71940dd62mr2260818ywb.56.1701662962373; Sun, 03 Dec 2023 20:09:22 -0800 (PST) MIME-Version: 1.0 References: <20231121171643.3719880-1-surenb@google.com> <20231121171643.3719880-6-surenb@google.com> In-Reply-To: From: Suren Baghdasaryan Date: Sun, 3 Dec 2023 20:09:09 -0800 Message-ID: Subject: Re: [PATCH v5 5/5] selftests/mm: add UFFDIO_MOVE ioctl test To: David Hildenbrand Cc: Ryan Roberts , akpm@linux-foundation.org, viro@zeniv.linux.org.uk, brauner@kernel.org, shuah@kernel.org, aarcange@redhat.com, lokeshgidra@google.com, peterx@redhat.com, hughd@google.com, mhocko@suse.com, axelrasmussen@google.com, rppt@kernel.org, willy@infradead.org, Liam.Howlett@oracle.com, jannh@google.com, zhangpeng362@huawei.com, bgeffon@google.com, kaleshsingh@google.com, ngeoffray@google.com, jdduke@google.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, kernel-team@android.com Content-Type: multipart/mixed; boundary="00000000000066ca67060ba74878" X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 7C376100003 X-Stat-Signature: cbxg8tpunwzz4ggyj3dmi4femqbsa6tj X-Rspam-User: X-HE-Tag: 1701662963-949020 X-HE-Meta: U2FsdGVkX19g0VcHLusWyItfGGjzn7HmSC+J3aE4JWq+uTLlaV6dH/jm7njS53QvAROM6BKRHy113WCWbR0wwrI2HTAGAP8Im9vRC+E3itLlJr+vL4C4ChuH4snJgs8X89mhkYdMBcYoae05yoxhDjnmahKoKse0QQyaaUb0dwQPUuyN1PbgS918SCUeGV61qmsV8+xNdI7Se7KuUQIu61rMo6m0PYNjHQg8YeARewJNw0lDwRrcqgadlEeNVmICPZ97bMEFBr6L+UenwOUrCE2ylhpZ9pf5KgwZyOwxN6iR2/xmsrvmKv0jZyWNef0InJ4WuOcVh/xnVaKigUCO8N3P4pCeOC8tBplTl5pu0UCOpAoxKeCVM7J+kZzcazS3E/5QLb+f6knqXexRA3PhxcuC8K9uPT27/2yRnl1vUbshBWISVX6AncfN3LTc91KjMzEA13ssTwtpAGjCn43cqlpLigr8u23Y7KmYsdW56tL/Q8kfur/t9ZchrelqnzN+gNa3nSoaQGWTC+Lmtad7mpG6JzKiDC62d0/CGfQ6hj8HSrUQnC8Shnw4XmzSqAz4xB7tMJFBoYUEBw7GNtwPY1nI9tNpwU44XV2n7eVzmGG2vPM2WytT7ENWk0sTLCby9rOE81gzQkNTCzBuZyoDQv4WDeU1Kez01Btvp8FDDVg1XlA1lK9HLfDI+J/a+DYjibH649Vo5g+Q9/ykbY8pUcPsv2bLdTuobgEzlRT0fFRLu4TNN0EyzF9tsKEvGJTL/3WgbkCtzQsSTp1gYgMmXg74eQKYr0Q9ZmR6k90p/r9jMw+0nHLpcigjRCV4uUFN+o8mMtjNRB1uNa997mpwtUtHnWNsbbjl4ABZmgrCKHFkRhedHs5lE4mbJHt7QizxPHr7A5hBCVRo6LsG9zxEPF8lqWjLJxRUKFv1jUEIqEpMJ/etB8LfwUihXTKrd24cn7czAawilzYEmb2+xph FFKOpzPX 0Vhbp6muoviHAeoNJH5GjVyvvReW0FEis+Q3xcrjkbDJ16UZSaNZPEsyaOP7YuNNNmWrSRdC3wzYBsGbRhcdbZmCRqdBqG82SzfjtGG5czWAISvdNrRdTA4hc0+GHGIcmX7ErbiDGcoimZ3KqVogDjBwfyBhUOC1JdSTlLPhdsYD+I9KmOoOKpxwP6K15FB7vRvc+5F6ZiFKxrYQJVe3p/E2mV0AXB4uTbTW4EI2IPQBcBdcRoR0e+LQ67N4njXF7wGo4IQhpjYGiqc9D4p2nBb1lAOYiR6YZvl9906P/sw11Tr3kG6Mrk9K5WZSzLVmp2ZJHQkE6MeSAWFn+Zdb3IA5PDpHICO+wgmvu1z8JczkQXuRw4No/NZNatQSVNakdztC67YeH9NIkJtPbFsqXOHTnGdVLMKMoDebkOCCZIaB+f45vmaGpd6npmMxrmKNUG6xNCPCAh4QPKW8/sTiuDTw9aeejvzj8jtYx0igBnO8b2rQFGBMAoOSpgL33npW3UoT4c2Y0+ENHDmjh4gsDZWZRB9VhQ0916t9f0mqRfAn9fgEKY8hzFV6lSaDOlDMx+j3F4120aZld57X5JLdC35sCIA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --00000000000066ca67060ba74878 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Dec 2, 2023 at 2:11=E2=80=AFAM David Hildenbrand = wrote: > > On 02.12.23 09:04, Ryan Roberts wrote: > > On 01/12/2023 20:47, David Hildenbrand wrote: > >> On 01.12.23 10:29, Ryan Roberts wrote: > >>> On 21/11/2023 17:16, Suren Baghdasaryan wrote: > >>>> Add tests for new UFFDIO_MOVE ioctl which uses uffd to move source > >>>> into destination buffer while checking the contents of both after > >>>> the move. After the operation the content of the destination buffer > >>>> should match the original source buffer's content while the source > >>>> buffer should be zeroed. Separate tests are designed for PMD aligned= and > >>>> unaligned cases because they utilize different code paths in the ker= nel. > >>>> > >>>> Signed-off-by: Suren Baghdasaryan > >>>> --- > >>>> tools/testing/selftests/mm/uffd-common.c | 24 +++ > >>>> tools/testing/selftests/mm/uffd-common.h | 1 + > >>>> tools/testing/selftests/mm/uffd-unit-tests.c | 189 ++++++++++++++= +++++ > >>>> 3 files changed, 214 insertions(+) > >>>> > >>>> diff --git a/tools/testing/selftests/mm/uffd-common.c > >>>> b/tools/testing/selftests/mm/uffd-common.c > >>>> index fb3bbc77fd00..b0ac0ec2356d 100644 > >>>> --- a/tools/testing/selftests/mm/uffd-common.c > >>>> +++ b/tools/testing/selftests/mm/uffd-common.c > >>>> @@ -631,6 +631,30 @@ int copy_page(int ufd, unsigned long offset, bo= ol wp) > >>>> return __copy_page(ufd, offset, false, wp); > >>>> } > >>>> +int move_page(int ufd, unsigned long offset, unsigned long len) > >>>> +{ > >>>> + struct uffdio_move uffdio_move; > >>>> + > >>>> + if (offset + len > nr_pages * page_size) > >>>> + err("unexpected offset %lu and length %lu\n", offset, len); > >>>> + uffdio_move.dst =3D (unsigned long) area_dst + offset; > >>>> + uffdio_move.src =3D (unsigned long) area_src + offset; > >>>> + uffdio_move.len =3D len; > >>>> + uffdio_move.mode =3D UFFDIO_MOVE_MODE_ALLOW_SRC_HOLES; > >>>> + uffdio_move.move =3D 0; > >>>> + if (ioctl(ufd, UFFDIO_MOVE, &uffdio_move)) { > >>>> + /* real retval in uffdio_move.move */ > >>>> + if (uffdio_move.move !=3D -EEXIST) > >>>> + err("UFFDIO_MOVE error: %"PRId64, > >>>> + (int64_t)uffdio_move.move); > >>> > >>> Hi Suren, > >>> > >>> FYI this error is triggering in mm-unstable (715b67adf4c8): > >>> > >>> Testing move-pmd on anon... ERROR: UFFDIO_MOVE error: -16 (errno=3D16= , > >>> @uffd-common.c:648) > >>> > >>> I'm running in a VM on Apple M2 (arm64). I haven't debugged any furth= er, but > >>> happy to go deeper if you can direct. > >> > >> Does it trigger reliably? Which pagesize is that kernel using? > > > > Yep, although very occasionally it fails with EAGAIN. 4K kernel; see ot= her email > > for full config. > > > >> > >> I can spot that uffd_move_pmd_test()/uffd_move_pmd_handle_fault() uses > >> default_huge_page_size(), which reads the default hugetlb size. > > > > My kernel command line is explicitly seting the default huge page size = to 2M. > > > > Okay, so that likely won't affect it. > > I can only guess that it has to do with the alignment of the virtual > area we are testing with, and that we do seem to get more odd patterns > on arm64. > > uffd_move_test_common() is a bit more elaborate, but if we aligned the > src+start area up, surely "step_count" cannot be left unmodified? > > So assuming we get either an unaligned source or an unaligned dst from > mmap(), I am not convinced that we won't be moving areas that are not > necessarily fully backed by PMDs and maybe don't even fall into the VMA > of interest? > > Not sure if that could trigger the THP splitting issue, though. > > But I just quickly scanned that test setup, could be I am missing > something. It might make sense to just print the mmap'ed range and the > actual ranges we are trying to move. Maybe something "obvious" can be > observed. I was able to reproduce the issue on an Android device and after implementing David's suggestions to split the large folio and after replacing default_huge_page_size() with read_pmd_pagesize(), the move-pmd test started working for me. Ryan, could you please apply attached patches (over mm-unstable) and try the test again? Thanks, Suren. > > -- > Cheers, > > David / dhildenb > --00000000000066ca67060ba74878 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-userfaultfd-split-large-pmd-mapped-folio.patch" Content-Disposition: attachment; filename="0001-userfaultfd-split-large-pmd-mapped-folio.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpqe5cp81 RnJvbSBjYmQ0MzQ4NDg0OTg2MTkzYzQ1MjM1YmFiYmFlNmUzMDMxOGQ5ZTQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXJlbiBCYWdoZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUuY29t PgpEYXRlOiBTdW4sIDMgRGVjIDIwMjMgMTk6NTM6NDUgLTA4MDAKU3ViamVjdDogW1BBVENIIDEv Ml0gdXNlcmZhdWx0ZmQ6IHNwbGl0IGxhcmdlIHBtZC1tYXBwZWQgZm9saW8KClNpZ25lZC1vZmYt Ynk6IFN1cmVuIEJhZ2hkYXNhcnlhbiA8c3VyZW5iQGdvb2dsZS5jb20+Ci0tLQogbW0vdXNlcmZh dWx0ZmQuYyB8IDE3ICsrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL21tL3VzZXJmYXVsdGZkLmMgYi9tbS91c2VyZmF1bHRmZC5j CmluZGV4IDcxZDAyODFmMTE2Mi4uNmU2ZjY3MjA2N2ZlIDEwMDY0NAotLS0gYS9tbS91c2VyZmF1 bHRmZC5jCisrKyBiL21tL3VzZXJmYXVsdGZkLmMKQEAgLTEzODIsOCArMTM4MiwyNSBAQCBzc2l6 ZV90IG1vdmVfcGFnZXMoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LCBzdHJ1Y3QgbW1fc3Ry dWN0ICptbSwKIAkJCS8qIENoZWNrIGlmIHdlIGNhbiBtb3ZlIHRoZSBwbWQgd2l0aG91dCBzcGxp dHRpbmcgaXQuICovCiAJCQlpZiAobW92ZV9zcGxpdHNfaHVnZV9wbWQoZHN0X2FkZHIsIHNyY19h ZGRyLCBzcmNfc3RhcnQgKyBsZW4pIHx8CiAJCQkgICAgIXBtZF9ub25lKGRzdF9wbWR2YWwpKSB7 CisJCQkJc3RydWN0IGZvbGlvICpmb2xpbyA9IHBmbl9mb2xpbyhwbWRfcGZuKCpzcmNfcG1kKSk7 CisJCQkJaWYgKCFmb2xpbyB8fCAhUGFnZUFub25FeGNsdXNpdmUoJmZvbGlvLT5wYWdlKSkgewor CQkJCQlzcGluX3VubG9jayhwdGwpOworCQkJCQllcnIgPSAtRUJVU1k7CisJCQkJCWJyZWFrOwor CQkJCX0KKwkJCQlmb2xpb19nZXQoZm9saW8pOwogCQkJCXNwaW5fdW5sb2NrKHB0bCk7CiAJCQkJ c3BsaXRfaHVnZV9wbWQoc3JjX3ZtYSwgc3JjX3BtZCwgc3JjX2FkZHIpOworCQkJCWlmIChmb2xp b190ZXN0X2xhcmdlKGZvbGlvKSkgeworCQkJCQlmb2xpb19sb2NrKGZvbGlvKTsKKwkJCQkJZXJy ID0gc3BsaXRfZm9saW8oZm9saW8pOworCQkJCQlmb2xpb191bmxvY2soZm9saW8pOworCQkJCQlp ZiAoZXJyKSB7CisJCQkJCQlmb2xpb19wdXQoZm9saW8pOworCQkJCQkJYnJlYWs7CisJCQkJCX0K KwkJCQl9CisJCQkJZm9saW9fcHV0KGZvbGlvKTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAotLSAK Mi40My4wLnJjMi40NTEuZzg2MzFiYzc0NzItZ29vZwoK --00000000000066ca67060ba74878 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-selftests-mm-use-correct-function-to-obtain-huge-pag.patch" Content-Disposition: attachment; filename="0002-selftests-mm-use-correct-function-to-obtain-huge-pag.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lpqe5cox0 RnJvbSBhYjNlMTM3Y2U5ZWJmM2E5NDllMTRiOWY1NDRhOGEyMTQ0OTM0Zjg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXJlbiBCYWdoZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUuY29t PgpEYXRlOiBTdW4sIDMgRGVjIDIwMjMgMjA6MDQ6MDggLTA4MDAKU3ViamVjdDogW1BBVENIIDIv Ml0gc2VsZnRlc3RzL21tOiB1c2UgY29ycmVjdCBmdW5jdGlvbiB0byBvYnRhaW4gaHVnZSBwYWdl CiBzaXplCgpTaWduZWQtb2ZmLWJ5OiBTdXJlbiBCYWdoZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUu Y29tPgotLS0KIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtdW5pdC10ZXN0cy5jIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQtdW5pdC10ZXN0cy5j IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdWZmZC11bml0LXRlc3RzLmMKaW5kZXggZTRl MjcxNTExZGI5Li4wN2M4ZGM0OTA5OTMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL21tL3VmZmQtdW5pdC10ZXN0cy5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21t L3VmZmQtdW5pdC10ZXN0cy5jCkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBzdGF0aWMgdm9pZCB1ZmZk X21vdmVfaGFuZGxlX2ZhdWx0KHN0cnVjdCB1ZmZkX21zZyAqbXNnLAogc3RhdGljIHZvaWQgdWZm ZF9tb3ZlX3BtZF9oYW5kbGVfZmF1bHQoc3RydWN0IHVmZmRfbXNnICptc2csCiAJCQkJICAgICAg IHN0cnVjdCB1ZmZkX2FyZ3MgKmFyZ3MpCiB7Ci0JdWZmZF9tb3ZlX2hhbmRsZV9mYXVsdF9jb21t b24obXNnLCBhcmdzLCBkZWZhdWx0X2h1Z2VfcGFnZV9zaXplKCkpOworCXVmZmRfbW92ZV9oYW5k bGVfZmF1bHRfY29tbW9uKG1zZywgYXJncywgcmVhZF9wbWRfcGFnZXNpemUoKSk7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC0xMTk5LDcgKzExOTksNyBAQCBzdGF0aWMgdm9pZCB1ZmZkX21vdmVfdGVz dCh1ZmZkX3Rlc3RfYXJnc190ICp0YXJncykKIAogc3RhdGljIHZvaWQgdWZmZF9tb3ZlX3BtZF90 ZXN0KHVmZmRfdGVzdF9hcmdzX3QgKnRhcmdzKQogewotCXVmZmRfbW92ZV90ZXN0X2NvbW1vbih0 YXJncywgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSgpLAorCXVmZmRfbW92ZV90ZXN0X2NvbW1vbih0 YXJncywgcmVhZF9wbWRfcGFnZXNpemUoKSwKIAkJCSAgICAgIHVmZmRfbW92ZV9wbWRfaGFuZGxl X2ZhdWx0KTsKIH0KIAotLSAKMi40My4wLnJjMi40NTEuZzg2MzFiYzc0NzItZ29vZwoK --00000000000066ca67060ba74878--