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 33D74C6FD1D for ; Tue, 4 Apr 2023 08:20:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 90E396B0071; Tue, 4 Apr 2023 04:20:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8BCFF6B0074; Tue, 4 Apr 2023 04:20:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7AC6D6B0075; Tue, 4 Apr 2023 04:20:22 -0400 (EDT) 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 6C5CD6B0071 for ; Tue, 4 Apr 2023 04:20:22 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 2D9F71208C1 for ; Tue, 4 Apr 2023 08:20:22 +0000 (UTC) X-FDA: 80643011484.17.3A7BA6C Received: from www262.sakura.ne.jp (www262.sakura.ne.jp [202.181.97.72]) by imf22.hostedemail.com (Postfix) with ESMTP id 38201C0011 for ; Tue, 4 Apr 2023 08:20:18 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=none; spf=none (imf22.hostedemail.com: domain of penguin-kernel@I-love.SAKURA.ne.jp has no SPF policy when checking 202.181.97.72) smtp.mailfrom=penguin-kernel@I-love.SAKURA.ne.jp; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680596420; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vURhHzW8/1oEjQEm+CcLRpPFDnTfzSiEQIlnNyhs+Ko=; b=uO/6KwxszteWWZuo1NAHaKiJ3YBdkvk6aDUl1ReaBMaXbKB1JKXfv+pYt8r4dSvnEAnfVo 6F7L9d/4Eb1Xzu/xIOe8zGLRt/9KXuZ5JLyORMTsR0UVuq/jwQt7/kKMZ5CYFqCrCJ6nG2 AbE2/xPpVz3cdhDuHZW0ColxTNtmd+0= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=none; spf=none (imf22.hostedemail.com: domain of penguin-kernel@I-love.SAKURA.ne.jp has no SPF policy when checking 202.181.97.72) smtp.mailfrom=penguin-kernel@I-love.SAKURA.ne.jp; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680596420; a=rsa-sha256; cv=none; b=1CHoY2jzXKfU/W+wjBYA3bAK3zPi/ns3znD93GXYIyW6Kr0oNkMqlC8RUi5fXu9y5iRZKX 7kzKwAFV5RHJnbuZ5ExqO3hBWO2GvP8fzfanrQSERj6mxZTGq3fQfXyDt7mnbJOXIl+8O6 n00EXHxnaZPU3tQiXt9OwukaNMoFUBA= Received: from fsav311.sakura.ne.jp (fsav311.sakura.ne.jp [153.120.85.142]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 3348K1eS098717; Tue, 4 Apr 2023 17:20:01 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav311.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav311.sakura.ne.jp); Tue, 04 Apr 2023 17:20:01 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav311.sakura.ne.jp) Received: from [192.168.1.6] (M106072142033.v4.enabler.ne.jp [106.72.142.33]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 3348K1Pw098714 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NO); Tue, 4 Apr 2023 17:20:01 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Message-ID: <0585ddb9-5de8-8cdd-202e-53887bbb6b5f@I-love.SAKURA.ne.jp> Date: Tue, 4 Apr 2023 17:20:02 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH] mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock Content-Language: en-US To: Michal Hocko , Petr Mladek Cc: Patrick Daly , Mel Gorman , David Hildenbrand , Andrew Morton , Sergey Senozhatsky , Steven Rostedt , John Ogness , syzkaller-bugs@googlegroups.com, =?UTF-8?Q?Ilpo_J=c3=a4rvinen?= , syzbot , linux-mm References: <000000000000b21f0a05e9ec310d@google.com> <78ff6e70-e986-1fcb-eafb-3edd5f2bceae@I-love.SAKURA.ne.jp> <6266b161-e4c3-7d65-6590-da6cc04d93ec@I-love.SAKURA.ne.jp> From: Tetsuo Handa In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: nzkzma6a9gmrt5jjdjb314i4oedsk5fw X-Rspamd-Queue-Id: 38201C0011 X-HE-Tag: 1680596418-659617 X-HE-Meta: U2FsdGVkX18Bls4/5td6OYnnl1fCh9hINhs7xovwH0jzX0WyYxZe0Fe9SQi2VQvXgWJiYXgPyMmVOdVTS3H66EPg0VzKpSe2m9Oyor1BTIGqzf7DOvjb507IiCv3WMKc9osz6knkO/CPmh9w+9ZW7v7b4qSIxE1N4GZZozF1x4r19pNXTKcQXk4ORo5Tp1cvcHDeVRzUq3ei3oEc3EIA1bZn1o7Eo2vrJnM6IQ2C0WkiKXB/Pj5bSfr5H4cQs1jF42JfRRab+xlJrkC/HvpUTt4X7wU0r/hrOCI+YaUXDz/R1uubgn6WgvZJ7sUIm6ucNzlLS690RFLPX6GrXGO30GX3RWNrCUY1IYnVc9SJMAgPDcj4YvUhuy5Y9sBR3yRmWRmaiw5VyptZHhTFRdM1GFnQSU+eb88rbd2ZrVoxfmkLO/XxOtE0OXNunl0n9bBYvgK1vSseg3dbzBlno/H02WGP5veLmehfAXyfe7+Zi6rd+c0gULpfIJWSyR5JweMGgp/tA/wTEz+35ZtVyNDGpH6//+qmC+7q2liAMkgUvKenC5sMjeDCMOJEVKL25mVv72HeImqYFV6PlYMg9IN2zPRzTTqFCmK4A1EY65IwHjYIKVHq7rknGX87QfHkTDDWVJr7p+A4JUWCh77qLQa2cB3UKw5yGrzZsp7XsRH2qJmJjN95f+hfUs7peqlGS4ZYDr450r0Oc0Zp7qLQ9ZvDZccoTTJH8QSAoYYq6UHy8AWT8zNsCx7qpi5m6ICOYtZOyglukvI9BjZi5GhAP0HPMIvQlQWWy0f/NL55wbExx0bCRUGyai/+2rysAr//MZFlluZaGUsPpXuurGdxJIc61HSxctG9vUPmplSKSDcmqZQDB27zgu7SqKOzbZ4Va5pxoTFfUp3H2s1so7aG6N6nGTwnE/urnHrBSlAgnz5EfCe06jSYlH4qdtL25K3UXSeuj/DP/VEXhGDKLkik8si 7K0/t1GW PbDsH0w57R7lI4yhHbGdDoMP/dPJ144Gxde6Fu2dgmfhmo+KzD+UvSxDRwxp6x//By+fG3t7luJgv+VoH5fNPHhhktT8FIy1kITM7d/12bwKOWSkHRLAUigi25WiAUh8wDUfirKq+6uuRwvTPpQN62g7KwkzMQIzP2riFNxMOVimfw0q1d6vHGWBhMwAstNN52Pslud7V3ydrE5zQW1SAqGRHz+ahXndP22Lit2Ogz2EaHERlDqKVXeHuMQ0Cb7cjBZ11q93cSAwEoZgUYRltUDo22xmWd/toFP/2DfwCJ5tMjF5hgC6OyrzL1UROa4MHL5nKjlLv2jzoMo/Gx2o8OJ2IWPExc2HtTZ8eEVTfuBUNgMkewTDcUy5HGWcByExCkyCk 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: On 2023/04/04 16:54, Michal Hocko wrote: >> + /* >> + * Since __alloc_pages_slowpath() spins if zonelist_update_seq.seqcount >> + * is odd, any memory allocation while zonelist_update_seq.seqcount is >> + * odd have to be avoided. >> + * >> + * Explicitly disable local irqs in order to avoid calling >> + * kmalloc(GFP_ATOMIC) from e.g. timer interrupt handler. >> + * Also, explicitly prevent printk() from synchronously waiting for >> + * port->lock because tty_insert_flip_string_and_push_buffer() might >> + * call kmalloc(GFP_ATOMIC | __GFP_NOWARN) while holding port->lock. > > This explanation of local_irq_save just doesn't make any sense. You do > not prevent any other cpu from entering the IRQ and doing the same > thing. There is no need to prevent other CPUs from doing the same thing. The intent of local_irq_save() here is to avoid below sequence. CPU0 ---- __build_all_zonelists() { write_seqlock(&zonelist_update_seq); // makes zonelist_update_seq.seqcount odd // e.g. timer interrupt handler runs at this moment some_timer_func() { kmalloc(GFP_ATOMIC) { __alloc_pages_slowpath() { read_seqbegin(&zonelist_update_seq) { // forever spins because zonelist_update_seq.seqcount is odd } } } } // e.g. timer interrupt handler finishes write_sequnlock(&zonelist_update_seq); // makes zonelist_update_seq.seqcount even } > If the sole purpose of local_irq_save is to conform > printk_deferred_enter then state that instead. As described above, this local_irq_save() is not intended for conforming printk_deferred_enter(). This is the same with set_mems_allowed() calling local_irq_save() before write_seqcount_begin(¤t->mems_allowed_seq). > Although it seems that > Petr believes that preempt_disable should be sufficient and then it > would be preferred as well. This would require update to the comment for > printk_deferred_enter though. This patch is supposed to be backported to stable kernels where commit 3d36424b3b58 ("mm/page_alloc: fix race condition between build_all_zonelists and page allocation") was backported.