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 242AAC02181 for ; Fri, 24 Jan 2025 18:43:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7A700280069; Fri, 24 Jan 2025 13:43:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 73294280065; Fri, 24 Jan 2025 13:43:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5A917280069; Fri, 24 Jan 2025 13:43:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 36614280065 for ; Fri, 24 Jan 2025 13:43:15 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id D30C81A161B for ; Fri, 24 Jan 2025 18:43:14 +0000 (UTC) X-FDA: 83043217908.02.005DD75 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf05.hostedemail.com (Postfix) with ESMTP id 8611F100014 for ; Fri, 24 Jan 2025 18:43:12 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=PJ2Vy0fY; spf=pass (imf05.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737744192; 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=oqP93IEyNiqxaVkRzdBD14FzWHz6Qk4+0A2lcHdruh8=; b=iIs13RG0vHT34flTZ5zFpfuQ9ms3nwDigXUmwVDvCJC/dJ9bewIb5Kt+eTn0E2uTFp6rYI 0svj5xQCKhwKMU+Pq9Y2Ir6JJd+Jd50I5x+sDU+MwxB8KlLu4EoeglibxV3zR+qXW83sZI 4/gZ/TXLzaWQx7MveUxiPFgvQzVJCoo= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=PJ2Vy0fY; spf=pass (imf05.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737744192; a=rsa-sha256; cv=none; b=rFrfH++1ewwoine6PPxoig0DBSZP4CcU6AhLqPFGsUUhCIbJ5X0dxfodvh0RWoI816cOoy iwr9WMV0tF0Q7953iBNMAZs4gyWwGEBXzmrJMcp/u+cHNWR+NOqOBqsibPDCLbvI6ufCFE VC9da8TgHI9AqPcPnu+w7zjNKBRoMrw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737744191; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=oqP93IEyNiqxaVkRzdBD14FzWHz6Qk4+0A2lcHdruh8=; b=PJ2Vy0fYYoJYR/BBQ83mw3udd9bbWsKDPTfr7vIV7ri1jPPDeWZYtTJjpTMMgn2VqqDief SngNMwKL3pjvh4MmxZy9tvj9A6JVffSuXOnnsumJZE1dFmDaUNDZ7vsKlP8L9l46EdyPGb NrRY8pP6GQiHYbZBqvIUkXnm4+boUso= Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-655-9t43O4OcMzO_X2zsjOLv1Q-1; Fri, 24 Jan 2025 13:43:10 -0500 X-MC-Unique: 9t43O4OcMzO_X2zsjOLv1Q-1 X-Mimecast-MFC-AGG-ID: 9t43O4OcMzO_X2zsjOLv1Q Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-467b19b55d6so27357111cf.2 for ; Fri, 24 Jan 2025 10:43:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737744190; x=1738348990; 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=oqP93IEyNiqxaVkRzdBD14FzWHz6Qk4+0A2lcHdruh8=; b=wHmwsZn7gW78m1nIOzdMfO931nZrjSvT9ISq1OiTFR0dKJyPJA7cUC1fHhMWiqVjy4 wAn74LG++vLF+ySYjFWGPyGDG9hVKFvwfT0eywzVWueJu5bVDOCRDaq+kB5h/OouIZC/ SkppDR6H6GgFRDt0r4N5Nko+rn+TfoD1hP+4EvnYvj4giVSUmGrqebOVBKErKFjR26Q3 B3WiIAfaX6lr5PVjK+V5bqOZFflq4w8VYoRQc/gAbzRuVnlO1Ku529X7dzXXFkEAPPSZ 1qO+VB4HxMFcvRW7pIku7BdNALUXS/5+WINclwkghtxKsj2ELTlT2ySVnzcWAZ1/FPAp 8vcQ== X-Forwarded-Encrypted: i=1; AJvYcCWNC0xOCg2uc1v+MpF2uoAC7a9t2WnL568wBE6yIAq5UkEVplBcnPm6I5ivzRBaJMHnU/BGqGJxig==@kvack.org X-Gm-Message-State: AOJu0Yy0R+4XAo1zWdF96AN6zgjZu0WexYrHuIDbyeFst/g6UevJs/mL hX5E4bDrEeNsmdthRbcl+iteChtuxQxAJp/VV5t73QSNemDJBSb7bxBHg6J0NOUTrDxPEPP4tnL KEiXU8ixdfSuu8ezjH6DIVTXbNZkdRrRAb78ZXL4hoXwX1LIm X-Gm-Gg: ASbGncvr9Ngn0IXRVNRc5dZOg6nYa9DByhN8LsiyxCYCDDTKfhVGffTbpRvJSCa6Z2y hzB97I3OsABEqggoBMXBlttIdcTT48eVb0JGreZe18cTxWmFiUaLZoXXpADSBZrfaHVZZRAm1Br mcM2YXGfcGTaRQ6Tb7IcsiJASz2WUT/Sv7j8dyX5H6uAKAuiejJri7KFfZXYq45ZA5oAhScsEzA C26gdNptzYyD3DHyEsvtfKGLTlrxKRvWa76wfbLC4HnDzHMxv8m7dmApJDdXTzF3sBOaCpTZ+nH 6ckug6jBfIKUFVJ9AhU0LcMHEWk5jaY= X-Received: by 2002:ac8:7d52:0:b0:467:70ce:75e9 with SMTP id d75a77b69052e-46e12a96eacmr451131231cf.23.1737744189950; Fri, 24 Jan 2025 10:43:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IEBfjwlQTNorfux/EB0BQpnnWz1g5Icksygxw6u3hdARhf1/RKjg+NOxCMXv7X52TnMiXVBeQ== X-Received: by 2002:ac8:7d52:0:b0:467:70ce:75e9 with SMTP id d75a77b69052e-46e12a96eacmr451130801cf.23.1737744189439; Fri, 24 Jan 2025 10:43:09 -0800 (PST) Received: from x1n (pool-99-254-114-190.cpe.net.cable.rogers.com. [99.254.114.190]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-46e6687e3b0sm12639361cf.21.2025.01.24.10.43.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 10:43:08 -0800 (PST) Date: Fri, 24 Jan 2025 13:43:05 -0500 From: Peter Xu To: kernel test robot Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org, Andrew Morton , Linux Memory Management List , Will Deacon Subject: Re: mm/gup.c:778:15: sparse: sparse: cast to non-scalar Message-ID: References: <202501240922.a4YzQD7u-lkp@intel.com> MIME-Version: 1.0 In-Reply-To: <202501240922.a4YzQD7u-lkp@intel.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: c7U21EkiuKUrE_9OSZZg_CYP9GCzMkX8KNlAacBj3k0_1737744190 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 8611F100014 X-Stat-Signature: ajom3t7oqx3z364hmnycnkizjxx31848 X-Rspam-User: X-HE-Tag: 1737744192-963717 X-HE-Meta: U2FsdGVkX1+d8aObEZfuHfSBq+AaCtGnvkF//lpjkn6+QKF8kq04Pnxq0wURYTa80cBAJ/a804MuTnwrqmfm8yQ+kcYZ8zSsmE07e2GkIW2fvnOkAEImc13I6ld3hW5Hp08rizuI+O+8S6zdH5Jfiq65b8NiyZWgv4j0Fzecgd+ovkq7//4GgpadUzKvWVzd068tK60mCRKs6WBgGTcs7CABEIYDlwPqVwcLktr4eJRZXTbfT9DcXB9TL9zEFOy00f/ESt52fU1ige2PfxqSvqGQXyrGmg6r052Dczmr1vNFnlunYVAByMZiueocMGTAxQGZlH3vOs/ghoByjjlKSD4DnENPAghmbH4L6+RflR+EjB8T6eVcTww3I/1dwLDybLlRDGFy85grN5SrrHaN+cBtExs5v3JyYzP19y0QDxPk4mb/bId1OM7CZ85QxLI/mVrnU1C61MD+bf0F8k5IKrNamhpw+88B32PKnU6sEn3LkRGgCIOrQdjkWPXJzzoFbLc/LKZY0d0GyIZ7ncw2BIpXicx7cBMiMF4MpofMXTNr8D/mgcUZo6vN/k7Htb333PohrRDndC5RiI21i8CxdsMPtsIMQcYjOw8bRrZwafGDVjZV2Wzeskdu1ardNybTFZ1nPDcz03XFW0apQjdKGOCNw220iIk42KVRbR63CmUmaebqICmtV0AQLHGvj4Ptj0lSrjBtdna8RlNfLveMuVcGC1YTaveFbJTFKUwP78ztKjD3XO1OZ7GolI07BlZU8Jbz/eJxUYDlvMUa9lJ1td4IsEU3OTdOemUQCB3e3LwBQiLAY5rk8fl58ojpG6Nhe7Fm/6bIxXYs68jIKkwJ654+tIqBE7yrAw7lDNXeBfiVd4uR00B/XQov/w/25yKjMsG/uVKHZ9iYcPYlQMFY1b5dSC8f9rvpVai57m4gHLEcN4f/lIkh+HN1N+8ivOuqFq4fZzOFa8plz3gTV9d mdyawfqp H2uOIojgqPJpFKDd39KhrLDqKFLzBT8er7qbpFOTXUmlYLm8LNx4nr7vbtO9iArXM5rd0e5w1RNVF9oo5LqJvtvvbPQ/rIqXtDgff//JSYBb8Cael3v8Xau3V//vUXHJGce3I/LHekbLXCOCakZFR72lb1dlzSQOocnC9WWZBAG77ExdxhD62Nbl9KZa+jxo+f2JE4eB/VU7BGea+ONbdRdGPIF32FlDcq7Y/agK9cWyGq1dnWQhgFIYxxTURIjlzHO1MvpPhphj+6eQTnK4BCBdwuFAJv8Si0HEqBH/9inGe1Ztet7jZ+/zW50ElUVu25AsTkEGWAVHI2GSyiddSKnVWNTCP8bxQ1bPvZtyK3GlD2BL7sX5PRhaTAFPvlng7yqzm0QAzwPakKaw2O8WwAdfKP5q4O9VxEmrJgA4joxRGT5uzZtnyFa+TLDq5Ne9x2o6G6z/NjQttMUDXYSxqY4yJVybeGiHn2UWv 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 Fri, Jan 24, 2025 at 10:01:40AM +0800, kernel test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: e0b1f59142746f74476a03040f745329c8355a7e > commit: e6fd5564c07c3c749ff3d1b2aa35540b4047e395 mm/gup: cache p4d in follow_p4d_mask() > date: 9 months ago > config: alpha-randconfig-r112-20250124 (https://download.01.org/0day-ci/archive/20250124/202501240922.a4YzQD7u-lkp@intel.com/config) > compiler: alpha-linux-gcc (GCC) 14.2.0 > reproduce: (https://download.01.org/0day-ci/archive/20250124/202501240922.a4YzQD7u-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot > | Closes: https://lore.kernel.org/oe-kbuild-all/202501240922.a4YzQD7u-lkp@intel.com/ > > sparse warnings: (new ones prefixed by >>) > >> mm/gup.c:778:15: sparse: sparse: cast to non-scalar > >> mm/gup.c:778:15: sparse: sparse: cast from non-scalar > mm/gup.c: note: in included file (through include/linux/mm.h): > include/linux/pgtable.h:315:16: sparse: sparse: cast to non-scalar > include/linux/pgtable.h:315:16: sparse: sparse: cast from non-scalar > include/linux/pgtable.h:315:16: sparse: sparse: cast to non-scalar > include/linux/pgtable.h:315:16: sparse: sparse: cast from non-scalar > mm/gup.c: note: in included file (through include/linux/mmzone.h, include/linux/gfp.h, include/linux/mm.h): > include/linux/page-flags.h:241:46: sparse: sparse: self-comparison always evaluates to false > mm/gup.c:682:9: sparse: sparse: context imbalance in 'follow_page_pte' - unexpected unlock > mm/gup.c: note: in included file (through include/linux/mm.h): > include/linux/pgtable.h:322:16: sparse: sparse: cast to non-scalar > include/linux/pgtable.h:322:16: sparse: sparse: cast from non-scalar > include/linux/pgtable.h:315:16: sparse: sparse: cast to non-scalar > include/linux/pgtable.h:315:16: sparse: sparse: cast from non-scalar > mm/gup.c:911:18: sparse: sparse: context imbalance in 'get_gate_page' - unexpected unlock > > vim +778 mm/gup.c > > 769 > 770 static struct page *follow_p4d_mask(struct vm_area_struct *vma, > 771 unsigned long address, pgd_t *pgdp, > 772 unsigned int flags, > 773 struct follow_page_context *ctx) > 774 { > 775 p4d_t *p4dp, p4d; > 776 > 777 p4dp = p4d_offset(pgdp, address); > > 778 p4d = READ_ONCE(*p4dp); > 779 if (p4d_none(p4d)) > 780 return no_page_table(vma, flags); > 781 BUILD_BUG_ON(p4d_huge(p4d)); > 782 if (unlikely(p4d_bad(p4d))) > 783 return no_page_table(vma, flags); > 784 > 785 return follow_pud_mask(vma, address, p4dp, flags, ctx); > 786 } > 787 There's one more similar sparse warning here, both reported today: https://lore.kernel.org/all/202501241212.q9AAshQc-lkp@intel.com/ Firstly, I reproduced this sparse warning locally. And yes it yells about that line, and even one more similar case of READ_ONCE(). The question is I thought READ_ONCE() should be ok to be used on things like p4d_t, even if they can be structs / non-scalar types. At least from sparse POV I cannot trigger similar sparse on non-alpha. So looks like Alpha has something special. Then I noticed that Alpha indeed has a custom definition of __READ_ONCE() which is probably needed due to the mb(): #define __READ_ONCE(x) \ ({ \ __unqual_scalar_typeof(x) __x = \ (*(volatile typeof(__x) *)(&(x))); \ mb(); \ (typeof(x))__x; \ }) I didn't obviously see yet on how that could affect sparse, if READ_ONCE() works for non-scalar somehow on most of the rest archs. I tried to switch to the default __READ_ONCE for alpha build (it misses mb() so it isn't correct, but trying to figure out whether it'll trigger similar sparse warning), then the warning is gone. Then I found that this change can also work for alpha: diff --git a/arch/alpha/include/asm/rwonce.h b/arch/alpha/include/asm/rwonce.h index 35542bcf92b3..0d61183ff764 100644 --- a/arch/alpha/include/asm/rwonce.h +++ b/arch/alpha/include/asm/rwonce.h @@ -25,7 +25,7 @@ __unqual_scalar_typeof(x) __x = \ (*(volatile typeof(__x) *)(&(x))); \ mb(); \ - (typeof(x))__x; \ + __x; \ }) I had a feeling that sparse somehow thinks the "typeof(x)" isn't the same struct v.s. "__unqual_scalar_typeof(x)" above, even if IIUC the macro was only trying to tear down type qualifiers. Especially in Alpha's case IIUC p4d_t is a struct (in my case, STRICT_MM_TYPECHECKS=n): typedef struct { pgd_t pgd; } p4d_t; typedef unsigned long pgd_t; So I suppose __unqual_scalar_typeof() should do nothing on a non-scalar type. So even if above oneliner seems to fix this specific sparse warning, I don't really know how it worked. I copied Will (who introduced both the alpha's __READ_ONCE, and the unqual macro for generic code) in case he has some thoughts.. Thanks, -- Peter Xu