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 7B95CC41513 for ; Thu, 11 Jul 2024 21:13:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EE1266B00A7; Thu, 11 Jul 2024 17:13:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E911F6B00A8; Thu, 11 Jul 2024 17:13:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D5CDD6B00A9; Thu, 11 Jul 2024 17:13:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id B6D016B00A7 for ; Thu, 11 Jul 2024 17:13:26 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4F3A21C0BE9 for ; Thu, 11 Jul 2024 21:13:26 +0000 (UTC) X-FDA: 82328722812.28.7FD5880 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf29.hostedemail.com (Postfix) with ESMTP id 065D1120009 for ; Thu, 11 Jul 2024 21:13:23 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=k5KqnbN9; spf=pass (imf29.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720732372; 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:dkim-signature; bh=gevD87IkNHQGgZXX7hjUpj852IehUDyjeMEXpfp4yCE=; b=wgqMqSaRdm3bJwAwH9wEWWYyIINN/QQ6R6mydAIj9j2D+v8hc1yJGKmit78kjjpLXP2End 4sX7G1vYQ5z36ppRT5JKiU/jDjvY1MxlqjMqUnw/iWa9x9ggJSf8pUX85JTXzaFIohgiHH 3aNxVsYIZ9pOfHAczSnb//wsjSzVHMY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720732372; a=rsa-sha256; cv=none; b=HydEMHp6SI2tL5Ezh7BczPQSj9fyGFrSuhEIM6KL5YACrFfK25Y1YCpo+TcsdPyoZvl8pp MsLV0GyBNdsQXq9bvhZSN+D0L1+8xnjkRcscGdXMePNUAjN/v1D0CaxUMZTkb9nZ+x/F7a 3Kh16J2WxRdutX243t7eXFtpP6CB4yA= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=k5KqnbN9; spf=pass (imf29.hostedemail.com: domain of akpm@linux-foundation.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org; dmarc=none Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 26C75CE19B1; Thu, 11 Jul 2024 21:13:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34066C116B1; Thu, 11 Jul 2024 21:13:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1720732399; bh=aTiXrj3+xejUUrTCvsK1TranlzYVGOMQWvbn8pvRMHw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=k5KqnbN94gEyboFzfGInpP1flG4b36AO5Pus25eRK1l9aXz2EnW2MCxxoxxjwms7t +4nDkMHCaXGvezNo2T/gyReR8ErjjlHgz9aH/NHJVzAC0HR4whAf/BLxCziAmk7etJ jp5BnF00f40SkUiS2+i08DBnlyse0sic0O+CtrLo= Date: Thu, 11 Jul 2024 14:13:18 -0700 From: Andrew Morton To: zhangchun Cc: , , , , , Subject: Re: [PATCH v2] mm: Give kmap_lock before call =?ISO-8859-1?Q?flus?= =?UTF-8?Q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid?= kmap_high deadlock. Message-Id: <20240711141318.95c48cf7295f5e2d6f659aac@linux-foundation.org> In-Reply-To: <1720681676-53147-1-git-send-email-zhang.chuna@h3c.com> References: <20240710103611.809895ff809df9ed411bfaa8@linux-foundation.org> <1720681676-53147-1-git-send-email-zhang.chuna@h3c.com> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 065D1120009 X-Stat-Signature: ofezgyt1z5c31xhwntta15w5xiuie7e7 X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1720732403-561945 X-HE-Meta: U2FsdGVkX19J7NHacxnoNQiXNS2h9HCw/9LPEppF0VP29ggiUYV05YI2XUudQWmxI4rQtXtmTMlhYr5XLL9S6bjQAzvW+aRBJ94QcS3PKhiwe5iNzjTA7IisUEXvKpohdrHALynCbJWRXluOo4xeNy1vo8o5JreR39ryTEmArWdRydX2oihe+Q+s+ntmInvwWNctlIlNMpB3B9bxubY5mZ7FDRTe2KgFXHnKzJnpNdbZWqIogxSMeQuQZC10STBC64lCA8siGfBoCcOT6z/oBZf8m/TlO6EMPLO9bABvePF87u/jdYt61IcLE2Mr+wXqM5NQ4gDLpWr8/8ZwFLDObOlX2ZpTAZPNf/d/VM/rIeJ/89VqEXPPiPr+buN9TW7XUdo3nXTmrQSg0coaxe7b5dX47m7+kGnYHE2XbrQSpc+R5iFQRfy3lbul2zFoBCIhLYMFd2oKnoD6f5hwBrbLq83jn0pJlnRa8umsJcOr70l3RVNYKQpBlg03prV+vFYPsQwNUTTg1rdWzNebl5YnecOUqJPqetidpyFk40NdC15gBEUzUzvXpMSVpieaWcry+12L98SqpIGhJGIuhBsEx58FK58bMorWFkjr0aPIDC/b22DYxB3YSwimNzaWsAzVc332UQkCWVzUyGK1F2n0tG9kSLScDFuuyi6RfX2ZrH19kWCyzbAuJVy95YRWvtmquN8DZfRIv4fmkFcPq25OG4MNRNbvnUl7KJtZOQvOwTNF3CV4BMidEdC3ctiO5ZMh8xSvvybwouIBMJT0mT+528wjGO3oek50V/9sgV8jzd6f0erTM8MTQPyBiEeTs/w3tSumT6jIc2MojyVE9PsJKwPii2vjGeQE0iqDZAJXcj5l0rqY2wfVwAFqvZvYE+U9fUhjCW/wAQeVclXy/loZFBZSTnzHL4Wcup0Mad4Jyp3uWyi7cGApmf6uiRSRmY2VDkWklJ4BMBofoAoIqgS abjeDMxr YIHE5lXSn1VeT9RRTKF3EeeeNcJFSDliPpsymnwPSCSnRpwV8kVQJATaP3E7mhSWqMJj6PMy0612M9v7pB8zU6B35rDCc92G23KDl1MN1VvZ6EEdrmv+sXuWpbcwgXHoew/vu0H7c52NPsi505UOpbQYUP89o3za0eZzHAxUulSNnXc0Hoy7fuXjvL+P+9M3H34T7VSXuFumC3OSHSW7jW4qOLeqNKtcgXR0R/LewcFrGnDuqhB4kBYpsJo27y1Mx3nuIl1Y0snspSG/3xB6g721D4aZc32aX4n5ncJPkiJey5qSgHNR2z7Yukmi9Q6RsKuBINtCm15DDcSqBmDWglUt/R2DNvenq2OJWUHWJRbHJrwueZ5RX+aifVsoCL6EFhjL0 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 Thu, 11 Jul 2024 15:07:56 +0800 zhangchun wrote: > >> --- a/mm/highmem.c > >> +++ b/mm/highmem.c > >> @@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void) > >> set_page_address(page, NULL); > >> need_flush = 1; > >> } > >> - if (need_flush) > >> + if (need_flush) { > >> + unlock_kmap(); > >> flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); > >> + lock_kmap(); > >> + } > >> } > > >Why is dropping the lock like this safe? What data is it protecting and why is it OK to > >leave that data unprotected here? > > kmap_lock is used to protect pkmap_count, pkmap_page_table and last_pkmap_nr(static variable). > When call flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)), flush_tlb_kernel_range > will neither modify nor read these variables. Leave that data unprotected here is safe. No, the risk here is that when the lock is dropped, other threads will modify the data. And when this thread (the one running flush_all_zero_pkmaps()) retakes the lock, that data may now be unexpectedly altered.