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 42BE5C4708E for ; Thu, 5 Jan 2023 18:57:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A089E8E0002; Thu, 5 Jan 2023 13:57:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9B87C8E0001; Thu, 5 Jan 2023 13:57:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87FF98E0002; Thu, 5 Jan 2023 13:57:22 -0500 (EST) 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 6BFDA8E0001 for ; Thu, 5 Jan 2023 13:57:22 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 1F0431401D1 for ; Thu, 5 Jan 2023 18:57:22 +0000 (UTC) X-FDA: 80321653524.23.DFA241A Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by imf29.hostedemail.com (Postfix) with ESMTP id 47A8312000A for ; Thu, 5 Jan 2023 18:57:20 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=nrimoDLQ; spf=pass (imf29.hostedemail.com: domain of keescook@chromium.org designates 209.85.214.170 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672945040; 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=iikTOOXwX2lw93hLanStaxDWxlQ0WBIAjgTuBx/ti1k=; b=4QvuX105EHAwE2RlaihFidw/nUsuydcDltP82NOq7wRzaIEmaZ30pAStMLxlg0DUXzlaSO WFNKM3fUQsC5C9Bh2D/q5+fOsD4NnWBQCysKVWCfIETeMuVxg4577lF0U1QXcn8uCATz8L R0I22pXgb7e/0aEY7Io8sHNQAn2xDRo= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=nrimoDLQ; spf=pass (imf29.hostedemail.com: domain of keescook@chromium.org designates 209.85.214.170 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672945040; a=rsa-sha256; cv=none; b=u2H3ycvs/4zFt/XfD88QgMbEUhsZI6cmdgQA5qePXhF0RsGIGZBZAwmKMhfb01/sOUqPQF 1CsPG7A5XlL3kX1/Cq33VZYG29OlljnvlhOAkqwOu83Wg/EJ9qwbgWu9rxgiRY83Z2h+q2 hpbViUK5CLjWmmJ8lCRsi9KK/BP/23o= Received: by mail-pl1-f170.google.com with SMTP id n4so40304319plp.1 for ; Thu, 05 Jan 2023 10:57:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; 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=iikTOOXwX2lw93hLanStaxDWxlQ0WBIAjgTuBx/ti1k=; b=nrimoDLQZmLj3dvp+AfMCD8cD184hlLMWxfat0lls3uhkpEt4vuyPux6Hqwn5YQVp5 iYrOdq87WyrhSPwhooOGY3cznKqMdrIDZGRCF/0joJWfPGFff8r4b+8MLiMdTms4wqY5 alEkBBg1uflRSQsfJj0/X5uJya4ArLe588W9c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=iikTOOXwX2lw93hLanStaxDWxlQ0WBIAjgTuBx/ti1k=; b=iz6jKKGr0MsgtrM2MrMe3tm9KYSMQIhZ5hHi19ua9P9Gu0rSg9uSerfi4QEX1EyciI k55BGF/CHoukJJdoIzITDA57PHGBm8HCd0eZUX3+pRiJEE241aENa5Q6jdLb6BsC8tXQ SUCl/X5G056TY10/uAtopnnDBrKc3+7dRhLzs2Jwf4oRFuFCvXC+5IDBCvELo9eWYdRO 8TN69AohMmSfNrJlKqtn96R0k7kWlJJfWpV7yF37lJFLNaOIF0bmkFzgTPvlj7fhaUGK 7SUbR9slebROCgmbuvlSGrtcxXS/W7F+Y9FKUd0Ihact85raN2qmg8FYguYULFzI0AwR GFEg== X-Gm-Message-State: AFqh2kpoJh/ruH5InGapuN4ykOkt5T+nkaMQn81f/YrMLc6h3E+jvYbJ rMUC23vZtGskPPDn9aRuDZCvkg== X-Google-Smtp-Source: AMrXdXuxmHzRxqtDU34xBnBJtfQgvjYMGeSRQmTRNwl+jz+2WfMpjBPPPVH9eGCTbWEDSK1y9GYqbQ== X-Received: by 2002:a17:903:41c6:b0:186:8238:bc9 with SMTP id u6-20020a17090341c600b0018682380bc9mr75210344ple.2.1672945038907; Thu, 05 Jan 2023 10:57:18 -0800 (PST) Received: from www.outflux.net (smtp.outflux.net. [198.145.64.163]) by smtp.gmail.com with ESMTPSA id n8-20020a1709026a8800b00172f6726d8esm26384552plk.277.2023.01.05.10.57.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jan 2023 10:57:18 -0800 (PST) Date: Thu, 5 Jan 2023 10:57:16 -0800 From: Kees Cook To: Nathan Chancellor Cc: Huang Ying , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zi Yan , Yang Shi , Baolin Wang , Oscar Salvador , Matthew Wilcox , Bharata B Rao , Alistair Popple , haoxin Subject: Re: [PATCH 4/8] migrate_pages: split unmap_and_move() to _unmap() and _move() Message-ID: <202301051056.9D8CB1C24@keescook> References: <20221227002859.27740-1-ying.huang@intel.com> <20221227002859.27740-5-ying.huang@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 47A8312000A X-Stat-Signature: 9a6k4ekojzsedwepwkj87f6dwirj4me3 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1672945040-412106 X-HE-Meta: U2FsdGVkX1+cwkGNTKDYs/+TxtYnuLwJWVHlU+3JRX/pqgJPPKSPJDhG7tfRF/gsfkqVq1XFjcfW1zYDCMS6W+3XfYVRZoy9jIQAFHB5dgxiFHErDwHoVEfaYy0Ws5mSmj2rlQ1HhVOJxAgLAOVRX9dV5sIbEhuwqKOQePQKKNGnp7HaOuqws/ZahBQXFHEKmRM/95rQVYxhNI7dRYUkaM9vBEq9yvcqj+7ZhQhBE4CAalPs+6kszqMrd6gKPEvLQZuS05T2Zyz2vLrXuYWi8h9C3G+5nEM8F4uD4hc4bILnzgEAWIzi19dJoRaX7eQMRdU7EVV03/6+T3MSe42wHFAQLP6OYc3Sr2fUon6vdpTlgeCdrhJh2dLbbK/Es/uzf9+zUIyWcWqEoWwBkooj4acLSzHQGCu6ofyfcs7/go9dEBkcU5mo9LpU8RD9yJ41GFjDlGWZCpQty4GlAA3pDjvNU91g/PiEeFN8j+vQZEAvcct5DePYnXgdvyNbewgSuyc8U6yysA9civab4M1vjoOXO0YHkNBWeX2uYAQZOGCeUWuniggpkrZVTm3ogrJkJRcfhuk20JbbHARi0quHlasclU2egExtLmK1SORqe2PN9nwJ70hM2oaW1g80z8lXvzroB3D4S9yy1yM/2XSdwjuQFrjdigr0h21NGmDfvxvzxBf7EfTLw94IA+gOayvgvT/4UVnQzlNbh7lIdrKcKLd1+Jm8BGe99d9Lto1EKjB9+R+RcX3/xuUF4AneNYX1urkvB8phGAmDx0cjOEfGmxoHEz0Ar/DxfyDZnj/FWhBQUFKB8T0Z7hacmOhT3JY0nzVUTEurwrp+zvBnMEMjMc2PRbqpiClFxSvqiKaTmeRmzXLQghUHvK8+Xeku05JCZbkXfaNg3Dzb81Hpo0X8uxv9nMwTpftgHG/GB2lspF08kJqVcE2fcDeeYeBonCk4lrAE6PdfrhpiaNVsH3q nTUK78/3 iBIQqrphAxvbPd0sKpyI/vPaoP+n/8PE3jL3w2txC6yNdlTBjtBJE9hw2BvEU964i+T+bl468T3eIjBLp7/2ewhGponH+T35hbn5XiOnm56HGqf4YsKT6ByHMGXl49V3voxQQRcUMGm10XGYnuWHGePBdPw== 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 Thu, Jan 05, 2023 at 11:26:55AM -0700, Nathan Chancellor wrote: > Hi Ying, > > On Tue, Dec 27, 2022 at 08:28:55AM +0800, Huang Ying wrote: > > This is a preparation patch to batch the folio unmapping and moving. > > > > In this patch, unmap_and_move() is split to migrate_folio_unmap() and > > migrate_folio_move(). So, we can batch _unmap() and _move() in > > different loops later. To pass some information between unmap and > > move, the original unused dst->mapping and dst->private are used. > > > > Signed-off-by: "Huang, Ying" > > Cc: Zi Yan > > Cc: Yang Shi > > Cc: Baolin Wang > > Cc: Oscar Salvador > > Cc: Matthew Wilcox > > Cc: Bharata B Rao > > Cc: Alistair Popple > > Cc: haoxin > > --- > > include/linux/migrate.h | 1 + > > mm/migrate.c | 162 +++++++++++++++++++++++++++++----------- > > 2 files changed, 121 insertions(+), 42 deletions(-) > > > > diff --git a/include/linux/migrate.h b/include/linux/migrate.h > > index 3ef77f52a4f0..7376074f2e1e 100644 > > --- a/include/linux/migrate.h > > +++ b/include/linux/migrate.h > > @@ -18,6 +18,7 @@ struct migration_target_control; > > * - zero on page migration success; > > */ > > #define MIGRATEPAGE_SUCCESS 0 > > +#define MIGRATEPAGE_UNMAP 1 > > > > /** > > * struct movable_operations - Driver page migration > > diff --git a/mm/migrate.c b/mm/migrate.c > > index 97ea0737ab2b..e2383b430932 100644 > > --- a/mm/migrate.c > > +++ b/mm/migrate.c > > @@ -1009,11 +1009,29 @@ static int move_to_new_folio(struct folio *dst, struct folio *src, > > return rc; > > } > > > > -static int __unmap_and_move(struct folio *src, struct folio *dst, > > +static void __migrate_folio_record(struct folio *dst, > > + unsigned long page_was_mapped, > > + struct anon_vma *anon_vma) > > +{ > > + dst->mapping = (struct address_space *)anon_vma; > > + dst->private = (void *)page_was_mapped; > > +} > > + > > +static void __migrate_folio_extract(struct folio *dst, > > + int *page_was_mappedp, > > + struct anon_vma **anon_vmap) > > +{ > > + *anon_vmap = (struct anon_vma *)dst->mapping; > > + *page_was_mappedp = (unsigned long)dst->private; > > + dst->mapping = NULL; > > + dst->private = NULL; > > +} > > This patch as commit 42871c600cad ("migrate_pages: split > unmap_and_move() to _unmap() and _move()") in next-20230105 causes the > following error with clang when CONFIG_RANDSTRUCT is enabled, which is > the case with allmodconfig: > > ../mm/migrate.c:1041:15: error: casting from randomized structure pointer type 'struct address_space *' to 'struct anon_vma *' > *anon_vmap = (struct anon_vma *)dst->mapping; > ^ > 1 error generated. > > With GCC, there is only a note: > > ../mm/migrate.c: In function '__migrate_folio_extract': > ../mm/migrate.c:1041:20: note: randstruct: casting between randomized structure pointer types (ssa): 'struct anon_vma' and 'struct address_space' > > 1041 | *anon_vmap = (struct anon_vma *)dst->mapping; > | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > Kees has done fixes for warnings and errors like this in the past (I > just ran > > $ git log -p --grep='randomized structure pointer type' > > to find them) but I did not see any that would seem appropriate here > hence just the report :) If this struct is literally just a scratch space and the original struct layout doesn't matter, it may be possible to silence this cast by using "(void *)" instead of the explicit struct type pointer. -- Kees Cook