security_shm_shmat(9)
π security_shm_shmat(9) π
okay so bestie, welcome to the Kernel API Manual (section 9, we love a classic) β this is the whole lore on security_shm_shmat(9), the little LSM hook that decides whether a sysv shm attach gets to happen. no cap, it's short, so let's go π«Ά
β¨ NAME β¨
security_shm_shmat β check if a sysv shm attach operation is allowed π
πΈ SYNOPSIS πΈ
int security_shm_shmat (struct kern_ipc_perm *shp , char __user *shmaddr
, int shmflg );
π ARGUMENTS π
shpβ the sysv ipc permission structure, aka the receipts on who's allowed to do what πshmaddrβ address of the memory region to attach, like the exact spot in memory we're pulling up to πΊοΈshmflgβ operation flags, the little switches that change the vibe of the operation ποΈ
π¦ DESCRIPTION π¦
So what this hook does is check permissions before it lets the shmat system call attach the shared memory segment β the one with permissions shp β to the data segment of the calling process. literally a vibe check for shared memory π
The attaching address is specified by shmaddr, so yeah, that's where it's gonna live in memory if it gets the green light β¨
β RETURN β
Returns 0 if permission is granted. that's the whole return section, bestie β 0 means yes, slay π
π SEE ALSO π
Kernel file ./security/security.c β and like, the entire extended friend group of LSM hooks, no cap:
lsm_file_alloc(9), lsm_backing_file_alloc(9), lsm_blob_alloc(9), lsm_cred_alloc(9), lsm_inode_alloc(9), lsm_task_alloc(9), lsm_ipc_alloc(9), lsm_key_alloc(9), lsm_msg_msg_alloc(9), lsm_bdev_alloc(9), lsm_bpf_map_alloc(9), lsm_bpf_prog_alloc(9), lsm_bpf_token_alloc(9), lsm_superblock_alloc(9), lsm_fill_user_ctx(9), security_binder_set_context_mgr(9), security_binder_transaction(9), security_binder_transfer_binder(9), security_binder_transfer_file(9), security_ptrace_access_check(9), security_ptrace_traceme(9), security_capget(9), security_capset(9), security_capable(9), security_quotactl(9), security_quota_on(9), security_syslog(9), security_settime64(9), security_vm_enough_memory_mm(9), security_bprm_creds_for_exec(9), security_bprm_creds_from_file(9), security_bprm_check(9), security_bprm_committing_creds(9), security_bprm_committed_creds(9), security_fs_context_submount(9), security_fs_context_dup(9), security_fs_context_parse_param(9), security_sb_alloc(9), security_sb_delete(9), security_sb_free(9), security_free_mnt_opts(9), security_sb_eat_lsm_opts(9), security_sb_mnt_opts_compat(9), security_sb_remount(9), security_sb_kern_mount(9), security_sb_show_options(9), security_sb_statfs(9), security_sb_mount(9), security_sb_umount(9), security_sb_pivotroot(9), security_sb_set_mnt_opts(9), security_sb_clone_mnt_opts(9), security_move_mount(9), security_path_notify(9), security_inode_alloc(9), security_inode_free(9), security_dentry_init_security(9), security_dentry_create_files_as(9), security_inode_init_security(9), security_inode_init_security_anon(9), security_path_mknod(9), security_path_post_mknod(9), security_path_mkdir(9), security_path_rmdir(9), security_path_unlink(9), security_path_symlink(9), security_path_link(9), security_path_rename(9), security_path_truncate(9), security_path_chmod(9), security_path_chown(9), security_path_chroot(9), security_inode_create(9), security_inode_post_create_tmpfile(9), security_inode_link(9), security_inode_unlink(9), security_inode_symlink(9), security_inode_mkdir(9), security_inode_rmdir(9), security_inode_mknod(9), security_inode_rename(9), security_inode_readlink(9), security_inode_follow_link(9), security_inode_permission(9), security_inode_setattr(9), security_inode_post_setattr(9), security_inode_getattr(9), security_inode_setxattr(9), security_inode_set_acl(9), security_inode_post_set_acl(9), security_inode_get_acl(9), security_inode_remove_acl(9), security_inode_post_remove_acl(9), security_inode_post_setxattr(9), security_inode_getxattr(9), security_inode_listxattr(9), security_inode_removexattr(9), security_inode_post_removexattr(9), security_inode_file_setattr(9), security_inode_file_getattr(9), security_inode_need_killpriv(9), security_inode_killpriv(9), security_inode_getsecurity(9), security_inode_setsecurity(9), security_inode_listsecurity(9), security_inode_getlsmprop(9), security_inode_copy_up(9), security_inode_copy_up_xattr(9), security_inode_setintegrity(9), security_kernfs_init_security(9), security_file_permission(9), security_file_alloc(9), security_file_release(9), security_file_free(9), security_backing_file_alloc(9), security_backing_file_free(9), security_file_ioctl(9), security_file_ioctl_compat(9), security_mmap_file(9), security_mmap_backing_file(9), security_mmap_addr(9), security_file_mprotect(9), security_file_lock(9), security_file_fcntl(9), security_file_set_fowner(9), security_file_send_sigiotask(9), security_file_receive(9), security_file_open(9), security_file_post_open(9), security_file_truncate(9), security_task_alloc(9), security_task_free(9), security_cred_alloc_blank(9), security_cred_free(9), security_prepare_creds(9), security_transfer_creds(9), security_cred_getsecid(9), security_cred_getlsmprop(9), security_kernel_act_as(9), security_kernel_create_files_as(9), security_kernel_module_request(9), security_kernel_read_file(9), security_kernel_post_read_file(9), security_kernel_load_data(9), security_kernel_post_load_data(9), security_task_fix_setuid(9), security_task_fix_setgid(9), security_task_fix_setgroups(9), security_task_setpgid(9), security_task_getpgid(9), security_task_getsid(9), security_current_getlsmprop_subj(9), security_task_getlsmprop_obj(9), security_task_setnice(9), security_task_setioprio(9), security_task_getioprio(9), security_task_prlimit(9), security_task_setrlimit(9), security_task_setscheduler(9), security_task_getscheduler(9), security_task_movememory(9), security_task_kill(9), security_task_prctl(9), security_task_to_inode(9), security_create_user_ns(9), security_ipc_permission(9), security_ipc_getlsmprop(9), security_msg_msg_alloc(9), security_msg_msg_free(9), security_msg_queue_alloc(9), security_msg_queue_free(9), security_msg_queue_associate(9), security_msg_queue_msgctl(9), security_msg_queue_msgsnd(9), security_msg_queue_msgrcv(9), security_shm_alloc(9), security_shm_free(9), security_shm_associate(9), security_shm_shmctl(9), security_sem_alloc(9), security_sem_free(9), security_sem_associate(9), security_sem_semctl(9), security_sem_semop(9), security_d_instantiate(9), security_getselfattr(9), security_setselfattr(9), security_getprocattr(9), security_setprocattr(9), security_ismaclabel(9), security_secid_to_secctx(9), security_lsmprop_to_secctx(9), security_secctx_to_secid(9), security_release_secctx(9), security_inode_invalidate_secctx(9), security_inode_notifysecctx(9), security_inode_setsecctx(9), security_inode_getsecctx(9), security_post_notification(9), security_watch_key(9), security_netlink_send(9), security_unix_stream_connect(9), security_unix_may_send(9), security_socket_create(9), security_socket_post_create(9), security_socket_socketpair(9), security_socket_bind(9), security_socket_connect(9), security_socket_listen(9), security_socket_accept(9), security_socket_sendmsg(9), security_socket_recvmsg(9), security_socket_getsockname(9), security_socket_getpeername(9), security_socket_getsockopt(9), security_socket_setsockopt(9), security_socket_shutdown(9), security_sock_rcv_skb(9), security_socket_getpeersec_stream(9), security_socket_getpeersec_dgram(9), lsm_sock_alloc(9), security_sk_alloc(9), security_sk_free(9), security_sk_clone(9), security_sk_classify_flow(9), security_req_classify_flow(9), security_sock_graft(9), security_inet_conn_request(9), security_inet_csk_clone(9), security_inet_conn_established(9), security_secmark_relabel_packet(9), security_secmark_refcount_inc(9), security_secmark_refcount_dec(9), security_tun_dev_alloc_security(9), security_tun_dev_free_security(9), security_tun_dev_create(9), security_tun_dev_attach_queue(9), security_tun_dev_attach(9), security_tun_dev_open(9), security_sctp_assoc_request(9), security_sctp_bind_connect(9), security_sctp_sk_clone(9), security_sctp_assoc_established(9), security_mptcp_add_subflow(9), security_unix_find(9), security_ib_pkey_access(9), security_ib_endport_manage_subnet(9), security_ib_alloc_security(9), security_ib_free_security(9), security_xfrm_policy_alloc(9), security_xfrm_policy_clone(9), security_xfrm_policy_free(9), security_xfrm_policy_delete(9), security_xfrm_state_alloc(9), security_xfrm_state_alloc_acquire(9), security_xfrm_state_delete(9), security_xfrm_state_free(9), security_xfrm_policy_lookup(9), security_xfrm_state_pol_flow_match(9), security_xfrm_decode_session(9), security_key_alloc(9), security_key_free(9), security_key_permission(9), security_key_getsecurity(9), security_key_post_create_or_update(9), security_audit_rule_init(9), security_audit_rule_known(9), security_audit_rule_free(9), security_audit_rule_match(9), security_bpf(9), security_bpf_map(9), security_bpf_prog(9), security_bpf_map_create(9), security_bpf_prog_load(9), security_bpf_token_create(9), security_bpf_token_cmd(9), security_bpf_token_capable(9), security_bpf_map_free(9), security_bpf_prog_free(9), security_bpf_token_free(9), security_locked_down(9), security_bdev_alloc(9), security_bdev_free(9), security_bdev_setintegrity(9), security_perf_event_open(9), security_perf_event_alloc(9), security_perf_event_free(9), security_perf_event_read(9), security_perf_event_write(9), security_uring_override_creds(9), security_uring_sqpoll(9), security_uring_cmd(9), security_uring_allowed(9), security_initramfs_populated(9)
and that's the whole page, bestie β stay hydrated, keep your hooks close, and remember: permission checks are self-care π
this one lives in ./security and is dated October 2026 β mwah, iconic, periodt πβ¨
π¦ 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