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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2B838C43458 for ; Tue, 30 Jun 2026 13:15:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 014306B00AD; Tue, 30 Jun 2026 09:15:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F2FC56B00B4; Tue, 30 Jun 2026 09:15:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E43E56B00B5; Tue, 30 Jun 2026 09:15:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id B29906B00AD for ; Tue, 30 Jun 2026 09:15:53 -0400 (EDT) Received: from smtpin11.hostedemail.com (lb01a-stub [10.200.18.249]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 2FE1F404F0 for ; Tue, 30 Jun 2026 13:15:53 +0000 (UTC) X-FDA: 84936626586.11.8FFA2F9 Received: from outboundhk.mxmail.xiaomi.com (outboundhk.mxmail.xiaomi.com [207.226.244.123]) by imf01.hostedemail.com (Postfix) with ESMTP id 6B54340013 for ; Tue, 30 Jun 2026 13:15:49 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=none; spf=pass (imf01.hostedemail.com: domain of machao26@xiaomi.com designates 207.226.244.123 as permitted sender) smtp.mailfrom=machao26@xiaomi.com; dmarc=pass (policy=quarantine) header.from=xiaomi.com ARC-Seal: i=1; a=rsa-sha256; d=hostedemail.com; s=arc-20220608; cv=none; t=1782825351; b=t2CyledOodoaGceSf3j1vceuhWLp7/onSoChK1tRI8+anOCm9vEMxnyKKkZ9xLY60HoK09 FYwO61P/TjjxDTU0/FJ8vo2Zc6ASEFnSq+0qZOgozpJjR9rDu0Adkf0ZzGUkKec6K9Mp0o zs9BwCHKSOOKYRyyMl+xi+8UGsq8h48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1782825351; 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; bh=YBgx6x4zs6ZlO56XW98vMzwkObgeY6b+aZh0Ee0OFq8=; b=5jehw/Da0jItJ1lIBhi9hLBQcDJcSvJ3q8ddwSN2AHy881u/FQwIzvY+WUX+Jakx4j4Jy9 3fb0li1Ov/aT5iZ6//nK+dCxccFXPrBJcrL8ozLI0a78NspEZO4bf3gdGoLOvgTYqTGVkD 0MXs7iqAHu4ZlAkvB+L1jgGPxKaF7r4= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=none; spf=pass (imf01.hostedemail.com: domain of machao26@xiaomi.com designates 207.226.244.123 as permitted sender) smtp.mailfrom=machao26@xiaomi.com; dmarc=pass (policy=quarantine) header.from=xiaomi.com X-CSE-ConnectionGUID: jx67LCH3TRmByzysTriVuQ== X-CSE-MsgGUID: dEPxJpnCR8+JKFLO05GFRQ== X-IronPort-AV: E=Sophos;i="6.24,233,1774281600"; d="scan'208,217";a="180719597" From: =?gb2312?B?wu2zrA==?= To: Andrew Morton CC: "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , =?gb2312?B?zO/QorHz?= , =?gb2312?B?0+G2q7Hz?= , =?gb2312?B?wO7F9LPM?= Subject: [BUG] shmem: shmem_get_folio_gfp livelock Thread-Topic: [BUG] shmem: shmem_get_folio_gfp livelock Thread-Index: Ad0IicmxtmIrTZWQT5i671sASycsWgAACTVQAACz3LAAAWN2wA== Date: Tue, 30 Jun 2026 13:15:45 +0000 Message-ID: <700a2cbf90a2484f979aac858f08f5d4@xiaomi.com> References: <126cb4ced14f4a3fa40c3189bf8a5920@xiaomi.com> <49858bc642844e3bbf6449c0f241af04@xiaomi.com> In-Reply-To: <49858bc642844e3bbf6449c0f241af04@xiaomi.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.237.88.13] Content-Type: multipart/alternative; boundary="_000_700a2cbf90a2484f979aac858f08f5d4xiaomicom_" MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: 3iegrcymnzhw8hsg61hw3mbexnozitsn X-Rspamd-Queue-Id: 6B54340013 X-Rspamd-Server: rspam06 X-HE-Tag: 1782825349-885968 X-HE-Meta: U2FsdGVkX1/V5dyWZkSfNnQmVPCJCVj2B3FcsIk4o9vkVrzdXAp02ALaRgqE+9RHSRRSBr7zPThwgO8Vak4yRppGBPCxvLFUsFVC/D4bhjIE9pvpsTUiOhtpSPMIqaadEgUS9MU9NQXT4qW8j7+Py75gIJsCBLQIG+UnNkMZo4q0Ziy7nNIRokYAr5zLJ/hbAvgMc4+vf+tqxo21eWlHNvNY4buU8ln5Wc4+okKngsZ6YJIf4HYqdrCTKRmMcxXcRKuw8VEzbF1fgQjMX0GrUqtXKdwhvpUaYx4fpMuFmYyS0AEIGzLZnbpY3QR4bFBIrT9PA8iVoUGILx6BLUEeO+L9m+tVB82dPrNzGjH1LIoi+La53V1oVeHCfwAbXg3K1IKJzjNmthjqX3mq380l9EkZEaekmqVDx58NwC64VA0jTBEBuX6mTLl/8Z8pO/IePNTwA91Mw1ddJkS0mFdSTQVV/xYMTdgJhCDKDU5oDO5pFlx6Fn9vF1e+2bNzPnyRvrwc7PXVK1wbb6Agm949ofczu23Fxfbe8Lu3J+IfiQdldNUs/7a9vArDD5HqIic18UdNpx/FP2qZtaeWSAXo63bN1Zbr5f/5201XBMrmzTSur8oPmLHoHhUarvpIKxbn3j6y9iWbHkAbz8O27Sx7ix7Sv5DjFE4aucp0jX0IOrvbJeDdrTSKNmycFrA+21YlSyoQBDjwLUJVUMISMzaj/17r6/ML2o6MpCx97Jn5AnC5I/94JDgllEUFL3mDOUQDl+ZTe7BQ1mpU2P2vn8wKnp1xIXpcP4poi+C/zOSxeE3FdtiT92z0+EpQuBuLKIXqL85qt/4Z+EnabDZH25TW5i03xmyNuQLTMDDPao6WQxIy3O/esFJPwZDnOgxPadiLa+JEYM/60ezBPfgtamh/3jQ6r0w22dK1bIm2XAA7MEnMStvzYwOLBQLrOGBpv4AKmYap8NE1TzhHqNXutWr va4FL+fO yvMGVdCra/69UYX6UTeak5jOe/M8J/I+hFn6nNef+/qBBYigX96PcZCYkXXjnfDRuXkhU1UvPUAao9j8vWyZAreAhpNdNW7J8je239SP2Shj90hmnMPgH6gosl0opUKYvLLky97gSNHpuGUvn7IA9XAvxbWsrQ2eCNcy0cXiriMbm48i51PYHIQnxwtHxZ39ED5stT+KiA3UwL4erYakSNw0/2NkT1oJR7ZOdfSl7ogpyJgJ7xfwopYzghUriaa/6+m2Z1y/CSWmmBAz8PDJaBNYz73uSj9AzhYKPrydcokh7ASgLQeo84HlhUDtfaURiBx9k28Sfhl6e6QHZa2E/xf+EArQ0POqwBW4yWhXeghuTZEAElhMUBvKLndwkqdtHXPLvB7cwcgpbcKFUCak/K1IwiBKfwFqLGwlgeNPRxMmRj/9liXZw0obwDzGEt1OkHegFTK7BHuNVkY3N7mle+zOkd3TbjFztA39O5zv+fSi6fXw= Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --_000_700a2cbf90a2484f979aac858f08f5d4xiaomicom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGVsbG8sDQpJIGVuY291bnRlcmVkIGEgYnVnIGluIHRoZSBzaG1lbSBzdWJzeXN0ZW0uIERldGFp bHMgYmVsb3cuDQoNCltTdW1tYXJ5XQ0Kc2htZW1fZ2V0X2ZvbGlvX2dmcCgpIGNhbiBsaXZlbG9j ayB3aGVuIG11bHRpcGxlIHRocmVhZHMgZmF1bHQgb24gdGhlDQpzYW1lIHNobWVtIHBhZ2UgY29u Y3VycmVudGx5LiBUaGUgLUVFWElTVCByZXRyeSBsb29wIChnb3RvIHJlcGVhdCkgaGFzDQpubyBj b25kX3Jlc2NoZWQoKSwgY2F1c2luZyBidXN5LWxvb3BpbmcgdGhyZWFkcyB0byBzdGFydmUgdGhl IHRocmVhZA0KdGhhdCBob2xkcyB0aGUgc3dhcGNhY2hlIHNsb3QsIHJlc3VsdGluZyBpbiBhbiBp bmRlZmluaXRlIFJDVSBzdGFsbCBhbmQNCnN5c3RlbSBoYW5nLg0KW0Vudmlyb25tZW50XQ0KMS5L ZXJuZWw6IDYuMTguMjEgKEFSTTY0LCBQUkVFTVBULCBDT05GSUdfTFJVX0dFTj15KQ0KMi5Ucmln Z2VyZWQgYnk6IG11bHRpLXRocmVhZGVkIGFwcCB3aXRoIHRocmVhZHMgY29uc3RyYWluZWQgdG8g MiBDUFVzDQp2aWEgY3B1c2V0DQpbUm9vdCBDYXVzZV0NCldoZW4gbXVsdGlwbGUgdGhyZWFkcyBp biB0aGUgc2FtZSBwcm9jZXNzIGZhdWx0IG9uIHRoZSBzYW1lIHNobWVtDQpzd2FwIGVudHJ5Og0K MS5UaHJlYWQgQSBlbnRlcnMgc2htZW1fc3dhcF9hbGxvY19mb2xpbygpLCBzdWNjZWVkcyBhdA0K c3dhcGNhY2hlX3ByZXBhcmUoKSAoc2V0cyBTV0FQX0hBU19DQUNIRSksIHRoZW4gZW50ZXJzDQp3 b3JraW5nc2V0X3JlZmF1bHQoKSCh+iBscnVfZ2VuX3JlZmF1bHQoKSCh+iByY3VfcmVhZF9sb2Nr KCkuDQpXaGlsZSBpbnNpZGUgdGhlIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiwgaXQg aXMNCnByZWVtcHRlZCB2aWEgcHJlZW1wdF9zY2hlZHVsZV9pcnEgKElSUSBleGl0IHBhdGggZGV0 ZWN0cw0KVElGX05FRURfUkVTQ0hFRCkuDQoyLlRocmVhZHMgQiAmIEMgZW50ZXIgc2htZW1fc3dh cF9hbGxvY19mb2xpbygpLCBmYWlsIGF0DQpzd2FwY2FjaGVfcHJlcGFyZSgpIChzbG90IGFscmVh ZHkgdGFrZW4gYnkgQSksIHJldHVybiAtRUVYSVNULg0KMy5JbiBzaG1lbV9nZXRfZm9saW9fZ2Zw KCk6DQogICAgZXJyb3IgPSBzaG1lbV9zd2FwaW5fZm9saW8oLi4uKTsNCiAgICBpZiAoZXJyb3Ig PT0gLUVFWElTVCkNCiAgICAgICAgZ290byByZXBlYXQ7Ly8gbm8gY29uZF9yZXNjaGVkKCksIHRp Z2h0IGxvb3ANCjQuVGhyZWFkcyBCICYgQyBzcGluIGF0IDEwMCUgQ1BVIG9uIHRoZSByZXRyeSBs b29wLiBBbGwgdGhyZWUNCnRocmVhZHMgc2hhcmUgdGhlIHNhbWUgY3B1c2V0IChDUFUwLTEsY3B1 c19hbGxvd2VkPTB4MykuVGhyZWFkIEENCmlzIHBlcnBldHVhbGx5IHByZWVtcHRlZCBhbmQgc3Rh cnZlZCChqiBpdCBjYW5ub3QgY29tcGxldGUgdGhlDQpmZXcgaW5zdHJ1Y3Rpb25zIG5lZWRlZCB0 byBjYWxsIHJjdV9yZWFkX3VubG9jaygpLg0KNS5UaGUgaGVsZCBSQ1UgcmVhZCBsb2NrIGJsb2Nr cyB0aGUgZ3JhY2UgcGVyaW9kIGluZGVmaW5pdGVseSwNCmNhdXNpbmcgYWxsIHN5bmNocm9uaXpl X3JjdSgpIGNhbGxlcnMgKGNncm91cCBvcGVyYXRpb25zLA0KZmQgYWxsb2NhdGlvbiwgZXRjLikg dG8gaGFuZywgZXZlbnR1YWxseSBibG9ja2luZyBpbml0Lg0KW1NjaGVkdWxpbmcgRGV0YWlsc10N CktleSBvYnNlcnZhdGlvbnM6DQoxLlRocmVhZCBBIHdhcyBSQ1UtYm9vc3RlZCB0byBwcmlvIDk4 IGJ1dCBhY2N1bXVsYXRlZCBvbmx5DQo5OW1zIG9mIGV4ZWN1dGlvbiBvdmVyIHRoZSBlbnRpcmUg c3RhbGwgcGVyaW9kICh+MTIwMHMpLg0KSXQgd2FzIGVmZmVjdGl2ZWx5IHN0YXJ2ZWQgZGVzcGl0 ZSB0aGUgcHJpb3JpdHkgYm9vc3QuDQoyLlRocmVhZHMgQiAmIEMgaGF2ZSB2cnVudGltZT0wIGFu ZCBwcmlvIDkxLCBpbmRpY2F0aW5nDQp0aGV5IHJ1biBpbiBhbiBSVC1lcXVpdmFsZW50IHNjaGVk dWxpbmcgY2xhc3MgKFNDSEVEX0ZJRk8vUlQNCnBvbGljeSkuIEVhY2ggYWNjdW11bGF0ZWQgfjEx MzQgc2Vjb25kcyBvZiBleGVjdXRpb24gd2l0aA0Kb25seSB+MTYwMCBjb250ZXh0IHN3aXRjaGVz LCBtZWFuaW5nIHRoZXkgcmFuIHVuaW50ZXJydXB0ZWQNCmZvciB+NzAwbXMgcGVyIHNjaGVkdWxp bmcgcXVhbnR1bSBvbiBhdmVyYWdlLg0KMy5UaHJlYWQgQSBjYW5ub3QgcHJlZW1wdCBUaHJlYWRz IEIgJiBDOiBBbHRob3VnaCBSQ1UgYm9vc3QNCnJhaXNlZCBUaHJlYWQgQSB0byBwcmlvIDk4LCBU aHJlYWRzIEIgJiBDIGF0IHByaW8gOTEgKGxvd2VyDQpudW1lcmljIHZhbHVlID0gaGlnaGVyIHBy aW9yaXR5IGluIFJUIGNsYXNzKSBoYXZlIGVxdWFsIG9yDQpoaWdoZXIgZWZmZWN0aXZlIHByaW9y aXR5LiBUaGUgYnVzeS1sb29waW5nIHRocmVhZHMgbmV2ZXINCnZvbHVudGFyaWx5IHlpZWxkIChu byBjb25kX3Jlc2NoZWQoKSwgbm8gYmxvY2tpbmcgY2FsbHMgaW4NCnRoZSBsb29wKSwgc28gVGhy ZWFkIEEgbmV2ZXIgZ2V0cyBzY2hlZHVsZWQuDQo0LkNQVSBjb250ZW50aW9uOiBDUFUwIGhhZCBu cl9ydW5uaW5nPTI4IGFuZCBDUFUxIGhhZA0KbnJfcnVubmluZz0yNCwgd2l0aCAzLTQgUlQgdGFz a3MgcGVyIENQVS4gVGhyZWFkIEEgY29tcGV0ZWQNCndpdGggVGhyZWFkIEIgb24gQ1BVMCBidXQg Y291bGQgbm90IHdpbiBzY2hlZHVsaW5nLg0KW09ic2VydmVkIEltcGFjdF0NCjEuUkNVIHN0YWxs IGxhc3RpbmcgOTEwKyBzZWNvbmRzICgxOSBjb25zZWN1dGl2ZSBzdGFsbA0Kd2FybmluZ3MsIGdy YWNlIHBlcmlvZCBnPTQzOTg3NjEgbmV2ZXIgYWR2YW5jZWQpDQoyLnN5bmNocm9uaXplX3JjdV9l eHBlZGl0ZWQoKSBjYWxsZXJzIGJsb2NrZWQgNzQyKyBzZWNvbmRzDQozLmluaXQgcHJvY2VzcyBo dW5nID4gNzIwIHNlY29uZHMgofogc3lzdGVtIHVucmVzcG9uc2l2ZQ0KW0NhbGwgVHJhY2VzXQ0K VGhyZWFkIEEgKFJDVSBzdGFsbCBzb3VyY2UsIHNhbXBsZWQgMTkgdGltZXMgaWRlbnRpY2FsbHkp Og0KX19zd2l0Y2hfdG8rMHgxYTQvMHgzNjAgKFQpDQpfX3NjaGVkdWxlKzB4OTZjLzB4ZjNjDQpw cmVlbXB0X3NjaGVkdWxlX2lycSsweGVjLzB4MTk4DQpyYXdfaXJxZW50cnlfZXhpdF9jb25kX3Jl c2NoZWQrMHgyYy8weDQ0DQppcnFlbnRyeV9leGl0KzB4MzgvMHg2NA0KZXhpdF90b19rZXJuZWxf bW9kZSsweDI4LzB4MzgNCmVsMV9pbnRlcnJ1cHQrMHg1Yy8weGE4DQplbDFoXzY0X2lycV9oYW5k bGVyKzB4MTgvMHgyNA0KZWwxaF82NF9pcnErMHg4NC8weDg4DQp3b3JraW5nc2V0X3JlZmF1bHQr MHgxNmMvMHg3OWMgKFApDQogIHNobWVtX3N3YXBpbl9mb2xpbysweDhlNC8weGQ0NA0KICAgIHNo bWVtX2dldF9mb2xpb19nZnArMHhiOC8weDcxMA0KICAgICAgc2htZW1fZmF1bHQrMHhhMC8weDE3 NA0KICAgICAgICBfX2RvX2ZhdWx0DQpkb19wdGVfbWlzc2luZw0KaGFuZGxlX21tX2ZhdWx0DQpk b19wYWdlX2ZhdWx0DQplbDBfaWENCg0KVGhyZWFkIEIgKGJ1c3ktbG9vcCBvbiBDUFUwLCBzdW1f ZXhlY19ydW50aW1lPTExMzRzKToNCnhhc19sb2FkKzB4NzgvMHhlNCAoUCkNCiAgc2htZW1fc3dh cGluX2ZvbGlvKzB4OTUwLzB4ZDQ0DQogICAgc2htZW1fZ2V0X2ZvbGlvX2dmcCsweGI4LzB4NzEw DQogICAgICBzaG1lbV9mYXVsdCCh+iAuLi4gofogZWwwX2lhDQoNClRocmVhZCBDIChidXN5LWxv b3Agb24gQ1BVMSwgc3VtX2V4ZWNfcnVudGltZT0xMTM0cyk6DQp4YXNfbG9hZCsweDUwLzB4ZTQg KFApDQogIHNobWVtX3N3YXBpbl9mb2xpbysweGQ4LzB4ZDQ0DQogICAgc2htZW1fZ2V0X2ZvbGlv X2dmcCsweGI4LzB4NzEwDQogICAgICBzaG1lbV9mYXVsdCCh+iAuLi4gofogZWwwX2lhDQpbUXVl c3Rpb25dDQpXaGF0IGlzIHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaCB0byBmaXggdGhpcyBsaXZl bG9jaz8NCldlIGFyZSBjb25zaWRlcmluZyBhZGRpbmcgYSBjb25kX3Jlc2NoZWQoKSBiZWZvcmUg dGhlDQpnb3RvIHJlcGVhdCBpbiBzaG1lbV9nZXRfZm9saW9fZ2ZwKCkgdG8gYnJlYWsgdGhlIHRp Z2h0DQpsb29wIGFuZCBhbGxvdyB0aGUgc3dhcGNhY2hlLWhvbGRpbmcgdGhyZWFkIHRvIG1ha2UN CnByb2dyZXNzLiBXb3VsZCB0aGlzIGJlIGFuIGFjY2VwdGFibGUgZml4LCBvciBpcyB0aGVyZQ0K YSBiZXR0ZXIgc3RyYXRlZ3kgKGUuZy4sIGJvdW5kZWQgcmV0cnkgd2l0aCBmYWxsYmFjaywNCm9y IHlpZWxkaW5nIHRvIHRoZSBzcGVjaWZpYyB3YWl0ZXIpPw0KDQpUaGFua3MsDQpDaGFvIE1hDQoj LyoqKioqKrG+08q8/rywxuS4vbz+uqzT0NChw9e5q8u+tcSxo8Pc0MXPoqOsvfbP3tPat6LLzbj4 yc/D5rXY1rfW0MHQs/a1xLj2yMu78si61+mho7371rnIzrrOxuTL+8jL0tTIzrrO0M7Kvcq508Oj qLD8wKi1q7K7z97T2sirsr+78rK/t9a12NC5wrahori01sahorvyyaK3oqOpsb7Tyrz+1tC1xNDF z6Kho8jnufvE+rTtytXBy7G+08q8/qOsx+vE+sGivLS157uwu/LTyrz+zajWqreivP7Iy7Kiyb6z /bG+08q8/qOhIFRoaXMgZS1tYWlsIGFuZCBpdHMgYXR0YWNobWVudHMgY29udGFpbiBjb25maWRl bnRpYWwgaW5mb3JtYXRpb24gZnJvbSBYSUFPTUksIHdoaWNoIGlzIGludGVuZGVkIG9ubHkgZm9y IHRoZSBwZXJzb24gb3IgZW50aXR5IHdob3NlIGFkZHJlc3MgaXMgbGlzdGVkIGFib3ZlLiBBbnkg dXNlIG9mIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGluIGFueSB3YXkgKGluY2x1 ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvLCB0b3RhbCBvciBwYXJ0aWFsIGRpc2Nsb3N1cmUsIHJl cHJvZHVjdGlvbiwgb3IgZGlzc2VtaW5hdGlvbikgYnkgcGVyc29ucyBvdGhlciB0aGFuIHRoZSBp bnRlbmRlZCByZWNpcGllbnQocykgaXMgcHJvaGliaXRlZC4gSWYgeW91IHJlY2VpdmUgdGhpcyBl LW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBieSBwaG9uZSBvciBlbWFp bCBpbW1lZGlhdGVseSBhbmQgZGVsZXRlIGl0ISoqKioqKi8jDQo= --_000_700a2cbf90a2484f979aac858f08f5d4xiaomicom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hello,

I encountered a bug in the shmem subsystem. Details be= low.

 

[Summary]

shmem_get_folio_gfp() can livelock when multiple threa= ds fault on the

same shmem page concurrently. The -EEXIST retry loop (= goto repeat) has

no cond_resched(), causing busy-looping threads to sta= rve the thread

that holds the swapcache slot, resulting in an indefin= ite RCU stall and

system hang.

[Environment]

1.Kernel: 6.18.21 (ARM64, PREEMPT, CONFIG_LRU_GEN=3Dy)=

2.Triggered by: multi-threaded app with threads constr= ained to 2 CPUs

via cpuset

[Root Cause]

When multiple threads in the same process fault on the= same shmem

swap entry:

1.Thread A enters shmem_swap_alloc_folio(), succeeds a= t

swapcache_prepare() (sets SWAP_HAS_CACHE), then enters

workingset_refault() =A1=FA lru_gen_refault() =A1=FA rcu_read_lock().

While inside the RCU read-side critical section, it is

preempted via preempt_schedule_irq (IRQ exit path dete= cts

TIF_NEED_RESCHED).

2.Threads B & C enter shmem_swap_alloc_folio(), fa= il at

swapcache_prepare() (slot already taken by A), return = -EEXIST.

3.In shmem_get_folio_gfp():

    error =3D shmem_swapin_folio(...);<= o:p>

    if (error =3D=3D -EEXIST)

        goto repeat= ;// no cond_resched(), tight loop

4.Threads B & C spin at 100% CPU on the retry loop= . All three

threads share the same cpuset (CPU0-1,cpus_allowed=3D0= x3).Thread A

is perpetually preempted and starved =A1=AA it cannot complete the

few instructions needed to call rcu_read_unlock().

5.The held RCU read lock blocks the grace period indef= initely,

causing all synchronize_rcu() callers (cgroup operatio= ns,

fd allocation, etc.) to hang, eventually blocking init= .

[Scheduling Details]

Key observations:

1.Thread A was RCU-boosted to prio 98 but accumulated = only

99ms of execution over the entire stall period (~1200s= ).

It was effectively starved despite the priority boost.=

2.Threads B & C have vruntime=3D0 and prio 91, ind= icating

they run in an RT-equivalent scheduling class (SCHED_F= IFO/RT

policy). Each accumulated ~1134 seconds of execution w= ith

only ~1600 context switches, meaning they ran uninterr= upted

for ~700ms per scheduling quantum on average.

3.Thread A cannot preempt Threads B & C: Although = RCU boost

raised Thread A to prio 98, Threads B & C at prio = 91 (lower

numeric value =3D higher priority in RT class) have eq= ual or

higher effective priority. The busy-looping threads ne= ver

voluntarily yield (no cond_resched(), no blocking call= s in

the loop), so Thread A never gets scheduled.

4.CPU contention: CPU0 had nr_running=3D28 and CPU1 ha= d

nr_running=3D24, with 3-4 RT tasks per CPU. Thread A c= ompeted

with Thread B on CPU0 but could not win scheduling.

[Observed Impact]

1.RCU stall lasting 910+ seconds (19 consecutive s= tall

warnings, grace period g=3D4398761 never advanced)

2.synchronize_rcu_expedited() callers blocked 742+= seconds

3.init process hung > 720 seconds =A1=FA system unresponsive

[Call Traces]

Thread A (RCU stall source, sampled 19 times identical= ly):

__switch_to+0x1a4/0x360 (T)

__schedule+0x96c/0xf3c

preempt_schedule_irq+0xec/0x198<= /p>

raw_irqentry_exit_cond_resched+0x2c/0x44

irqentry_exit+0x38/0x64

exit_to_kernel_mode+0x28/0x38

el1_interrupt+0x5c/0xa8

el1h_64_irq_handler+0x18/0x24

el1h_64_irq+0x84/0x88

workingset_refault+0x16c/0x79c (P)

  shmem_swapin_folio+0x8e4/0xd44

    shmem_get_folio_gfp+0xb8/0x710<= o:p>

      shmem_fault+0xa0/0x= 174

        __do_fault

do_pte_missing

handle_mm_fault

do_page_fault

el0_ia

 

Thread B (busy-loop on CPU0, sum_exec_runtime=3D1134s)= :

xas_load+0x78/0xe4 (P)

  shmem_swapin_folio+0x950/0xd44

    shmem_get_folio_gfp+0xb8/0x710<= o:p>

      shmem_fault =A1=FA ... =A1=FA el0_ia

 

Thread C (busy-loop on CPU1, sum_exec_runtime=3D1134s)= :

xas_load+0x50/0xe4 (P)

  shmem_swapin_folio+0xd8/0xd44

    shmem_get_folio_gfp+0xb8/0x710<= o:p>

      shmem_fault =A1=FA ... =A1=FA el0_ia

[Question]

What is the recommended approach to fix this livelock?=

We are considering adding a cond_resched() before the<= o:p>

goto repeat in shmem_get_folio_gfp() to break the tigh= t

loop and allow the swapcache-holding thread to make

progress. Would this be an acceptable fix, or is there=

a better strategy (e.g., bounded retry with fallback,<= o:p>

or yielding to the specific waiter)?=

 

Thanks,

Chao Ma

#/******=B1=BE=D3=CA=BC=FE=BC=B0=C6=E4=B8=BD=BC=FE=BA=AC=D3=D0=D0=A1=C3=D7= =B9=AB=CB=BE=B5=C4=B1=A3=C3=DC=D0=C5=CF=A2=A3=AC=BD=F6=CF=DE=D3=DA=B7=A2=CB= =CD=B8=F8=C9=CF=C3=E6=B5=D8=D6=B7=D6=D0=C1=D0=B3=F6=B5=C4=B8=F6=C8=CB=BB=F2= =C8=BA=D7=E9=A1=A3=BD=FB=D6=B9=C8=CE=BA=CE=C6=E4=CB=FB=C8=CB=D2=D4=C8=CE=BA= =CE=D0=CE=CA=BD=CA=B9=D3=C3=A3=A8=B0=FC=C0=A8=B5=AB=B2=BB=CF=DE=D3=DA=C8=AB= =B2=BF=BB=F2=B2=BF=B7=D6=B5=D8=D0=B9=C2=B6=A1=A2=B8=B4=D6=C6=A1=A2=BB=F2=C9= =A2=B7=A2=A3=A9=B1=BE=D3=CA=BC=FE=D6=D0=B5=C4=D0=C5=CF=A2=A1=A3=C8=E7=B9=FB= =C4=FA=B4=ED=CA=D5=C1=CB=B1=BE=D3=CA=BC=FE=A3=AC=C7=EB=C4=FA=C1=A2=BC=B4=B5= =E7=BB=B0=BB=F2=D3=CA=BC=FE=CD=A8=D6=AA=B7=A2=BC=FE=C8=CB=B2=A2=C9=BE=B3=FD= =B1=BE=D3=CA=BC=FE=A3=A1 This e-mail and its attachments contain confidenti= al information from XIAOMI, which is intended only for the person or entity= whose address is listed above. Any use of the information contained herein in any way (i= ncluding, but not limited to, total or partial disclosure, reproduction, or= dissemination) by persons other than the intended recipient(s) is prohibit= ed. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete i= t!******/# --_000_700a2cbf90a2484f979aac858f08f5d4xiaomicom_--