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.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,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 502ECC5DF62 for ; Wed, 6 Nov 2019 12:25:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DABAD217D7 for ; Wed, 6 Nov 2019 12:25:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=gmx.net header.i=@gmx.net header.b="fnwm5Hg0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731415AbfKFMZ2 (ORCPT ); Wed, 6 Nov 2019 07:25:28 -0500 Received: from mout.gmx.net ([212.227.15.18]:48563 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728716AbfKFMZ2 (ORCPT ); Wed, 6 Nov 2019 07:25:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1573043102; bh=tsq8sa7U9vtIvXeF0yJKBx/fVyZeMxWw3CbtvB8Axqc=; h=X-UI-Sender-Class:Subject:From:Reply-To:To:Cc:Date:In-Reply-To: References; b=fnwm5Hg0ZxEHIgKjOzq86n9rrAHSUF0QXh/sjwoZpT6/jVSbF8WcHjHZoUreC16yU gdVNZ5YyK3ZXBwtZ0eePbKRLI3eO72MQRvdOh2zODeKV7u/Pc+23Blv+LhnN9vuIBD a3ugzCpRo3gZRss2eAyPE4E9AzYruqdL99TturBg= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from bear.fritz.box ([80.128.101.49]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N33Il-1hnnRQ3tfx-013LSR; Wed, 06 Nov 2019 13:25:02 +0100 Message-ID: Subject: Re: mlockall(MCL_CURRENT) blocking infinitely From: Robert Stupp Reply-To: snazy@snazy.de To: snazy@snazy.de, Johannes Weiner , Vlastimil Babka Cc: Michal Hocko , Josef Bacik , Jan Kara , "Kirill A. Shutemov" , Randy Dunlap , linux-kernel@vger.kernel.org, Linux MM , Andrew Morton , "Potyra, Stefan" Date: Wed, 06 Nov 2019 13:24:58 +0100 In-Reply-To: References: <20191025120505.GG17610@dhcp22.suse.cz> <20191025121104.GH17610@dhcp22.suse.cz> <20191025132700.GJ17610@dhcp22.suse.cz> <707b72c6dac76c534dcce60830fa300c44f53404.camel@gmx.de> <20191025135749.GK17610@dhcp22.suse.cz> <20191025140029.GL17610@dhcp22.suse.cz> <20191105182211.GA33242@cmpxchg.org> <46c58487acc05aa3c4d5d1e72b95cd84a5dba47b.camel@gmx.de> <9072e55e97f0c4f3b286eb57639c4e9bb4223dfc.camel@gmx.de> Content-Type: multipart/mixed; boundary="=-IKBZY0fI5fBT2fgxh03Z" User-Agent: Evolution 3.34.1-2 MIME-Version: 1.0 X-Provags-ID: V03:K1:hgnzcCxZ8brZR8YKpsXoHGxTN4Nabaefaw+As6IyUFMvYg243G8 Jlf0UfjcBw/dW1FFYN9Hv8cTN23COQp4OEtJfyhFyZqPCul1hPp1HgZ+qcEsMOl+lQ0GRFl 4QZoNiXzgat+FK+JyxGddcVncrfR6ClKpq1zGCx4r+OqhNQTuj9EP2G0DXgHNwZtCuseCTN 2OjdWBUzqOoCVTsvEXxBQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:McTMuHodgK4=:oIN6ddp4aagD+4CA8YWI8h qrqSUe+lfsjpm1SkscFJiR6+OwBu8WEpVIxBce68L2sgnOS6msTq/FaNl/7J6g7HlmHl2cPJm GyQj6Aesi36QXTXv5nzTZBRnCVbSpP0kQVG9OTGn76piK5OnmHxtBNyKNlyeKOmdrhHJCMaxj ugNleWjC7/kSZiLVhu34RRs2iiosVaFsPXw97+Pdrr0zfsrpyIK905CUWKR6muW2h2VHA84Km 79BIO6Pzxt+Orbv0cDNUdJP7iv5f8+1xm1Oh6WgafpzKSylL1h/RBBOTPYGs9BlUVFPs8lXmK WjJft7NvE/CTEsfnfFwk4sHfJJMBecsZeMq5zy8syPlO4Vqbk3dxfFF7NKPU/Ov80enxs/diH r2iDjOvrL9HySqTfmRV0cGWPaIiht9sYNY2iltWscDU2hdaz/7/Z9nfeOt3JQA2Vv3KkzdnLZ 7PBJG532DmuDL3Bhn6K5FPnUw/EjFNHKFDEGlfdtraMpkvsWgRXyg55+bUdBNyoNWmnqRDymX x6uVgOP70rFP4Hw/NF1Bh3jyrdaEe4zwXxr8Cnb7vzdiwzTUAP0IHYRC/8RbLysnFI3P/uXIg fBcqRABfCxXMGTin+OYavuDuap1bGNo63qFy7O47s32caRNtD6Bdrhg3jiTqh3hR092uO03YK iImu3JE+XSIgt/Krv0nxzw+TSUAoiofLkIwPs35U4DoPruFlvQd++nEBFEF7pJVFGdB1JFr3Z RQZ4FRKSccTFu1OtjS+GXpZe+HhLl0p9ONn28JgoAC4geT1wWzwxe3OnRr6TTAqi8IPRmviWl 7A6A6Lh5M6oiOfSkD1PMynnjVnyf0LaUwo5MbULBwdfYCTaSyEgnDH/v1s+3vB6+NkqAeli4y vOQiyKJf+3+kMMzsXnhVuSfaMyd0sdn6g7MKj/Z0IPdY+e1XjU49KeUKLolw0r+oCw5oC7UHV O/MY//GHCW+PTQUOzzbiKNn3LmWbGXnukugnDknzS1Qzw+dJ2UB6M4HhdPBCKo+xXigNejGV7 uuC8nnloDHzgeQL2j2Pgbtc1TEGZGrxgtT3v28UYHBuc29a8hM6J/Ywfn7TizysTFv7aR2Etq tQ9TQfN4pZn1VTM5hDoeiQMXxg/oVU3e1uJtOkE+eEptJRLCWl659Wm6FtPqqzn+7P5ms/XVS jdNDdCU0YNH+bhbsEd5z813UUeRQyC8Z88kQA2em1XXzVEEnzGTF2JBGzrBmLtbWXP+PSZ9n8 kaafhXhkl0L/LKtiIsuUvyqrGEJKfzi+MdTySpd2ohTaUVjLWmemexYtvao1hQGIDjCfxaNS4 yuud6U6yCnpGW2QJjLs5dlynPO1H2Q== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-IKBZY0fI5fBT2fgxh03Z Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Oh! That (s/__get_user_pages()/__get_user_pages_locked()/) seems to fix it. Attached a patch (gup-mlockall.txt, against v5.3.8) - although, I've got no clue how patches work here. gup-debug-mlockall.txt is the debug printk() I've added plus the code change. dmesg-out.txt.gz is the dmesg output of the latter for test.c On Wed, 2019-11-06 at 12:26 +0100, Robert Stupp wrote: > Maybe a native and wrong idea, but would it work to call > __get_user_pages_locked() instead of __get_user_pages() in > populate_vma_page_range() ? > > On Wed, 2019-11-06 at 11:25 +0100, Robert Stupp wrote: > > Here's one more dmesg output with more information captured in > > __get_user_pages() as well. It basically confirms that > > handle_mm_fault() returns VM_FAULT_RETRY. > > > > I'm not sure where and what to change ("fix with a FOLL_TRIED > > somewhere") to make it work. My (uneducated) impression is, that > > only > > __get_user_pages() needs to be changed - but I might be wrong. > > --=-IKBZY0fI5fBT2fgxh03Z Content-Disposition: attachment; filename="gup-mlockall.txt" Content-Type: text/plain; name="gup-mlockall.txt"; charset="UTF-8" Content-Transfer-Encoding: base64 Y29tbWl0IGQyYTFjZTQ0Y2Q4MWI4Y2NmNDI2YTZjNDBhM2EwZDliMmI1MWUwNzYKQXV0aG9yOiBS b2JlcnQgU3R1cHAgPHNuYXp5QHNuYXp5LmRlPgpEYXRlOiAgIFdlZCBOb3YgNiAxMjo1ODoxMiAy MDE5ICswMTAwCgogICAgbWFrZSBtbG9ja2FsbChNQ0xfQ1VSUkVOVCkgYXdhcmUgb2YgbmV3IFZN X0ZBVUxUX1JFVFJZIGNvbmRpdGlvbnMKICAgIAogICAgbWxvY2thbGwoTUNMX0NVUlJFTlQpIGNh biBydW4gaW50byBhbiBidXN5L2VuZGxlc3MgbG9vcCBpbgogICAgX19tbV9wb3B1bGF0ZSgpLiBU aGlzIGNhbiBoYXBwZW4gc2luY2UKICAgIDZiNGM5ZjQ0Njk4MTlhMGMxYTM4YTBhNDU0MTMzN2Uw ZjliZjZjMTEgKGludHJvZHVjZWQgaW4gTGludXggNS4xKSwKICAgICJmaWxlbWFwOiBkcm9wIHRo ZSBtbWFwX3NlbSBmb3IgYWxsIGJsb2NraW5nIG9wZXJhdGlvbnMiIC8gbmV3CiAgICBWTV9GQVVM VF9SRVRSWSBjb25kaXRpb25zLgogICAgCiAgICBUaGUgZml4IGhlcmUgaXMgdG8gcmVwbGFjZSB0 aGUgY2FsbCB0byBfX2dldF91c2VyX3BhZ2VzKCkgd2l0aCBhCiAgICBjYWxsIHRvIF9fZ2V0X3Vz ZXJfcGFnZXNfbG9ja2VkKCkgaW4gcG9wdWxhdGVfdm1hX3BhZ2VfcmFuZ2UoKS4KICAgIAogICAg VGhpcyBjaGFuZ2Ugc2VlbXMgdG8gZml4IHRoZSBiZWhhdmlvciBmb3IgbWxvY2thbGwoTUNMX0NV UlJFTlQpIGJ1dAogICAgZG9lcyBub3QgY2hhbmdlIHRoZSBiZWhhdmlvciBmb3Igb3RoZXIgdXNh Z2VzIG9mCiAgICBwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZSgpIGluIGZpbmRfZXh0ZW5kX3ZtYSgp IGFuZAogICAgbXByb3RlY3RfZml4dXAoKS4KICAgIAogICAgKFRleHQgYnkgSm9oYW5uZXMgV2Vp bmVyIGhhbm5lcy1hdC1jbXB4Y2hnLm9yZyk6CiAgICBUaGUgb25seSB3YXkgdGhpcyBjYW4gb2Nj dXIgaXMgaWYgcG9wdWxhdGVfdm1hX3BhZ2VfcmFuZ2UoKSByZXR1cm5zCiAgICAwIGFuZCB3ZSBk b24ndCBhZHZhbmNlIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gKGlmIGl0IHJldHVybmVkIGFuCiAg ICBlcnJvciwgd2Ugd291bGRuJ3QgcmVzZXQgbmVuZCBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCB2 bWEgYXMKICAgIGlnbm9yZV9lcnJvcnMgaXMgMSBmb3IgbWxvY2thbGwuKQogICAgCiAgICBwb3B1 bGF0ZV92bWFfcGFnZV9yYW5nZSgpIHJldHVybnMgMCB3aGVuIHRoZSBmaXJzdCBwYWdlIGlzIG5v dAogICAgZm91bmQgYW5kIGZhdWx0aW5fcGFnZSgpIHJldHVybnMgLUVCVVNZIChpZiBpdCB3ZXJl IHByb2Nlc3NpbmcKICAgIHBhZ2VzLCBvciBpZiB0aGUgZXJyb3IgZnJvbSBmYXVsdGluX3BhZ2Uo KSB3b3VsZCBiZSBhIGRpZmZlcmVudAogICAgb25lLCB3ZSB3b3VsZCByZXR1cm4gdGhlIG51bWJl ciBvZiBwYWdlcyBwcm9jZXNzZWQgb3IgLWVycm9yKS4KICAgIAogICAgZmF1bHRpbl9wYWdlKCkg cmV0dXJucyAtRUJVU1kgd2hlbiBWTV9GQVVMVF9SRVRSWSBpcyBzZXQsIGkuZS4gd2UKICAgIGRy b3BwZWQgdGhlIG1tYXBfc2VtIGluIG9yZGVyIHRvIGluaXRpYXRlIElPIGFuZCByZXF1aXJlIGEg cmV0cnkuCiAgICBUaGF0IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgYmlzZWN0IHJlc3VsdCAobmV3 IFZNX0ZBVUxUX1JFVFJZCiAgICBjb25kaXRpb25zKS4KICAgIAogICAgQXQgdGhpcyBwb2ludCwg cmVndWxhciBwYWdlIGZhdWx0IHdvdWxkIHJldHJ5IHdpdGggRkFVTFRfRkxBR19UUklFRAogICAg dG8gaW5kaWNhdGUgdGhhdCB0aGUgbW1hcF9zZW0gY2Fubm90IGJlIGRyb3BwZWQgYSBzZWNvbmQg dGltZS4KCmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jCmluZGV4IDk4ZjEzYWIzN2Jh Yy4uZTMxOWZmYjYyNWIxIDEwMDY0NAotLS0gYS9tbS9ndXAuYworKysgYi9tbS9ndXAuYwpAQCAt MTIyNyw4ICsxMjI3LDggQEAgbG9uZyBwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZShzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwKIAkgKiBXZSBtYWRlIHN1cmUgYWRkciBpcyB3aXRoaW4gYSBWTUEs IHNvIHRoZSBmb2xsb3dpbmcgd2lsbAogCSAqIG5vdCByZXN1bHQgaW4gYSBzdGFjayBleHBhbnNp b24gdGhhdCByZWN1cnNlcyBiYWNrIGhlcmUuCiAJICovCi0JcmV0dXJuIF9fZ2V0X3VzZXJfcGFn ZXMoY3VycmVudCwgbW0sIHN0YXJ0LCBucl9wYWdlcywgZ3VwX2ZsYWdzLAotCQkJCU5VTEwsIE5V TEwsIG5vbmJsb2NraW5nKTsKKwlyZXR1cm4gX19nZXRfdXNlcl9wYWdlc19sb2NrZWQoY3VycmVu dCwgbW0sIHN0YXJ0LCBucl9wYWdlcywKKyAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBu b25ibG9ja2luZywgZ3VwX2ZsYWdzKTsKIH0KIAogLyoK --=-IKBZY0fI5fBT2fgxh03Z Content-Disposition: attachment; filename="gup-debug-mlockall.txt" Content-Type: text/plain; name="gup-debug-mlockall.txt"; charset="UTF-8" Content-Transfer-Encoding: base64 Y29tbWl0IDhjMmU0YzI4YmRlMGIxMGJhNDg4ZDMyZDQzZDY0NDYxMmIyZGY3MzcKQXV0aG9yOiBS b2JlcnQgU3R1cHAgPHNuYXp5QHNuYXp5LmRlPgpEYXRlOiAgIFdlZCBOb3YgNiAxMjoyOTo1MyAy MDE5ICswMTAwCgogICAgUmVwbGFjZSBfX2dldF91c2VyX3BhZ2VzKCkgd2l0aCBfX2dldF91c2Vy X3BhZ2VzX2xvY2tlZCgpIGluIHBvcHVsYXRlX3ZtYV9wYWdlX3JhbmdlKCkKCmRpZmYgLS1naXQg YS9tbS9ndXAuYyBiL21tL2d1cC5jCmluZGV4IDVjOTgyNTc0NWJiMi4uYzBiNjFiMzEzMGE4IDEw MDY0NAotLS0gYS9tbS9ndXAuYworKysgYi9tbS9ndXAuYwpAQCAtMTA2NSwxNCArMTA2NSwxNSBA QCBpbnQgZml4dXBfdXNlcl9mYXVsdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1t X3N0cnVjdCAqbW0sCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChmaXh1cF91c2VyX2ZhdWx0KTsKIAot c3RhdGljIF9fYWx3YXlzX2lubGluZSBsb25nIF9fZ2V0X3VzZXJfcGFnZXNfbG9ja2VkKHN0cnVj dCB0YXNrX3N0cnVjdCAqdHNrLAorc3RhdGljIF9fYWx3YXlzX2lubGluZSBsb25nIF9fZ2V0X3Vz ZXJfcGFnZXNfbG9ja2VkX3goc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJCQkJCQlzdHJ1Y3Qg bW1fc3RydWN0ICptbSwKIAkJCQkJCXVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCQkJCQl1bnNpZ25l ZCBsb25nIG5yX3BhZ2VzLAogCQkJCQkJc3RydWN0IHBhZ2UgKipwYWdlcywKIAkJCQkJCXN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsCiAJCQkJCQlpbnQgKmxvY2tlZCwKLQkJCQkJCXVuc2ln bmVkIGludCBmbGFncykKKwkJCQkJCXVuc2lnbmVkIGludCBmbGFncywKKwkJCQkJCWludCBpZ24p CiB7CiAJbG9uZyByZXQsIHBhZ2VzX2RvbmU7CiAJYm9vbCBsb2NrX2Ryb3BwZWQ7CkBAIC0xMDkw LDggKzEwOTEsOCBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIGxvbmcgX19nZXRfdXNlcl9wYWdl c19sb2NrZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCiAJcGFnZXNfZG9uZSA9IDA7CiAJbG9j a19kcm9wcGVkID0gZmFsc2U7CiAJZm9yICg7OykgewotCQlyZXQgPSBfX2dldF91c2VyX3BhZ2Vz KHRzaywgbW0sIHN0YXJ0LCBucl9wYWdlcywgZmxhZ3MsIHBhZ2VzLAotCQkJCSAgICAgICB2bWFz LCBsb2NrZWQpOworCQlyZXQgPSBfX2dldF91c2VyX3BhZ2VzX3godHNrLCBtbSwgc3RhcnQsIG5y X3BhZ2VzLCBmbGFncywgcGFnZXMsCisJCQkJICAgICAgIHZtYXMsIGxvY2tlZCwgaWduKTsKIAkJ aWYgKCFsb2NrZWQpCiAJCQkvKiBWTV9GQVVMVF9SRVRSWSBjb3VsZG4ndCB0cmlnZ2VyLCBieXBh c3MgKi8KIAkJCXJldHVybiByZXQ7CkBAIC0xMTMzLDggKzExMzQsOCBAQCBzdGF0aWMgX19hbHdh eXNfaW5saW5lIGxvbmcgX19nZXRfdXNlcl9wYWdlc19sb2NrZWQoc3RydWN0IHRhc2tfc3RydWN0 ICp0c2ssCiAJCSpsb2NrZWQgPSAxOwogCQlsb2NrX2Ryb3BwZWQgPSB0cnVlOwogCQlkb3duX3Jl YWQoJm1tLT5tbWFwX3NlbSk7Ci0JCXJldCA9IF9fZ2V0X3VzZXJfcGFnZXModHNrLCBtbSwgc3Rh cnQsIDEsIGZsYWdzIHwgRk9MTF9UUklFRCwKLQkJCQkgICAgICAgcGFnZXMsIE5VTEwsIE5VTEwp OworCQlyZXQgPSBfX2dldF91c2VyX3BhZ2VzX3godHNrLCBtbSwgc3RhcnQsIDEsIGZsYWdzIHwg Rk9MTF9UUklFRCwKKwkJCQkgICAgICAgcGFnZXMsIE5VTEwsIE5VTEwsIGlnbik7CiAJCWlmIChy ZXQgIT0gMSkgewogCQkJQlVHX09OKHJldCA+IDEpOwogCQkJaWYgKCFwYWdlc19kb25lKQpAQCAt MTE1OSw2ICsxMTYwLDE3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBfX2dldF91c2Vy X3BhZ2VzX2xvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAl9CiAJcmV0dXJuIHBhZ2Vz X2RvbmU7CiB9CitzdGF0aWMgX19hbHdheXNfaW5saW5lIGxvbmcgX19nZXRfdXNlcl9wYWdlc19s b2NrZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCisJCQkJCQlzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKKwkJCQkJCXVuc2lnbmVkIGxvbmcgc3RhcnQsCisJCQkJCQl1bnNpZ25lZCBsb25nIG5yX3Bh Z2VzLAorCQkJCQkJc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCQkJCXN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqKnZtYXMsCisJCQkJCQlpbnQgKmxvY2tlZCwKKwkJCQkJCXVuc2lnbmVkIGludCBmbGFn cykKK3sKKyAgICByZXR1cm4gX19nZXRfdXNlcl9wYWdlc19sb2NrZWRfeCh0c2ssIG1tLCBzdGFy dCwgbnJfcGFnZXMsIHBhZ2VzLCB2bWFzLCBsb2NrZWQsIGZsYWdzLCAxKTsKK30KIAogLyoKICAq IGdldF91c2VyX3BhZ2VzX3JlbW90ZSgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5CkBAIC0x MjkxLDggKzEzMDMsMTAgQEAgbG9uZyBwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZV94KHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLAogCSAqIFdlIG1hZGUgc3VyZSBhZGRyIGlzIHdpdGhpbiBhIFZN QSwgc28gdGhlIGZvbGxvd2luZyB3aWxsCiAJICogbm90IHJlc3VsdCBpbiBhIHN0YWNrIGV4cGFu c2lvbiB0aGF0IHJlY3Vyc2VzIGJhY2sgaGVyZS4KIAkgKi8KLQlyZXR1cm4gX19nZXRfdXNlcl9w YWdlc194KGN1cnJlbnQsIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywKLQkJCQlOVUxM LCBOVUxMLCBub25ibG9ja2luZywgaWduKTsKKwlyZXR1cm4gX19nZXRfdXNlcl9wYWdlc19sb2Nr ZWRfeChjdXJyZW50LCBtbSwgc3RhcnQsIG5yX3BhZ2VzLAorCSAgICAgICAgICAgIE5VTEwsIE5V TEwsIG5vbmJsb2NraW5nLCBndXBfZmxhZ3MsIGlnbik7CisvLwlyZXR1cm4gX19nZXRfdXNlcl9w YWdlc194KGN1cnJlbnQsIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywKKy8vCQkJCU5V TEwsIE5VTEwsIG5vbmJsb2NraW5nLCBpZ24pOwogfQogbG9uZyBwb3B1bGF0ZV92bWFfcGFnZV9y YW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkJdW5zaWduZWQgbG9uZyBzdGFydCwg dW5zaWduZWQgbG9uZyBlbmQsIGludCAqbm9uYmxvY2tpbmcpCgpjb21taXQgOGIwYmVkNzg0OGEz MmM3NDUxMmU4Mjc4Yzk0ZGUxNmVlYTM5MDI3NApBdXRob3I6IFJvYmVydCBTdHVwcCA8c25henlA c25henkuZGU+CkRhdGU6ICAgV2VkIE5vdiA2IDA5OjUwOjMyIDIwMTkgKzAxMDAKCiAgICBNb3Jl IHByaW50awoKZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmMKaW5kZXggM2JjMjVmZDQ0 NDMzLi41Yzk4MjU3NDViYjIgMTAwNjQ0Ci0tLSBhL21tL2d1cC5jCisrKyBiL21tL2d1cC5jCkBA IC02MjcsOCArNjI3LDggQEAgc3RhdGljIGludCBnZXRfZ2F0ZV9wYWdlKHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAgKiAqQGZsYWdzIGRvZXMgbm90IGluY2x1 ZGUgRk9MTF9OT1dBSVQsIHRoZSBtbWFwX3NlbSBtYXkgYmUgcmVsZWFzZWQuCiAgKiBJZiBpdCBp cywgKkBub25ibG9ja2luZyB3aWxsIGJlIHNldCB0byAwIGFuZCAtRUJVU1kgcmV0dXJuZWQuCiAg Ki8KLXN0YXRpYyBpbnQgZmF1bHRpbl9wYWdlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKLQkJdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1bnNpZ25l ZCBpbnQgKmZsYWdzLCBpbnQgKm5vbmJsb2NraW5nKQorc3RhdGljIGludCBmYXVsdGluX3BhZ2Vf eChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJ CXVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgaW50ICpmbGFncywgaW50ICpub25ibG9j a2luZywgaW50IGlnbikKIHsKIAl1bnNpZ25lZCBpbnQgZmF1bHRfZmxhZ3MgPSAwOwogCXZtX2Zh dWx0X3QgcmV0OwpAQCAtNjUwLDggKzY1MCwxNCBAQCBzdGF0aWMgaW50IGZhdWx0aW5fcGFnZShz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAJfQog CiAJcmV0ID0gaGFuZGxlX21tX2ZhdWx0KHZtYSwgYWRkcmVzcywgZmF1bHRfZmxhZ3MpOworICAg IGlmICghaWduKSB7CisgICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgImZhdWx0aW5fcGFnZSBo YW5kbGVfbW1fZmF1bHQgLS0+IHJldCA9ICV1XG4iLCByZXQpOworICAgIH0KIAlpZiAocmV0ICYg Vk1fRkFVTFRfRVJST1IpIHsKIAkJaW50IGVyciA9IHZtX2ZhdWx0X3RvX2Vycm5vKHJldCwgKmZs YWdzKTsKKyAgICAgICAgaWYgKCFpZ24pIHsKKyAgICAgICAgICAgIHByaW50ayhLRVJOX1dBUk5J TkcgImZhdWx0aW5fcGFnZSBoYW5kbGVfbW1fZmF1bHQgLS0+IGVyciA9ICVkXG4iLCBlcnIpOwor ICAgICAgICB9CiAKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CkBAIC02NjYsNiArNjcyLDkg QEAgc3RhdGljIGludCBmYXVsdGluX3BhZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCX0KIAogCWlmIChyZXQgJiBWTV9GQVVMVF9SRVRSWSkg eworCSAgICBpZiAoIWlnbikgeworICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiZmF1 bHRpbl9wYWdlLS0+RUJVU1kgVk1fRkFVTFRfUkVUUlkgbm9uLWJsb2NraW5nPyVkIEZBVUxUX0ZM QUdfUkVUUllfTk9XQUlUPyVkXG4iLCBub25ibG9ja2luZz8xOjAsIChmYXVsdF9mbGFncyAmIEZB VUxUX0ZMQUdfUkVUUllfTk9XQUlUKT8xOjApOworICAgICAgICB9CiAJCWlmIChub25ibG9ja2lu ZyAmJiAhKGZhdWx0X2ZsYWdzICYgRkFVTFRfRkxBR19SRVRSWV9OT1dBSVQpKQogCQkJKm5vbmJs b2NraW5nID0gMDsKIAkJcmV0dXJuIC1FQlVTWTsKQEAgLTY4Miw4ICs2OTEsMTYgQEAgc3RhdGlj IGludCBmYXVsdGluX3BhZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLAogCSAqLwogCWlmICgocmV0ICYgVk1fRkFVTFRfV1JJVEUpICYmICEodm1h LT52bV9mbGFncyAmIFZNX1dSSVRFKSkKIAkJKmZsYWdzIHw9IEZPTExfQ09XOworICAgIGlmICgh aWduKSB7CisgICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgImZhdWx0aW5fcGFnZS0tPjBcbiIp OworICAgIH0KIAlyZXR1cm4gMDsKIH0KK3N0YXRpYyBpbnQgZmF1bHRpbl9wYWdlKHN0cnVjdCB0 YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJdW5zaWduZWQg bG9uZyBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgKmZsYWdzLCBpbnQgKm5vbmJsb2NraW5nKQorewor ICAgIHJldHVybiBmYXVsdGluX3BhZ2VfeCh0c2ssIHZtYSwgYWRkcmVzcywgZmxhZ3MsIG5vbmJs b2NraW5nLCAxKTsKK30KIAogc3RhdGljIGludCBjaGVja192bWFfZmxhZ3Moc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgZ3VwX2ZsYWdzKQogewpAQCAtNzg4LDE1ICs4 MDUsMTggQEAgc3RhdGljIGludCBjaGVja192bWFfZmxhZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEsIHVuc2lnbmVkIGxvbmcgZ3VwX2ZsYWdzKQogICogaW5zdGVhZCBvZiBfX2dldF91c2Vy X3BhZ2VzLiBfX2dldF91c2VyX3BhZ2VzIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYKICAqIHlvdSBu ZWVkIHNvbWUgc3BlY2lhbCBAZ3VwX2ZsYWdzLgogICovCi1zdGF0aWMgbG9uZyBfX2dldF91c2Vy X3BhZ2VzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKK3N0 YXRpYyBsb25nIF9fZ2V0X3VzZXJfcGFnZXNfeChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3Ry dWN0IG1tX3N0cnVjdCAqbW0sCiAJCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcg bnJfcGFnZXMsCiAJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMs Ci0JCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbm9uYmxvY2tpbmcpCisJCXN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbm9uYmxvY2tpbmcsIGludCBpZ24pCiB7 CiAJbG9uZyByZXQgPSAwLCBpID0gMDsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IE5V TEw7CiAJc3RydWN0IGZvbGxvd19wYWdlX2NvbnRleHQgY3R4ID0geyBOVUxMIH07CiAKKwlpZiAo IWlnbikKKwkgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiX19nZXRfdXNlcl9wYWdlcyBzdGFydD0l bHggbnJfcGFnZXM9JWx1IGd1cF9mbGFncz0leCBjdHgucGFnZV9tYXNrPSV1XG4iLCBzdGFydCwg bnJfcGFnZXMsIGd1cF9mbGFncywgY3R4LnBhZ2VfbWFzayk7CisKIAlpZiAoIW5yX3BhZ2VzKQog CQlyZXR1cm4gMDsKIApAQCAtODE3LDExICs4MzcsMjUgQEAgc3RhdGljIGxvbmcgX19nZXRfdXNl cl9wYWdlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAK IAkJLyogZmlyc3QgaXRlcmF0aW9uIG9yIGNyb3NzIHZtYSBib3VuZCAqLwogCQlpZiAoIXZtYSB8 fCBzdGFydCA+PSB2bWEtPnZtX2VuZCkgeworICAgICAgICAgICAgaWYgKCFpZ24pIHsKKyAgICAg ICAgICAgICAgICBpZiAoIXZtYSkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FS TklORyAiX19nZXRfdXNlcl9wYWdlcyBAMSB2bWE9PU5VTExcbiIpOworICAgICAgICAgICAgICAg IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiX19nZXRfdXNl cl9wYWdlcyBAMSBzdGFydD0lbHggdm1hLT52bV9zdGFydD0lbHggdm1hLT52bV9lbmQ9JWx4IHZt YS0+dm1fZmxhZ3M9JWx4XG4iLCBzdGFydCwgdm1hLT52bV9zdGFydCwgdm1hLT52bV9lbmQsIHZt YS0+dm1fZmxhZ3MpOworICAgICAgICAgICAgfQogCQkJdm1hID0gZmluZF9leHRlbmRfdm1hKG1t LCBzdGFydCk7CisgICAgICAgICAgICBpZiAoIWlnbikgeworICAgICAgICAgICAgICAgIGlmICgh dm1hKQorICAgICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfX2dldF91c2Vy X3BhZ2VzIEAyIHZtYT09TlVMTFxuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfX2dldF91c2VyX3BhZ2VzIEAyIHN0YXJ0 PSVseCB2bWEtPnZtX3N0YXJ0PSVseCB2bWEtPnZtX2VuZD0lbHggdm1hLT52bV9mbGFncz0lbHhc biIsIHN0YXJ0LCB2bWEtPnZtX3N0YXJ0LCB2bWEtPnZtX2VuZCwgdm1hLT52bV9mbGFncyk7Cisg ICAgICAgICAgICB9CiAJCQlpZiAoIXZtYSAmJiBpbl9nYXRlX2FyZWEobW0sIHN0YXJ0KSkgewog CQkJCXJldCA9IGdldF9nYXRlX3BhZ2UobW0sIHN0YXJ0ICYgUEFHRV9NQVNLLAogCQkJCQkJZ3Vw X2ZsYWdzLCAmdm1hLAogCQkJCQkJcGFnZXMgPyAmcGFnZXNbaV0gOiBOVUxMKTsKKyAgICAgICAg ICAgICAgICBpZiAoIWlnbikKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklO RyAiX19nZXRfdXNlcl9wYWdlcyBAMyBnZXRfZ2F0ZV9wYWdlIC0tPiAlbGRcbiIsIHJldCk7CiAJ CQkJaWYgKHJldCkKIAkJCQkJZ290byBvdXQ7CiAJCQkJY3R4LnBhZ2VfbWFzayA9IDA7CkBAIC04 MjksNiArODYzLDggQEAgc3RhdGljIGxvbmcgX19nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQl9CiAKIAkJCWlmICghdm1hIHx8 IGNoZWNrX3ZtYV9mbGFncyh2bWEsIGd1cF9mbGFncykpIHsKKyAgICAgICAgICAgICAgICBpZiAo IWlnbikKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiX19nZXRfdXNl cl9wYWdlcyBANCBFRkFVTFRcbiIpOwogCQkJCXJldCA9IC1FRkFVTFQ7CiAJCQkJZ290byBvdXQ7 CiAJCQl9CkBAIC04MzYsNiArODcyLDggQEAgc3RhdGljIGxvbmcgX19nZXRfdXNlcl9wYWdlcyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQkJaSA9IGZv bGxvd19odWdldGxiX3BhZ2UobW0sIHZtYSwgcGFnZXMsIHZtYXMsCiAJCQkJCQkmc3RhcnQsICZu cl9wYWdlcywgaSwKIAkJCQkJCWd1cF9mbGFncywgbm9uYmxvY2tpbmcpOworICAgICAgICAgICAg ICAgIGlmICghaWduKQorICAgICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJf X2dldF91c2VyX3BhZ2VzIEA1IGZvbGxvd19odWdldGxiX3BhZ2UgLS0+ICVsZFxuIiwgaSk7CiAJ CQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTg0NSwxNSArODgzLDIxIEBAIHN0YXRpYyBsb25n IF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tLAogCQkgKiBwb3RlbnRpYWxseSBhbGxvY2F0aW5nIG1lbW9yeS4KIAkJICovCiAJCWlm IChmYXRhbF9zaWduYWxfcGVuZGluZyhjdXJyZW50KSkgeworICAgICAgICAgICAgaWYgKCFpZ24p CisgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiX19nZXRfdXNlcl9wYWdlcyBA NiBFUkVTVEFSVFNZU1xuIik7CiAJCQlyZXQgPSAtRVJFU1RBUlRTWVM7CiAJCQlnb3RvIG91dDsK IAkJfQogCQljb25kX3Jlc2NoZWQoKTsKIAogCQlwYWdlID0gZm9sbG93X3BhZ2VfbWFzayh2bWEs IHN0YXJ0LCBmb2xsX2ZsYWdzLCAmY3R4KTsKKyAgICAgICAgaWYgKCFpZ24pCisgICAgICAgICAg ICBwcmludGsoS0VSTl9XQVJOSU5HICJfX2dldF91c2VyX3BhZ2VzIEA3IGZvbGxvd19wYWdlX21h c2sgLS0+ICVkICBjdHgucGFnZV9tYXNrPSV1XG4iLCBwYWdlID8gMSA6IDAsIGN0eC5wYWdlX21h c2spOwogCQlpZiAoIXBhZ2UpIHsKLQkJCXJldCA9IGZhdWx0aW5fcGFnZSh0c2ssIHZtYSwgc3Rh cnQsICZmb2xsX2ZsYWdzLAotCQkJCQlub25ibG9ja2luZyk7CisJCQlyZXQgPSBmYXVsdGluX3Bh Z2VfeCh0c2ssIHZtYSwgc3RhcnQsICZmb2xsX2ZsYWdzLAorCQkJCQlub25ibG9ja2luZywgaWdu KTsKKyAgICAgICAgICAgIGlmICghaWduKQorICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX1dB Uk5JTkcgIl9fZ2V0X3VzZXJfcGFnZXMgQDggZmF1bHRpbl9wYWdlIC0tPiAlbGRcbiIsIHJldCk7 CiAJCQlzd2l0Y2ggKHJldCkgewogCQkJY2FzZSAwOgogCQkJCWdvdG8gcmV0cnk7CkBAIC04Njks NiArOTEzLDggQEAgc3RhdGljIGxvbmcgX19nZXRfdXNlcl9wYWdlcyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCQl9CiAJCQlCVUcoKTsKIAkJfSBlbHNl IGlmIChQVFJfRVJSKHBhZ2UpID09IC1FRVhJU1QpIHsKKyAgICAgICAgICAgIGlmICghaWduKQor ICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgIl9fZ2V0X3VzZXJfcGFnZXMgQDgg RUVYSVNUXG4iKTsKIAkJCS8qCiAJCQkgKiBQcm9wZXIgcGFnZSB0YWJsZSBlbnRyeSBleGlzdHMs IGJ1dCBubyBjb3JyZXNwb25kaW5nCiAJCQkgKiBzdHJ1Y3QgcGFnZS4KQEAgLTg3Niw2ICs5MjIs OCBAQCBzdGF0aWMgbG9uZyBfX2dldF91c2VyX3BhZ2VzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNr LCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAkJCWdvdG8gbmV4dF9wYWdlOwogCQl9IGVsc2UgaWYg KElTX0VSUihwYWdlKSkgewogCQkJcmV0ID0gUFRSX0VSUihwYWdlKTsKKwkJCWlmICghaWduKQor ICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX1dBUk5JTkcgIl9fZ2V0X3VzZXJfcGFnZXMgQDgg SVNfRVJSIC0+IHJldD0lbGRcbiIsIHJldCk7CiAJCQlnb3RvIG91dDsKIAkJfQogCQlpZiAocGFn ZXMpIHsKQEAgLTg5MCwxNyArOTM4LDMxIEBAIHN0YXRpYyBsb25nIF9fZ2V0X3VzZXJfcGFnZXMo c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkJY3R4LnBh Z2VfbWFzayA9IDA7CiAJCX0KIAkJcGFnZV9pbmNyZW0gPSAxICsgKH4oc3RhcnQgPj4gUEFHRV9T SElGVCkgJiBjdHgucGFnZV9tYXNrKTsKKyAgICAgICAgaWYgKCFpZ24pCisgICAgICAgICAgICBw cmludGsoS0VSTl9XQVJOSU5HICJfX2dldF91c2VyX3BhZ2VzIEA5IHBhZ2VfaW5jcmVtPSV1IGN0 eC5wYWdlX21hc2s9JXVcbiIsIHBhZ2VfaW5jcmVtLCBjdHgucGFnZV9tYXNrKTsKIAkJaWYgKHBh Z2VfaW5jcmVtID4gbnJfcGFnZXMpCiAJCQlwYWdlX2luY3JlbSA9IG5yX3BhZ2VzOwogCQlpICs9 IHBhZ2VfaW5jcmVtOwogCQlzdGFydCArPSBwYWdlX2luY3JlbSAqIFBBR0VfU0laRTsKIAkJbnJf cGFnZXMgLT0gcGFnZV9pbmNyZW07CisgICAgICAgIGlmICghaWduKQorICAgICAgICAgICAgcHJp bnRrKEtFUk5fV0FSTklORyAiX19nZXRfdXNlcl9wYWdlcyBAMTAgaT0lbGQgc3RhcnQ9JWx4IG5y X3BhZ2VzPSVsZFxuIiwgaSwgc3RhcnQsIG5yX3BhZ2VzKTsKIAl9IHdoaWxlIChucl9wYWdlcyk7 CiBvdXQ6CiAJaWYgKGN0eC5wZ21hcCkKIAkJcHV0X2Rldl9wYWdlbWFwKGN0eC5wZ21hcCk7Cisg ICAgaWYgKCFpZ24pIHsKKyAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiX19nZXRfdXNlcl9w YWdlcyBMRUFWRSBpPSVsZCByZXQ9JWxkXG4iLCBpLCByZXQpOworICAgIH0KIAlyZXR1cm4gaSA/ IGkgOiByZXQ7CiB9CitzdGF0aWMgbG9uZyBfX2dldF91c2VyX3BhZ2VzKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJdW5zaWduZWQgbG9uZyBzdGFydCwg dW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0 IHBhZ2UgKipwYWdlcywKKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpub25i bG9ja2luZykKK3sKKyAgICByZXR1cm4gX19nZXRfdXNlcl9wYWdlc194KHRzaywgbW0sIHN0YXJ0 LCBucl9wYWdlcywgZ3VwX2ZsYWdzLCBwYWdlcywgdm1hcywgbm9uYmxvY2tpbmcsIDEpOworfQog CiBzdGF0aWMgYm9vbCB2bWFfcGVybWl0c19mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSwKIAkJCSAgICAgIHVuc2lnbmVkIGludCBmYXVsdF9mbGFncykKQEAgLTExOTMsOCArMTI1NSw5 IEBAIEVYUE9SVF9TWU1CT0woZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKTsKICAqIElmIEBub25ibG9j a2luZyBpcyBub24tTlVMTCwgaXQgbXVzdCBoZWxkIGZvciByZWFkIG9ubHkgYW5kIG1heSBiZQog ICogcmVsZWFzZWQuICBJZiBpdCdzIHJlbGVhc2VkLCAqQG5vbmJsb2NraW5nIHdpbGwgYmUgc2V0 IHRvIDAuCiAgKi8KLWxvbmcgcG9wdWxhdGVfdm1hX3BhZ2VfcmFuZ2Uoc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsCi0JCXVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBp bnQgKm5vbmJsb2NraW5nKQorbG9uZyBwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZV94KHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLAorCQl1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n IGVuZCwgaW50ICpub25ibG9ja2luZywKKwkJaW50IGlnbikKIHsKIAlzdHJ1Y3QgbW1fc3RydWN0 ICptbSA9IHZtYS0+dm1fbW07CiAJdW5zaWduZWQgbG9uZyBucl9wYWdlcyA9IChlbmQgLSBzdGFy dCkgLyBQQUdFX1NJWkU7CkBAIC0xMjI4LDggKzEyOTEsMTMgQEAgbG9uZyBwb3B1bGF0ZV92bWFf cGFnZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIAkgKiBXZSBtYWRlIHN1cmUg YWRkciBpcyB3aXRoaW4gYSBWTUEsIHNvIHRoZSBmb2xsb3dpbmcgd2lsbAogCSAqIG5vdCByZXN1 bHQgaW4gYSBzdGFjayBleHBhbnNpb24gdGhhdCByZWN1cnNlcyBiYWNrIGhlcmUuCiAJICovCi0J cmV0dXJuIF9fZ2V0X3VzZXJfcGFnZXMoY3VycmVudCwgbW0sIHN0YXJ0LCBucl9wYWdlcywgZ3Vw X2ZsYWdzLAotCQkJCU5VTEwsIE5VTEwsIG5vbmJsb2NraW5nKTsKKwlyZXR1cm4gX19nZXRfdXNl cl9wYWdlc194KGN1cnJlbnQsIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywKKwkJCQlO VUxMLCBOVUxMLCBub25ibG9ja2luZywgaWduKTsKK30KK2xvbmcgcG9wdWxhdGVfdm1hX3BhZ2Vf cmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJCXVuc2lnbmVkIGxvbmcgc3RhcnQs IHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgKm5vbmJsb2NraW5nKQoreworICAgIHJldHVybiBwb3B1 bGF0ZV92bWFfcGFnZV9yYW5nZV94KHZtYSwgc3RhcnQsIGVuZCwgbm9uYmxvY2tpbmcsIDEpOwog fQogCiAvKgpAQCAtMTI5Miw3ICsxMzYwLDcgQEAgaW50IF9fbW1fcG9wdWxhdGUodW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sIGludCBpZ25vcmVfZXJyb3JzKQogCQkgKiBk b3VibGUgY2hlY2tzIHRoZSB2bWEgZmxhZ3MsIHNvIHRoYXQgaXQgd29uJ3QgbWxvY2sgcGFnZXMK IAkJICogaWYgdGhlIHZtYSB3YXMgYWxyZWFkeSBtdW5sb2NrZWQuCiAJCSAqLwotCQlyZXQgPSBw b3B1bGF0ZV92bWFfcGFnZV9yYW5nZSh2bWEsIG5zdGFydCwgbmVuZCwgJmxvY2tlZCk7CisJCXJl dCA9IHBvcHVsYXRlX3ZtYV9wYWdlX3JhbmdlX3godm1hLCBuc3RhcnQsIG5lbmQsICZsb2NrZWQs IGlnbik7CiAJCWlmIChyZXQgPCAwKSB7CiAgICAgICAgICAgICBpZiAoIWlnbikKICAgICAgICAg ICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfbW1fcG9wdWxhdGUgJWx4ICVseCAlbHggJWQg TE9PUC0yICVsZFxuIiwgc3RhcnQsIGxlbiwgZW5kLCBpZ25vcmVfZXJyb3JzLCByZXQpOwoKY29t bWl0IDc0ZGE5YjFjOWJiYWY2NjMyMGQ5NzNmZjdjOGRjNjM5NjJiNmRjN2QKQXV0aG9yOiBSb2Jl cnQgU3R1cHAgPHNuYXp5QHNuYXp5LmRlPgpEYXRlOiAgIFR1ZSBOb3YgNSAxNzoxODo0OSAyMDE5 ICswMTAwCgogICAgQWRkIGRlYnVnIHRoaW5ncwoKZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0v Z3VwLmMKaW5kZXggOThmMTNhYjM3YmFjLi4zYmMyNWZkNDQ0MzMgMTAwNjQ0Ci0tLSBhL21tL2d1 cC5jCisrKyBiL21tL2d1cC5jCkBAIC0zLDYgKzMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2Vycm5v Lmg+CiAjaW5jbHVkZSA8bGludXgvZXJyLmg+CiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4K KyNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KIAogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5j bHVkZSA8bGludXgvbWVtcmVtYXAuaD4KQEAgLTEyNDEsMTQgKzEyNDIsMjMgQEAgbG9uZyBwb3B1 bGF0ZV92bWFfcGFnZV9yYW5nZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKIGludCBfX21t X3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuLCBpbnQgaWdu b3JlX2Vycm9ycykKIHsKIAlzdHJ1Y3QgbW1fc3RydWN0ICptbSA9IGN1cnJlbnQtPm1tOwotCXVu c2lnbmVkIGxvbmcgZW5kLCBuc3RhcnQsIG5lbmQ7CisJdW5zaWduZWQgbG9uZyBlbmQsIG5zdGFy dCwgbmVuZCA9IDBMOwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gTlVMTDsKIAlpbnQg bG9ja2VkID0gMDsKIAlsb25nIHJldCA9IDA7CisJdW5zaWduZWQgbG9uZyBuc3RhcnRfcHJldiA9 IDBMIC0gMUwsIG5lbmRfcHJldiA9IDBMIC0gMUw7CisJaW50IGlnbjsKIAogCWVuZCA9IHN0YXJ0 ICsgbGVuOwogCisJcHJpbnRrKEtFUk5fV0FSTklORyAiX21tX3BvcHVsYXRlICVseCAlbHggJWx4 ICVkIEVOVEVSXG4iLCBzdGFydCwgbGVuLCBlbmQsIGlnbm9yZV9lcnJvcnMpOworCiAJZm9yIChu c3RhcnQgPSBzdGFydDsgbnN0YXJ0IDwgZW5kOyBuc3RhcnQgPSBuZW5kKSB7CisJICAgIGlnbiA9 IG5zdGFydCA9PSBuc3RhcnRfcHJldiAmJiBuZW5kID09IG5lbmRfcHJldjsKKwkgICAgbnN0YXJ0 X3ByZXYgPSBuc3RhcnQ7CisJICAgIG5lbmRfcHJldiA9IG5lbmQ7CisgICAgICAgIGlmICghaWdu KQorICAgICAgICAgICAgcHJpbnRrKEtFUk5fV0FSTklORyAiX21tX3BvcHVsYXRlICVseCAlbHgg JWx4ICVkIExPT1AgJWx4ICVkICVsZFxuIiwgc3RhcnQsIGxlbiwgZW5kLCBpZ25vcmVfZXJyb3Jz LCBuc3RhcnQsIGxvY2tlZCwgcmV0KTsKIAkJLyoKIAkJICogV2Ugd2FudCB0byBmYXVsdCBpbiBw YWdlcyBmb3IgW25zdGFydDsgZW5kKSBhZGRyZXNzIHJhbmdlLgogCQkgKiBGaW5kIGZpcnN0IGNv cnJlc3BvbmRpbmcgVk1BLgpAQCAtMTI1OSw2ICsxMjY5LDggQEAgaW50IF9fbW1fcG9wdWxhdGUo dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sIGludCBpZ25vcmVfZXJyb3Jz KQogCQkJdm1hID0gZmluZF92bWEobW0sIG5zdGFydCk7CiAJCX0gZWxzZSBpZiAobnN0YXJ0ID49 IHZtYS0+dm1fZW5kKQogCQkJdm1hID0gdm1hLT52bV9uZXh0OworCQlpZiAoIWlnbiAmJiB2bWEp CisJCSAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfbW1fcG9wdWxhdGUgJWx4ICVseCAlbHggJWQg dm1hLT52bV9zdGFydD0lbHggdm1hLT52bV9lbmQ9JWx4IHZtYS0+dm1fZmxhZ3M9JWx4XG4iLCBz dGFydCwgbGVuLCBlbmQsIGlnbm9yZV9lcnJvcnMsIHZtYS0+dm1fc3RhcnQsIHZtYS0+dm1fZW5k LCB2bWEtPnZtX2ZsYWdzKTsKIAkJaWYgKCF2bWEgfHwgdm1hLT52bV9zdGFydCA+PSBlbmQpCiAJ CQlicmVhazsKIAkJLyoKQEAgLTEyNjYsOCArMTI3OCwxMyBAQCBpbnQgX19tbV9wb3B1bGF0ZSh1 bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGxlbiwgaW50IGlnbm9yZV9lcnJvcnMp CiAJCSAqIHJhbmdlIHdpdGggdGhlIGZpcnN0IFZNQS4gQWxzbywgc2tpcCB1bmRlc2lyYWJsZSBW TUEgdHlwZXMuCiAJCSAqLwogCQluZW5kID0gbWluKGVuZCwgdm1hLT52bV9lbmQpOwotCQlpZiAo dm1hLT52bV9mbGFncyAmIChWTV9JTyB8IFZNX1BGTk1BUCkpCi0JCQljb250aW51ZTsKKyAgICAg ICAgaWYgKCFpZ24pCisgICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfbW1fcG9wdWxh dGUgJWx4ICVseCAlbHggJWQgbmVuZD0lbHggJWx4ICVseFxuIiwgc3RhcnQsIGxlbiwgZW5kLCBp Z25vcmVfZXJyb3JzLCBuZW5kLCBlbmQsIHZtYS0+dm1fZW5kKTsKKwkJaWYgKHZtYS0+dm1fZmxh Z3MgJiAoVk1fSU8gfCBWTV9QRk5NQVApKSB7CisgICAgICAgICAgICBpZiAoIWlnbikKKyAgICAg ICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfbW1fcG9wdWxhdGUgJWx4ICVseCAlbHgg JWQgTE9PUC0xICVseFxuIiwgc3RhcnQsIGxlbiwgZW5kLCBpZ25vcmVfZXJyb3JzLCB2bWEtPnZt X2ZsYWdzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAJCWlmIChuc3RhcnQg PCB2bWEtPnZtX3N0YXJ0KQogCQkJbnN0YXJ0ID0gdm1hLT52bV9zdGFydDsKIAkJLyoKQEAgLTEy NzcsNiArMTI5NCw4IEBAIGludCBfX21tX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgbGVuLCBpbnQgaWdub3JlX2Vycm9ycykKIAkJICovCiAJCXJldCA9IHBvcHVs YXRlX3ZtYV9wYWdlX3JhbmdlKHZtYSwgbnN0YXJ0LCBuZW5kLCAmbG9ja2VkKTsKIAkJaWYgKHJl dCA8IDApIHsKKyAgICAgICAgICAgIGlmICghaWduKQorICAgICAgICAgICAgICAgIHByaW50ayhL RVJOX1dBUk5JTkcgIl9tbV9wb3B1bGF0ZSAlbHggJWx4ICVseCAlZCBMT09QLTIgJWxkXG4iLCBz dGFydCwgbGVuLCBlbmQsIGlnbm9yZV9lcnJvcnMsIHJldCk7CiAJCQlpZiAoaWdub3JlX2Vycm9y cykgewogCQkJCXJldCA9IDA7CiAJCQkJY29udGludWU7CS8qIGNvbnRpbnVlIGF0IG5leHQgVk1B ICovCkBAIC0xMjg0LDggKzEzMDMsMTEgQEAgaW50IF9fbW1fcG9wdWxhdGUodW5zaWduZWQgbG9u ZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sIGludCBpZ25vcmVfZXJyb3JzKQogCQkJYnJlYWs7 CiAJCX0KIAkJbmVuZCA9IG5zdGFydCArIHJldCAqIFBBR0VfU0laRTsKKyAgICAgICAgaWYgKCFp Z24pCisgICAgICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJfbW1fcG9wdWxhdGUgJWx4ICVs eCAlbHggJWQgTE9PUC0zIHJldD0lbGQgbmVuZD0lbHhcbiIsIHN0YXJ0LCBsZW4sIGVuZCwgaWdu b3JlX2Vycm9ycywgcmV0LCBuZW5kKTsKIAkJcmV0ID0gMDsKIAl9CisgICAgcHJpbnRrKEtFUk5f V0FSTklORyAiX21tX3BvcHVsYXRlIEVORCAlbHUgJWx1ICVkXG4iLCBzdGFydCwgbGVuLCBsb2Nr ZWQpOwogCWlmIChsb2NrZWQpCiAJCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7CiAJcmV0dXJuIHJl dDsJLyogMCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlICovCg== --=-IKBZY0fI5fBT2fgxh03Z Content-Type: application/gzip; name="dmesg-out.txt.gz" Content-Disposition: attachment; filename="dmesg-out.txt.gz" Content-Transfer-Encoding: base64 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 zpdX/eAluyWFX577/7cASDEj0wIA --=-IKBZY0fI5fBT2fgxh03Z Content-Disposition: attachment; filename="test.c" Content-Type: text/x-csrc; name="test.c"; charset="UTF-8" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5o PgojaW5jbHVkZSA8c3lzL21tYW4uaD4KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikg ewogIGlmIChhcmdjID4gMSkgewogICAgcHJpbnRmKCJTbGVlcGluZy4uLiAlc1xuIiwgYXJndlsx XSk7CiAgICBzbGVlcChhdG9pKGFyZ3ZbMV0pKTsKICB9CiAgcHJpbnRmKCJCZWZvcmUgbWxvY2th bGwoTUNMX0NVUlJFTlQpXG4iKTsKICBtbG9ja2FsbChNQ0xfQ1VSUkVOVCk7CiAgcHJpbnRmKCJB ZnRlciBtbG9ja2FsbChNQ0xfQ1VSUkVOVClcbiIpOwp9Cg== --=-IKBZY0fI5fBT2fgxh03Z--