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 AAB0DC47DD9 for ; Wed, 28 Feb 2024 03:54:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0638A6B01FB; Tue, 27 Feb 2024 22:54:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id F2E856B01FC; Tue, 27 Feb 2024 22:54:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DA7D36B01FF; Tue, 27 Feb 2024 22:54:11 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id C59986B01FB for ; Tue, 27 Feb 2024 22:54:11 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7B8601C0E38 for ; Wed, 28 Feb 2024 03:54:11 +0000 (UTC) X-FDA: 81839844702.17.72B995F Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) by imf25.hostedemail.com (Postfix) with ESMTP id C3D48A000D for ; Wed, 28 Feb 2024 03:54:08 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=WuUhNqnS; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf25.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.160.46 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709092448; 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=9KY8CoTVB6M487loVkFhchrHttyfk+9wVAAJEvNgRsw=; b=SLq0dJxO8mJIWT7mChTqzXuPWuuRrHg6gLSK4ttX/0QVOQP3yEJlV8q1kDK9TLjORQujXV Y8dNbLHFXK1gwIXV9qkQg0B2ClmALplo0sImz33AdtG9lSzxo34TNTw3EziOwBYvG+yGUp 1hr9kqWTNa7sdBUOl7/Ks+dVFTpUCXY= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=WuUhNqnS; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf25.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.160.46 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709092448; a=rsa-sha256; cv=none; b=MF7AOvKSEwbTMaObCyqxt62tMRBLPlqkvCWcKU10B8LDf2LNIo0p48HORusZeMpmVBkRYD SC1q2W5fP0lXPYSC33VVlevs87x4SXWvL1KwHku0sVt4KX3Ah77821Eim4cFx+0eCjsc3N /Uso8+QIPOs6YyTwq4yfKFlTyqLOKWc= Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-21f70f72fb5so3425805fac.1 for ; Tue, 27 Feb 2024 19:54:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1709092448; x=1709697248; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=9KY8CoTVB6M487loVkFhchrHttyfk+9wVAAJEvNgRsw=; b=WuUhNqnSbvij2WrMhNWKSpKECFnhiDpUS+hNZTTnl0SR+zIZTes/MuFWykZXRkgw7t JHHPl0g1ml4jbl4O+m3m/S+H79vEOw+jfBEZNH2PkulRFXQ2AgzpYg30Dq6u8sw6WvKk LahZ8gLl3o5BaJoGA5JKoLkrhyxu5Yf/isdM8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709092448; x=1709697248; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=9KY8CoTVB6M487loVkFhchrHttyfk+9wVAAJEvNgRsw=; b=FHkCahHCy01EhZAVQTph8G0xR6bdlGNUzD1MglNicJ0nU2NFVIybbU0DOSeMQZDXk3 rOEHFVR9F9BlQ1Pk9R7/aXUgjaZ5l0ybChpqXNGkeY/c+gXVT7lZHvHW/cG+APzQ+ayK ISdyd7mSN1Pq1vuR+uUrpx9QmNPmLeha2C3pAjmw8oifxlG9sTwF48YO6K7dzugzSnCA fj3JipSlQBcAAPe/cni+eP4i/zWmX3H58oMGqAj86Yne/+lkYJdVwdsjsdj2Q6vJ6CT5 a5zQgg0LB4zOYrveEryEnyYaQ+pi9eKa9DXedJqz76tZlRUm0WvR8PO1NBC69hCDmZIh LOAQ== X-Forwarded-Encrypted: i=1; AJvYcCXpzQHYKcZpu9+ETtydUMqXu9LSnJX3hAPMim0rMMkh+UTC+Ttea5HCeaMydBX20CtJrJaqilLpMxF1cikN0hGcBdo= X-Gm-Message-State: AOJu0Yx2rP22QsVUiAbUb3aJeB9DK3uvNZziZ389QHiMB7cVtEq8xQqg 6dXD65bA+0C5x+8U2WXTOEpGFhYQAulX8H+ZVeoT7ic8p/+0nzfo/MMdZztp1g== X-Google-Smtp-Source: AGHT+IGJY8hhhtb7cW2zfwnaoGLplFysBjz2rL6AUTpyPAHUKj4C+RVZd7BcUYvG6epTqHiCyB82BA== X-Received: by 2002:a05:6871:520c:b0:21f:cc34:ad6b with SMTP id ht12-20020a056871520c00b0021fcc34ad6bmr13281418oac.50.1709092447868; Tue, 27 Feb 2024 19:54:07 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:f4f0:fb4d:aa01:9068]) by smtp.gmail.com with ESMTPSA id du15-20020a056a002b4f00b006e3a69eb6c4sm6683755pfb.219.2024.02.27.19.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 19:54:07 -0800 (PST) Date: Wed, 28 Feb 2024 12:54:03 +0900 From: Sergey Senozhatsky To: Chengming Zhou Cc: yosryahmed@google.com, Sergey Senozhatsky , hannes@cmpxchg.org, nphamcs@gmail.com, Andrew Morton , Minchan Kim , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 0/2] mm/zsmalloc: simplify synchronization between zs_page_migrate() and free_zspage() Message-ID: <20240228035403.GE11972@google.com> References: <20240226-zsmalloc-zspage-rcu-v1-0-456b0ef1a89d@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240226-zsmalloc-zspage-rcu-v1-0-456b0ef1a89d@bytedance.com> X-Rspamd-Queue-Id: C3D48A000D X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 6u484o9fzo3ba44w7uudgiq67cd1ykb1 X-HE-Tag: 1709092448-356458 X-HE-Meta: U2FsdGVkX194b2/f8afaBnxrR4hwyRquL03n+bGCpiI8pVeIJXrDtrSdKDapKjdQSO9xhdSwaQwF7zSJ7w1EzIVxlaAxBIPRCpFwrD05RnL+KGIuKp5FWqvMWXdvQpe4BgAozheHLjQdmA3ZdqwkI7dLe0+ozk4cjQapRxF6dj59UrYzz8p+6XKVRYJ7u8ZGtmddgvy95RgLkyDS3jTKsZe54kaepglmYjEwutdWmqzZR9zdPy4/O5dvHov0oD9w8f6ryFS1iJ+6i3XKGZhXmpQeCs2ghm7eR781Yy4TU/OTbo+faQE6erFKA0AIpuO54oJhhhaGSCOzAlH2oUbgA46k/z10or9fkf31AR+U0zrs+iR+dda/huSeBDJmFAhZ9aYntoqxuHD8LzZn2QGp99uiZ+3aUX09fFZgFYW7NuzQhuZwsMu0KTf6xhX7OcRTQHOu1Ftu/ijMMFIk0KFbILzfPF91MkMytHGj3CF/eBSMuHGRGQViVx+obanFhaasZhT62yifvWmR6VFuCdXzL9JsTG8Dsqg3vgzjXiDh0Rx3c/uq/IbczN1srCkdfvs6BfIoHOWlc2+mwWSPtZ+h7PDsdadlAJABrZTiVt1OpSozcuKcJ5l2hLfshkVNZo8YqWiSIq3W1Od/1doebZqLin2doygdRzPadfR/gsUFwubeTK7QNkMbOklzzxIHMSlrz61GLitoItpMHvuN0IzVfcBJVJPsVZy9p/8DlL5SI0JPuPJ7yrwBO4SfxuUX06Ejod3sHvS17A7LEprDpBdBMQArXcLNVgZ1aPmWlgBVglL7p6JZ0t4Mv6OVg9ZYwXzTKUb8MBkQTwyHgiAIdaePDAIy1tO9KaATMM+6ZyzuMjbFksUUU3sktHpAdXYGLh1AW6CpusnaER5HS4fhp/N4gkZVcRyt8nFNo8h/xsTkTWBZP3J0WP8rR7mIRR9p/lDBjcSyNeUP4hpIoEDAtn2 hGHo6iLv 1o0qdIyTrUybcucIR8LVTn5Pq4te0RkPkZpzRTDo/Xv5Ll4mDyWYZkfY1Y8XK8x5DoVMBjrsvMz58BvMadEDxqcm2YA== 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: On (24/02/27 03:02), Chengming Zhou wrote: > free_zspage() has to hold locks of all pages, since zs_page_migrate() > path rely on this page lock to protect the race between zs_free() and > it, so it can safely get zspage from page->private. > > But this way is not good and simple enough: > > 1. Since zs_free() couldn't be sleepable, it can only trylock pages, > or has to kick_deferred_free() to defer that to a work. > > 2. Even in the worker context, async_free_zspage() can't simply > lock all pages in lock_zspage(), it's still trylock because of > the race between zs_free() and zs_page_migrate(). Please see > the commit 2505a981114d ("zsmalloc: fix races between asynchronous > zspage free and page migration") for details. > > Actually, all free_zspage() needs is to get zspage from page safely, > we can use RCU to achieve it easily. Then free_zspage() don't need to > hold locks of all pages, so don't need the deferred free mechanism > at all. This patchset implements it and remove all of deferred free > related code. > > Thanks for review and comments! > > Signed-off-by: Chengming Zhou > --- > Chengming Zhou (2): > mm/zsmalloc: don't hold locks of all pages when free_zspage() That seems to be crashing on me: [ 28.123867] ================================================================== [ 28.125303] BUG: KASAN: null-ptr-deref in obj_malloc+0xa9/0x1f0 [ 28.126289] Read of size 8 at addr 0000000000000028 by task mkfs.ext2/432 [ 28.127414] [ 28.127684] CPU: 8 PID: 432 Comm: mkfs.ext2 Tainted: G N 6.8.0-rc5+ #309 [ 28.129015] Call Trace: [ 28.129442] [ 28.129805] dump_stack_lvl+0x6f/0xab [ 28.130437] print_report+0xe0/0x5e0 [ 28.131050] ? _printk+0x59/0x7b [ 28.131602] ? kasan_report+0x96/0x120 [ 28.132233] ? obj_malloc+0xa9/0x1f0 [ 28.132837] kasan_report+0xe7/0x120 [ 28.133441] ? obj_malloc+0xa9/0x1f0 [ 28.134046] obj_malloc+0xa9/0x1f0 [ 28.134633] zs_malloc+0x22c/0x3e0 [ 28.135211] zram_submit_bio+0x44e/0xee0 [ 28.135871] ? lock_release+0x50c/0x700 [ 28.136520] submit_bio_noacct_nocheck+0x22a/0x650 [ 28.137327] __block_write_full_folio+0x48b/0x710 [ 28.138119] ? __cfi_blkdev_get_block+0x10/0x10 [ 28.138885] ? __cfi_block_write_full_folio+0x10/0x10 [ 28.139737] write_cache_pages+0x83/0xf0 [ 28.140397] ? __cfi_blkdev_get_block+0x10/0x10 [ 28.141152] blkdev_writepages+0x46/0x80 [ 28.141810] do_writepages+0x1be/0x400 [ 28.142443] file_write_and_wait_range+0x104/0x170 [ 28.143254] blkdev_fsync+0x4a/0x70 [ 28.143846] __x64_sys_fsync+0xe9/0x120 [ 28.144491] do_syscall_64+0x8d/0x130 [ 28.145106] entry_SYSCALL_64_after_hwframe+0x46/0x4e