smk_list_swap_rcu(9)
β¨ smk_list_swap_rcu π β from the Kernel API Manual, bestie π
okay so picture this: you're deep in the kernel docs and this little function pops up, and honestly? it's giving "quiet luxury" β small, does one thing, slays. it's smk_list_swap_rcu, straight out of the Kernel API Manual, and no cap it's lowkey iconic for what it does.
β¨ NAME β¨
smk_list_swap_rcu β swap a public list with a private one in an RCU-safe way π¦
ok so like, plot twist: the caller must hold the appropriate mutex to prevent concurrent modifications to the public list. that part is not optional, bestie, that's the whole vibe check. and the private list? it's assumed to be not accessible to other threads yet π β like it hasn't been introduced to the group chat, so nobody else can touch it. periodt.
πΈ SYNOPSIS πΈ
void smk_list_swap_rcu (struct list_head *public , struct list_head *private );
like, literally that's it. two lists walk in, vibes get swapped, RCU stays happy. π
π ARGUMENTS π
publicβ the public list π the main character, the one everyone can see.privateβ the private list π«Ά the one that's still on "do not disturb" mode, not accessible to other threads yet.
π SEE ALSO π
the kernel file is ./security/smack/smackfs.c β that's the source of truth, bookmark it fr fr. π and here's the whole squad, no one left behind:
smk_netlabel_audit_set(9), smk_set_access(9), smk_perm_from_str(9), smk_fill_rule(9), smk_parse_rule(9), smk_parse_long_rule(9), smk_write_rules_list(9), smk_open_load(9), smk_write_load(9), smk_cipso_doi(9), smk_unlbl_ambient(9), smk_open_cipso(9), smk_set_cipso(9), smk_write_cipso(9), smk_open_cipso2(9), smk_write_cipso2(9), smk_open_net4addr(9), smk_net4addr_insert(9), smk_write_net4addr(9), smk_open_net6addr(9), smk_net6addr_insert(9), smk_write_net6addr(9), smk_read_doi(9), smk_write_doi(9), smk_read_cipso_auto_level(9), smk_write_cipso_auto_level(9), smk_read_ambient(9), smk_write_ambient(9), smk_parse_label_list(9), smk_destroy_label_list(9), smk_write_onlycap(9), smk_read_unconfined(9), smk_write_unconfined(9), smk_read_logging(9), smk_write_logging(9), smk_open_load_self(9), smk_write_load_self(9), smk_user_access(9), smk_write_access(9), smk_open_load2(9), smk_write_load2(9), smk_open_load_self2(9), smk_write_load_self2(9), smk_write_access2(9), smk_write_revoke_subj(9), smk_init_sysfs(9), smk_write_change_rule(9), smk_read_syslog(9), smk_write_syslog(9), smk_open_relabel_self(9), smk_write_relabel_self(9), smk_read_ptrace(9), smk_write_ptrace(9), smk_fill_super(9), smk_get_tree(9), smk_init_fs_context(9), init_smk_fs(9)
heads up bestie: mutex first, swapping second. skipping the mutex is not cute, it's a whole mess, and the private list is only off-limits-to-others yet β don't go reading into that. π
aaaand that's the page!! π§ source is ./security/smack, dated October 2026, and the whole thing is filed under smk_list_swap_rcu(9) β go off, you understood it perfectly, i'm obsessed. βππ
π¦ 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