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 C5143D16268 for ; Mon, 14 Oct 2024 14:18:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3AE306B0082; Mon, 14 Oct 2024 10:18:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 35E7A6B0083; Mon, 14 Oct 2024 10:18:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 24C9B6B0085; Mon, 14 Oct 2024 10:18:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 06E9E6B0082 for ; Mon, 14 Oct 2024 10:18:39 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 2ECBBA0FAC for ; Mon, 14 Oct 2024 14:18:25 +0000 (UTC) X-FDA: 82672413390.12.6AD8705 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf21.hostedemail.com (Postfix) with ESMTP id 5B9FC1C0002 for ; Mon, 14 Oct 2024 14:18:24 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=none; spf=pass (imf21.hostedemail.com: domain of jonathan.cameron@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=jonathan.cameron@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728915444; a=rsa-sha256; cv=none; b=apiuUuZVD7FnCgxmLk12dgL/qliDB/DEs69+amd5wQ1Ir2WNkT2AfoTdFi8XLXr08ntO32 Lbog6BLpKel2Pjat7iN13c8HC6PTyCbTG46IL2rXeSQGkVi5aklVZgCWcOhLSI0p44N5Sy jSWjNohS9BwIC3i0TPs6jAV4NU5lzJU= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=none; spf=pass (imf21.hostedemail.com: domain of jonathan.cameron@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=jonathan.cameron@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728915444; 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; bh=Glj3dpsznQ56L23PH7LZEo/qJ1vIZVVwzsAAFrp48C8=; b=F+WQEFaRAHRc8B61bMU7KXx8BB6hwArYX+UYDr+S900R0uUzt/90lclbKEJQ4yBbQnUMq3 uCedmVRfiHxdCHCyKt3/drqYJWSBJ6AlhJft+l7dO7/3TCARdVYs38MxPLk9E8U7t8hyux 8mf0MRFN6tCMzV+GWR9wB4iSCVkJkeQ= Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4XRzpc5lRtz6HJnN; Mon, 14 Oct 2024 22:18:00 +0800 (CST) Received: from frapeml500008.china.huawei.com (unknown [7.182.85.71]) by mail.maildlp.com (Postfix) with ESMTPS id AFBE0140AB8; Mon, 14 Oct 2024 22:18:32 +0800 (CST) Received: from localhost (10.203.177.66) by frapeml500008.china.huawei.com (7.182.85.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Mon, 14 Oct 2024 16:18:31 +0200 Date: Mon, 14 Oct 2024 15:18:29 +0100 From: Jonathan Cameron To: CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: Re: [PATCH v13 01/18] EDAC: Add support for EDAC device features control Message-ID: <20241014151829.00000e7f@Huawei.com> In-Reply-To: <20241009124120.1124-2-shiju.jose@huawei.com> References: <20241009124120.1124-1-shiju.jose@huawei.com> <20241009124120.1124-2-shiju.jose@huawei.com> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.203.177.66] X-ClientProxiedBy: lhrpeml100002.china.huawei.com (7.191.160.241) To frapeml500008.china.huawei.com (7.182.85.71) X-Stat-Signature: n5bgmmi86f93hzghs68u9bf3zs7yhqpe X-Rspamd-Queue-Id: 5B9FC1C0002 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1728915504-494441 X-HE-Meta: U2FsdGVkX1/SGlUZq2e4LfwjkWWNLidDcsOYnwxPZkeydJjRTkbHr1qcQ3c4qTgEdnbWjByKoezlfu/zT9GLa7Jpzog+H8JgAmtMft7dIYI1I5lKREgDIMn4A7mF2v66544PZmgKqasg06qRm+umMEcOrOLQ3AG6zIE+IHlZ8mQMTu/qXrSgo2/ihh5+OfHlfKSibnrVeZpbWlkEobY9c6krkAApGkytv2NfjDYxOJv0vsVTSyPyfeVkQCPG2tkSklvD/v1wbDC+DrAjRxSMlQldJCwfVntKlkAIi3+XSkL2QpqgY0dSu6X3v0KImlpXPlNlX6MF57mpYwRmUIEJv2i4JY8jvPocCvIdb2W5o4qKx25dOyOg0htEFT27vtD1iDGX8Kc0vblghjCb2ZiB4FbnH6qBGd+h07CNGVEUrRTsouATMgm4hIEYjg21lPAlOTwYy8RBgM4C4Vr+JyNYyz+agRB8YvLOGdyESzqKAzTzIYWpY60FgAUlw16qsS2/RAPs2neT+o9u0d71J2xhkWlXJqTodsNqBylaGTHGlynoE9qj9cYceNFjmwSbMFgGQuTRDocoyU9CiJ+N8UWjmtbtQalx7K/Smnybh3t1N9DpAudTobVQEHbljKklXcPXK0AXHUPLUPdJPKUjs7KXD+YBJP+dGK1AUY7MTBQBuaNFrBLsFc5Fhbj6QD21vdfX+8Kv+ipWLtLVWyf9AQ1QwrKHnfJg7DASe2uVVjIWgthtSQu4DK6WKbGHWLXwAPcus4/J0mwFvY1P+pjwV3jU1w9Ker4xp7+ZS4+1Zuqd5wC82wQSJgvvqDcovrUugy1tG+u551cNRwEhf+y9jcLgv0YA+kWGIPY9qidHACqdx0m3KIEEpmQGRZbeqb1MaElkq66hTY2Kzq4/B8r0CZCoZYU/E3/RjZDs8e+pip2Jh8r0WWnbMtP58gv8cdmq//9d/FpGUfkY0fVgfnupSnO NBgomgGw rig+CaHtpoPQ3kuFspWTk3Ib0DI7q+ywc1dfVJ63xYcPcPkr8GhEQJ29eHLXiwnofAOF2IjsYv+Kaalj5oeDRXy3I4htSJl4NbBetzb0Pdf/vXvtS4nfimaRXsi90JYn3rqMGDGUeObJ7+PiL/F9xHATT/NsMw8P8IXN0oQCfkhy0VhmyllCs1mJTEPTw2ksaOfOeG65GpLg4vsICd6XgPRjOQlKuSOA81m5+64dkbR1ica5UbXVMx8mw1EA8wnrmoH71Gndnv3hua6JfB5VRSHW9B5zmvaWO93naD8LGLrwzliKGrtP+1VPWVa/pI6YAm1Pr0gcoJt//qLBWzvY534QOtg== 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 Wed, 9 Oct 2024 13:41:02 +0100 wrote: > From: Shiju Jose > > Add generic EDAC device features control supports registering > RAS features supported in the system. Driver exposes features > control attributes to userspace in > /sys/bus/edac/devices/// > > Co-developed-by: Jonathan Cameron > Signed-off-by: Jonathan Cameron > Signed-off-by: Shiju Jose Hi Shiju, Spotted a few minor bugs in here that I'd missed in internal review :( See below. Jonathan > --- > drivers/edac/edac_device.c | 105 +++++++++++++++++++++++++++++++++++++ > include/linux/edac.h | 32 +++++++++++ > 2 files changed, 137 insertions(+) > > diff --git a/drivers/edac/edac_device.c b/drivers/edac/edac_device.c > index 621dc2a5d034..0b8aa8150239 100644 > --- a/drivers/edac/edac_device.c > +++ b/drivers/edac/edac_device.c > + > +/** > + * edac_dev_register - register device for RAS features with EDAC > + * @parent: client device. > + * @name: client device's name. > + * @private: parent driver's data to store in the context if any. > + * @num_features: number of RAS features to register. > + * @ras_features: list of RAS features to register. > + * > + * Return: > + * * %0 - Success. > + * * %-EINVAL - Invalid parameters passed. > + * * %-ENOMEM - Dynamic memory allocation failed. > + * > + * The new edac_dev_feat_ctx would be freed automatically. > + */ > +int edac_dev_register(struct device *parent, char *name, > + void *private, int num_features, > + const struct edac_dev_feature *ras_features) > +{ ... > + ret = device_register(&ctx->dev); > + if (ret) { > + put_device(&ctx->dev); > + goto groups_free; > + return ret; Unreachable line. However, shouldn't have the goto here as put_device() should result in the release being called in which case this is a double free. So drop the goto and keep the return. > + } > + > + return devm_add_action_or_reset(parent, edac_dev_unreg, &ctx->dev); > + > +groups_free: > + kfree(ras_attr_groups); > +ctx_free: > + kfree(ctx); > + return ret; > +} > +EXPORT_SYMBOL_GPL(edac_dev_register); > diff --git a/include/linux/edac.h b/include/linux/edac.h > index b4ee8961e623..1db008a82690 100644 > --- a/include/linux/edac.h > +++ b/include/linux/edac.h > @@ -661,4 +661,36 @@ static inline struct dimm_info *edac_get_dimm(struct mem_ctl_info *mci, > +/* EDAC device feature information structure */ > +struct edac_dev_data { > + u8 instance; > + void *private; > +}; > + > +struct device; That forwards def doesn't work as this header needs to include enough information to establish layout of struct edac_dev_feat_ctx. Header already includes linux/device.h so just drop this. > + > +struct edac_dev_feat_ctx { > + struct device dev; > + void *private; > +}; > + > +struct edac_dev_feature { > + enum edac_dev_feat ft_type; > + u8 instance; > + void *ctx; > +}; > + > +int edac_dev_register(struct device *parent, char *dev_name, > + void *parent_pvt_data, int num_features, > + const struct edac_dev_feature *ras_features); > #endif /* _LINUX_EDAC_H_ */