From nobody Sat Aug 9 12:35:55 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bzgNr1TzZz64C6Z; Sat, 09 Aug 2025 12:35:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bzgNr0fLKz3lsV; Sat, 09 Aug 2025 12:35:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a1fYlzhzD+LRXuMlm86K+OzfUwwd6e6Jc0HucMZmot4=; b=Cc1x5Q9EcaBakEDpZCrBDM+SQ0aKh/xVT3HEHcc5tfTa1eff74FR2+1cRWZCgORuoXcoTE gua8vcKWVFiUeclMt+ptXl0itcIp+kN/80pbUY2hbfFmYybJH2uui3pSqBRtBM5sV8f+KS xPBCI9/x+lZp4tARZZkljCnW2e0fGoQ506pZfVsbnuS3Lq3ejzhFKsBeJ+qs45jdwVcQxO MZJMa6Xoycdy5JGjiDE7Xj6VFg5HbTBkI+1Cx9Fr5aZzXs4kEVYBQwe5ZR85s7A8apxo0R oNNPfVfkOsT0aR5Hey7ybvLohDV1xf7gLA7DG7LiWbKtCbfAilPhx25bbizNPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1754742956; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=a1fYlzhzD+LRXuMlm86K+OzfUwwd6e6Jc0HucMZmot4=; b=GSFrbbe8ZQStwJfj2h9MfMEKLySoVWLi9CcSjVnRvdCp4Arqxh9V/DAD8jjCG4x/sVtdBx gfJMmYzlJCnWtk3WRpY6qKtsNYUUXio4U/4rKBAiiQeAx+NozbuoaZlL0XJ9ekJU6oVdqy 9TBgHsX2ZwpXGAaH+4Ol9eRiSAOJOPAN6m9Hg3SR02fOQ5+ArIo+RnMwsbVojawq0HavbO Nj2U8rTSvo0eOaeaaQXg9THFsy+S8Q40vJzH5N1J/+GSqVMj6f2nFEzwKbRG52enk4CYfN xztSoF0+h4eFvD6+W1gWcgQC2M9DgEYG3DBAgqVKpRWpSYjEoWKCkfnggrj2AQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1754742956; a=rsa-sha256; cv=none; b=oyn6pWAmPxv0r6PA6vKnqUiSSlkL5rCNTVXE0e0c/Yhv+N8N4EdKMHZjsUJPylFYLpJ6/u WLDCZvJdBM/GVuEzqGTv1Jh1RxKTKToBn/N3PoRZOg/FouDpf9PBA1Gu2gNgaVL9bXPwJV wqlKkhRQuXTRmTD/bYk1ZnlrGjqm32iWR4YRDRn3/TIqmcJCElOJGUyK81tSu3u4+XI/az LyoIzKLzB6C1VMCECiFjaO7zrSCcvCsLOTK4h95Y+9ZZmSHbD0foCzOSYeAtq9OUmUr510 ATrb8SI12hLkz1Xtw7VDsE49Vv8l+6atXrTyvgpdMgowFT9tAgVp6OOOMfvPjA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bzgNq6qmdz63G; Sat, 09 Aug 2025 12:35:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 579CZtHK020469; Sat, 9 Aug 2025 12:35:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 579CZt0s020466; Sat, 9 Aug 2025 12:35:55 GMT (envelope-from git) Date: Sat, 9 Aug 2025 12:35:55 GMT Message-Id: <202508091235.579CZt0s020466@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien?= =?utf-8?Q?P=C3=A9dron?= Subject: git: 7e5d7b0e8198 - main - linuxkpi: Add `sysfs_add_file_to_group()` and `sysfs_remove_file_from_group()` List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e5d7b0e8198beb97de040c64ee327a982201073 Auto-Submitted: auto-generated The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=7e5d7b0e8198beb97de040c64ee327a982201073 commit 7e5d7b0e8198beb97de040c64ee327a982201073 Author: Jean-Sébastien Pédron AuthorDate: 2025-06-18 20:37:10 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2025-08-09 12:26:23 +0000 linuxkpi: Add `sysfs_add_file_to_group()` and `sysfs_remove_file_from_group()` They are used by the amdgpu DRM driver for quite some time, but new code using them added to Linux 6.9 made me discover that these functions were missing and existing code was commentted out. Reviewed by: manu Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50987 --- sys/compat/linuxkpi/common/include/linux/sysfs.h | 57 ++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/sysfs.h b/sys/compat/linuxkpi/common/include/linux/sysfs.h index 65e023031bb2..470c224a9778 100644 --- a/sys/compat/linuxkpi/common/include/linux/sysfs.h +++ b/sys/compat/linuxkpi/common/include/linux/sysfs.h @@ -189,6 +189,50 @@ sysfs_create_file(struct kobject *kobj, const struct attribute *attr) return (0); } +static inline struct kobject * +__sysfs_lookup_group(struct kobject *kobj, const char *group) +{ + int found; + struct sysctl_oid *group_oidp; + struct kobject *group_kobj; + + found = 0; + if (group != NULL) { + SYSCTL_FOREACH(group_oidp, SYSCTL_CHILDREN(kobj->oidp)) { + if (strcmp(group_oidp->oid_name, group) != 0) + continue; + found = 1; + break; + } + } else { + found = 1; + group_oidp = kobj->oidp; + } + + if (!found) + return (NULL); + + group_kobj = group_oidp->oid_arg1; + + return (group_kobj); +} + +static inline int +sysfs_add_file_to_group(struct kobject *kobj, + const struct attribute *attr, const char *group) +{ + int ret; + struct kobject *group_kobj; + + group_kobj = __sysfs_lookup_group(kobj, group); + if (group_kobj == NULL) + return (-ENOENT); + + ret = sysfs_create_file(group_kobj, attr); + + return (ret); +} + static inline void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr) { @@ -197,6 +241,19 @@ sysfs_remove_file(struct kobject *kobj, const struct attribute *attr) sysctl_remove_name(kobj->oidp, attr->name, 1, 1); } +static inline void +sysfs_remove_file_from_group(struct kobject *kobj, + const struct attribute *attr, const char *group) +{ + struct kobject *group_kobj; + + group_kobj = __sysfs_lookup_group(kobj, group); + if (group_kobj == NULL) + return; + + sysfs_remove_file(group_kobj, attr); +} + static inline int sysctl_handle_bin_attr(SYSCTL_HANDLER_ARGS) {