From: Heikki Krogerus <heikki.krogerus@linux.intel.com> To: "Rafael J. Wysocki" <rjw@rjwysocki.net> Cc: Hans de Goede <hdegoede@redhat.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Andy Shevchenko <andy@infradead.org>, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v5 02/16] software node: Simplify software_node_release() function Date: Fri, 31 May 2019 17:15:33 +0300 Message-ID: <20190531141547.22728-3-heikki.krogerus@linux.intel.com> (raw) In-Reply-To: <20190531141547.22728-1-heikki.krogerus@linux.intel.com> It's possible to release the node ID immediately when fwnode_remove_software_node() is called, no need to wait for software_node_release() with that. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Tested-by: Hans de Goede <hdegoede@redhat.com> --- drivers/base/swnode.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 30077454eb68..7b321bf8424c 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -557,13 +557,6 @@ static void software_node_release(struct kobject *kobj) { struct software_node *swnode = kobj_to_swnode(kobj); - if (swnode->parent) { - ida_simple_remove(&swnode->parent->child_ids, swnode->id); - list_del(&swnode->entry); - } else { - ida_simple_remove(&swnode_root_ids, swnode->id); - } - ida_destroy(&swnode->child_ids); property_entries_free(swnode->properties); kfree(swnode); @@ -610,9 +603,6 @@ fwnode_create_software_node(const struct property_entry *properties, INIT_LIST_HEAD(&swnode->children); swnode->parent = p; - if (p) - list_add_tail(&swnode->entry, &p->children); - ret = kobject_init_and_add(&swnode->kobj, &software_node_type, p ? &p->kobj : NULL, "node%d", swnode->id); if (ret) { @@ -626,6 +616,9 @@ fwnode_create_software_node(const struct property_entry *properties, return ERR_PTR(ret); } + if (p) + list_add_tail(&swnode->entry, &p->children); + kobject_uevent(&swnode->kobj, KOBJ_ADD); return &swnode->fwnode; } @@ -638,6 +631,13 @@ void fwnode_remove_software_node(struct fwnode_handle *fwnode) if (!swnode) return; + if (swnode->parent) { + ida_simple_remove(&swnode->parent->child_ids, swnode->id); + list_del(&swnode->entry); + } else { + ida_simple_remove(&swnode_root_ids, swnode->id); + } + kobject_put(&swnode->kobj); } EXPORT_SYMBOL_GPL(fwnode_remove_software_node); -- 2.20.1
next prev parent reply index Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-31 14:15 [PATCH v5 00/16] Software fwnode references Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 01/16] software node: Allow node creation without properties Heikki Krogerus 2019-05-31 14:15 ` Heikki Krogerus [this message] 2019-05-31 14:15 ` [PATCH v5 03/16] software node: Add support for static node descriptors Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 04/16] software node: Use kobject name when finding child nodes by name Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 05/16] software node: Add software_node_get_reference_args() Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 06/16] driver core: Add helper device_find_child_by_name() Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 07/16] ACPI / property: Don't limit named child node matching to data nodes Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 08/16] device property: Introduce fwnode_find_reference() Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 09/16] device connection: Find connections also by checking the references Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 10/16] usb: typec: Registering real device entries for the muxes Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 11/16] platform/x86: intel_cht_int33fe: Register max17047 in its own function Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 12/16] platform/x86: intel_cht_int33fe: Remove unused fusb302 device property Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 13/16] platform/x86: intel_cht_int33fe: Provide software nodes for the devices Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 14/16] platform/x86: intel_cht_int33fe: Provide fwnode for the USB connector Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 15/16] platform/x86: intel_cht_int33fe: Supply fwnodes for the external dependencies Heikki Krogerus 2019-05-31 14:15 ` [PATCH v5 16/16] platform/x86: intel_cht_int33fe: Replacing the old connections with references Heikki Krogerus 2019-06-13 20:28 ` [PATCH v5 00/16] Software fwnode references Rafael J. Wysocki
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190531141547.22728-3-heikki.krogerus@linux.intel.com \ --to=heikki.krogerus@linux.intel.com \ --cc=andy@infradead.org \ --cc=gregkh@linuxfoundation.org \ --cc=hdegoede@redhat.com \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=platform-driver-x86@vger.kernel.org \ --cc=rjw@rjwysocki.net \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-ACPI Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-acpi/0 linux-acpi/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-acpi linux-acpi/ https://lore.kernel.org/linux-acpi \ linux-acpi@vger.kernel.org public-inbox-index linux-acpi Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-acpi AGPL code for this site: git clone https://public-inbox.org/public-inbox.git