drm_dp_mst_get_port_malloc(9)
β¨ drm_dp_mst_get_port_malloc(9) β¨
okay so bestie, we're in the Kernel API Manual today and this one's a lil reference-counting baddie from the DRM DP MST world π she's short, she's sweet, she's load-bearing.
πΈ NAME πΈ
drm_dp_mst_get_port_malloc β increment the malloc refcount of an MST port π
π¦ SYNOPSIS π¦
void drm_dp_mst_get_port_malloc (struct drm_dp_mst_port *port );
π ARGUMENTS π
portβ thestruct drm_dp_mst_portyou're bumping the malloc refcount on. that's it, that's the whole argument, she's low maintenance π«Ά
π DESCRIPTION π
So what she actually does: she increments drm_dp_mst_port.malloc_kref. that's the vibe. β
And like β when drm_dp_mst_port.malloc_kref hits 0, the memory allocation for port gets released and port may no longer be used. gone. done. don't touch. π
π¨ okay this is the important bit, no cap:portcould potentially be freed at any time by the DP MST helpers ifdrm_dp_mst_port.malloc_krefreaches0β including during a call to this function. so like... yeah. be careful. π
because of that, drivers that wanna make use of struct drm_dp_mst_port should ensure that they grab at least one main malloc reference to their MST ports in drm_dp_mst_topology_cbs.add_connector. why that callback specifically? because it's called before there's any chance for drm_dp_mst_port.malloc_kref to reach 0. iconic safety window, honestly. β¨
See also: drm_dp_mst_put_port_malloc π§
π SEE ALSO π
Kernel file ./drivers/gpu/drm/display/drm_dp_mst_topology.c
dp mst helper(9)Branch device and port refcounting(9)drm_dp_mst_get_mstb_malloc(9)drm_dp_mst_put_mstb_malloc(9)drm_dp_mst_put_port_malloc(9)drm_dp_mst_topology_try_get_mstb(9)drm_dp_mst_topology_get_mstb(9)drm_dp_mst_topology_put_mstb(9)drm_dp_mst_topology_try_get_port(9)drm_dp_mst_topology_get_port(9)drm_dp_mst_topology_put_port(9)drm_dp_mst_dpcd_read(9)drm_dp_mst_dpcd_write(9)drm_dp_mst_connector_late_register(9)drm_dp_mst_connector_early_unregister(9)drm_dp_add_payload_part1(9)drm_dp_remove_payload_part1(9)drm_dp_remove_payload_part2(9)drm_dp_add_payload_part2(9)drm_dp_get_vc_payload_bw(9)drm_dp_read_mst_cap(9)drm_dp_mst_topology_mgr_set_mst(9)drm_dp_mst_topology_queue_probe(9)drm_dp_mst_topology_mgr_suspend(9)drm_dp_mst_topology_mgr_resume(9)drm_dp_mst_hpd_irq_handle_event(9)drm_dp_mst_hpd_irq_send_new_request(9)drm_dp_mst_detect_port(9)drm_dp_mst_edid_read(9)drm_dp_mst_get_edid(9)drm_dp_atomic_find_time_slots(9)drm_dp_atomic_release_time_slots(9)drm_dp_mst_atomic_setup_commit(9)drm_dp_mst_atomic_wait_for_dependencies(9)drm_dp_mst_root_conn_atomic_check(9)drm_dp_mst_update_slots(9)drm_dp_check_act_status(9)drm_dp_calc_pbn_mode(9)drm_dp_mst_dump_topology(9)drm_dp_mst_port_downstream_of_parent(9)drm_dp_mst_add_affected_dsc_crtcs(9)drm_dp_mst_atomic_enable_dsc(9)drm_dp_mst_atomic_check_mgr(9)drm_dp_mst_atomic_check(9)drm_atomic_get_mst_topology_state(9)drm_atomic_get_old_mst_topology_state(9)drm_atomic_get_new_mst_topology_state(9)drm_dp_mst_topology_mgr_init(9)drm_dp_mst_topology_mgr_destroy(9)drm_dp_mst_register_i2c_bus(9)drm_dp_mst_unregister_i2c_bus(9)drm_dp_mst_is_virtual_dpcd(9)drm_dp_mst_aux_for_parent(9)drm_dp_mst_dsc_aux_for_port(9)
that's the whole page bestie, short and slay π
source path: ./drivers/gpu/drm/display πΈ dated: October 2026 π¦ mwah, go grab your malloc refs responsibly π
π¦ 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