device_release(9)
π device_release (kernel API manual, bestie edition)
okay so real talk β this is the device_release(9) page from the Kernel API Manual, and it's honestly short but it's got main character energy. lowkey it's the page you read when you're like "wait, who actually frees the device struct??" and the answer is: this function, at the very end, like a closer at a concert π€β¨
πΈ NAME πΈ
device_release β the one that frees the device structure. yes really, that's the whole job. no cap. π«Ά
β¨ SYNOPSIS β¨
void device_release (struct kobject *kobj );
like, that's it. that's the signature. void return, one argument, iconic. π
π ARGUMENTS π
kobjβ the device's kobject. that's its kobject, the one belonging to the device we're about to be done with. π¦
π₯ DESCRIPTION π₯
so here's the vibe check: this gets called once the reference count for the object reaches 0. like when literally nobody's holding a ref anymore, the count hits zero, and it's time π¬
and the way that it does the thing? it forwards the call to the device's release method, and that method is the one that should handle actually freeing the structure. so device_release isn't out here doing the freeing itself β it's more like the group-chat admin who forwards your message to the person who can actually handle it ππ
fr fr: the actual freeing is the release method's responsibility, not this function's. this one just passes it along. π«Ά
π§ SEE ALSO π§
the kernel file ./drivers/base/core.c and honestly the entire extended friend group β like this list is long long, but every single one of them is here because we don't do half-finished recaps in this house π
__fwnode_link_add(9)__fwnode_link_del(9)__fwnode_link_cycle(9)fwnode_links_purge_suppliers(9)fwnode_links_purge_consumers(9)fwnode_links_purge(9)__fwnode_links_move_consumers(9)__fw_devlink_pickup_dangling_consumers(9)fw_devlink_refresh_fwnode(9)device_is_dependent(9)device_pm_move_to_tail(9)device_link_wait_removal(9)device_link_add(9)device_link_del(9)device_link_remove(9)device_links_check_suppliers(9)__device_links_queue_sync_state(9)device_links_flush_sync_list(9)device_links_force_bind(9)device_links_driver_bound(9)__device_links_no_driver(9)device_links_no_driver(9)device_links_driver_cleanup(9)device_links_busy(9)device_links_unbind_consumers(9)device_links_purge(9)wait_for_init_devices_probe(9)fwnode_is_ancestor_of(9)fwnode_get_next_parent_dev(9)__fw_devlink_relax_cycles(9)fw_devlink_create_devlink(9)__fw_devlink_link_to_consumers(9)__fw_devlink_link_to_suppliers(9)dev_driver_string(9)devm_device_add_group(9)devices_kset_move_before(9)devices_kset_move_after(9)devices_kset_move_last(9)device_create_file(9)device_remove_file(9)device_remove_file_self(9)device_create_bin_file(9)device_remove_bin_file(9)device_initialize(9)kobject_has_children(9)dev_set_name(9)device_add(9)device_register(9)get_device(9)put_device(9)device_del(9)device_unregister(9)device_get_devnode(9)device_for_each_child(9)device_for_each_child_reverse(9)device_for_each_child_reverse_from(9)device_find_child(9)device_offline(9)device_online(9)__root_device_register(9)root_device_unregister(9)device_create(9)device_create_with_groups(9)device_destroy(9)device_rename(9)device_move(9)device_change_owner(9)device_shutdown(9)dev_err_probe(9)dev_warn_probe(9)set_primary_fwnode(9)set_secondary_fwnode(9)device_remove_of_node(9)device_add_of_node(9)device_set_of_node_from_dev(9)get_dev_from_fwnode(9)
like I said. the whole squad. ππ
okok that's the page!! and for the cute little sign-off moment: this absolute gem lives in ./drivers/base, it's from October 2026, and yes it's page device_release(9) of the Kernel API Manual β go free your devices responsibly bestie, love u, bye πππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms