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 7EE7EC3DA79 for ; Sat, 13 Jan 2024 01:24:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E80F96B0096; Fri, 12 Jan 2024 20:24:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E31E66B0099; Fri, 12 Jan 2024 20:24:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CAA556B009A; Fri, 12 Jan 2024 20:24:22 -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 AEC8D6B0096 for ; Fri, 12 Jan 2024 20:24:22 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 884151A01CB for ; Sat, 13 Jan 2024 01:24:22 +0000 (UTC) X-FDA: 81672542364.02.2B63315 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by imf14.hostedemail.com (Postfix) with ESMTP id 2C8C7100008 for ; Sat, 13 Jan 2024 01:24:19 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=DN0nOVJG; spf=none (imf14.hostedemail.com: domain of ak@linux.intel.com has no SPF policy when checking 192.198.163.9) smtp.mailfrom=ak@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1705109060; 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=UTweowvWT8P4eBLJ96VK7hlF7ZWJNG5C3dJzcCptNCo=; b=UhK8Db6RWN7zBxabTy+RDq4Xaptj9tEWc/FWhA2eF9kSHL/YULPYJ3RkTsp+JNmAb4odMo uGi34yxKseN9M2Idj4Xl31OMrOeyUdq3jsNruJLEhWG+G4NpqtrInuy7FR8pn/KNyM+1W2 1iL1As6Pf5yGYyRIex9q/oTfPkiK2RA= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=DN0nOVJG; spf=none (imf14.hostedemail.com: domain of ak@linux.intel.com has no SPF policy when checking 192.198.163.9) smtp.mailfrom=ak@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705109060; a=rsa-sha256; cv=none; b=yVk1a5vVdKtZSLUxDGsSbjFcRzxTM8xzJrckAsMtcQb+mnrnO+7KLpLtboI+YUdQuXmJUK BxKgIcp3KSscPLn4gYk3vANiC4Yua8aLPzWNXw/F/JegYSeqw2Bk53QlSMnzCx/4R6Hd1N FlbWk/iUt/zjL3YOkKVND+6iLuygdWQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1705109060; x=1736645060; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=wOrYmsGbl+fO69fVopxBaZqDLxeOsTiN8hKc9Pxlk74=; b=DN0nOVJGwPvX6OTi1/5nbSqH2SrKcwBiZui51wcv2qIfFZXqH11zgLPd Lx+oauGdno0MGXEQ8X0rgmJtxmf3aHQVL3UxZIRA1wsZ3a+kDNm7aPOcN gqakgX0YcLSNWIyx5dw+JekEQ06QcS9Uta01X/PNn5WejOKGjCjR+G+1G MT/HLBZD+p8hPAJG9Ghe7+zQL0yOByxYqYfNUkEJaiVfotfs9eEw0IlQd QLcnwX3v42ugLha1BAHx26fO6Gsa2d84L8CnIdh1NYxEDoqSp86mPz9pq OA9YWDfM97d2krC553II3uUp9bYINZ5vp8P6M1v+QeMuR5+8dfKX3KDQx A==; X-IronPort-AV: E=McAfee;i="6600,9927,10951"; a="6088496" X-IronPort-AV: E=Sophos;i="6.04,191,1695711600"; d="scan'208";a="6088496" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2024 17:24:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10951"; a="817264197" X-IronPort-AV: E=Sophos;i="6.04,191,1695711600"; d="scan'208";a="817264197" Received: from tassilo.jf.intel.com (HELO tassilo) ([10.54.38.190]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2024 17:24:18 -0800 Date: Fri, 12 Jan 2024 17:24:17 -0800 From: Andi Kleen To: Marco Elver Cc: Andrey Konovalov , Oscar Salvador , andrey.konovalov@linux.dev, Andrew Morton , Alexander Potapenko , Dmitry Vyukov , Vlastimil Babka , kasan-dev@googlegroups.com, Evgenii Stepanov , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrey Konovalov Subject: Re: [PATCH v4 12/22] lib/stackdepot: use read/write lock Message-ID: References: <9f81ffcc4bb422ebb6326a65a770bf1918634cbb.1700502145.git.andreyknvl@google.com> <87sf34lrn3.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 2C8C7100008 X-Rspam-User: X-Stat-Signature: xij63rg7jak87pman444gqup1om19p7d X-Rspamd-Server: rspam01 X-HE-Tag: 1705109059-229537 X-HE-Meta: U2FsdGVkX1/I0ZsW4VkrsmTC8NtMrPyvv5cC7PqxRcl/4E8+fhSKbMq6h7P4O5MUXTrIYhlDI0ApN6R6f3ZlVyld0qJPjFc8Oy4VJjg5tyXwnG1xwd0eG7hZsMptcwHwrjwHD+5ejZO8OJ8+IUz7CbU8u+djAfoXT+FKo2RPb8lTj8K+PUzKN6QvqWjszylG3rFbnyZg2jExe/3mGq6+OB3dh4nKu9wxLv3FypetnpnJ1YaDkkHr7wWkc1DEvPzoGjtmi29QyPd/iy288ok1NXXp7VK4C5OBk6HQenzrOvok/7R2LzIq8ff9feD4xQunKfssLGhybakM8lQCHjcytDlq/dB0Wh65FcEJOlsb8+GjSn0yZgmyDgrgrZHf8qgXL4z7ZzVsggq4hvKOB0jQ3tw27Wawue9Gqqjp+XgGNShOA9M05hdcseq2hfKZ3/jVqjMfmg0AYa3Yn8DqTzEymFg7YpHM8KGKBWvjSM8Qb9SF8wmV/y8mzjb49WzWixQ6Z3Q/04t3qUjfdlr95703RbjWADyiPD55cerdfjH95uWX60H/xJO3aQm4XTh9IuxAaMzdQxU72hVoZ1AGLkA/lv20zNKp+/YbcmOmYsu4N8L0epsT/bDrPQwpRz+jSO6ubPtAeGxSGoxW+Fz17hGq25gugMVTrGDpz6uKll8AwLuepgwVM7VrpVvhMqLCF+FUMHCI6+BkOgJRcLv4Bocz6HgyfHKchurUyML/yuFMWYpmP34TyH4KTHVKrpfJpawEKtTfRawmmF8QDMj3+fG/q2B8ZO6vXCcLq6P76zBFT+ZyZK6jL4AKAEqPN+XNFE+wqzso5qU4Qj7sbPP/HS8+EbtDM2seHN+V37dFD6Y0WCMGDAd+sangdd8olfs+hQ1Kvbp/kaBCvqZWPKNjVGqmY+Dw7a3A38Kdxd3Bld3VtVA63/PAVr0nqt14dRnAdx4sNDKtRw9/gzeswmjhO71 gqxhQTEH dfK6FPv06jhZ3MpMxrbAFL7qWVcz/uhEPjHHlAtL3nwwh2azqdIHH790Lhh1wF1b7zqfHebX7gjgG/EENrkr0+5vgbk2ZoQrO/N/IHimk1XgiS75nbPavxFTchAGTAEd1P84o 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 12, 2024 at 11:15:05PM +0100, Marco Elver wrote: > + /* > + * Stack traces of size 0 are never saved, and we can simply use > + * the size field as an indicator if this is a new unused stack > + * record in the freelist. > + */ > + stack->size = 0; I would use WRITE_ONCE here too, at least for TSan. > + return NULL; > + > + /* > + * We maintain the invariant that the elements in front are least > + * recently used, and are therefore more likely to be associated with an > + * RCU grace period in the past. Consequently it is sufficient to only > + * check the first entry. > + */ > + stack = list_first_entry(&free_stacks, struct stack_record, free_list); > + if (stack->size && !poll_state_synchronize_rcu(stack->rcu_state)) READ_ONCE (also for TSan, and might be safer long term in case the compiler considers some fancy code transformation) > + return NULL; > > + stack = depot_pop_free(); > + if (WARN_ON(!stack)) Won't you get nesting problems here if this triggers due to the print? I assume the nmi safe printk won't consider it like an NMI. > counters[DEPOT_COUNTER_FREELIST_SIZE]++; > counters[DEPOT_COUNTER_FREES]++; > counters[DEPOT_COUNTER_INUSE]--; > + > + printk_deferred_exit(); Ah this handles the WARN_ON? Should be ok then. -Andi