nown [10.57.45.151]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6D97C3F6A8; Mon, 5 Jan 2026 02:51:00 -0800 (PST) Date: Mon, 5 Jan 2026 10:50:57 +0000 From: Sudeep Holla To: Petr Malat Cc: stable@vger.kernel.org, pierre.gondois@arm.com, wen.yang@linux.dev, Sudeep Holla Subject: Re: [PATCH] cacheinfo: Remove of_node_put() for fw_token Message-ID: References: <20260102193457.270660-1-oss@malat.biz> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260102193457.270660-1-oss@malat.biz> X-Spam-Score: 0.5 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.5 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [172.105.105.114 listed in list.dnswl.org] -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager SpamTally: Final spam score: 5 On Fri, Jan 02, 2026 at 08:34:57PM +0100, Petr Malat wrote: > fw_token is used for DT/ACPI systems to identify CPUs sharing caches. > For DT based systems, fw_token is set to a pointer to a DT node. > > Commit 22def0b492e6 ("arch_topology: Build cacheinfo from primary CPU") > removed clearing of per_cpu_cacheinfo(cpu), which leads to reference > underrun in cache_shared_cpu_map_remove() during repeated cpu > offline/online as the reference is no longer incremented, because > allocate_cache_info() is now skipped in the online path. > > The same problem existed on upstream but had a different root cause, > see 2613cc29c572 ("cacheinfo: Remove of_node_put() for fw_token"). > Please let us know which stable versions you need this for ? I assume it is for stable only, but it not clear from the subject. Or do you want this to be applied only for v6.1.x as 22def0b492e6 exist in v6.1.x ? -- Regards, Sudeep From - Mon Jan 05 10:52:14 2026 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id QJsPAduXW2nrSDsAYBR5ng (envelope-from ) for ; Mon, 05 Jan 2026 10:52:11 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 05 Jan 2026 10:52:11 +0000 Received: from tor.lore.kernel.org ([172.105.105.114]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vciC2-0000000HFBF-2oqb for hi@josie.lol; Mon, 05 Jan 2026 10:52:10 +0000 Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id D6157301720E for ; Mon, 5 Jan 2026 10:51:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D9A2933031E; Mon, 5 Jan 2026 10:44:18 +0000 (UTC) {"version":3,"file":"DocNode.js","sourceRoot":"","sources":["../../src/nodes/DocNode.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAI3D;;;;;;;GAOG;AACH,IAAY,WA0BX;AA1BD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,oCAAqB,CAAA;IACrB,kCAAmB,CAAA;IACnB,wCAAyB,CAAA;IACzB,oCAAqB,CAAA;IACrB,kCAAmB,CAAA;IACnB,4DAA6C,CAAA;IAC7C,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,8CAA+B,CAAA;IAC/B,wCAAyB,CAAA;IACzB,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;IAC/B,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,oDAAqC,CAAA;IACrC,kDAAmC,CAAA;IACnC,gDAAiC,CAAA;IACjC,4CAA6B,CAAA;IAC7B,sCAAuB,CAAA;IACvB,wCAAyB,CAAA;IACzB,kDAAmC,CAAA;IACnC,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;AACzB,CAAC,EA1BW,WAAW,2BAAX,WAAW,QA0BtB;AAkCD;;GAEG;AACH;IAGE,iBAAmB,UAAyD;QAC1E,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;IAChD,CAAC;IAQD;;;;OAIG;IACI,+BAAa,GAApB;QACE,kFAAkF;QAClF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,SAAS,EAAf,CAAe,CAA2B,CAAC;IACzF,CAAC;IAED;;;OAGG;IACO,iCAAe,GAAzB;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;OAQG;IACW,0BAAkB,GAAhC,UACE,UAAyD;QAEzD,OAAQ,UAAuC,CAAC,MAAM,KAAK,IAAI,CAAC;IAClE,CAAC;IACH,cAAC;AAAD,CAAC,AA/CD,IA+CC;AA/CqB,0BAAO","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport type { TSDocConfiguration } from '../configuration/TSDocConfiguration';\r\n\r\n/**\r\n * Indicates the type of {@link DocNode}.\r\n *\r\n * @remarks\r\n * When creating custom subclasses of `DocNode`, it's recommended to create your own enum to identify them.\r\n * To avoid naming conflicts between projects, the enum value should be a string comprised of your full\r\n * NPM package name, followed by a \"#\" symbol, followed by the class name (without the \"Doc\" prefix).\r\n */\r\nexport enum DocNodeKind {\r\n Block = 'Block',\r\n BlockTag = 'BlockTag',\r\n Excerpt = 'Excerpt',\r\n FencedCode = 'FencedCode',\r\n CodeSpan = 'CodeSpan',\r\n Comment = 'Comment',\r\n DeclarationReference = 'DeclarationReference',\r\n ErrorText = 'ErrorText',\r\n EscapedText = 'EscapedText',\r\n HtmlAttribute = 'HtmlAttribute',\r\n HtmlEndTag = 'HtmlEndTag',\r\n HtmlStartTag = 'HtmlStartTag',\r\n InheritDocTag = 'InheritDocTag',\r\n InlineTag = 'InlineTag',\r\n LinkTag = 'LinkTag',\r\n MemberIdentifier = 'MemberIdentifier',\r\n MemberReference = 'MemberReference',\r\n MemberSelector = 'MemberSelector',\r\n MemberSymbol = 'MemberSymbol',\r\n Paragraph = 'Paragraph',\r\n ParamBlock = 'ParamBlock',\r\n ParamCollection = 'ParamCollection',\r\n PlainText = 'PlainText',\r\n Section = 'Section',\r\n SoftBreak = 'SoftBreak'\r\n}\r\n\r\n/**\r\n * Constructor parameters for {@link DocNode}.\r\n *\r\n * @remarks\r\n * There are two scenarios for constructing `DocNode` objects. The \"builder scenario\" constructs the object based on\r\n * literal strings, does NOT create DocExcerpt child nodes, and generally uses the `IDocNodeParameters`\r\n * hierarchy for its constructor parameters. The \"parser scenario\" constructs the object by parsing a TypeScript\r\n * source file, does create DocExcerpt child nodes, and generally uses the {@link IDocNodeParsedParameters} hierarchy.\r\n */\r\nexport interface IDocNodeParameters {\r\n configuration: TSDocConfiguration;\r\n}\r\n\r\n/**\r\n * Constructor parameters for {@link DocNode}.\r\n *\r\n * @remarks\r\n * There are two scenarios for constructing `DocNode` objects. The \"builder scenario\" constructs the object based on\r\n * literal strings, does NOT create DocExcerpt child nodes, and generally uses the {@link IDocNodeParameters}\r\n * hierarchy for its constructor parameters. The \"parser scenario\" constructs the object by parsing a TypeScript\r\n * source file, does create DocExcerpt child nodes, and generally uses the `IDocNodeParsedParameters` hierarchy.\r\n */\r\nexport interface IDocNodeParsedParameters {\r\n configuration: TSDocConfiguration;\r\n\r\n /**\r\n * This is a marker used by {@link DocNode.isParsedParameters} to determine whether the constructor was\r\n * invoked using `IDocNodeParameters` (builder scenario) or `IDocNodeParsedParameters` (parser scenario).\r\n */\r\n parsed: true;\r\n}\r\n\r\n/**\r\n * The base class for the parser's Abstract Syntax Tree nodes.\r\n */\r\nexport abstract class DocNode {\r\n public readonly configuration: TSDocConfiguration;\r\n\r\n public constructor(parameters: IDocNodeParameters | IDocNodeParsedParameters) {\r\n this.configuration = parameters.configuration;\r\n }\r\n\r\n /**\r\n * Returns a text string that uniquely identifies the child class type. This is used for example by\r\n * switch statements to efficiently determine the kind of node.\r\n */\r\n public abstract get kind(): DocNodeKind | string;\r\n\r\n /**\r\n * Returns the list of child nodes for this node. This is useful for visitors that want\r\n * to scan the tree looking for nodes of a specific type, without having to process\r\n * intermediary nodes.\r\n */\r\n public getChildNodes(): ReadonlyArray {\r\n // Do this sanity check here, since the constructor cannot access abstract members\r\n this.configuration.docNodeManager.throwIfNotRegisteredKind(this.kind);\r\n\r\n return this.onGetChildNodes().filter((x) => x !== undefined) as ReadonlyArray;\r\n }\r\n\r\n /**\r\n * Overridden by child classes to implement {@link DocNode.getChildNodes}.\r\n * @virtual\r\n */\r\n protected onGetChildNodes(): ReadonlyArray {\r\n return [];\r\n }\r\n\r\n /**\r\n * A type guard that returns true if the input uses the `IDocNodeParsedParameters` (parser scenario).\r\n *\r\n * @remarks\r\n * There are two scenarios for constructing `DocNode` objects. The \"builder scenario\" constructs the object based on\r\n * literal strings, does NOT create DocExcerpt child nodes, and generally uses the {@link IDocNodeParameters}\r\n * hierarchy for its constructor parameters. The \"parser scenario\" constructs the object by parsing a TypeScript\r\n * source file, does create DocExcerpt child nodes, and generally uses the {@link IDocNodeParsedParameters} hierarchy.\r\n */\r\n public static isParsedParameters(\r\n parameters: IDocNodeParameters | IDocNodeParsedParameters\r\n ): parameters is IDocNodeParsedParameters {\r\n return (parameters as IDocNodeParsedParameters).parsed === true;\r\n }\r\n}\r\n"]}