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 B778FCF256E for ; Sat, 12 Oct 2024 17:01:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DB2606B007B; Sat, 12 Oct 2024 13:01:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D61CC6B0082; Sat, 12 Oct 2024 13:01:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C03CE6B0083; Sat, 12 Oct 2024 13:01:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 9C9256B007B for ; Sat, 12 Oct 2024 13:01:33 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C93D81C3F1A for ; Sat, 12 Oct 2024 17:01:26 +0000 (UTC) X-FDA: 82665566340.12.F43BFEF Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf22.hostedemail.com (Postfix) with ESMTP id 87C44C0019 for ; Sat, 12 Oct 2024 17:01:26 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=CsmboylQ; spf=pass (imf22.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.218.53 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728752445; 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=eLK0SWU0DV/lYestXMEbl8Q5Iv6txd4W8a4XPICpv8U=; b=1BTP3mFO2D6CqKgC/4FSsKWVz+1iAjUekWc3/OBuyOnnx0MFfDUZqDBSmVgAKrmygm9BVZ 2OGajSP+NKQBYFUJU/P1LYtJhHGadidN427dEQWQqgfW6lzOrIv3fY6twfIACw8jfytdoJ JckyV3ln83wZLHqMHiwhoF6Dc/ki2Ac= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=CsmboylQ; spf=pass (imf22.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.218.53 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728752445; a=rsa-sha256; cv=none; b=fgR4C7hoDxm3BXVPMstLu7VR7AlAjKX6rQ457m0y8xcRCOkdrh/s6Yu1LYsCtADR9t7U1v 0Rg0xsrrk3GZUV3i9fv6e+7MuloElSeKqvzzuxE6sEls3+cz/OcaT6LYpYC8FdMGQExWGk uBIpUeNTafprKgH8KjCTr3CZ2rURSJg= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a99e3b3a411so133978066b.0 for ; Sat, 12 Oct 2024 10:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1728752489; x=1729357289; 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=eLK0SWU0DV/lYestXMEbl8Q5Iv6txd4W8a4XPICpv8U=; b=CsmboylQUEvhKhKyJGbfNT/yhdSKx/xy4N4WBHBx656/Q31HJ0h2M/Tjy+ORPElBxJ 154RleRzbLZX9MIn28iO4ItaObrt9G8zCjizLFbPezfmf1kwJXW1v9HaxCpEESFPvR/Z 0s2PJqbxUWIJOhkEX1TYt/W51RKMCe5aF54QE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728752489; x=1729357289; 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=eLK0SWU0DV/lYestXMEbl8Q5Iv6txd4W8a4XPICpv8U=; b=fE86NyjrISgj5ogIMC7zCZBIWF5Np3DTVQEmJeVbtq0rXjvQDphDzeefUQ8fSdJNHQ 64IrksMl16jxmMJv3iqSg/J06/F7VURdEF/jq0iyvjHpsYql+3EIXadCEM9j847E1tqt c0upXj0W8nNeNd+7VlPV9vfPotqDOQKGa8svgBkweqeoESk0k6Gj43R7FeJWzBFsWokr o/i8cDBmbuZmNvFFw26Dk5pEVa01QBMoRGfVUIHX+4NXPRm7gk3Az4B7CBbRlUNuJHad vEfozfzetmErF2FRdv/PD12/f5qHHPrwgREejk3xI1z0SRByw4HUAvbVd+/d165duHVe Piqg== X-Forwarded-Encrypted: i=1; AJvYcCU93tXL9oeiILP5EkELLSb2JxBqvFIUHK0i0oCjeJxcgtbNAtLlverxmt9/1JQ0Q6ToD0b1tMdveA==@kvack.org X-Gm-Message-State: AOJu0YxH/6QFGeZHfkXCkftHcHnvJ7xFoCXZXWh1OHbETsxeuld8OlGr E8k5Hxxtsw1h4B8udyzqHuSi9/azqo6eWhMoEuSg8xEDGHf6BaNobdWZm7A2VZVCkE7MA6aDX43 0RZs= X-Google-Smtp-Source: AGHT+IGtjRmlwde4iD26o17YYZbLLWzMsTiJG+vtmYKb1jlKOty2nngEFymauLrnxWe2zkv2IQNPLQ== X-Received: by 2002:a17:907:7ba9:b0:a99:4566:cd42 with SMTP id a640c23a62f3a-a99a0d092efmr930111566b.0.1728752488605; Sat, 12 Oct 2024 10:01:28 -0700 (PDT) Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com. [209.85.218.52]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a99a80bfc5esm347006466b.142.2024.10.12.10.01.25 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 12 Oct 2024 10:01:26 -0700 (PDT) Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-a99f629a7aaso50876466b.1 for ; Sat, 12 Oct 2024 10:01:25 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCW1cuMwV/19ckTwIwOy8pjxjwbG08wegclGH5wMEO33rhAPi3wHtWs6dJVgf/qyfYGBBfmGqUTfNA==@kvack.org X-Received: by 2002:a17:907:720f:b0:a98:f44d:a198 with SMTP id a640c23a62f3a-a99b8775a40mr639248066b.1.1728752485597; Sat, 12 Oct 2024 10:01:25 -0700 (PDT) MIME-Version: 1.0 References: <52d45d22-e108-400e-a63f-f50ef1a0ae1a@meta.com> <5bee194c-9cd3-47e7-919b-9f352441f855@kernel.dk> <459beb1c-defd-4836-952c-589203b7005c@meta.com> <02121707-E630-4E7E-837B-8F53B4C28721@flyingcircus.io> <381863DE-17A7-4D4E-8F28-0F18A4CEFC31@flyingcircus.io> <0A480EBE-9B4D-49CC-9A32-3526F32426E6@flyingcircus.io> In-Reply-To: From: Linus Torvalds Date: Sat, 12 Oct 2024 10:01:08 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Known and unfixed active data loss bug in MM + XFS with large folios since Dec 2021 (any kernel from 6.1 upwards) To: Chris Mason Cc: Christian Theune , Dave Chinner , Matthew Wilcox , Jens Axboe , linux-mm@kvack.org, "linux-xfs@vger.kernel.org" , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Dao , regressions@lists.linux.dev, regressions@leemhuis.info Content-Type: multipart/mixed; boundary="000000000000cf77a306244a8d90" X-Rspam-User: X-Stat-Signature: 9kdr18g1nctq5fgyg9s4got8w687hoyw X-Rspamd-Queue-Id: 87C44C0019 X-Rspamd-Server: rspam11 X-HE-Tag: 1728752486-526183 X-HE-Meta: U2FsdGVkX1+EdZcNAMwX0n+wqdBNa2+qlcoT/7RlSFwMOPJSVWzoM9VRJMbL4McdgDxbg5cTP10T9WiyYQJFh41qbkMj4auePGBUPeWreR4Cpe7F2SwQj+63Uxbum3zMpDuMrz8R6V4bKiHbuSgYyVyk30stfWbV3rJdLd6id0C3WD3cY/Ot6byVNliljRssiMmdP90AfE57W26Z2rWx1hyDXIBwPUHOY/gTmfxQYaKrHGacyVTuqCSVgFJKTdgGeeDWqahSeUOx8f8IRirw7dpOp7Mv6rrFIRPuxIZzzFSnyjuxDmftMd2wh1kxWRtYqZY4dIZRnBHBAcQR/58yT6LmPbSxodrtYPcb0DkHNUri93MF6/K+P7zQSF3iaajHHMhozSjO8L2R4uHGqaW+YdaIXcHhXel2cWlmpF0/gP3WG5pqZ5u4IFFLnbzjP9B3Hh2ANK/Bij3+W38w+Y1zEpkwxLyt3GgNMicN/fHUfwGIMDi97Vv+WpvvMil2mu7dlIpTkpqiYPpR9PN1ElFpa7tVbCna+6befX4bU0oyz6hOi/4RXQCPL18ofyRaKgQK/rDDUiWuNyvGyyUcSHbG7diX/WZHT46GTB4bj+cMH03SyAPfoNx5Y0t0DyKEm3qEbK83PifXItpCmMXwWj4c4TMFnWeMUelYupDzKQeG7gtf+qCxwqSQ1/cVwAnECdC5pdrah6RwA/Re7Jth4dgjRIinipMAt0u0Qu2h0JmpENA16BpG0hlcNWkNfN/viadIQgVXDg/UIbKcv0T+Je7YnY9vs/V48176fvSek8rMLDqVa6Kx5vOlBCl7ePQQWdQmowsvWRD1CZ1OUJV8e4MviVPlnBBaXymYUsVHJgKUMXALae4PwQs8civQNM8eZxa9shToNhyH2Mu5jQ6BYy8ya7XsColEUSh9p/Fsax0Wj2NwL2v8tYYyQA5XP5BgGSGgUEFi4DzO/rtOKguhAES pPF5nuSY 5rap/NxoHJjBJRjSgGaM41dMEOsAk7qRbNOiwpYVTUCdv5rjXJcfHgHqdum3wh1LjKyWeDKhYE3faYRF9YS9XYeRnsvfCtighIOjB7nmD/K/RsE645ycj/65d82LIf6zWQGbX3bfDwdIgumQyRlhSgyqe5ef1haCm1M0PRYyiyM0tE3Y3w/lEH9zB0qWsvw7th9cETy2dnnSPkU38Nj476ZwqKgXFpolggaYuLfdwXADCORmSXS/1UcNk/IXF8CiPXoWjnqxW2FYrlnBgylO9AlQz3i/OeBMFW5wVw7RUHvK6ZOsNti/6PEe1tHddK1M7OXMSNF8O95DSCEb4jIbP55zxWXu0ZPBBLPQu7Rocit6IZgBk24MYwaE7zK4hY6Y2ig2G8shJOQMIfXuPMFR1pogUD0dVKR3mS5ENNeToRoMkGtmAtQuOnwOD+sDisJl1IltGTXEaQ3yLH0sC0JiNrbvjeTZ96Nd+x//PDvUpfu5YhB5npOypUt3XgfTNw95pSrs+VTisBeV5clFJ5FfaS5wTxVuuPUeYlY4hk7U8npRHAiFNEcgPqswY2zbLwF6eKpHWHkPXzyG26RjZqJw2V6bp+amIvUPsOkvq+ryn+omvX6cxC1g1QpRvSv8/JIugKY8hOeao8hPQytrcXAh2WzPN56w+Lzj+QKw/PNdWcxf4WlqXdD2RBcjwN23bIGenVsne7Yj0Plbt4nrtSQJV8G+W5pAAXFSjduuP3pN9OkA0rGdiKcHoVSM2V+WmfkEHWnUN5+azpz0CaBroyId3ALq85spNC/yROhr24uwZ3BBp0YsGN+os5MS09Czx9dHWKSjOvZ/CENWN1HpyQb9P9x0e8zVZVKVg0l/E6lcRjPwVkAg= 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: --000000000000cf77a306244a8d90 Content-Type: text/plain; charset="UTF-8" On Fri, 11 Oct 2024 at 06:06, Chris Mason wrote: > > - Linus's starvation observation. It doesn't feel like there's enough > load to cause this, especially given us sitting in truncate, where it > should be pretty unlikely to have multiple procs banging on the page in > question. Yeah, I think the starvation can only possibly happen in fdatasync-like paths where it's waiting for existing writeback without holding the page lock. And while Christian has had those backtraces too, the truncate path is not one of them. That said, just because I wanted to see how nasty it is, I looked into changing the rules for folio_wake_bit(). Christian, just to clarify, this is not for you to test - this is very experimental - but maybe Willy has comments on it. Because it *might* be possible to do something like the attached, where we do the page flags changes atomically but without any locks if there are no waiters, but if there is a waiter on the page, we always clear the page flag bit atomically under the waitqueue lock as we wake up the waiter. I changed the name (and the return value) of the folio_xor_flags_has_waiters() function to just not have any possibility of semantic mixup, but basically instead of doing the xor atomically and unconditionally (and returning whether we had waiters), it now does it conditionally only if we do *not* have waiters, and returns true if successful. And if there were waiters, it moves the flag clearing into the wakeup function. That in turn means that the "while whiteback" loop can go back to be just a non-looping "if writeback", and folio_wait_writeback() can't get into any starvation with new writebacks always showing up. The reason I say it *might* be possible to do something like this is that it changes __folio_end_writeback() to no longer necessarily clear the writeback bit under the XA lock. If there are waiters, we'll clear it later (after releasing the lock) in the caller. Willy? What do you think? Clearly this now makes PG_writeback not synchronized with the PAGECACHE_TAG_WRITEBACK tag, but the reason I think it might be ok is that the code that *sets* the PG_writeback bit in __folio_start_writeback() only ever starts with a page that isn't under writeback, and has a VM_BUG_ON_FOLIO(folio_test_writeback(folio), folio); at the top of the function even outside the XA lock. So I don't think these *need* to be synchronized under the XA lock, and I think the folio flag wakeup atomicity might be more important than the XA writeback tag vs folio writeback bit. But I'm not going to really argue for this patch at all - I wanted to look at how bad it was, I wrote it, I'm actually running it on my machine now and it didn't *immediately* blow up in my face, so it *may* work just fine. The patch is fairly simple, and apart from the XA tagging issue is seems very straightforward. I'm just not sure it's worth synchronizing one part just to at the same time de-synchronize another.. Linus --000000000000cf77a306244a8d90 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Test-atomic-folio-bit-waiting.patch" Content-Disposition: attachment; filename="0001-Test-atomic-folio-bit-waiting.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m26e2grp0 RnJvbSA5ZDRmMGQ2MGFiYzRkY2U1YjdjZmJhZDQ1NzZhMjgyOTgzMmJiODM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IFNhdCwgMTIgT2N0IDIwMjQgMDk6MzQ6MjQgLTA3MDAKU3ViamVjdDog W1BBVENIXSBUZXN0IGF0b21pYyBmb2xpbyBiaXQgd2FpdGluZwoKLS0tCiBpbmNsdWRlL2xpbnV4 L3BhZ2UtZmxhZ3MuaCB8IDI2ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBtbS9maWxlbWFw LmMgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIG1tL3Bh Z2Utd3JpdGViYWNrLmMgICAgICAgIHwgIDYgKysrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDQ1IGlu c2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv cGFnZS1mbGFncy5oIGIvaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgKaW5kZXggMWIzYTc2NzEw NDg3Li5iMzBhNzNlMWMyYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5o CisrKyBiL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oCkBAIC03MzAsMjIgKzczMCwyOCBAQCBU RVNUUEFHRUZMQUdfRkFMU0UoS3NtLCBrc20pCiB1NjQgc3RhYmxlX3BhZ2VfZmxhZ3MoY29uc3Qg c3RydWN0IHBhZ2UgKnBhZ2UpOwogCiAvKioKLSAqIGZvbGlvX3hvcl9mbGFnc19oYXNfd2FpdGVy cyAtIENoYW5nZSBzb21lIGZvbGlvIGZsYWdzLgorICogZm9saW9feG9yX2ZsYWdzX25vX3dhaXRl cnMgLSBDaGFuZ2UgZm9saW8gZmxhZ3MgaWYgbm8gd2FpdGVycwogICogQGZvbGlvOiBUaGUgZm9s aW8uCi0gKiBAbWFzazogQml0cyBzZXQgaW4gdGhpcyB3b3JkIHdpbGwgYmUgY2hhbmdlZC4KKyAq IEBtYXNrOiBXaGljaCBmbGFncyB0byBjaGFuZ2UuCiAgKgotICogVGhpcyBtdXN0IG9ubHkgYmUg dXNlZCBmb3IgZmxhZ3Mgd2hpY2ggYXJlIGNoYW5nZWQgd2l0aCB0aGUgZm9saW8KLSAqIGxvY2sg aGVsZC4gIEZvciBleGFtcGxlLCBpdCBpcyB1bnNhZmUgdG8gdXNlIGZvciBQR19kaXJ0eSBhcyB0 aGF0Ci0gKiBjYW4gYmUgc2V0IHdpdGhvdXQgdGhlIGZvbGlvIGxvY2sgaGVsZC4gIEl0IGNhbiBh bHNvIG9ubHkgYmUgdXNlZAotICogb24gZmxhZ3Mgd2hpY2ggYXJlIGluIHRoZSByYW5nZSAwLTYg YXMgc29tZSBvZiB0aGUgaW1wbGVtZW50YXRpb25zCi0gKiBvbmx5IGFmZmVjdCB0aG9zZSBiaXRz LgorICogVGhpcyBkb2VzIHRoZSBvcHRpbWlzdGljIGZhc3QtY2FzZSBvZiBjaGFuZ2luZyBwYWdl IGZsYWcgYml0cworICogdGhhdCBoYXMgbm8gd2FpdGVycy4gT25seSBmbGFncyBpbiB0aGUgZmly c3Qgd29yZCBjYW4gYmUgbW9kaWZpZWQsCisgKiBhbmQgdGhlIG9sZCB2YWx1ZSBtdXN0IGJlIHN0 YWJsZSAodHlwaWNhbGx5IHRoaXMgY2xlYXJzIHRoZQorICogbG9ja2VkIG9yIHdyaXRlYmFjayBi aXQgb3Igc2ltaWxhcikuCiAgKgotICogUmV0dXJuOiBXaGV0aGVyIHRoZXJlIGFyZSB0YXNrcyB3 YWl0aW5nIG9uIHRoZSBmb2xpby4KKyAqIFJldHVybjogdHJ1ZSBpZiBpdCBzdWNjZWVkZWQKICAq Lwotc3RhdGljIGlubGluZSBib29sIGZvbGlvX3hvcl9mbGFnc19oYXNfd2FpdGVycyhzdHJ1Y3Qg Zm9saW8gKmZvbGlvLAorc3RhdGljIGlubGluZSBib29sIGZvbGlvX3hvcl9mbGFnc19ub193YWl0 ZXJzKHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJCXVuc2lnbmVkIGxvbmcgbWFzaykKIHsKLQlyZXR1 cm4geG9yX3VubG9ja19pc19uZWdhdGl2ZV9ieXRlKG1hc2ssIGZvbGlvX2ZsYWdzKGZvbGlvLCAw KSk7CisJY29uc3QgdW5zaWduZWQgbG9uZyB3YWl0ZXJfbWFzayA9IDF1bCA8PCBQR193YWl0ZXJz OworCXVuc2lnbmVkIGxvbmcgKmZsYWdzID0gZm9saW9fZmxhZ3MoZm9saW8sIDApOworCXVuc2ln bmVkIGxvbmcgdmFsID0gUkVBRF9PTkNFKCpmbGFncyk7CisJZG8geworCQlpZiAodmFsICYgd2Fp dGVyX21hc2spCisJCQlyZXR1cm4gZmFsc2U7CisJfSB3aGlsZSAoIXRyeV9jbXB4Y2hnX3JlbGVh c2UoZmxhZ3MsICZ2YWwsIHZhbCBeIG1hc2spKTsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoqCmRp ZmYgLS1naXQgYS9tbS9maWxlbWFwLmMgYi9tbS9maWxlbWFwLmMKaW5kZXggNjY0ZTYwN2E3MWVh Li41ZmJhZjZjZWE5NjQgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYworKysgYi9tbS9maWxlbWFw LmMKQEAgLTExNjQsNiArMTE2NCwxNCBAQCBzdGF0aWMgaW50IHdha2VfcGFnZV9mdW5jdGlvbih3 YWl0X3F1ZXVlX2VudHJ5X3QgKndhaXQsIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLAogCXJldHVy biAoZmxhZ3MgJiBXUV9GTEFHX0VYQ0xVU0lWRSkgIT0gMDsKIH0KIAorLyoKKyAqIENsZWFyIHRo ZSBmb2xpbyBiaXQgYW5kIHdha2Ugd2FpdGVycyBhdG9taWNhbGx5IHVuZGVyCisgKiB0aGUgZm9s aW8gd2FpdHF1ZXVlIGxvY2suCisgKgorICogTm90ZSB0aGF0IHRoZSBmYXN0LXBhdGggYWx0ZXJu YXRpdmUgdG8gY2FsbGluZyB0aGlzIGlzCisgKiB0byBhdG9taWNhbGx5IGNsZWFyIHRoZSBiaXQg YW5kIGNoZWNrIHRoYXQgdGhlIFBHX3dhaXRlcnMKKyAqIGJpdCB3YXMgbm90IHNldC4KKyAqLwog c3RhdGljIHZvaWQgZm9saW9fd2FrZV9iaXQoc3RydWN0IGZvbGlvICpmb2xpbywgaW50IGJpdF9u cikKIHsKIAl3YWl0X3F1ZXVlX2hlYWRfdCAqcSA9IGZvbGlvX3dhaXRxdWV1ZShmb2xpbyk7CkBA IC0xMTc1LDYgKzExODMsNyBAQCBzdGF0aWMgdm9pZCBmb2xpb193YWtlX2JpdChzdHJ1Y3QgZm9s aW8gKmZvbGlvLCBpbnQgYml0X25yKQogCWtleS5wYWdlX21hdGNoID0gMDsKIAogCXNwaW5fbG9j a19pcnFzYXZlKCZxLT5sb2NrLCBmbGFncyk7CisJY2xlYXJfYml0X3VubG9jayhiaXRfbnIsIGZv bGlvX2ZsYWdzKGZvbGlvLCAwKSk7CiAJX193YWtlX3VwX2xvY2tlZF9rZXkocSwgVEFTS19OT1JN QUwsICZrZXkpOwogCiAJLyoKQEAgLTE1MDcsNyArMTUxNiw3IEBAIHZvaWQgZm9saW9fdW5sb2Nr KHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJQlVJTERfQlVHX09OKFBHX3dhaXRlcnMgIT0gNyk7CiAJ QlVJTERfQlVHX09OKFBHX2xvY2tlZCA+IDcpOwogCVZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVz dF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7Ci0JaWYgKGZvbGlvX3hvcl9mbGFnc19oYXNfd2FpdGVy cyhmb2xpbywgMSA8PCBQR19sb2NrZWQpKQorCWlmICghZm9saW9feG9yX2ZsYWdzX25vX3dhaXRl cnMoZm9saW8sIDEgPDwgUEdfbG9ja2VkKSkKIAkJZm9saW9fd2FrZV9iaXQoZm9saW8sIFBHX2xv Y2tlZCk7CiB9CiBFWFBPUlRfU1lNQk9MKGZvbGlvX3VubG9jayk7CkBAIC0xNTM1LDEwICsxNTQ0 LDI1IEBAIHZvaWQgZm9saW9fZW5kX3JlYWQoc3RydWN0IGZvbGlvICpmb2xpbywgYm9vbCBzdWNj ZXNzKQogCVZNX0JVR19PTl9GT0xJTyghZm9saW9fdGVzdF9sb2NrZWQoZm9saW8pLCBmb2xpbyk7 CiAJVk1fQlVHX09OX0ZPTElPKGZvbGlvX3Rlc3RfdXB0b2RhdGUoZm9saW8pLCBmb2xpbyk7CiAK KwkvKgorCSAqIFRyeSB0byBjbGVhciAnbG9ja2VkJyBhdCB0aGUgc2FtZSB0aW1lIGFzIHNldHRp bmcgJ3VwdG9kYXRlJworCSAqCisJICogTm90ZSB0aGF0IGlmIHdlIGhhdmUgbG9jayBiaXQgd2Fp dGVycyBhbmQgdGhpcyBmYXN0LWNhc2UgZmFpbHMsCisJICogd2UnbGwgaGF2ZSB0byBjbGVhciB0 aGUgbG9jayBiaXQgYXRvbWljYWxseSB1bmRlciB0aGUgZm9saW8gd2FpdAorCSAqIHF1ZXVlIGxv Y2ssIHNvIHRoZW4gd2UnbGwgc2V0ICd1cGRhdGUnIHNlcGFyYXRlbHkuCisJICoKKwkgKiBOb3Rl IHRoYXQgdGhpcyBpcyBwdXJlbHkgYSAiYXZvaWQgbXVsdGlwbGUgYXRvbWljcyBpbiB0aGUKKwkg KiBjb21tb24gY2FzZSIgLSB3aGlsZSB0aGUgbG9ja2VkIGJpdCBuZWVkcyB0byBiZSBjbGVhcmVk CisJICogc3luY2hyb25vdXNseSB3cnQgd2FpdGVycywgdGhlIHVwdG9kYXRlIGJpdCBoYXMgbm8g c3VjaAorCSAqIHJlcXVpcmVtZW50cy4KKwkgKi8KIAlpZiAobGlrZWx5KHN1Y2Nlc3MpKQogCQlt YXNrIHw9IDEgPDwgUEdfdXB0b2RhdGU7Ci0JaWYgKGZvbGlvX3hvcl9mbGFnc19oYXNfd2FpdGVy cyhmb2xpbywgbWFzaykpCisJaWYgKCFmb2xpb194b3JfZmxhZ3Nfbm9fd2FpdGVycyhmb2xpbywg bWFzaykpIHsKKwkJaWYgKHN1Y2Nlc3MpCisJCQlzZXRfYml0KFBHX3VwdG9kYXRlLCBmb2xpb19m bGFncyhmb2xpbywgMCkpOwogCQlmb2xpb193YWtlX2JpdChmb2xpbywgUEdfbG9ja2VkKTsKKwl9 CiB9CiBFWFBPUlRfU1lNQk9MKGZvbGlvX2VuZF9yZWFkKTsKIApkaWZmIC0tZ2l0IGEvbW0vcGFn ZS13cml0ZWJhY2suYyBiL21tL3BhZ2Utd3JpdGViYWNrLmMKaW5kZXggZmNkNGMxNDM5Y2I5Li4z Mjc3YmMzY2VmZjkgMTAwNjQ0Ci0tLSBhL21tL3BhZ2Utd3JpdGViYWNrLmMKKysrIGIvbW0vcGFn ZS13cml0ZWJhY2suYwpAQCAtMzA4MSw3ICszMDgxLDcgQEAgYm9vbCBfX2ZvbGlvX2VuZF93cml0 ZWJhY2soc3RydWN0IGZvbGlvICpmb2xpbykKIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCQl4 YV9sb2NrX2lycXNhdmUoJm1hcHBpbmctPmlfcGFnZXMsIGZsYWdzKTsKLQkJcmV0ID0gZm9saW9f eG9yX2ZsYWdzX2hhc193YWl0ZXJzKGZvbGlvLCAxIDw8IFBHX3dyaXRlYmFjayk7CisJCXJldCA9 ICFmb2xpb194b3JfZmxhZ3Nfbm9fd2FpdGVycyhmb2xpbywgMSA8PCBQR193cml0ZWJhY2spOwog CQlfX3hhX2NsZWFyX21hcmsoJm1hcHBpbmctPmlfcGFnZXMsIGZvbGlvX2luZGV4KGZvbGlvKSwK IAkJCQkJUEFHRUNBQ0hFX1RBR19XUklURUJBQ0spOwogCQlpZiAoYmRpLT5jYXBhYmlsaXRpZXMg JiBCRElfQ0FQX1dSSVRFQkFDS19BQ0NUKSB7CkBAIC0zMDk5LDcgKzMwOTksNyBAQCBib29sIF9f Zm9saW9fZW5kX3dyaXRlYmFjayhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCiAJCXhhX3VubG9ja19p cnFyZXN0b3JlKCZtYXBwaW5nLT5pX3BhZ2VzLCBmbGFncyk7CiAJfSBlbHNlIHsKLQkJcmV0ID0g Zm9saW9feG9yX2ZsYWdzX2hhc193YWl0ZXJzKGZvbGlvLCAxIDw8IFBHX3dyaXRlYmFjayk7CisJ CXJldCA9ICFmb2xpb194b3JfZmxhZ3Nfbm9fd2FpdGVycyhmb2xpbywgMSA8PCBQR193cml0ZWJh Y2spOwogCX0KIAogCWxydXZlY19zdGF0X21vZF9mb2xpbyhmb2xpbywgTlJfV1JJVEVCQUNLLCAt bnIpOwpAQCAtMzE4NCw3ICszMTg0LDcgQEAgRVhQT1JUX1NZTUJPTChfX2ZvbGlvX3N0YXJ0X3dy aXRlYmFjayk7CiAgKi8KIHZvaWQgZm9saW9fd2FpdF93cml0ZWJhY2soc3RydWN0IGZvbGlvICpm b2xpbykKIHsKLQl3aGlsZSAoZm9saW9fdGVzdF93cml0ZWJhY2soZm9saW8pKSB7CisJaWYgKGZv bGlvX3Rlc3Rfd3JpdGViYWNrKGZvbGlvKSkgewogCQl0cmFjZV9mb2xpb193YWl0X3dyaXRlYmFj ayhmb2xpbywgZm9saW9fbWFwcGluZyhmb2xpbykpOwogCQlmb2xpb193YWl0X2JpdChmb2xpbywg UEdfd3JpdGViYWNrKTsKIAl9Ci0tIAoyLjQ2LjEuNjA4LmdjNTZmMmMxMWM4Cgo= --000000000000cf77a306244a8d90--