€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ,/translations/zh_CN/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/zh_TW/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/it_IT/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ja_JP/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ko_KR/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/pt_BR/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/sp_SP/security/lsm-development”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ!Linux Security Module Development”h]”hŒ!Linux Security Module Development”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒF/var/lib/git/docbuild/linux/Documentation/security/lsm-development.rst”h´KubhŒ paragraph”“”)�”}”(hXÝBased on https://lore.kernel.org/r/20071026073721.618b4778@laptopd505.fenrus.org, a new LSM is accepted into the kernel when its intent (a description of what it tries to protect against and in what cases one would expect to use it) has been appropriately documented in ``Documentation/admin-guide/LSM/``. This allows an LSM's code to be easily compared to its goals, and so that end users and distros can make a more informed decision about which LSMs suit their requirements.”h]”(hŒ Based on ”…”�”}”(hhÍh²hh³Nh´NubhŒ reference”“”)�”}”(hŒGhttps://lore.kernel.org/r/20071026073721.618b4778@laptopd505.fenrus.org”h]”hŒGhttps://lore.kernel.org/r/20071026073721.618b4778@laptopd505.fenrus.org”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”hÙuh1hÕhhÍubhŒ¾, a new LSM is accepted into the kernel when its intent (a description of what it tries to protect against and in what cases one would expect to use it) has been appropriately documented in ”…”�”}”(hhÍh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ"``Documentation/admin-guide/LSM/``”h]”hŒDocumentation/admin-guide/LSM/”…”�”}”(hhìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhhÍubhŒ¯. This allows an LSM’s code to be easily compared to its goals, and so that end users and distros can make a more informed decision about which LSMs suit their requirements.”…”�”}”(hhÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubhÌ)�”}”(hŒFor extensive documentation on the available LSM hook interfaces, please see ``security/security.c`` and associated structures:”h]”(hŒMFor extensive documentation on the available LSM hook interfaces, please see ”…”�”}”(hjh²hh³Nh´Nubhë)�”}”(hŒ``security/security.c``”h]”hŒsecurity/security.c”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjubhŒ and associated structures:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hh·h²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ#security_free_mnt_opts (C function)”Œc.security_free_mnt_opts”hNt”auh1j$hh·h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ-void security_free_mnt_opts (void **mnt_opts)”h]”hŒdesc_signature_line”“”)�”}”(hŒ,void security_free_mnt_opts(void **mnt_opts)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jFhjBh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jXhjBh²hh³jWh´MÒubhŒ desc_name”“”)�”}”(hŒsecurity_free_mnt_opts”h]”hŒ desc_sig_name”“”)�”}”(hŒsecurity_free_mnt_opts”h]”hŒsecurity_free_mnt_opts”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1johjkubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jihjBh²hh³jWh´MÒubhŒdesc_parameterlist”“”)�”}”(hŒ(void **mnt_opts)”h]”hŒdesc_parameter”“”)�”}”(hŒvoid **mnt_opts”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj’ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj’ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j²hj’ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj’ubjp)�”}”(hŒmnt_opts”h]”hŒmnt_opts”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŒubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjBh²hh³jWh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰Œ add_permalink”ˆuh1j@Œsphinx_line_type”Œ declarator”hj<h²hh³jWh´MÒubah}”(h]”j3ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j:h³jWh´MÒhj7h²hubhŒ desc_content”“”)�”}”(hhh]”hÌ)�”}”(hŒ)Free memory associated with mount options”h]”hŒ)Free memory associated with mount options”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj7h²hh³jWh´MÒubeh}”(h]”h ]”(Œc”Œfunction”eh"]”h$]”h&]”Œdomain”jŒobjtype”jŒdesctype”jŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j5h²hhh·h³Nh´NubhŒ container”“”)�”}”(hŒ|**Parameters** ``void **mnt_opts`` LSM processed mount options **Description** Free memory associated with **mnt_ops**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hj/h]”hŒ Parameters”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÖhj)ubhŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hŒ0``void **mnt_opts`` LSM processed mount options ”h]”(hŒterm”“”)�”}”(hŒ``void **mnt_opts``”h]”hë)�”}”(hjVh]”hŒvoid **mnt_opts”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÓhjNubhŒ definition”“”)�”}”(hhh]”hÌ)�”}”(hŒLSM processed mount options”h]”hŒLSM processed mount options”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jkh´MÓhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jkh´MÓhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj)ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj“h]”hŒ Description”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÕhj)ubhÌ)�”}”(hŒ(Free memory associated with **mnt_ops**.”h]”(hŒFree memory associated with ”…”�”}”(hj©h²hh³Nh´Nubj2)�”}”(hŒ **mnt_ops**”h]”hŒmnt_ops”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj©ubhŒ.”…”�”}”(hj©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÔhj)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_sb_eat_lsm_opts (C function)”Œc.security_sb_eat_lsm_opts”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ=int security_sb_eat_lsm_opts (char *options, void **mnt_opts)”h]”jA)�”}”(hŒh]”hŒ Parameters”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Môhj8ubjH)�”}”(hhh]”(jM)�”}”(hŒ1``struct super_block *sb`` filesystem superblock ”h]”(jS)�”}”(hŒ``struct super_block *sb``”h]”hë)�”}”(hj]h]”hŒstruct super_block *sb”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MñhjWubjm)�”}”(hhh]”hÌ)�”}”(hŒfilesystem superblock”h]”hŒfilesystem superblock”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrh´Mñhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrh´MñhjTubjM)�”}”(hŒ%``void *mnt_opts`` new mount options ”h]”(jS)�”}”(hŒ``void *mnt_opts``”h]”hë)�”}”(hj–h]”hŒvoid *mnt_opts”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mòhj�ubjm)�”}”(hhh]”hÌ)�”}”(hŒnew mount options”h]”hŒnew mount options”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«h´Mòhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j«h´MòhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj8ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjÑh]”hŒ Description”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Môhj8ubhÌ)�”}”(hŒ’Determine if the new mount options in **mnt_opts** are allowed given the existing mounted filesystem at **sb**. **sb** superblock being compared.”h]”(hŒ&Determine if the new mount options in ”…”�”}”(hjçh²hh³Nh´Nubj2)�”}”(hŒ **mnt_opts**”h]”hŒmnt_opts”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjçubhŒ6 are allowed given the existing mounted filesystem at ”…”�”}”(hjçh²hh³Nh´Nubj2)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjçubhŒ. ”…”�”}”(hjçh²hh³Nh´Nubj2)�”}”(hŒ**sb**”h]”hŒsb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjçubhŒ superblock being compared.”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Móhj8ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj.h]”hŒReturn”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Möhj8ubhÌ)�”}”(hŒ$Returns 0 if options are compatible.”h]”hŒ$Returns 0 if options are compatible.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷hj8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_sb_remount (C function)”Œc.security_sb_remount”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ@int security_sb_remount (struct super_block *sb, void *mnt_opts)”h]”jA)�”}”(hŒ?int security_sb_remount(struct super_block *sb, void *mnt_opts)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjoh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjoh²hh³j�h´Mubjj)�”}”(hŒsecurity_sb_remount”h]”jp)�”}”(hŒsecurity_sb_remount”h]”hŒsecurity_sb_remount”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjoh²hh³j�h´Mubj‹)�”}”(hŒ((struct super_block *sb, void *mnt_opts)”h]”(j‘)�”}”(hŒstruct super_block *sb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¬ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¬ubh)�”}”(hhh]”jp)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÐŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj–sbŒc.security_sb_remount”†”asbuh1hhj¬ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¬ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¬ubjp)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj¨ubj‘)�”}”(hŒvoid *mnt_opts”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjubjp)�”}”(hŒmnt_opts”h]”hŒmnt_opts”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjoh²hh³j�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjkh²hh³j�h´Mubah}”(h]”jfah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j�h´Mhjhh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ3Verify no incompatible mount changes during remount”h]”hŒ3Verify no incompatible mount changes during remount”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjhh²hh³j�h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j�j#j�j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct super_block *sb`` filesystem superblock ``void *mnt_opts`` (re)mount options **Description** Extracts security system specific mount options and verifies no changes are being made to those options. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj—h]”hŒ Parameters”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‘ubjH)�”}”(hhh]”(jM)�”}”(hŒ1``struct super_block *sb`` filesystem superblock ”h]”(jS)�”}”(hŒ``struct super_block *sb``”h]”hë)�”}”(hj¶h]”hŒstruct super_block *sb”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj°ubjm)�”}”(hhh]”hÌ)�”}”(hŒfilesystem superblock”h]”hŒfilesystem superblock”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËh´MhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jËh´Mhj­ubjM)�”}”(hŒ%``void *mnt_opts`` (re)mount options ”h]”(jS)�”}”(hŒ``void *mnt_opts``”h]”hë)�”}”(hjïh]”hŒvoid *mnt_opts”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjéubjm)�”}”(hhh]”hÌ)�”}”(hŒ(re)mount options”h]”hŒ(re)mount options”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´Mhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‘ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj* h]”hŒ Description”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‘ubhÌ)�”}”(hŒhExtracts security system specific mount options and verifies no changes are being made to those options.”h]”hŒhExtracts security system specific mount options and verifies no changes are being made to those options.”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‘ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjQ h]”hŒReturn”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‘ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_sb_set_mnt_opts (C function)”Œc.security_sb_set_mnt_opts”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ~int security_sb_set_mnt_opts (struct super_block *sb, void *mnt_opts, unsigned long kern_flags, unsigned long *set_kern_flags)”h]”jA)�”}”(hŒ}int security_sb_set_mnt_opts(struct super_block *sb, void *mnt_opts, unsigned long kern_flags, unsigned long *set_kern_flags)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj’ h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MoubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj’ h²hh³j¤ h´Moubjj)�”}”(hŒsecurity_sb_set_mnt_opts”h]”jp)�”}”(hŒsecurity_sb_set_mnt_opts”h]”hŒsecurity_sb_set_mnt_opts”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj³ ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj’ h²hh³j¤ h´Moubj‹)�”}”(hŒa(struct super_block *sb, void *mnt_opts, unsigned long kern_flags, unsigned long *set_kern_flags)”h]”(j‘)�”}”(hŒstruct super_block *sb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÏ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÏ ubh)�”}”(hhh]”jp)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjî ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jó Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¹ sbŒc.security_sb_set_mnt_opts”†”asbuh1hhjÏ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÏ ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÏ ubjp)�”}”(hŒsb”h]”hŒsb”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÏ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjË ubj‘)�”}”(hŒvoid *mnt_opts”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjA ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjA ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hja h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjA ubjp)�”}”(hŒmnt_opts”h]”hŒmnt_opts”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjA ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjË ubj‘)�”}”(hŒunsigned long kern_flags”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjƒ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjƒ ubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjƒ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjƒ ubjp)�”}”(hŒ kern_flags”h]”hŒ kern_flags”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjƒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjË ubj‘)�”}”(hŒunsigned long *set_kern_flags”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÔ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÔ ubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÔ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÔ ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÔ ubjp)�”}”(hŒset_kern_flags”h]”hŒset_kern_flags”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÔ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjË ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj’ h²hh³j¤ h´Moubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjŽ h²hh³j¤ h´Moubah}”(h]”j‰ ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¤ h´Mohj‹ h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ&Set the mount options for a filesystem”h]”hŒ&Set the mount options for a filesystem”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MohjD h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj‹ h²hh³j¤ h´Moubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j_ j#j_ j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX]**Parameters** ``struct super_block *sb`` filesystem superblock ``void *mnt_opts`` binary mount options ``unsigned long kern_flags`` kernel flags (in) ``unsigned long *set_kern_flags`` kernel flags (out) **Description** Set the security relevant mount options used for a superblock. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hji h]”hŒ Parameters”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mshjc ubjH)�”}”(hhh]”(jM)�”}”(hŒ1``struct super_block *sb`` filesystem superblock ”h]”(jS)�”}”(hŒ``struct super_block *sb``”h]”hë)�”}”(hjˆ h]”hŒstruct super_block *sb”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mphj‚ ubjm)�”}”(hhh]”hÌ)�”}”(hŒfilesystem superblock”h]”hŒfilesystem superblock”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j� h´Mphjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‚ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j� h´Mphj ubjM)�”}”(hŒ(``void *mnt_opts`` binary mount options ”h]”(jS)�”}”(hŒ``void *mnt_opts``”h]”hë)�”}”(hjÁ h]”hŒvoid *mnt_opts”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mqhj» ubjm)�”}”(hhh]”hÌ)�”}”(hŒbinary mount options”h]”hŒbinary mount options”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖ h´Mqhj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj» ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖ h´Mqhj ubjM)�”}”(hŒ/``unsigned long kern_flags`` kernel flags (in) ”h]”(jS)�”}”(hŒ``unsigned long kern_flags``”h]”hë)�”}”(hjú h]”hŒunsigned long kern_flags”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mrhjô ubjm)�”}”(hhh]”hÌ)�”}”(hŒkernel flags (in)”h]”hŒkernel flags (in)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mrhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´Mrhj ubjM)�”}”(hŒ5``unsigned long *set_kern_flags`` kernel flags (out) ”h]”(jS)�”}”(hŒ!``unsigned long *set_kern_flags``”h]”hë)�”}”(hj3 h]”hŒunsigned long *set_kern_flags”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mshj- ubjm)�”}”(hhh]”hÌ)�”}”(hŒkernel flags (out)”h]”hŒkernel flags (out)”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jH h´MshjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj- ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH h´Mshj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjc ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjn h]”hŒ Description”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Muhjc ubhÌ)�”}”(hŒ>Set the security relevant mount options used for a superblock.”h]”hŒ>Set the security relevant mount options used for a superblock.”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mthjc ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj• h]”hŒReturn”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj“ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mvhjc ubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mwhjc ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_sb_clone_mnt_opts (C function)”Œc.security_sb_clone_mnt_opts”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ”int security_sb_clone_mnt_opts (const struct super_block *oldsb, struct super_block *newsb, unsigned long kern_flags, unsigned long *set_kern_flags)”h]”jA)�”}”(hŒ“int security_sb_clone_mnt_opts(const struct super_block *oldsb, struct super_block *newsb, unsigned long kern_flags, unsigned long *set_kern_flags)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÖ h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÖ h²hh³jè h´MŒubjj)�”}”(hŒsecurity_sb_clone_mnt_opts”h]”jp)�”}”(hŒsecurity_sb_clone_mnt_opts”h]”hŒsecurity_sb_clone_mnt_opts”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj÷ ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjÖ h²hh³jè h´MŒubj‹)�”}”(hŒu(const struct super_block *oldsb, struct super_block *newsb, unsigned long kern_flags, unsigned long *set_kern_flags)”h]”(j‘)�”}”(hŒconst struct super_block *oldsb”h]”(jL)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj% h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubh)�”}”(hhh]”jp)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjN ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jS Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjý sbŒc.security_sb_clone_mnt_opts”†”asbuh1hhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj ubjp)�”}”(hŒoldsb”h]”hŒoldsb”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj ubj‘)�”}”(hŒstruct super_block *newsb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¡ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¡ ubh)�”}”(hhh]”jp)�”}”(hŒ super_block”h]”hŒ super_block”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÀ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÅ Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jm Œc.security_sb_clone_mnt_opts”†”asbuh1hhj¡ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¡ ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¡ ubjp)�”}”(hŒnewsb”h]”hŒnewsb”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj ubj‘)�”}”(hŒunsigned long kern_flags”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubjp)�”}”(hŒ kern_flags”h]”hŒ kern_flags”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj ubj‘)�”}”(hŒunsigned long *set_kern_flags”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjbubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjbubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjbubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjbubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjbubjp)�”}”(hŒset_kern_flags”h]”hŒset_kern_flags”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjÖ h²hh³jè h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjÒ h²hh³jè h´MŒubah}”(h]”jÍ ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jè h´MŒhjÏ h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Duplicate superblock mount options”h]”hŒ"Duplicate superblock mount options”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŒhjÒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÏ h²hh³jè h´MŒubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jíj#jíj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXn**Parameters** ``const struct super_block *oldsb`` source superblock ``struct super_block *newsb`` destination superblock ``unsigned long kern_flags`` kernel flags (in) ``unsigned long *set_kern_flags`` kernel flags (out) **Description** Copy all security options from a given superblock to another. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj÷h]”hŒ Parameters”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hjñubjH)�”}”(hhh]”(jM)�”}”(hŒ6``const struct super_block *oldsb`` source superblock ”h]”(jS)�”}”(hŒ#``const struct super_block *oldsb``”h]”hë)�”}”(hjh]”hŒconst struct super_block *oldsb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hjubjm)�”}”(hhh]”hÌ)�”}”(hŒsource superblock”h]”hŒsource superblock”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+h´M�hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j+h´M�hj ubjM)�”}”(hŒ5``struct super_block *newsb`` destination superblock ”h]”(jS)�”}”(hŒ``struct super_block *newsb``”h]”hë)�”}”(hjOh]”hŒstruct super_block *newsb”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŽhjIubjm)�”}”(hhh]”hÌ)�”}”(hŒdestination superblock”h]”hŒdestination superblock”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdh´MŽhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jdh´MŽhj ubjM)�”}”(hŒ/``unsigned long kern_flags`` kernel flags (in) ”h]”(jS)�”}”(hŒ``unsigned long kern_flags``”h]”hë)�”}”(hjˆh]”hŒunsigned long kern_flags”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hj‚ubjm)�”}”(hhh]”hÌ)�”}”(hŒkernel flags (in)”h]”hŒkernel flags (in)”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´M�hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M�hj ubjM)�”}”(hŒ5``unsigned long *set_kern_flags`` kernel flags (out) ”h]”(jS)�”}”(hŒ!``unsigned long *set_kern_flags``”h]”hë)�”}”(hjÁh]”hŒunsigned long *set_kern_flags”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hj»ubjm)�”}”(hhh]”hÌ)�”}”(hŒkernel flags (out)”h]”hŒkernel flags (out)”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖh´M�hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖh´M�hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjñubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjüh]”hŒ Description”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M’hjñubhÌ)�”}”(hŒ=Copy all security options from a given superblock to another.”h]”hŒ=Copy all security options from a given superblock to another.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‘hjñubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj#h]”hŒReturn”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M“hjñubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M”hjñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ*security_dentry_init_security (C function)”Œc.security_dentry_init_security”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ‘int security_dentry_init_security (struct dentry *dentry, int mode, const struct qstr *name, const char **xattr_name, struct lsm_context *lsmctx)”h]”jA)�”}”(hŒ�int security_dentry_init_security(struct dentry *dentry, int mode, const struct qstr *name, const char **xattr_name, struct lsm_context *lsmctx)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjdh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjdh²hh³jvh´M÷ubjj)�”}”(hŒsecurity_dentry_init_security”h]”jp)�”}”(hŒsecurity_dentry_init_security”h]”hŒsecurity_dentry_init_security”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj…ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjdh²hh³jvh´M÷ubj‹)�”}”(hŒo(struct dentry *dentry, int mode, const struct qstr *name, const char **xattr_name, struct lsm_context *lsmctx)”h]”(j‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¡ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÅŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj‹sbŒc.security_dentry_init_security”†”asbuh1hhj¡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¡ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¡ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�ubj‘)�”}”(hŒint mode”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�ubj‘)�”}”(hŒconst struct qstr *name”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjHubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjHubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjHubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjHubh)�”}”(hhh]”jp)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j‡Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jߌc.security_dentry_init_security”†”asbuh1hhjHubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjHubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjHubjp)�”}”(hŒname”h]”hŒname”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�ubj‘)�”}”(hŒconst char **xattr_name”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÓubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÓubjG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÓubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÓubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÓubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÓubjp)�”}”(hŒ xattr_name”h]”hŒ xattr_name”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�ubj‘)�”}”(hŒstruct lsm_context *lsmctx”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj=ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj=ubh)�”}”(hhh]”jp)�”}”(hŒ lsm_context”h]”hŒ lsm_context”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jaŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jߌc.security_dentry_init_security”†”asbuh1hhj=ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj=ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj=ubjp)�”}”(hŒlsmctx”h]”hŒlsmctx”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjdh²hh³jvh´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj`h²hh³jvh´M÷ubah}”(h]”j[ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jvh´M÷hj]h²hubj)�”}”(hhh]”hÌ)�”}”(hŒPerform dentry initialization”h]”hŒPerform dentry initialization”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷hj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj]h²hh³jvh´M÷ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÚj#jÚj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXn**Parameters** ``struct dentry *dentry`` the dentry to initialize ``int mode`` mode used to determine resource type ``const struct qstr *name`` name of the last path component ``const char **xattr_name`` name of the security/LSM xattr ``struct lsm_context *lsmctx`` pointer to the resulting LSM context **Description** Compute a context for a dentry as the inode is not yet available since NFSv4 has no label backed by an EA anyway. It is important to note that **xattr_name** does not need to be free'd by the caller, it is a static string. **Return** Returns 0 on success, negative values on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjäh]”hŒ Parameters”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MûhjÞubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct dentry *dentry`` the dentry to initialize ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hjh]”hŒstruct dentry *dentry”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Møhjýubjm)�”}”(hhh]”hÌ)�”}”(hŒthe dentry to initialize”h]”hŒthe dentry to initialize”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Møhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MøhjúubjM)�”}”(hŒ2``int mode`` mode used to determine resource type ”h]”(jS)�”}”(hŒ ``int mode``”h]”hë)�”}”(hj<h]”hŒint mode”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mùhj6ubjm)�”}”(hhh]”hÌ)�”}”(hŒ$mode used to determine resource type”h]”hŒ$mode used to determine resource type”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQh´MùhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQh´MùhjúubjM)�”}”(hŒ<``const struct qstr *name`` name of the last path component ”h]”(jS)�”}”(hŒ``const struct qstr *name``”h]”hë)�”}”(hjuh]”hŒconst struct qstr *name”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Múhjoubjm)�”}”(hhh]”hÌ)�”}”(hŒname of the last path component”h]”hŒname of the last path component”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠh´Múhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠh´MúhjúubjM)�”}”(hŒ;``const char **xattr_name`` name of the security/LSM xattr ”h]”(jS)�”}”(hŒ``const char **xattr_name``”h]”hë)�”}”(hj®h]”hŒconst char **xattr_name”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mûhj¨ubjm)�”}”(hhh]”hÌ)�”}”(hŒname of the security/LSM xattr”h]”hŒname of the security/LSM xattr”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃh´MûhjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃh´MûhjúubjM)�”}”(hŒD``struct lsm_context *lsmctx`` pointer to the resulting LSM context ”h]”(jS)�”}”(hŒ``struct lsm_context *lsmctx``”h]”hë)�”}”(hjçh]”hŒstruct lsm_context *lsmctx”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mühjáubjm)�”}”(hhh]”hÌ)�”}”(hŒ$pointer to the resulting LSM context”h]”hŒ$pointer to the resulting LSM context”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jüh´Mühjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jüh´Mühjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÞubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj"h]”hŒ Description”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MþhjÞubhÌ)�”}”(hŒßCompute a context for a dentry as the inode is not yet available since NFSv4 has no label backed by an EA anyway. It is important to note that **xattr_name** does not need to be free'd by the caller, it is a static string.”h]”(hŒ�Compute a context for a dentry as the inode is not yet available since NFSv4 has no label backed by an EA anyway. It is important to note that ”…”�”}”(hj8h²hh³Nh´Nubj2)�”}”(hŒ**xattr_name**”h]”hŒ xattr_name”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj8ubhŒC does not need to be free’d by the caller, it is a static string.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MýhjÞubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj[h]”hŒReturn”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjÞubhÌ)�”}”(hŒ1Returns 0 on success, negative values on failure.”h]”hŒ1Returns 0 on success, negative values on failure.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjÞubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ,security_dentry_create_files_as (C function)”Œ!c.security_dentry_create_files_as”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒˆint security_dentry_create_files_as (struct dentry *dentry, int mode, const struct qstr *name, const struct cred *old, struct cred *new)”h]”jA)�”}”(hŒ‡int security_dentry_create_files_as(struct dentry *dentry, int mode, const struct qstr *name, const struct cred *old, struct cred *new)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjœh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjœh²hh³j®h´Mubjj)�”}”(hŒsecurity_dentry_create_files_as”h]”jp)�”}”(hŒsecurity_dentry_create_files_as”h]”hŒsecurity_dentry_create_files_as”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj½ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjœh²hh³j®h´Mubj‹)�”}”(hŒd(struct dentry *dentry, int mode, const struct qstr *name, const struct cred *old, struct cred *new)”h]”(j‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÙubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÙubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jýŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÃsbŒ!c.security_dentry_create_files_as”†”asbuh1hhjÙubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÙubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÙubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÕubj‘)�”}”(hŒint mode”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjKubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjKubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÕubj‘)�”}”(hŒconst struct qstr *name”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj€ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj€ubh)�”}”(hhh]”jp)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j¿Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jŒ!c.security_dentry_create_files_as”†”asbuh1hhj€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj€ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj€ubjp)�”}”(hŒname”h]”hŒname”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÕubj‘)�”}”(hŒconst struct cred *old”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jJŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jŒ!c.security_dentry_create_files_as”†”asbuh1hhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj ubjp)�”}”(hŒold”h]”hŒold”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÕubj‘)�”}”(hŒstruct cred *new”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj–ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj–ubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jºŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jŒ!c.security_dentry_create_files_as”†”asbuh1hhj–ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj–ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj–ubjp)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÕubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjœh²hh³j®h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj˜h²hh³j®h´Mubah}”(h]”j“ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j®•h´Mhj•h²hubj)�”}”(hhh]”hÌ)�”}”(hŒPerform dentry initialization”h]”hŒPerform dentry initialization”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj•h²hh³j®h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j3j#j3j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX[**Parameters** ``struct dentry *dentry`` the dentry to initialize ``int mode`` mode used to determine resource type ``const struct qstr *name`` name of the last path component ``const struct cred *old`` creds to use for LSM context calculations ``struct cred *new`` creds to modify **Description** Compute a context for a dentry as the inode is not yet available and set that context in passed in creds so that new files are created using that context. Context is calculated using the passed in creds and not the creds of the caller. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj=h]”hŒ Parameters”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj7ubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct dentry *dentry`` the dentry to initialize ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj\h]”hŒstruct dentry *dentry”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjVubjm)�”}”(hhh]”hÌ)�”}”(hŒthe dentry to initialize”h]”hŒthe dentry to initialize”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqh´Mhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jqh´MhjSubjM)�”}”(hŒ2``int mode`` mode used to determine resource type ”h]”(jS)�”}”(hŒ ``int mode``”h]”hë)�”}”(hj•h]”hŒint mode”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj�ubjm)�”}”(hhh]”hÌ)�”}”(hŒ$mode used to determine resource type”h]”hŒ$mode used to determine resource type”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªh´Mhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jªh´MhjSubjM)�”}”(hŒ<``const struct qstr *name`` name of the last path component ”h]”(jS)�”}”(hŒ``const struct qstr *name``”h]”hë)�”}”(hjÎh]”hŒconst struct qstr *name”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjÈubjm)�”}”(hhh]”hÌ)�”}”(hŒname of the last path component”h]”hŒname of the last path component”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãh´Mhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jãh´MhjSubjM)�”}”(hŒE``const struct cred *old`` creds to use for LSM context calculations ”h]”(jS)�”}”(hŒ``const struct cred *old``”h]”hë)�”}”(hjh]”hŒconst struct cred *old”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjubjm)�”}”(hhh]”hÌ)�”}”(hŒ)creds to use for LSM context calculations”h]”hŒ)creds to use for LSM context calculations”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MhjSubjM)�”}”(hŒ%``struct cred *new`` creds to modify ”h]”(jS)�”}”(hŒ``struct cred *new``”h]”hë)�”}”(hj@h]”hŒstruct cred *new”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj:ubjm)�”}”(hhh]”hÌ)�”}”(hŒcreds to modify”h]”hŒcreds to modify”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jUh´MhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jUh´MhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj7ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj{h]”hŒ Description”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj7ubhÌ)�”}”(hŒëCompute a context for a dentry as the inode is not yet available and set that context in passed in creds so that new files are created using that context. Context is calculated using the passed in creds and not the creds of the caller.”h]”hŒëCompute a context for a dentry as the inode is not yet available and set that context in passed in creds so that new files are created using that context. Context is calculated using the passed in creds and not the creds of the caller.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj7ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¢h]”hŒReturn”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj7ubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ)security_inode_init_security (C function)”Œc.security_inode_init_security”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒŽint security_inode_init_security (struct inode *inode, struct inode *dir, const struct qstr *qstr, const initxattrs initxattrs, void *fs_data)”h]”jA)�”}”(hŒ�int security_inode_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr, const initxattrs initxattrs, void *fs_data)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjãh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M'ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjãh²hh³jõh´M'ubjj)�”}”(hŒsecurity_inode_init_security”h]”jp)�”}”(hŒsecurity_inode_init_security”h]”hŒsecurity_inode_init_security”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjãh²hh³jõh´M'ubj‹)�”}”(hŒm(struct inode *inode, struct inode *dir, const struct qstr *qstr, const initxattrs initxattrs, void *fs_data)”h]”(j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jDŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj sbŒc.security_inode_init_security”†”asbuh1hhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj ubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjubj‘)�”}”(hŒstruct inode *dir”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj’ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj’ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j¶Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j^Œc.security_inode_init_security”†”asbuh1hhj’ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj’ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj’ubjp)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjubj‘)�”}”(hŒconst struct qstr *qstr”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubh)�”}”(hhh]”jp)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jAŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j^Œc.security_inode_init_security”†”asbuh1hhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjubjp)�”}”(hŒqstr”h]”hŒqstr”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjubj‘)�”}”(hŒconst initxattrs initxattrs”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�ubh)�”}”(hhh]”jp)�”}”(hŒ initxattrs”h]”hŒ initxattrs”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j±Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j^Œc.security_inode_init_security”†”asbuh1hhj�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�ubjp)�”}”(hŒ initxattrs”h]”hŒ initxattrs”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjubj‘)�”}”(hŒ void *fs_data”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjðubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjðubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjðubjp)�”}”(hŒfs_data”h]”hŒfs_data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjãh²hh³jõh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjßh²hh³jõh´M'ubah}”(h]”jÚah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jõh´M'hjÜh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ!Initialize an inode's LSM context”h]”hŒ#Initialize an inode’s LSM context”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M'hjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÜh²hh³jõh´M'ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j_j#j_j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXd**Parameters** ``struct inode *inode`` the inode ``struct inode *dir`` parent directory ``const struct qstr *qstr`` last component of the pathname ``const initxattrs initxattrs`` callback function to write xattrs ``void *fs_data`` filesystem specific data **Description** Obtain the security attribute name suffix and value to set on a newly created inode and set up the incore security field for the new inode. This hook is called by the fs code as part of the inode creation transaction and provides for atomic labeling of the inode, unlike the post_create/mkdir/... hooks called by the VFS. The hook function is expected to populate the xattrs array, by calling lsm_get_xattr_slot() to retrieve the slots reserved by the security module with the lbs_xattr_count field of the lsm_blob_sizes structure. For each slot, the hook function should set ->name to the attribute name suffix (e.g. selinux), to allocate ->value (will be freed by the caller) and set it to the attribute value, to set ->value_len to the length of the value. If the security module does not use security attributes or does not wish to put a security attribute on this particular inode, then it should return -EOPNOTSUPP to skip this processing. **Return** Returns 0 if the LSM successfully initialized all of the inode security attributes that are required, negative values otherwise.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjih]”hŒ Parameters”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M+hjcubjH)�”}”(hhh]”(jM)�”}”(hŒ"``struct inode *inode`` the inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hjˆh]”hŒstruct inode *inode”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M(hj‚ubjm)�”}”(hhh]”hÌ)�”}”(hŒ the inode”h]”hŒ the inode”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´M(hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M(hjubjM)�”}”(hŒ'``struct inode *dir`` parent directory ”h]”(jS)�”}”(hŒ``struct inode *dir``”h]”hë)�”}”(hjÁh]”hŒstruct inode *dir”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M)hj»ubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖh´M)hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖh´M)hjubjM)�”}”(hŒ;``const struct qstr *qstr`` last component of the pathname ”h]”(jS)�”}”(hŒ``const struct qstr *qstr``”h]”hë)�”}”(hjúh]”hŒconst struct qstr *qstr”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M*hjôubjm)�”}”(hhh]”hÌ)�”}”(hŒlast component of the pathname”h]”hŒlast component of the pathname”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M*hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´M*hjubjM)�”}”(hŒB``const initxattrs initxattrs`` callback function to write xattrs ”h]”(jS)�”}”(hŒ``const initxattrs initxattrs``”h]”hë)�”}”(hj3h]”hŒconst initxattrs initxattrs”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M+hj-ubjm)�”}”(hhh]”hÌ)�”}”(hŒ!callback function to write xattrs”h]”hŒ!callback function to write xattrs”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHh´M+hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jHh´M+hjubjM)�”}”(hŒ+``void *fs_data`` filesystem specific data ”h]”(jS)�”}”(hŒ``void *fs_data``”h]”hë)�”}”(hjlh]”hŒ void *fs_data”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M,hjfubjm)�”}”(hhh]”hÌ)�”}”(hŒfilesystem specific data”h]”hŒfilesystem specific data”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´M,hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´M,hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjcubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj§h]”hŒ Description”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M.hjcubhÌ)�”}”(hXBObtain the security attribute name suffix and value to set on a newly created inode and set up the incore security field for the new inode. This hook is called by the fs code as part of the inode creation transaction and provides for atomic labeling of the inode, unlike the post_create/mkdir/... hooks called by the VFS.”h]”hXBObtain the security attribute name suffix and value to set on a newly created inode and set up the incore security field for the new inode. This hook is called by the fs code as part of the inode creation transaction and provides for atomic labeling of the inode, unlike the post_create/mkdir/... hooks called by the VFS.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M-hjcubhÌ)�”}”(hXqThe hook function is expected to populate the xattrs array, by calling lsm_get_xattr_slot() to retrieve the slots reserved by the security module with the lbs_xattr_count field of the lsm_blob_sizes structure. For each slot, the hook function should set ->name to the attribute name suffix (e.g. selinux), to allocate ->value (will be freed by the caller) and set it to the attribute value, to set ->value_len to the length of the value. If the security module does not use security attributes or does not wish to put a security attribute on this particular inode, then it should return -EOPNOTSUPP to skip this processing.”h]”hXqThe hook function is expected to populate the xattrs array, by calling lsm_get_xattr_slot() to retrieve the slots reserved by the security module with the lbs_xattr_count field of the lsm_blob_sizes structure. For each slot, the hook function should set ->name to the attribute name suffix (e.g. selinux), to allocate ->value (will be freed by the caller) and set it to the attribute value, to set ->value_len to the length of the value. If the security module does not use security attributes or does not wish to put a security attribute on this particular inode, then it should return -EOPNOTSUPP to skip this processing.”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M3hjcubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÝh]”hŒReturn”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M=hjcubhÌ)�”}”(hŒ€Returns 0 if the LSM successfully initialized all of the inode security attributes that are required, negative values otherwise.”h]”hŒ€Returns 0 if the LSM successfully initialized all of the inode security attributes that are required, negative values otherwise.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M>hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_path_mknod (C function)”Œc.security_path_mknod”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒgint security_path_mknod (const struct path *dir, struct dentry *dentry, umode_t mode, unsigned int dev)”h]”jA)�”}”(hŒfint security_path_mknod(const struct path *dir, struct dentry *dentry, umode_t mode, unsigned int dev)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MˆubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjh²hh³j0h´Mˆubjj)�”}”(hŒsecurity_path_mknod”h]”jp)�”}”(hŒsecurity_path_mknod”h]”hŒsecurity_path_mknod”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj?ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjh²hh³j0h´Mˆubj‹)�”}”(hŒO(const struct path *dir, struct dentry *dentry, umode_t mode, unsigned int dev)”h]”(j‘)�”}”(hŒconst struct path *dir”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj[ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj[ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj[ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj[ubh)�”}”(hhh]”jp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jšŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjEsbŒc.security_path_mknod”†”asbuh1hhj[ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj[ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj[ubjp)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjWubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjèubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjèubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j´Œc.security_path_mknod”†”asbuh1hhjèubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjèubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjèubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjWubj‘)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jp)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jaŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j´Œc.security_path_mknod”†”asbuh1hhjXubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjXubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjWubj‘)�”}”(hŒunsigned int dev”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubjG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ubjp)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjWubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjh²hh³j0h´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjh²hh³j0h´Mˆubah}”(h]”jah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j0h´Mˆhjh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if creating a special file is allowed”h]”hŒ+Check if creating a special file is allowed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mˆhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjh²hh³j0h´Mˆubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jj#jj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXn**Parameters** ``const struct path *dir`` parent directory ``struct dentry *dentry`` new file ``umode_t mode`` new file mode ``unsigned int dev`` device number **Description** Check permissions when creating a file. Note that this hook is called even if mknod operation is being done for a regular file. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj(h]”hŒ Parameters”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŒhj"ubjH)�”}”(hhh]”(jM)�”}”(hŒ,``const struct path *dir`` parent directory ”h]”(jS)�”}”(hŒ``const struct path *dir``”h]”hë)�”}”(hjGh]”hŒconst struct path *dir”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‰hjAubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\h´M‰hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j\h´M‰hj>ubjM)�”}”(hŒ#``struct dentry *dentry`` new file ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj€h]”hŒstruct dentry *dentry”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŠhjzubjm)�”}”(hhh]”hÌ)�”}”(hŒnew file”h]”hŒnew file”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•h´MŠhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•h´MŠhj>ubjM)�”}”(hŒ``umode_t mode`` new file mode ”h]”(jS)�”}”(hŒ``umode_t mode``”h]”hë)�”}”(hj¹h]”hŒ umode_t mode”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‹hj³ubjm)�”}”(hhh]”hÌ)�”}”(hŒ new file mode”h]”hŒ new file mode”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎh´M‹hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÎh´M‹hj>ubjM)�”}”(hŒ#``unsigned int dev`` device number ”h]”(jS)�”}”(hŒ``unsigned int dev``”h]”hë)�”}”(hjòh]”hŒunsigned int dev”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjðubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŒhjìubjm)�”}”(hhh]”hÌ)�”}”(hŒ device number”h]”hŒ device number”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MŒhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´MŒhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj"ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj- h]”hŒ Description”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj+ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŽhj"ubhÌ)�”}”(hŒCheck permissions when creating a file. Note that this hook is called even if mknod operation is being done for a regular file.”h]”hŒCheck permissions when creating a file. Note that this hook is called even if mknod operation is being done for a regular file.”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hj"ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjT h]”hŒReturn”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hj"ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‘hj"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_path_mkdir (C function)”Œc.security_path_mkdir”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒUint security_path_mkdir (const struct path *dir, struct dentry *dentry, umode_t mode)”h]”jA)�”}”(hŒTint security_path_mkdir(const struct path *dir, struct dentry *dentry, umode_t mode)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj• h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M«ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj• h²hh³j§ h´M«ubjj)�”}”(hŒsecurity_path_mkdir”h]”jp)�”}”(hŒsecurity_path_mkdir”h]”hŒsecurity_path_mkdir”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¶ ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj• h²hh³j§ h´M«ubj‹)�”}”(hŒ=(const struct path *dir, struct dentry *dentry, umode_t mode)”h]”(j‘)�”}”(hŒconst struct path *dir”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÒ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÒ ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÒ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÒ ubh)�”}”(hhh]”jp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj !ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j!Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¼ sbŒc.security_path_mkdir”†”asbuh1hhjÒ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/!h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÒ ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÒ ubjp)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjJ!h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÎ ubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjc!h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj_!ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp!h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj_!ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj~!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jƒ!Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j+!Œc.security_path_mkdir”†”asbuh1hhj_!ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ!h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj_!ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj­!h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj_!ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjº!h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj_!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÎ ubj‘)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jp)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hjÖ!h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÓ!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jØ!Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j+!Œc.security_path_mkdir”†”asbuh1hhjÏ!ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô!h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÏ!ubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÏ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj• h²hh³j§ h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj‘ h²hh³j§ h´M«ubah}”(h]”jŒ ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j§ h´M«hjŽ h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ,Check if creating a new directory is allowed”h]”hŒ,Check if creating a new directory is allowed”…”�”}”(hj,"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M«hj)"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjŽ h²hh³j§ h´M«ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jD"j#jD"j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``const struct path *dir`` parent directory ``struct dentry *dentry`` new directory ``umode_t mode`` new directory mode **Description** Check permissions to create a new directory in the existing directory. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjN"h]”hŒ Parameters”…”�”}”(hjP"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjL"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯hjH"ubjH)�”}”(hhh]”(jM)�”}”(hŒ,``const struct path *dir`` parent directory ”h]”(jS)�”}”(hŒ``const struct path *dir``”h]”hë)�”}”(hjm"h]”hŒconst struct path *dir”…”�”}”(hjo"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjk"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¬hjg"ubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hj†"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚"h´M¬hjƒ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjg"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‚"h´M¬hjd"ubjM)�”}”(hŒ(``struct dentry *dentry`` new directory ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj¦"h]”hŒstruct dentry *dentry”…”�”}”(hj¨"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¤"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M­hj "ubjm)�”}”(hhh]”hÌ)�”}”(hŒ new directory”h]”hŒ new directory”…”�”}”(hj¿"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»"h´M­hj¼"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj "ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»"h´M­hjd"ubjM)�”}”(hŒ$``umode_t mode`` new directory mode ”h]”(jS)�”}”(hŒ``umode_t mode``”h]”hë)�”}”(hjß"h]”hŒ umode_t mode”…”�”}”(hjá"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÝ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M®hjÙ"ubjm)�”}”(hhh]”hÌ)�”}”(hŒnew directory mode”h]”hŒnew directory mode”…”�”}”(hjø"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô"h´M®hjõ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÙ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jô"h´M®hjd"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjH"ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj#h]”hŒ Description”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M°hjH"ubhÌ)�”}”(hŒFCheck permissions to create a new directory in the existing directory.”h]”hŒFCheck permissions to create a new directory in the existing directory.”…”�”}”(hj0#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯hjH"ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjA#h]”hŒReturn”…”�”}”(hjC#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj?#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M±hjH"ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjW#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M²hjH"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ!security_path_unlink (C function)”Œc.security_path_unlink”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒHint security_path_unlink (const struct path *dir, struct dentry *dentry)”h]”jA)�”}”(hŒGint security_path_unlink(const struct path *dir, struct dentry *dentry)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj†#h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj‚#h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•#h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‚#h²hh³j”#h´MÎubjj)�”}”(hŒsecurity_path_unlink”h]”jp)�”}”(hŒsecurity_path_unlink”h]”hŒsecurity_path_unlink”…”�”}”(hj§#h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj£#ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj‚#h²hh³j”#h´MÎubj‹)�”}”(hŒ/(const struct path *dir, struct dentry *dentry)”h]”(j‘)�”}”(hŒconst struct path *dir”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjÃ#h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¿#ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ#h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¿#ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÞ#h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¿#ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë#h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¿#ubh)�”}”(hhh]”jp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjü#h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjù#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jþ#Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj©#sbŒc.security_path_unlink”†”asbuh1hhj¿#ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¿#ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj*$h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¿#ubjp)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj7$h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¿#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj»#ubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjP$h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjL$ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]$h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjL$ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjn$h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjk$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jp$Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j$Œc.security_path_unlink”†”asbuh1hhjL$ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ$h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjL$ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjš$h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjL$ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj§$h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjL$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj»#ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj‚#h²hh³j”#h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj~#h²hh³j”#h´MÎubah}”(h]”jy#ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j”#h´MÎhj{#h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Check if removing a hard link is allowed”h]”hŒ(Check if removing a hard link is allowed”…”�”}”(hjÑ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎhjÎ$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj{#h²hh³j”#h´MÎubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jé$j#jé$j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒØ**Parameters** ``const struct path *dir`` parent directory ``struct dentry *dentry`` file **Description** Check the permission to remove a hard link to a file. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjó$h]”hŒ Parameters”…”�”}”(hjõ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjñ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjí$ubjH)�”}”(hhh]”(jM)�”}”(hŒ,``const struct path *dir`` parent directory ”h]”(jS)�”}”(hŒ``const struct path *dir``”h]”hë)�”}”(hj%h]”hŒconst struct path *dir”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÏhj %ubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hj+%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'%h´MÏhj(%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj %ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j'%h´MÏhj %ubjM)�”}”(hŒ``struct dentry *dentry`` file ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hjK%h]”hŒstruct dentry *dentry”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjI%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐhjE%ubjm)�”}”(hhh]”hÌ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjd%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`%h´MÐhja%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjE%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`%h´MÐhj %ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjí$ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj†%h]”hŒ Description”…”�”}”(hjˆ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj„%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjí$ubhÌ)�”}”(hŒ5Check the permission to remove a hard link to a file.”h]”hŒ5Check the permission to remove a hard link to a file.”…”�”}”(hjœ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑhjí$ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj­%h]”hŒReturn”…”�”}”(hj¯%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj«%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÓhjí$ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjÃ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÔhjí$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ!security_path_rename (C function)”Œc.security_path_rename”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ›int security_path_rename (const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, unsigned int flags)”h]”jA)�”}”(hŒšint security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, unsigned int flags)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjò%h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjî%h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjî%h²hh³j&h´Mubjj)�”}”(hŒsecurity_path_rename”h]”jp)�”}”(hŒsecurity_path_rename”h]”hŒsecurity_path_rename”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj&ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjî%h²hh³j&h´Mubj‹)�”}”(hŒ‚(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, unsigned int flags)”h]”(j‘)�”}”(hŒconst struct path *old_dir”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj/&h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj+&ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<&h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj+&ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjJ&h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj+&ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW&h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj+&ubh)�”}”(hhh]”jp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjh&h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johje&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jj&Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj&sbŒc.security_path_rename”†”asbuh1hhj+&ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ&h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj+&ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj–&h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj+&ubjp)�”}”(hŒold_dir”h]”hŒold_dir”…”�”}”(hj£&h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj+&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj'&ubj‘)�”}”(hŒstruct dentry *old_dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¼&h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¸&ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ&h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¸&ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÚ&h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj×&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÜ&Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j„&Œc.security_path_rename”†”asbuh1hhj¸&ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø&h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¸&ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¸&ubjp)�”}”(hŒ old_dentry”h]”hŒ old_dentry”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¸&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj'&ubj‘)�”}”(hŒconst struct path *new_dir”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj,'h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj('ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9'h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj('ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjG'h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj('ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT'h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj('ubh)�”}”(hhh]”jp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hje'h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjb'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jg'Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j„&Œc.security_path_rename”†”asbuh1hhj('ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ'h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj('ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‘'h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj('ubjp)�”}”(hŒnew_dir”h]”hŒnew_dir”…”�”}”(hjž'h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj('ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj'&ubj‘)�”}”(hŒstruct dentry *new_dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj·'h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj³'ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ'h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj³'ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjÕ'h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÒ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j×'Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j„&Œc.security_path_rename”†”asbuh1hhj³'ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó'h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj³'ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj³'ubjp)�”}”(hŒ new_dentry”h]”hŒ new_dentry”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj³'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj'&ubj‘)�”}”(hŒunsigned int flags”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj'(h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj#(ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5(h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj#(ubjG)�”}”(hŒint”h]”hŒint”…”�”}”(hjC(h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj#(ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ(h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj#(ubjp)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj_(h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj#(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj'&ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjî%h²hh³j&h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjê%h²hh³j&h´Mubah}”(h]”jå%ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j&h´Mhjç%h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ#Check if renaming a file is allowed”h]”hŒ#Check if renaming a file is allowed”…”�”}”(hj‰(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj†(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjç%h²hh³j&h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j¡(j#j¡(j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX‡**Parameters** ``const struct path *old_dir`` parent directory of the old file ``struct dentry *old_dentry`` the old file ``const struct path *new_dir`` parent directory of the new file ``struct dentry *new_dentry`` the new file ``unsigned int flags`` flags **Description** Check for permission to rename a file or directory. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj«(h]”hŒ Parameters”…”�”}”(hj­(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj©(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¥(ubjH)�”}”(hhh]”(jM)�”}”(hŒ@``const struct path *old_dir`` parent directory of the old file ”h]”(jS)�”}”(hŒ``const struct path *old_dir``”h]”hë)�”}”(hjÊ(h]”hŒconst struct path *old_dir”…”�”}”(hjÌ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÈ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjÄ(ubjm)�”}”(hhh]”hÌ)�”}”(hŒ parent directory of the old file”h]”hŒ parent directory of the old file”…”�”}”(hjã(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jß(h´Mhjà(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÄ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jß(h´MhjÁ(ubjM)�”}”(hŒ+``struct dentry *old_dentry`` the old file ”h]”(jS)�”}”(hŒ``struct dentry *old_dentry``”h]”hë)�”}”(hj)h]”hŒstruct dentry *old_dentry”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjý(ubjm)�”}”(hhh]”hÌ)�”}”(hŒ the old file”h]”hŒ the old file”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)h´Mhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjý(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)h´MhjÁ(ubjM)�”}”(hŒ@``const struct path *new_dir`` parent directory of the new file ”h]”(jS)�”}”(hŒ``const struct path *new_dir``”h]”hë)�”}”(hj<)h]”hŒconst struct path *new_dir”…”�”}”(hj>)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj:)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj6)ubjm)�”}”(hhh]”hÌ)�”}”(hŒ parent directory of the new file”h]”hŒ parent directory of the new file”…”�”}”(hjU)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQ)h´MhjR)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj6)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ)h´MhjÁ(ubjM)�”}”(hŒ+``struct dentry *new_dentry`` the new file ”h]”(jS)�”}”(hŒ``struct dentry *new_dentry``”h]”hë)�”}”(hju)h]”hŒstruct dentry *new_dentry”…”�”}”(hjw)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjs)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjo)ubjm)�”}”(hhh]”hÌ)�”}”(hŒ the new file”h]”hŒ the new file”…”�”}”(hjŽ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠ)h´Mhj‹)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjo)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠ)h´MhjÁ(ubjM)�”}”(hŒ``unsigned int flags`` flags ”h]”(jS)�”}”(hŒ``unsigned int flags``”h]”hë)�”}”(hj®)h]”hŒunsigned int flags”…”�”}”(hj°)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¬)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¨)ubjm)�”}”(hhh]”hÌ)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÇ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃ)h´MhjÄ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¨)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃ)h´MhjÁ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¥(ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjé)h]”hŒ Description”…”�”}”(hjë)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjç)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj¥(ubhÌ)�”}”(hŒ3Check for permission to rename a file or directory.”h]”hŒ3Check for permission to rename a file or directory.”…”�”}”(hjÿ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj¥(ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj*h]”hŒReturn”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj¥(ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj&*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj¥(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ"security_inode_create (C function)”Œc.security_inode_create”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒqint security_inode_create (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode)”h]”jA)�”}”(hŒpint security_inode_create(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjU*h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjQ*h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M_ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd*h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjQ*h²hh³jc*h´M_ubjj)�”}”(hŒsecurity_inode_create”h]”jp)�”}”(hŒsecurity_inode_create”h]”hŒsecurity_inode_create”…”�”}”(hjv*h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjr*ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjQ*h²hh³jc*h´M_ubj‹)�”}”(hŒW(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode)”h]”(j‘)�”}”(hŒconst struct mnt_idmap *idmap”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj’*h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjŽ*ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ*h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽ*ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj­*h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjŽ*ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº*h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽ*ubh)�”}”(hhh]”jp)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjË*h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÈ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÍ*Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjx*sbŒc.security_inode_create”†”asbuh1hhjŽ*ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë*h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽ*ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjù*h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjŽ*ubjp)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŽ*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠ*ubj‘)�”}”(hŒstruct inode *dir”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,+h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj+ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj=+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj:+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j?+Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jç*Œc.security_inode_create”†”asbuh1hhj+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[+h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj+ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hji+h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj+ubjp)�”}”(hŒdir”h]”hŒdir”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠ*ubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‹+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ+h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‹+ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj­+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjª+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j¯+Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jç*Œc.security_inode_create”†”asbuh1hhj‹+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË+h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‹+ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÙ+h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‹+ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjæ+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‹+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠ*ubj‘)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jp)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÿ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j,Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jç*Œc.security_inode_create”†”asbuh1hhjû+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjû+ubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj.,h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjû+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠ*ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjQ*h²hh³jc*h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjM*h²hh³jc*h´M_ubah}”(h]”jH*ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jc*h´M_hjJ*h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ#Check if creating a file is allowed”h]”hŒ#Check if creating a file is allowed”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M_hjU,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjJ*h²hh³jc*h´M_ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jp,j#jp,j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX>**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct inode *dir`` the parent directory ``struct dentry *dentry`` the file being created ``umode_t mode`` requested file mode **Description** Check permission to create a regular file. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjz,h]”hŒ Parameters”…”�”}”(hj|,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjx,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mchjt,ubjH)�”}”(hhh]”(jM)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jS)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”hë)�”}”(hj™,h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj›,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj—,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M`hj“,ubjm)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj²,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®,h´M`hj¯,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj“,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j®,h´M`hj�,ubjM)�”}”(hŒ+``struct inode *dir`` the parent directory ”h]”(jS)�”}”(hŒ``struct inode *dir``”h]”hë)�”}”(hjÒ,h]”hŒstruct inode *dir”…”�”}”(hjÔ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÐ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MahjÌ,ubjm)�”}”(hhh]”hÌ)�”}”(hŒthe parent directory”h]”hŒthe parent directory”…”�”}”(hjë,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jç,h´Mahjè,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÌ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jç,h´Mahj�,ubjM)�”}”(hŒ1``struct dentry *dentry`` the file being created ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj -h]”hŒstruct dentry *dentry”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mbhj-ubjm)�”}”(hhh]”hÌ)�”}”(hŒthe file being created”h]”hŒthe file being created”…”�”}”(hj$-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j -h´Mbhj!-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j -h´Mbhj�,ubjM)�”}”(hŒ%``umode_t mode`` requested file mode ”h]”(jS)�”}”(hŒ``umode_t mode``”h]”hë)�”}”(hjD-h]”hŒ umode_t mode”…”�”}”(hjF-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjB-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mchj>-ubjm)�”}”(hhh]”hÌ)�”}”(hŒrequested file mode”• h]”hŒrequested file mode”…”�”}”(hj]-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jY-h´MchjZ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj>-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jY-h´Mchj�,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjt,ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj-h]”hŒ Description”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj}-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mehjt,ubhÌ)�”}”(hŒ*Check permission to create a regular file.”h]”hŒ*Check permission to create a regular file.”…”�”}”(hj•-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mdhjt,ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¦-h]”hŒReturn”…”�”}”(hj¨-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¤-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mfhjt,ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj¼-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mghjt,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ!security_inode_mkdir (C function)”Œc.security_inode_mkdir”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒpint security_inode_mkdir (const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode)”h]”jA)�”}”(hŒoint security_inode_mkdir(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjë-h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjç-h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¸ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú-h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjç-h²hh³jù-h´M¸ubjj)�”}”(hŒsecurity_inode_mkdir”h]”jp)�”}”(hŒsecurity_inode_mkdir”h]”hŒsecurity_inode_mkdir”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj.ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjç-h²hh³jù-h´M¸ubj‹)�”}”(hŒW(const struct mnt_idmap *idmap, struct inode *dir, struct dentry *dentry, umode_t mode)”h]”(j‘)�”}”(hŒconst struct mnt_idmap *idmap”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj(.h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj$.ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj$.ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjC.h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj$.ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj$.ubh)�”}”(hhh]”jp)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hja.h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj^.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jc.Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj.sbŒc.security_inode_mkdir”†”asbuh1hhj$.ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj$.ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj$.ubjp)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjœ.h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj$.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj .ubj‘)�”}”(hŒstruct inode *dir”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjµ.h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj±.ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj±.ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÓ.h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÐ.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÕ.Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j}.Œc.security_inode_mkdir”†”asbuh1hhj±.ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj±.ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÿ.h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj±.ubjp)�”}”(hŒdir”h]”hŒdir”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj±.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj .ubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj%/h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj!/ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2/h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj!/ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjC/h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj@/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jE/Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j}.Œc.security_inode_mkdir”†”asbuh1hhj!/ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja/h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj!/ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjo/h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj!/ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj|/h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj!/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj .ubj‘)�”}”(hŒ umode_t mode”h]”(h)�”}”(hhh]”jp)�”}”(hŒumode_t”h]”hŒumode_t”…”�”}”(hj˜/h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj•/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jš/Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j}.Œc.security_inode_mkdir”†”asbuh1hhj‘/ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶/h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘/ubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÄ/h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj .ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjç-h²hh³jù-h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjã-h²hh³jù-h´M¸ubah}”(h]”jÞ-ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jù-h´M¸hjà-h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ,Check if creating a new directory is allowed”h]”hŒ,Check if creating a new directory is allowed”…”�”}”(hjî/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¸hjë/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjà-h²hh³jù-h´M¸ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j0j#j0j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXt**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct inode *dir`` parent directory ``struct dentry *dentry`` new directory ``umode_t mode`` new directory mode **Description** Check permissions to create a new directory in the existing directory associated with inode structure **dir**. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj0h]”hŒ Parameters”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¼hj 0ubjH)�”}”(hhh]”(jM)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jS)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”hë)�”}”(hj/0h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj10h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj-0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¹hj)0ubjm)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hjH0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jD0h´M¹hjE0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj)0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jD0h´M¹hj&0ubjM)�”}”(hŒ'``struct inode *dir`` parent directory ”h]”(jS)�”}”(hŒ``struct inode *dir``”h]”hë)�”}”(hjh0h]”hŒstruct inode *dir”…”�”}”(hjj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjf0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mºhjb0ubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}0h´Mºhj~0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjb0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}0h´Mºhj&0ubjM)�”}”(hŒ(``struct dentry *dentry`` new directory ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj¡0h]”hŒstruct dentry *dentry”…”�”}”(hj£0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjŸ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M»hj›0ubjm)�”}”(hhh]”hÌ)�”}”(hŒ new directory”h]”hŒ new directory”…”�”}”(hjº0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶0h´M»hj·0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj›0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¶0h´M»hj&0ubjM)�”}”(hŒ$``umode_t mode`` new directory mode ”h]”(jS)�”}”(hŒ``umode_t mode``”h]”hë)�”}”(hjÚ0h]”hŒ umode_t mode”…”�”}”(hjÜ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjØ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¼hjÔ0ubjm)�”}”(hhh]”hÌ)�”}”(hŒnew directory mode”h]”hŒnew directory mode”…”�”}”(hjó0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jï0h´M¼hjð0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÔ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jï0h´M¼hj&0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj 0ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj1h]”hŒ Description”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¾hj 0ubhÌ)�”}”(hŒnCheck permissions to create a new directory in the existing directory associated with inode structure **dir**.”h]”(hŒfCheck permissions to create a new directory in the existing directory associated with inode structure ”…”�”}”(hj+1h²hh³Nh´Nubj2)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(hj31h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj+1ubhŒ.”…”�”}”(hj+1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M½hj 0ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjN1h]”hŒReturn”…”�”}”(hjP1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjL1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÀhj 0ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjd1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÁhj 0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ#security_inode_setattr (C function)”Œc.security_inode_setattr”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒeint security_inode_setattr (const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”jA)�”}”(hŒdint security_inode_setattr(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj�1h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MMubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�1h²hh³j¡1h´MMubjj)�”}”(hŒsecurity_inode_setattr”h]”jp)�”}”(hŒsecurity_inode_setattr”h]”hŒsecurity_inode_setattr”…”�”}”(hj´1h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj°1ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj�1h²hh³j¡1h´MMubj‹)�”}”(hŒJ(const struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(j‘)�”}”(hŒconst struct mnt_idmap *idmap”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjÐ1h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÌ1ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÌ1ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjë1h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÌ1ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÌ1ubh)�”}”(hhh]”jp)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j 2Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¶1sbŒc.security_inode_setattr”†”asbuh1hhjÌ1ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)2h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÌ1ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj72h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÌ1ubjp)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hjD2h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÌ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÈ1ubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj]2h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjY2ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj2h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjY2ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj{2h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjx2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j}2Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j%2Œc.security_inode_setattr”†”asbuh1hhjY2ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™2h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjY2ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj§2h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjY2ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj´2h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjY2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÈ1ubj‘)�”}”(hŒstruct iattr *attr”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÍ2h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÉ2ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ2h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÉ2ubh)�”}”(hhh]”jp)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hjë2h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjè2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jí2Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j%2Œc.security_inode_setattr”†”asbuh1hhjÉ2ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÉ2ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÉ2ubjp)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj$3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÉ2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÈ1ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj�1h²hh³j¡1h´MMubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj‹1h²hh³j¡1h´MMubah}”(h]”j†1ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¡1h´MMhjˆ1h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if setting file attributes is allowed”h]”hŒ+Check if setting file attributes is allowed”…”�”}”(hjN3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MMhjK3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjˆ1h²hh³j¡1h´MMubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jf3j#jf3j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXÑ**Parameters** ``const struct mnt_idmap *idmap`` idmap of the mount ``struct dentry *dentry`` file ``struct iattr *attr`` new attributes **Description** Check permission before setting file attributes. Note that the kernel call to notify_change is performed from several locations, whenever file attributes change (such as when a file is truncated, chown/chmod operations, transferring disk quotas, etc). **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjp3h]”hŒ Parameters”…”�”}”(hjr3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjn3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MQhjj3ubjH)�”}”(hhh]”(jM)�”}”(hŒ5``const struct mnt_idmap *idmap`` idmap of the mount ”h]”(jS)�”}”(hŒ!``const struct mnt_idmap *idmap``”h]”hë)�”}”(hj�3h]”hŒconst struct mnt_idmap *idmap”…”�”}”(hj‘3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj�3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MNhj‰3ubjm)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj¨3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤3h´MNhj¥3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‰3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¤3h´MNhj†3ubjM)�”}”(hŒ``struct dentry *dentry`` file ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hjÈ3h]”hŒstruct dentry *dentry”…”�”}”(hjÊ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÆ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MOhjÂ3ubjm)�”}”(hhh]”hÌ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjá3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝ3h´MOhjÞ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÂ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÝ3h´MOhj†3ubjM)�”}”(hŒ&``struct iattr *attr`` new attributes ”h]”(jS)�”}”(hŒ``struct iattr *attr``”h]”hë)�”}”(hj4h]”hŒstruct iattr *attr”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÿ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MPhjû3ubjm)�”}”(hhh]”hÌ)�”}”(hŒnew attributes”h]”hŒnew attributes”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4h´MPhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjû3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j4h´MPhj†3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjj3ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj<4h]”hŒ Description”…”�”}”(hj>4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj:4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MRhjj3ubhÌ)�”}”(hŒüCheck permission before setting file attributes. Note that the kernel call to notify_change is performed from several locations, whenever file attributes change (such as when a file is truncated, chown/chmod operations, transferring disk quotas, etc).”h]”hŒüCheck permission before setting file attributes. Note that the kernel call to notify_change is performed from several locations, whenever file attributes change (such as when a file is truncated, chown/chmod operations, transferring disk quotas, etc).”…”�”}”(hjR4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MQhjj3ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjc4h]”hŒReturn”…”�”}”(hje4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hja4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MVhjj3ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjy4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MWhjj3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ(security_inode_listsecurity (C function)”Œc.security_inode_listsecurity”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ]int security_inode_listsecurity (struct inode *inode, char **buffer, ssize_t *remaining_size)”h]”jA)�”}”(hŒ\int security_inode_listsecurity(struct inode *inode, char **buffer, ssize_t *remaining_size)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨4h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¤4h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MêubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·4h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¤4h²hh³j¶4h´Mêubjj)�”}”(hŒsecurity_inode_listsecurity”h]”jp)�”}”(hŒsecurity_inode_listsecurity”h]”hŒsecurity_inode_listsecurity”…”�”}”(hjÉ4h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÅ4ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj¤4h²hh³j¶4h´Mêubj‹)�”}”(hŒ=(struct inode *inode, char **buffer, ssize_t *remaining_size)”h]”(j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjå4h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjá4ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò4h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjá4ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j5Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjË4sbŒc.security_inode_listsecurity”†”asbuh1hhjá4ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#5h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjá4ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj15h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjá4ubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj>5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjá4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÝ4ubj‘)�”}”(hŒ char **buffer”h]”(jG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjW5h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjS5ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje5h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjS5ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjs5h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjS5ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj€5h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjS5ubjp)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjS5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÝ4ubj‘)�”}”(hŒssize_t *remaining_size”h]”(h)�”}”(hhh]”jp)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj©5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¦5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j«5Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j5Œc.security_inode_listsecurity”†”asbuh1hhj¢5ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ5h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¢5ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÕ5h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¢5ubjp)�”}”(hŒremaining_size”h]”hŒremaining_size”…”�”}”(hjâ5h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¢5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÝ4ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj¤4h²hh³j¶4h´Mêubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj 4h²hh³j¶4h´Mêubah}”(h]”j›4ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¶4h´Mêhj�4h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ#List the xattr security label names”h]”hŒ#List the xattr security label names”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mêhj 6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj�4h²hh³j¶4h´Mêubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j$6j#j$6j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX **Parameters** ``struct inode *inode`` inode ``char **buffer`` pointer to buffer ``ssize_t *remaining_size`` pointer to remaining size of buffer **Description** Copy the extended attribute names for the security labels associated with **inode** into *(**buffer**). The remaining size of **buffer** is specified by *(**remaining_size**). *(**buffer**) may be NULL to request the size of the buffer required. Updates *(**buffer**) and *(**remaining_size**). **Return** Returns 0 on success, or -errno on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj.6h]”hŒ Parameters”…”�”}”(hj06h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj,6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mîhj(6ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hjM6h]”hŒstruct inode *inode”…”�”}”(hjO6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjK6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MëhjG6ubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjf6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jb6h´Mëhjc6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjG6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jb6h´MëhjD6ubjM)�”}”(hŒ$``char **buffer`` pointer to buffer ”h]”(jS)�”}”(hŒ``char **buffer``”h]”hë)�”}”(hj†6h]”hŒ char **buffer”…”�”}”(hjˆ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj„6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mìhj€6ubjm)�”}”(hhh]”hÌ)�”}”(hŒpointer to buffer”h]”hŒpointer to buffer”…”�”}”(hjŸ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›6h´Mìhjœ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj€6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j›6h´MìhjD6ubjM)�”}”(hŒ@``ssize_t *remaining_size`` pointer to remaining size of buffer ”h]”(jS)�”}”(hŒ``ssize_t *remaining_size``”h]”hë)�”}”(hj¿6h]”hŒssize_t *remaining_size”…”�”}”(hjÁ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj½6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Míhj¹6ubjm)�”}”(hhh]”hÌ)�”}”(hŒ#pointer to remaining size of buffer”h]”hŒ#pointer to remaining size of buffer”…”�”}”(hjØ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÔ6h´MíhjÕ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¹6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔ6h´MíhjD6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj(6ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjú6h]”hŒ Description”…”�”}”(hjü6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjø6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mïhj(6ubhÌ)�”}”(hX(Copy the extended attribute names for the security labels associated with **inode** into *(**buffer**). The remaining size of **buffer** is specified by *(**remaining_size**). *(**buffer**) may be NULL to request the size of the buffer required. Updates *(**buffer**) and *(**remaining_size**).”h]”(hŒJCopy the extended attribute names for the security labels associated with ”…”�”}”(hj7h²hh³Nh´Nubj2)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj7ubhŒ into ”…”�”}”(hj7h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ *(**buffer**”h]”hŒ (**buffer*”…”�”}”(hj,7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j*7hj7ubhŒ). The remaining size of ”…”�”}”(hj7h²hh³Nh´Nubj2)�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hj>7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj7ubhŒ is specified by ”…”�”}”(hj7h²hh³Nh´Nubj+7)�”}”(hŒ*(**remaining_size**”h]”hŒ(**remaining_size*”…”�”}”(hjP7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j*7hj7ubhŒ). ”…”�”}”(hj7h²hh³Nh´Nubj+7)�”}”(hŒ *(**buffer**”h]”hŒ (**buffer*”…”�”}”(hjb7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j*7hj7ubhŒB) may be NULL to request the size of the buffer required. Updates ”…”�”}”(hj7h²hh³Nh´Nubj+7)�”}”(hŒ *(**buffer**”h]”hŒ (**buffer*”…”�”}”(hjt7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j*7hj7ubhŒ) and ”…”�”}”(hj7h²hh³Nh´Nubj+7)�”}”(hŒ*(**remaining_size**”h]”hŒ(**remaining_size*”…”�”}”(hj†7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j*7hj7ubhŒ).”…”�”}”(hj7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mîhj(6ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¡7h]”hŒReturn”…”�”}”(hj£7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjŸ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Móhj(6ubhÌ)�”}”(hŒ+Returns 0 on success, or -errno on failure.”h]”hŒ+Returns 0 on success, or -errno on failure.”…”�”}”(hj·7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Môhj(6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ#security_inode_copy_up (C function)”Œc.security_inode_copy_up”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒBint security_inode_copy_up (struct dentry *src, struct cred **new)”h]”jA)�”}”(hŒAint security_inode_copy_up(struct dentry *src, struct cred **new)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjæ7h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjâ7h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ7h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjâ7h²hh³jô7h´M ubjj)�”}”(hŒsecurity_inode_copy_up”h]”jp)�”}”(hŒsecurity_inode_copy_up”h]”hŒsecurity_inode_copy_up”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj8ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjâ7h²hh³jô7h´M ubj‹)�”}”(hŒ'(struct dentry *src, struct cred **new)”h]”(j‘)�”}”(hŒstruct dentry *src”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj#8h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj8ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj08h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj8ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjA8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj>8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jC8Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj 8sbŒc.security_inode_copy_up”†”asbuh1hhj8ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja8h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj8ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjo8h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj8ubjp)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj|8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj8ubj‘)�”}”(hŒstruct cred **new”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj•8h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‘8ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢8h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘8ubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hj³8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj°8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jµ8Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j]8Œc.security_inode_copy_up”†”asbuh1hhj‘8ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑ8h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘8ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjß8h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‘8ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjì8h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‘8ubjp)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjù8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj8ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjâ7h²hh³jô7h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjÞ7h²hh³jô7h´M ubah}”(h]”jÙ7ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jô7h´M hjÛ7h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ,Create new creds for an overlayfs copy-up op”h]”hŒ,Create new creds for an overlayfs copy-up op”…”�”}”(hj#9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj 9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÛ7h²hh³jô7h´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j;9j#j;9j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXÝ**Parameters** ``struct dentry *src`` union dentry of copy-up file ``struct cred **new`` newly created creds **Description** A file is about to be copied up from lower layer to upper layer of overlay filesystem. Security module can prepare a set of new creds and modify as need be and return new creds. Caller will switch to new creds temporarily to create new file and release newly allocated creds. **Return** Returns 0 on success or a negative error code on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjE9h]”hŒ Parameters”…”�”}”(hjG9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjC9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj?9ubjH)�”}”(hhh]”(jM)�”}”(hŒ4``struct dentry *src`` union dentry of copy-up file ”h]”(jS)�”}”(hŒ``struct dentry *src``”h]”hë)�”}”(hjd9h]”hŒstruct dentry *src”…”�”}”(hjf9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjb9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj^9ubjm)�”}”(hhh]”hÌ)�”}”(hŒunion dentry of copy-up file”h]”hŒunion dentry of copy-up file”…”�”}”(hj}9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jy9h´M hjz9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj^9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jy9h´M hj[9ubjM)�”}”(hŒ*``struct cred **new`` newly created creds ”h]”(jS)�”}”(hŒ``struct cred **new``”h]”hë)�”}”(hj�9h]”hŒstruct cred **new”…”�”}”(hjŸ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj›9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj—9ubjm)�”}”(hhh]”hÌ)�”}”(hŒnewly created creds”h]”hŒnewly created creds”…”�”}”(hj¶9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j²9h´M hj³9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj—9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j²9h´M hj[9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj?9ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjØ9h]”hŒ Description”…”�”}”(hjÚ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÖ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj?9ubhÌ)�”}”(hXA file is about to be copied up from lower layer to upper layer of overlay filesystem. Security module can prepare a set of new creds and modify as need be and return new creds. Caller will switch to new creds temporarily to create new file and release newly allocated creds.”h]”hXA file is about to be copied up from lower layer to upper layer of overlay filesystem. Security module can prepare a set of new creds and modify as need be and return new creds. Caller will switch to new creds temporarily to create new file and release newly allocated creds.”…”�”}”(hjî9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj?9ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÿ9h]”hŒReturn”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjý9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj?9ubhÌ)�”}”(hŒ7Returns 0 on success or a negative error code on error.”h]”hŒ7Returns 0 on success or a negative error code on error.”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj?9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ)security_inode_copy_up_xattr (C function)”Œc.security_inode_copy_up_xattr”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒGint security_inode_copy_up_xattr (struct dentry *src, const char *name)”h]”jA)�”}”(hŒFint security_inode_copy_up_xattr(struct dentry *src, const char *name)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjD:h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj@:h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS:h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj@:h²hh³jR:h´M ubjj)�”}”(hŒsecurity_inode_copy_up_xattr”h]”jp)�”}”(hŒsecurity_inode_copy_up_xattr”h]”hŒsecurity_inode_copy_up_xattr”…”�”}”(hje:h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johja:ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj@:h²hh³jR:h´M ubj‹)�”}”(hŒ&(struct dentry *src, const char *name)”h]”(j‘)�”}”(hŒstruct dentry *src”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj}:ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ:h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj}:ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjŸ:h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjœ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j¡:Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjg:sbŒc.security_inode_copy_up_xattr”†”asbuh1hhj}:ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj}:ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÍ:h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj}:ubjp)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÚ:h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj}:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjy:ubj‘)�”}”(hŒconst char *name”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjó:h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjï:ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjï:ubjG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjï:ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjï:ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj*;h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjï:ubjp)�”}”(hŒname”h]”hŒname”…”�”}”(hj7;h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjï:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjy:ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj@:h²hh³jR:h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj<:h²hh³jR:h´M ubah}”(h]”j7:ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jR:h´M hj9:h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Filter xattrs in an overlayfs copy-up op”h]”hŒ(Filter xattrs in an overlayfs copy-up op”…”�”}”(hja;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj^;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj9:h²hh³jR:h´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jy;j#jy;j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct dentry *src`` union dentry of copy-up file ``const char *name`` xattr name **Description** Filter the xattrs being copied up when a unioned file is copied up from a lower layer to the union/overlay layer. The caller is responsible for reading and writing the xattrs, this hook is merely a filter. **Return** Returns 0 to accept the xattr, -ECANCELED to discard the xattr, -EOPNOTSUPP if the security module does not know about attribute, or a negative error code to abort the copy up.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjƒ;h]”hŒ Parameters”…”�”}”(hj…;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M" hj};ubjH)�”}”(hhh]”(jM)�”}”(hŒ4``struct dentry *src`` union dentry of copy-up file ”h]”(jS)�”}”(hŒ``struct dentry *src``”h]”hë)�”}”(hj¢;h]”hŒstruct dentry *src”…”�”}”(hj¤;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjœ;ubjm)�”}”(hhh]”hÌ)�”}”(hŒunion dentry of copy-up file”h]”hŒunion dentry of copy-up file”…”�”}”(hj»;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·;h´M hj¸;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjœ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j·;h´M hj™;ubjM)�”}”(hŒ ``const char *name`` xattr name ”h]”(jS)�”}”(hŒ``const char *name``”h]”hë)�”}”(hjÛ;h]”hŒconst char *name”…”�”}”(hjÝ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÙ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjÕ;ubjm)�”}”(hhh]”hÌ)�”}”(hŒ xattr name”h]”hŒ xattr name”…”�”}”(hjô;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jð;h´M hjñ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÕ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jð;h´M hj™;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj};ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj<h]”hŒ Description”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M" hj};ubhÌ)�”}”(hŒÏFilter the xattrs being copied up when a unioned file is copied up from a lower layer to the union/overlay layer. The caller is responsible for reading and writing the xattrs, this hook is merely a filter.”h]”hŒÏFilter the xattrs being copied up when a unioned file is copied up from a lower layer to the union/overlay layer. The caller is responsible for reading and writing the xattrs, this hook is merely a filter.”…”�”}”(hj,<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M! hj};ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj=<h]”hŒReturn”…”�”}”(hj?<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj;<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M% hj};ubhÌ)�”}”(hŒ°Returns 0 to accept the xattr, -ECANCELED to discard the xattr, -EOPNOTSUPP if the security module does not know about attribute, or a negative error code to abort the copy up.”h]”hŒ°Returns 0 to accept the xattr, -ECANCELED to discard the xattr, -EOPNOTSUPP if the security module does not know about attribute, or a negative error code to abort the copy up.”…”�”}”(hjS<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M& hj};ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ(security_inode_setintegrity (C function)”Œc.security_inode_setintegrity”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒyint security_inode_setintegrity (const struct inode *inode, enum lsm_integrity_type type, const void *value, size_t size)”h]”jA)�”}”(hŒxint security_inode_setintegrity(const struct inode *inode, enum lsm_integrity_type type, const void *value, size_t size)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚<h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj~<h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M7 ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘<h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj~<h²hh³j�<h´M7 ubjj)�”}”(hŒsecurity_inode_setintegrity”h]”jp)�”}”(hŒsecurity_inode_setintegrity”h]”hŒsecurity_inode_setintegrity”…”�”}”(hj£<h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŸ<ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj~<h²hh³j�<h´M7 ubj‹)�”}”(hŒY(const struct inode *inode, enum lsm_integrity_type type, const void *value, size_t size)”h]”(j‘)�”}”(hŒconst struct inode *inode”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj¿<h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj»<ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ<h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj»<ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÚ<h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj»<ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç<h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj»<ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjø<h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjõ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jú<Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¥<sbŒc.security_inode_setintegrity”†”asbuh1hhj»<ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj»<ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj&=h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj»<ubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj3=h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj»<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·<ubj‘)�”}”(hŒenum lsm_integrity_type type”h]”(jL)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjL=h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjH=ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ=h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjH=ubh)�”}”(hhh]”jp)�”}”(hŒlsm_integrity_type”h]”hŒlsm_integrity_type”…”�”}”(hjk=h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjh=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jm=Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j=Œc.security_inode_setintegrity”†”asbuh1hhjH=ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰=h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjH=ubjp)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj—=h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjH=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·<ubj‘)�”}”(hŒconst void *value”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¬=ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½=h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¬=ubjG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjË=h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¬=ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ=h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¬=ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjç=h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¬=ubjp)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjô=h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¬=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·<ubj‘)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jp)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj >ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j>Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j=Œc.security_inode_setintegrity”†”asbuh1hhj >ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.>h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj >ubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj<>h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj >ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·<ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj~<h²hh³j�<h´M7 ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjz<h²hh³j�<h´M7 ubah}”(h]”ju<ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j�<h´M7 hjw<h²hubj)�”}”(hhh]”hÌ)�”}”(hŒSet the inode's integrity data”h]”hŒ Set the inode’s integrity data”…”�”}”(hjf>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M7 hjc>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjw<h²hh³j�<h´M7 ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j~>j#j~>j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX»**Parameters** ``const struct inode *inode`` inode ``enum lsm_integrity_type type`` type of integrity, e.g. hash digest, signature, etc ``const void *value`` the integrity value ``size_t size`` size of the integrity value **Description** Register a verified integrity measurement of a inode with LSMs. LSMs should free the previously saved data if **value** is NULL. **Return** Returns 0 on success, negative values on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjˆ>h]”hŒ Parameters”…”�”}”(hjŠ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj†>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M; hj‚>ubjH)�”}”(hhh]”(jM)�”}”(hŒ$``const struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``const struct inode *inode``”h]”hë)�”}”(hj§>h]”hŒconst struct inode *inode”…”�”}”(hj©>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¥>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M8 hj¡>ubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÀ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¼>h´M8 hj½>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¡>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¼>h´M8 hjž>ubjM)�”}”(hŒU``enum lsm_integrity_type type`` type of integrity, e.g. hash digest, signature, etc ”h]”(jS)�”}”(hŒ ``enum lsm_integrity_type type``”h]”hë)�”}”(hjà>h]”hŒenum lsm_integrity_type type”…”�”}”(hjâ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÞ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M9 hjÚ>ubjm)�”}”(hhh]”hÌ)�”}”(hŒ3type of integrity, e.g. hash digest, signature, etc”h]”hŒ3type of integrity, e.g. hash digest, signature, etc”…”�”}”(hjù>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõ>h´M9 hjö>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÚ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jõ>h´M9 hjž>ubjM)�”}”(hŒ*``const void *value`` the integrity value ”h]”(jS)�”}”(hŒ``const void *value``”h]”hë)�”}”(hj?h]”hŒconst void *value”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M: hj?ubjm)�”}”(hhh]”hÌ)�”}”(hŒthe integrity value”h]”hŒthe integrity value”…”�”}”(hj2?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j.?h´M: hj/?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j.?h´M: hjž>ubjM)�”}”(hŒ,``size_t size`` size of the integrity value ”h]”(jS)�”}”(hŒ``size_t size``”h]”hë)�”}”(hjR?h]”hŒ size_t size”…”�”}”(hjT?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjP?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M; hjL?ubjm)�”}”(hhh]”hÌ)�”}”(hŒsize of the integrity value”h]”hŒsize of the integrity value”…”�”}”(hjk?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jg?h´M; hjh?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjL?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jg?h´M; hjž>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‚>ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj�?h]”hŒ Description”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‹?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M= hj‚>ubhÌ)�”}”(hŒ€Register a verified integrity measurement of a inode with LSMs. LSMs should free the previously saved data if **value** is NULL.”h]”(hŒnRegister a verified integrity measurement of a inode with LSMs. LSMs should free the previously saved data if ”…”�”}”(hj£?h²hh³Nh´Nubj2)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hj«?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj£?ubhŒ is NULL.”…”�”}”(hj£?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M< hj‚>ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÆ?h]”hŒReturn”…”�”}”(hjÈ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÄ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M? hj‚>ubhÌ)�”}”(hŒ1Returns 0 on success, negative values on failure.”h]”hŒ1Returns 0 on success, negative values on failure.”…”�”}”(hjÜ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M@ hj‚>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_file_ioctl (C function)”Œc.security_file_ioctl”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒPint security_file_ioctl (struct file *file, unsigned int cmd, unsigned long arg)”h]”jA)�”}”(hŒOint security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj@h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MØ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj@h²hh³j@h´MØ ubjj)�”}”(hŒsecurity_file_ioctl”h]”jp)�”}”(hŒsecurity_file_ioctl”h]”hŒsecurity_file_ioctl”…”�”}”(hj,@h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj(@ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj@h²hh³j@h´MØ ubj‹)�”}”(hŒ8(struct file *file, unsigned int cmd, unsigned long arg)”h]”(j‘)�”}”(hŒstruct file *file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjH@h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjD@ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU@h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjD@ubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjf@h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjc@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jh@Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj.@sbŒc.security_file_ioctl”†”asbuh1hhjD@ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†@h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjD@ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj”@h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjD@ubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj¡@h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjD@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj@@ubj‘)�”}”(hŒunsigned int cmd”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjº@h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¶@ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ@h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶@ubjG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ@h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¶@ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä@h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶@ubjp)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjò@h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¶@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj@@ubj‘)�”}”(hŒunsigned long arg”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjAubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjAubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj'Ah²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjAubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Ah²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjAubjp)�”}”(hŒarg”h]”hŒarg”…”�”}”(hjCAh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj@@ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj@h²hh³j@h´MØ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj@h²hh³j@h´MØ ubah}”(h]”jþ?ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j@h´MØ hj@h²hubj)�”}”(hhh]”hÌ)�”}”(hŒCheck if an ioctl is allowed”h]”hŒCheck if an ioctl is allowed”…”�”}”(hjmAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MØ hjjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj@h²hh³j@h´MØ ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j…Aj#j…Aj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXÉ**Parameters** ``struct file *file`` associated file ``unsigned int cmd`` ioctl cmd ``unsigned long arg`` ioctl arguments **Description** Check permission for an ioctl operation on **file**. Note that **arg** sometimes represents a user space pointer; in other cases, it may be a simple integer value. When **arg** represents a user space pointer, it should never be used by the security module. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj�Ah]”hŒ Parameters”…”�”}”(hj‘Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÜ hj‰AubjH)�”}”(hhh]”(jM)�”}”(hŒ&``struct file *file`` associated file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hj®Ah]”hŒstruct file *file”…”�”}”(hj°Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¬Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÙ hj¨Aubjm)�”}”(hhh]”hÌ)�”}”(hŒassociated file”h]”hŒassociated file”…”�”}”(hjÇAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃAh´MÙ hjÄAubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¨Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃAh´MÙ hj¥AubjM)�”}”(hŒ``unsigned int cmd`` ioctl cmd ”h]”(jS)�”}”(hŒ``unsigned int cmd``”h]”hë)�”}”(hjçAh]”hŒunsigned int cmd”…”�”}”(hjéAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjåAubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÚ hjáAubjm)�”}”(hhh]”hÌ)�”}”(hŒ ioctl cmd”h]”hŒ ioctl cmd”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jüAh´MÚ hjýAubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjáAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jüAh´MÚ hj¥AubjM)�”}”(hŒ&``unsigned long arg`` ioctl arguments ”h]”(jS)�”}”(hŒ``unsigned long arg``”h]”hë)�”}”(hj Bh]”hŒunsigned long arg”…”�”}”(hj"Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÛ hjBubjm)�”}”(hhh]”hÌ)�”}”(hŒioctl arguments”h]”hŒioctl arguments”…”�”}”(hj9Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5Bh´MÛ hj6Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j5Bh´MÛ hj¥Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‰AubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj[Bh]”hŒ Description”…”�”}”(hj]Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjYBubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÝ hj‰AubhÌ)�”}”(hXCheck permission for an ioctl operation on **file**. Note that **arg** sometimes represents a user space pointer; in other cases, it may be a simple integer value. When **arg** represents a user space pointer, it should never be used by the security module.”h]”(hŒ+Check permission for an ioctl operation on ”…”�”}”(hjqBh²hh³Nh´Nubj2)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjyBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjqBubhŒ . Note that ”…”�”}”(hjqBh²hh³Nh´Nubj2)�”}”(hŒ**arg**”h]”hŒarg”…”�”}”(hj‹Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjqBubhŒd sometimes represents a user space pointer; in other cases, it may be a simple integer value. When ”…”�”}”(hjqBh²hh³Nh´Nubj2)�”}”(hŒ**arg**”h]”hŒarg”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjqBubhŒQ represents a user space pointer, it should never be used by the security module.”…”�”}”(hjqBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÜ hj‰AubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¸Bh]”hŒReturn”…”�”}”(hjºBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¶Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Má hj‰AubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjÎBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mâ hj‰Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_file_ioctl_compat (C function)”Œc.security_file_ioctl_compat”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒWint security_file_ioctl_compat (struct file *file, unsigned int cmd, unsigned long arg)”h]”jA)�”}”(hŒVint security_file_ioctl_compat(struct file *file, unsigned int cmd, unsigned long arg)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjýBh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjùBh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Më ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjùBh²hh³j Ch´Më ubjj)�”}”(hŒsecurity_file_ioctl_compat”h]”jp)�”}”(hŒsecurity_file_ioctl_compat”h]”hŒsecurity_file_ioctl_compat”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjCubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjùBh²hh³j Ch´Më ubj‹)�”}”(hŒ8(struct file *file, unsigned int cmd, unsigned long arg)”h]”(j‘)�”}”(hŒstruct file *file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj:Ch²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj6CubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGCh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj6Cubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjXCh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjUCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jZCŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj CsbŒc.security_file_ioctl_compat”†”asbuh1hhj6CubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxCh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj6Cubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj†Ch²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj6Cubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj“Ch²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj6Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj2Cubj‘)�”}”(hŒunsigned int cmd”h]”(jG)�”}”(hŒunsigned”•"h]”hŒunsigned”…”�”}”(hj¬Ch²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¨CubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºCh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¨CubjG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈCh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¨CubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖCh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¨Cubjp)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjäCh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¨Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj2Cubj‘)�”}”(hŒunsigned long arg”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjýCh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjùCubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjùCubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjùCubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Dh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjùCubjp)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj5Dh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjùCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj2Cubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjùBh²hh³j Ch´Më ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjõBh²hh³j Ch´Më ubah}”(h]”jðBah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j Ch´Më hjòBh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if an ioctl is allowed in compat mode”h]”hŒ+Check if an ioctl is allowed in compat mode”…”�”}”(hj_Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Më hj\Dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjòBh²hh³j Ch´Më ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jwDj#jwDj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX0**Parameters** ``struct file *file`` associated file ``unsigned int cmd`` ioctl cmd ``unsigned long arg`` ioctl arguments **Description** Compat version of security_file_ioctl() that correctly handles 32-bit processes running on 64-bit kernels. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj�Dh]”hŒ Parameters”…”�”}”(hjƒDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mï hj{DubjH)�”}”(hhh]”(jM)�”}”(hŒ&``struct file *file`` associated file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hj Dh]”hŒstruct file *file”…”�”}”(hj¢Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjžDubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mì hjšDubjm)�”}”(hhh]”hÌ)�”}”(hŒassociated file”h]”hŒassociated file”…”�”}”(hj¹Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµDh´Mì hj¶Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjšDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jµDh´Mì hj—DubjM)�”}”(hŒ``unsigned int cmd`` ioctl cmd ”h]”(jS)�”}”(hŒ``unsigned int cmd``”h]”hë)�”}”(hjÙDh]”hŒunsigned int cmd”…”�”}”(hjÛDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj×Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mí hjÓDubjm)�”}”(hhh]”hÌ)�”}”(hŒ ioctl cmd”h]”hŒ ioctl cmd”…”�”}”(hjòDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jîDh´Mí hjïDubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÓDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jîDh´Mí hj—DubjM)�”}”(hŒ&``unsigned long arg`` ioctl arguments ”h]”(jS)�”}”(hŒ``unsigned long arg``”h]”hë)�”}”(hjEh]”hŒunsigned long arg”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mî hj Eubjm)�”}”(hhh]”hÌ)�”}”(hŒioctl arguments”h]”hŒioctl arguments”…”�”}”(hj+Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'Eh´Mî hj(Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j'Eh´Mî hj—Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj{DubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjMEh]”hŒ Description”…”�”}”(hjOEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjKEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mð hj{DubhÌ)�”}”(hŒjCompat version of security_file_ioctl() that correctly handles 32-bit processes running on 64-bit kernels.”h]”hŒjCompat version of security_file_ioctl() that correctly handles 32-bit processes running on 64-bit kernels.”…”�”}”(hjcEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mï hj{DubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjtEh]”hŒReturn”…”�”}”(hjvEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjrEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mò hj{DubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjŠEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mó hj{Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_mmap_backing_file (C function)”Œc.security_mmap_backing_file”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒnint security_mmap_backing_file (struct vm_area_struct *vma, struct file *backing_file, struct file *user_file)”h]”jA)�”}”(hŒmint security_mmap_backing_file(struct vm_area_struct *vma, struct file *backing_file, struct file *user_file)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹Eh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjµEh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M0 ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈEh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjµEh²hh³jÇEh´M0 ubjj)�”}”(hŒsecurity_mmap_backing_file”h]”jp)�”}”(hŒsecurity_mmap_backing_file”h]”hŒsecurity_mmap_backing_file”…”�”}”(hjÚEh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÖEubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjµEh²hh³jÇEh´M0 ubj‹)�”}”(hŒO(struct vm_area_struct *vma, struct file *backing_file, struct file *user_file)”h]”(j‘)�”}”(hŒstruct vm_area_struct *vma”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjöEh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjòEubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjòEubh)�”}”(hhh]”jp)�”}”(hŒvm_area_struct”h]”hŒvm_area_struct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jFŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÜEsbŒc.security_mmap_backing_file”†”asbuh1hhjòEubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Fh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjòEubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjBFh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjòEubjp)�”}”(hŒvma”h]”hŒvma”…”�”}”(hjOFh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjòEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjîEubj‘)�”}”(hŒstruct file *backing_file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjhFh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjdFubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuFh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjdFubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj†Fh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjƒFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jˆFŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j0FŒc.security_mmap_backing_file”†”asbuh1hhjdFubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Fh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjdFubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj²Fh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjdFubjp)�”}”(hŒ backing_file”h]”hŒ backing_file”…”�”}”(hj¿Fh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjdFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjîEubj‘)�”}”(hŒstruct file *user_file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjØFh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÔFubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåFh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÔFubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjöFh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjóFubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jøFŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j0FŒc.security_mmap_backing_file”†”asbuh1hhjÔFubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÔFubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj"Gh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÔFubjp)�”}”(hŒ user_file”h]”hŒ user_file”…”�”}”(hj/Gh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÔFubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjîEubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjµEh²hh³jÇEh´M0 ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj±Eh²hh³jÇEh´M0 ubah}”(h]”j¬Eah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÇEh´M0 hj®Eh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if mmap'ing a backing file is allowed”h]”hŒ-Check if mmap’ing a backing file is allowed”…”�”}”(hjYGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M0 hjVGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj®Eh²hh³jÇEh´M0 ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jqGj#jqGj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXb**Parameters** ``struct vm_area_struct *vma`` the vm_area_struct for the mmap'd region ``struct file *backing_file`` the backing file being mmap'd ``struct file *user_file`` the user file being mmap'd **Description** Check permissions for a mmap operation on a stacked filesystem. This hook is called after the security_mmap_file() and is responsible for authorizing the mmap on **backing_file**. It is important to note that the mmap operation on **user_file** has already been authorized and the **vma->vm_file** has been set to **backing_file**. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj{Gh]”hŒ Parameters”…”�”}”(hj}Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjyGubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M4 hjuGubjH)�”}”(hhh]”(jM)�”}”(hŒH``struct vm_area_struct *vma`` the vm_area_struct for the mmap'd region ”h]”(jS)�”}”(hŒ``struct vm_area_struct *vma``”h]”hë)�”}”(hjšGh]”hŒstruct vm_area_struct *vma”…”�”}”(hjœGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj˜Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M1 hj”Gubjm)�”}”(hhh]”hÌ)�”}”(hŒ(the vm_area_struct for the mmap'd region”h]”hŒ*the vm_area_struct for the mmap’d region”…”�”}”(hj³Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯Gh´M1 hj°Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj”Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¯Gh´M1 hj‘GubjM)�”}”(hŒ<``struct file *backing_file`` the backing file being mmap'd ”h]”(jS)�”}”(hŒ``struct file *backing_file``”h]”hë)�”}”(hjÓGh]”hŒstruct file *backing_file”…”�”}”(hjÕGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÑGubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M2 hjÍGubjm)�”}”(hhh]”hÌ)�”}”(hŒthe backing file being mmap'd”h]”hŒthe backing file being mmap’d”…”�”}”(hjìGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèGh´M2 hjéGubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÍGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jèGh´M2 hj‘GubjM)�”}”(hŒ6``struct file *user_file`` the user file being mmap'd ”h]”(jS)�”}”(hŒ``struct file *user_file``”h]”hë)�”}”(hj Hh]”hŒstruct file *user_file”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M3 hjHubjm)�”}”(hhh]”hÌ)�”}”(hŒthe user file being mmap'd”h]”hŒthe user file being mmap’d”…”�”}”(hj%Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!Hh´M3 hj"Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j!Hh´M3 hj‘Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjuGubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjGHh]”hŒ Description”…”�”}”(hjIHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjEHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M5 hjuGubhÌ)�”}”(hXMCheck permissions for a mmap operation on a stacked filesystem. This hook is called after the security_mmap_file() and is responsible for authorizing the mmap on **backing_file**. It is important to note that the mmap operation on **user_file** has already been authorized and the **vma->vm_file** has been set to **backing_file**.”h]”(hŒ£Check permissions for a mmap operation on a stacked filesystem. This hook is called after the security_mmap_file() and is responsible for authorizing the mmap on ”…”�”}”(hj]Hh²hh³Nh´Nubj2)�”}”(hŒ**backing_file**”h]”hŒ backing_file”…”�”}”(hjeHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj]HubhŒ6. It is important to note that the mmap operation on ”…”�”}”(hj]Hh²hh³Nh´Nubj2)�”}”(hŒ **user_file**”h]”hŒ user_file”…”�”}”(hjwHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj]HubhŒ% has already been authorized and the ”…”�”}”(hj]Hh²hh³Nh´Nubj2)�”}”(hŒ**vma->vm_file**”h]”hŒ vma->vm_file”…”�”}”(hj‰Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj]HubhŒ has been set to ”…”�”}”(hj]Hh²hh³Nh´Nubj2)�”}”(hŒ**backing_file**”h]”hŒ backing_file”…”�”}”(hj›Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj]HubhŒ.”…”�”}”(hj]Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M4 hjuGubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¶Hh]”hŒReturn”…”�”}”(hj¸Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj´Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M: hjuGubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjÌHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M; hjuGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ$security_file_post_open (C function)”Œc.security_file_post_open”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ9int security_file_post_open (struct file *file, int mask)”h]”jA)�”}”(hŒ8int security_file_post_open(struct file *file, int mask)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjûHh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj÷Hh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÍ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj÷Hh²hh³j Ih´MÍ ubjj)�”}”(hŒsecurity_file_post_open”h]”jp)�”}”(hŒsecurity_file_post_open”h]”hŒsecurity_file_post_open”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjIubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj÷Hh²hh³j Ih´MÍ ubj‹)�”}”(hŒ(struct file *file, int mask)”h]”(j‘)�”}”(hŒstruct file *file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj8Ih²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj4IubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEIh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj4Iubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjVIh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjSIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jXIŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjIsbŒc.security_file_post_open”†”asbuh1hhj4IubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvIh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj4Iubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj„Ih²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj4Iubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj‘Ih²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj4Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj0Iubj‘)�”}”(hŒint mask”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjªIh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¦IubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Ih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¦Iubjp)�”}”(hŒmask”h]”hŒmask”…”�”}”(hjÆIh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¦Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj0Iubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj÷Hh²hh³j Ih´MÍ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjóHh²hh³j Ih´MÍ ubah}”(h]”jîHah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j Ih´MÍ hjðHh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Evaluate a file after it has been opened”h]”hŒ(Evaluate a file after it has been opened”…”�”}”(hjðIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÍ hjíIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjðHh²hh³j Ih´MÍ ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jJj#jJj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX8**Parameters** ``struct file *file`` the file ``int mask`` access mask **Description** Evaluate an opened file and the access mask requested with open(). The hook is useful for LSMs that require the file content to be available in order to make decisions. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjJh]”hŒ Parameters”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑ hj JubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct file *file`` the file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hj1Jh]”hŒstruct file *file”…”�”}”(hj3Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj/Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎ hj+Jubjm)�”}”(hhh]”hÌ)�”}”(hŒthe file”h]”hŒthe file”…”�”}”(hjJJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jFJh´MÎ hjGJubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj+Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jFJh´MÎ hj(JubjM)�”}”(hŒ``int mask`` access mask ”h]”(jS)�”}”(hŒ ``int mask``”h]”hë)�”}”(hjjJh]”hŒint mask”…”�”}”(hjlJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjhJubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÏ hjdJubjm)�”}”(hhh]”hÌ)�”}”(hŒ access mask”h]”hŒ access mask”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJh´MÏ hj€Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjdJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jJh´MÏ hj(Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj JubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj¥Jh]”hŒ Description”…”�”}”(hj§Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj£Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑ hj JubhÌ)�”}”(hŒ¨Evaluate an opened file and the access mask requested with open(). The hook is useful for LSMs that require the file content to be available in order to make decisions.”h]”hŒ¨Evaluate an opened file and the access mask requested with open(). The hook is useful for LSMs that require the file content to be available in order to make decisions.”…”�”}”(hj»Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐ hj JubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÌJh]”hŒReturn”…”�”}”(hjÎJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÊJubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÔ hj JubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjâJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÕ hj Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ#security_cred_getsecid (C function)”Œc.security_cred_getsecid”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ>void security_cred_getsecid (const struct cred *c, u32 *secid)”h]”jA)�”}”(hŒ=void security_cred_getsecid(const struct cred *c, u32 *secid)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj Kh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M` ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj Kh²hh³jKh´M` ubjj)�”}”(hŒsecurity_cred_getsecid”h]”jp)�”}”(hŒsecurity_cred_getsecid”h]”hŒsecurity_cred_getsecid”…”�”}”(hj2Kh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj.Kubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj Kh²hh³jKh´M` ubj‹)�”}”(hŒ"(const struct cred *c, u32 *secid)”h]”(j‘)�”}”(hŒconst struct cred *c”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjNKh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjJKubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Kh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJKubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjiKh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjJKubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvKh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJKubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hj‡Kh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj„Kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j‰KŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj4KsbŒc.security_cred_getsecid”†”asbuh1hhjJKubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Kh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJKubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjµKh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjJKubjp)�”}”(hjh]”hŒc”…”�”}”(hjÂKh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjJKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjFKubj‘)�”}”(hŒ u32 *secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÝKh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÚKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jßKŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j£KŒc.security_cred_getsecid”†”asbuh1hhjÖKubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûKh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÖKubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÖKubjp)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÖKubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjFKubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj Kh²hh³jKh´M` ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj Kh²hh³jKh´M` ubah}”(h]”jKah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jKh´M` hjKh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ'Get the secid from a set of credentials”h]”hŒ'Get the secid from a set of credentials”…”�”}”(hj@Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M` hj=Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjKh²hh³jKh´M` ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jXLj#jXLj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒØ**Parameters** ``const struct cred *c`` credentials ``u32 *secid`` secid value **Description** Retrieve the security identifier of the cred structure **c**. In case of failure, **secid** will be set to zero.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjbLh]”hŒ Parameters”…”�”}”(hjdLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj`Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Md hj\LubjH)�”}”(hhh]”(jM)�”}”(hŒ%``const struct cred *c`` credentials ”h]”(jS)�”}”(hŒ``const struct cred *c``”h]”hë)�”}”(hj�Lh]”hŒconst struct cred *c”…”�”}”(hjƒLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Ma hj{Lubjm)�”}”(hhh]”hÌ)�”}”(hŒ credentials”h]”hŒ credentials”…”�”}”(hjšLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j–Lh´Ma hj—Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj{Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j–Lh´Ma hjxLubjM)�”}”(hŒ``u32 *secid`` secid value ”h]”(jS)�”}”(hŒ``u32 *secid``”h]”hë)�”}”(hjºLh]”hŒ u32 *secid”…”�”}”(hj¼Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¸Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mb hj´Lubjm)�”}”(hhh]”hÌ)�”}”(hŒ secid value”h]”hŒ secid value”…”�”}”(hjÓLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏLh´Mb hjÐLubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj´Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÏLh´Mb hjxLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj\LubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjõLh]”hŒ Description”…”�”}”(hj÷Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjóLubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Md hj\LubhÌ)�”}”(hŒqRetrieve the security identifier of the cred structure **c**. In case of failure, **secid** will be set to zero.”h]”(hŒ7Retrieve the security identifier of the cred structure ”…”�”}”(hj Mh²hh³Nh´Nubj2)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj MubhŒ. In case of failure, ”…”�”}”(hj Mh²hh³Nh´Nubj2)�”}”(hŒ **secid**”h]”hŒsecid”…”�”}”(hj%Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj MubhŒ will be set to zero.”…”�”}”(hj Mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mc hj\Lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_cred_getlsmprop (C function)”Œc.security_cred_getlsmprop”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒKvoid security_cred_getlsmprop (const struct cred *c, struct lsm_prop *prop)”h]”jA)�”}”(hŒJvoid security_cred_getlsmprop(const struct cred *c, struct lsm_prop *prop)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^Mh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjZMh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mo ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmMh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjZMh²hh³jlMh´Mo ubjj)�”}”(hŒsecurity_cred_getlsmprop”h]”jp)�”}”(hŒsecurity_cred_getlsmprop”h]”hŒsecurity_cred_getlsmprop”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj{Mubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjZMh²hh³jlMh´Mo ubj‹)�”}”(hŒ-(const struct cred *c, struct lsm_prop *prop)”h]”(j‘)�”}”(hŒconst struct cred *c”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj›Mh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj—MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Mh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj—MubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¶Mh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj—MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃMh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj—Mubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjÔMh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÑMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÖMŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj�MsbŒc.security_cred_getlsmprop”†”asbuh1hhj—MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôMh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj—Mubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj—Mubjp)�”}”(hjh]”hŒc”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj—Mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj“Mubj‘)�”}”(hŒstruct lsm_prop *prop”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj'Nh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj#NubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Nh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj#Nubh)�”}”(hhh]”jp)�”}”(hŒlsm_prop”h]”hŒlsm_prop”…”�”}”(hjENh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjBNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jGNŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jðMŒc.security_cred_getlsmprop”†”asbuh1hhj#NubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcNh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj#Nubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjqNh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj#Nubjp)�”}”(hŒprop”h]”hŒprop”…”�”}”(hj~Nh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj#Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj“Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjZMh²hh³jlMh´Mo ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjVMh²hh³jlMh´Mo ubah}”(h]”jQMah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jlMh´Mo hjSMh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ*Get the LSM data from a set of credentials”h]”hŒ*Get the LSM data from a set of credentials”…”�”}”(hj¨Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mo hj¥Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjSMh²hh³jlMh´Mo ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÀNj#jÀNj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒé**Parameters** ``const struct cred *c`` credentials ``struct lsm_prop *prop`` destination for the LSM data **Description** Retrieve the security data of the cred structure **c**. In case of failure, **prop** will be cleared.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÊNh]”hŒ Parameters”…”�”}”(hjÌNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÈNubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Ms hjÄNubjH)�”}”(hhh]”(jM)�”}”(hŒ%``const struct cred *c`` credentials ”h]”(jS)�”}”(hŒ``const struct cred *c``”h]”hë)�”}”(hjéNh]”hŒconst struct cred *c”…”�”}”(hjëNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjçNubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mp hjãNubjm)�”}”(hhh]”hÌ)�”}”(hŒ credentials”h]”hŒ credentials”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþNh´Mp hjÿNubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjãNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jþNh´Mp hjàNubjM)�”}”(hŒ7``struct lsm_prop *prop`` destination for the LSM data ”h]”(jS)�”}”(hŒ``struct lsm_prop *prop``”h]”hë)�”}”(hj"Oh]”hŒstruct lsm_prop *prop”…”�”}”(hj$Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mq hjOubjm)�”}”(hhh]”hÌ)�”}”(hŒdestination for the LSM data”h]”hŒdestination for the LSM data”…”�”}”(hj;Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7Oh´Mq hj8Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j7Oh´Mq hjàNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÄNubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj]Oh]”hŒ Description”…”�”}”(hj_Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj[Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Ms hjÄNubhÌ)�”}”(hŒfRetrieve the security data of the cred structure **c**. In case of failure, **prop** will be cleared.”h]”(hŒ1Retrieve the security data of the cred structure ”…”�”}”(hjsOh²hh³Nh´Nubj2)�”}”(hŒ**c**”h]”hŒc”…”�”}”(hj{Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjsOubhŒ. In case of failure, ”…”�”}”(hjsOh²hh³Nh´Nubj2)�”}”(hŒ**prop**”h]”hŒprop”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjsOubhŒ will be cleared.”…”�”}”(hjsOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mr hjÄNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ&security_kernel_read_file (C function)”Œc.security_kernel_read_file”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ]int security_kernel_read_file (struct file *file, enum kernel_read_file_id id, bool contents)”h]”jA)�”}”(hŒ\int security_kernel_read_file(struct file *file, enum kernel_read_file_id id, bool contents)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆOh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÂOh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M« ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕOh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÂOh²hh³jÔOh´M« ubjj)�”}”(hŒsecurity_kernel_read_file”h]”jp)�”}”(hŒsecurity_kernel_read_file”h]”hŒsecurity_kernel_read_file”…”�”}”(hjçOh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjãOubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjÂOh²hh³jÔOh´M« ubj‹)�”}”(hŒ?(struct file *file, enum kernel_read_file_id id, bool contents)”h]”(j‘)�”}”(hŒstruct file *file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÿOubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÿOubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj!Ph²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j#PŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjéOsbŒc.security_kernel_read_file”†”asbuh1hhjÿOubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAPh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÿOubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjOPh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÿOubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj\Ph²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÿOubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjûOubj‘)�”}”(hŒenum kernel_read_file_id id”h]”(jL)�”}”(hjN=h]”hŒenum”…”�”}”(hjuPh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjqPubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Ph²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjqPubh)�”}”(hhh]”jp)�”}”(hŒkernel_read_file_id”h]”hŒkernel_read_file_id”…”�”}”(hj“Ph²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j•PŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j=PŒc.security_kernel_read_file”†”asbuh1hhjqPubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Ph²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjqPubjp)�”}”(hŒid”h]”hŒid”…”�”}”(hj¿Ph²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjqPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjûOubj‘)�”}”(hŒ bool contents”h]”(jG)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjØPh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÔPubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæPh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÔPubjp)�”}”(hŒcontents”h]”hŒcontents”…”�”}”(hjôPh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÔPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjûOubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjÂOh²hh³jÔOh´M« ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj¾Oh²hh³jÔOh´M« ubah}”(h]”j¹Oah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÔOh´M« hj»Oh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Read a file specified by userspace”h]”hŒ"Read a file specified by userspace”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M« hjQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj»Oh²hh³jÔOh´M« ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j6Qj#j6Qj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct file *file`` file ``enum kernel_read_file_id id`` file identifier ``bool contents`` trust if security_kernel_post_read_file() will be called **Description** Read a file specified by userspace. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj@Qh]”hŒ Parameters”…”�”}”(hjBQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj>Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯ hj:QubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct file *file`` file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hj_Qh]”hŒstruct file *file”…”�”}”(hjaQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj]Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¬ hjYQubjm)�”}”(hhh]”hÌ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjxQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jtQh´M¬ hjuQubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjYQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jtQh´M¬ hjVQubjM)�”}”(hŒ0``enum kernel_read_file_id id`` file identifier ”h]”(jS)�”}”(hŒ``enum kernel_read_file_id id``”h]”hë)�”}”(hj˜Qh]”hŒenum kernel_read_file_id id”…”�”}”(hjšQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj–Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M­ hj’Qubjm)�”}”(hhh]”hÌ)�”}”(hŒfile identifier”h]”hŒfile identifier”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­Qh´M­ hj®Qubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj’Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­Qh´M­ hjVQubjM)�”}”(hŒK``bool contents`` trust if security_kernel_post_read_file() will be called ”h]”(jS)�”}”(hŒ``bool contents``”h]”hë)�”}”(hjÑQh]”hŒ bool contents”…”�”}”(hjÓQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÏQubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M® hjËQubjm)�”}”(hhh]”hÌ)�”}”(hŒ8trust if security_kernel_post_read_file() will be called”h]”hŒ8trust if security_kernel_post_read_file() will be called”…”�”}”(hjêQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jæQh´M® hjçQubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjËQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jæQh´M® hjVQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj:QubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj Rh]”hŒ Description”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M° hj:QubhÌ)�”}”(hŒ#Read a file specified by userspace.”h]”hŒ#Read a file specified by userspace.”…”�”}”(hj"Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯ hj:QubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj3Rh]”hŒReturn”…”�”}”(hj5Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj1Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M± hj:QubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjIRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M² hj:Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ+security_kernel_post_read_file (C function)”Œ c.security_kernel_post_read_file”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒkint security_kernel_post_read_file (struct file *file, char *buf, loff_t size, enum kernel_read_file_id id)”h]”jA)�”}”(hŒjint security_kernel_post_read_file(struct file *file, char *buf, loff_t size, enum kernel_read_file_id id)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjxRh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjtRh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¼ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Rh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjtRh²hh³j†Rh´M¼ ubjj)�”}”(hŒsecurity_kernel_post_read_file”h]”jp)�”}”(hŒsecurity_kernel_post_read_file”h]”hŒsecurity_kernel_post_read_file”…”�”}”(hj™Rh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj•Rubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjtRh²hh³j†Rh´M¼ ubj‹)�”}”(hŒH(struct file *file, char *buf, loff_t size, enum kernel_read_file_id id)”h]”(j‘)�”}”(hŒstruct file *file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjµRh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj±RubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂRh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj±Rubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÓRh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÐRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÕRŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj›RsbŒ c.security_kernel_post_read_file”†”asbuh1hhj±RubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóRh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj±Rubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj±Rubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj±Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj­Rubj‘)�”}”(hŒ char *buf”h]”(jG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj'Sh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj#SubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Sh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj#Subj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjCSh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj#Subjp)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjPSh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj#Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj­Rubj‘)�”}”(hŒ loff_t size”h]”(h)�”}”(hhh]”jp)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjlSh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjiSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jnSŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jïRŒ c.security_kernel_post_read_file”†”asbuh1hhjeSubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠSh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjeSubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj˜Sh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjeSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj­Rubj‘)�”}”(hŒenum kernel_read_file_id id”h]”(jL)�”}”(hjN=h]”hŒenum”…”�”}”(hj±Sh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj­SubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾Sh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj­Subh)�”}”(hhh]”jp)�”}”(hŒkernel_read_file_id”h]”hŒkernel_read_file_id”…”�”}”(hjÏSh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÌSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÑSŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jïRŒ c.security_kernel_post_read_file”†”asbuh1hhj­SubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíSh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj­Subjp)�”}”(hŒid”h]”hŒid”…”�”}”(hjûSh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj­Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj­Rubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjtRh²hh³j†Rh´M¼ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjpRh²hh³j†Rh´M¼ ubah}”(h]”jkRah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j†Rh´M¼ hjmRh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Read a file specified by userspace”h]”hŒ"Read a file specified by userspace”…”�”}”(hj%Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¼ hj"Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjmRh²hh³j†Rh´M¼ ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j=Tj#j=Tj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX¾**Parameters** ``struct file *file`` file ``char *buf`` file contents ``loff_t size`` size of file contents ``enum kernel_read_file_id id`` file identifier **Description** Read a file specified by userspace. This must be paired with a prior call to security_kernel_read_file() call that indicated this hook would also be called, see security_kernel_read_file() for more information. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjGTh]”hŒ Parameters”…”�”}”(hjITh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjETubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÀ hjATubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct file *file`` file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hjfTh]”hŒstruct file *file”…”�”}”(hjhTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjdTubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M½ hj`Tubjm)�”}”(hhh]”hÌ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{Th´M½ hj|Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj`Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j{Th´M½ hj]TubjM)�”}”(hŒ``char *buf`` file contents ”h]”(jS)�”}”(hŒ ``char *buf``”h]”hë)�”}”(hjŸTh]”hŒ char *buf”…”�”}”(hj¡Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj�Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¾ hj™Tubjm)�”}”(hhh]”hÌ)�”}”(hŒ file contents”h]”hŒ file contents”…”�”}”(hj¸Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j´Th´M¾ hjµTubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj™Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j´Th´M¾ hj]TubjM)�”}”(hŒ&``loff_t size`` size of file contents ”h]”(jS)�”}”(hŒ``loff_t size``”h]”hë)�”}”(hjØTh]”hŒ loff_t size”…”�”}”(hjÚTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÖTubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¿ hjÒTubjm)�”}”(hhh]”hÌ)�”}”(hŒsize of file contents”h]”hŒsize of file contents”…”�”}”(hjñTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jíTh´M¿ hjîTubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÒTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jíTh´M¿ hj]TubjM)�”}”(hŒ0``enum kernel_read_file_id id`` file identifier ”h]”(jS)�”}”(hŒ``enum kernel_read_file_id id``”h]”hë)�”}”(hjUh]”hŒenum kernel_read_file_id id”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÀ hj Uubjm)�”}”(hhh]”hÌ)�”}”(hŒfile identifier”h]”hŒfile identifier”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&Uh´MÀ hj'Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j&Uh´MÀ hj]Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjATubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjLUh]”hŒ Description”…”�”}”(hjNUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjJUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjATubhÌ)�”}”(hŒÓRead a file specified by userspace. This must be paired with a prior call to security_kernel_read_file() call that indicated this hook would also be called, see security_kernel_read_file() for more information.”h]”hŒÓRead a file specified by userspace. This must be paired with a prior call to security_kernel_read_file() call that indicated this hook would also be called, see security_kernel_read_file() for more information.”…”�”}”(hjbUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÁ hjATubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjsUh]”hŒReturn”…”�”}”(hjuUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjqUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÅ hjATubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj‰Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÆ hjATubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ&security_kernel_load_data (C function)”Œc.security_kernel_load_data”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒJint security_kernel_load_data (enum kernel_load_data_id id, bool contents)”h]”jA)�”}”(hŒIint security_kernel_load_data(enum kernel_load_data_id id, bool contents)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj¸Uh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj´Uh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇUh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj´Uh²hh³jÆUh´MÐ ubjj)�”}”(hŒsecurity_kernel_load_data”h]”jp)�”}”(hŒsecurity_kernel_load_data”h]”hŒsecurity_kernel_load_data”…”�”}”(hjÙUh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÕUubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj´Uh²hh³jÆUh´MÐ ubj‹)�”}”(hŒ,(enum kernel_load_data_id id, bool contents)”h]”(j‘)�”}”(hŒenum kernel_load_data_id id”h]”(jL)�”}”(hjN=h]”hŒenum”…”�”}”(hjõUh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjñUubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjñUubh)�”}”(hhh]”jp)�”}”(hŒkernel_load_data_id”h]”hŒkernel_load_data_id”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jVŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÛUsbŒc.security_kernel_load_data”†”asbuh1hhjñUubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Vh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjñUubjp)�”}”(hŒid”h]”hŒid”…”�”}”(hjAVh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjñUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjíUubj‘)�”}”(hŒ bool contents”h]”(jG)�”}”(hjÚPh]”hŒbool”…”�”}”(hjZVh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjVVubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgVh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVVubjp)�”}”(hŒcontents”h]”hŒcontents”…”�”}”(hjuVh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjVVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjíUubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj´Uh²hh³jÆUh´MÐ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj°Uh²hh³jÆUh´MÐ ubah}”(h]”j«Uah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÆUh´MÐ hj­Uh²hubj)�”}”(hhh]”hÌ)�”}”(hŒLoad data provided by userspace”h]”hŒLoad data provided by userspace”…”�”}”(hjŸVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐ hjœVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj­Uh²hh³jÆUh´MÐ ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j·Vj#j·Vj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒò**Parameters** ``enum kernel_load_data_id id`` data identifier ``bool contents`` true if security_kernel_post_load_data() will be called **Description** Load data provided by userspace. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÁVh]”hŒ Parameters”…”�”}”(hjÃVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¿Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÔ hj»VubjH)�”}”(hhh]”(jM)�”}”(hŒ0``enum kernel_load_data_id id`` data identifier ”h]”(jS)�”}”(hŒ``enum kernel_load_data_id id``”h]”hë)�”}”(hjàVh]”hŒenum kernel_load_data_id id”…”�”}”(hjâVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÞVubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑ hjÚVubjm)�”}”(hhh]”hÌ)�”}”(hŒdata identifier”h]”hŒdata identifier”…”�”}”(hjùVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõVh´MÑ hjöVubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÚVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jõVh´MÑ hj×VubjM)�”}”(hŒJ``bool contents`` true if security_kernel_post_load_data() will be called ”h]”(jS)�”}”(hŒ``bool contents``”h]”hë)�”}”(hjWh]”hŒ bool contents”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒ hjWubjm)�”}”(hhh]”hÌ)�”}”(hŒ7true if security_kernel_post_load_data() will be called”h]”hŒ7true if security_kernel_post_load_data() will be called”…”�”}”(hj2Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j.Wh´MÒ hj/Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j.Wh´MÒ hj×Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj»VubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjTWh]”hŒ Description”…”�”}”(hjVWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjRWubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÔ hj»VubhÌ)�”}”(hŒ Load data provided by userspace.”h]”hŒ Load data provided by userspace.”…”�”}”(hjjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÓ hj»VubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj{Wh]”hŒReturn”…”�”}”(hj}Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjyWubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÕ hj»VubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj‘Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÖ hj»Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ+security_kernel_post_load_data (C function)”Œ c.security_kernel_post_load_data”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒkint security_kernel_post_load_data (char *buf, loff_t size, enum kernel_load_data_id id, char *description)”h]”jA)�”}”(hŒjint security_kernel_post_load_data(char *buf, loff_t size, enum kernel_load_data_id id, char *description)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÀWh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¼Wh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mß ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏWh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¼Wh²hh³jÎWh´Mß ubjj)�”}”(hŒsecurity_kernel_post_load_data”h]”jp)�”}”(hŒsecurity_kernel_post_load_data”h]”hŒsecurity_kernel_post_load_data”…”�”}”(hjáWh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÝWubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj¼Wh²hh³jÎWh´Mß ubj‹)�”}”(hŒH(char *buf, loff_t size, enum kernel_load_data_id id, char *description)”h]”(j‘)�”}”(hŒ char *buf”h]”(jG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjýWh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjùWubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjùWubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjùWubjp)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj&Xh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjùWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjõWubj‘)�”}”(hŒ loff_t size”h]”(h)�”}”(hhh]”jp)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjBXh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj?Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jDXŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjãWsbŒ c.security_kernel_post_load_data”†”asbuh1hhj;XubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbXh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj;Xubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjpXh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj;Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjõWubj‘)�”}”(hŒenum kernel_load_data_id id”h]”(jL)�”}”(hjN=h]”hŒenum”…”�”}”(hj‰Xh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj…XubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Xh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj…Xubh)�”}”(hhh]”jp)�”}”(hŒkernel_load_data_id”h]”hŒkernel_load_data_id”…”�”}”(hj§Xh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¤Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j©XŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j^XŒ c.security_kernel_post_load_data”†”asbuh1hhj…XubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅXh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj…Xubjp)�”}”(hŒid”h]”hŒid”…”�”}”(hjÓXh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj…Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjõWubj‘)�”}”(hŒchar *description”h]”(jG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjìXh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjèXubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúXh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjèXubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjèXubjp)�”}”(hŒ description”h]”hŒ description”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjèXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjõWubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj¼Wh²hh³jÎWh´Mß ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj¸Wh²hh³jÎWh´Mß ubah}”(h]”j³Wah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÎWh´Mß hjµWh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ*Load userspace data from a non-file source”h]”hŒ*Load userspace data from a non-file source”…”�”}”(hj?Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mß hji_mutex locked. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjoh]”hŒ Parameters”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÿhjþnubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hj#oh]”hŒstruct inode *inode”…”�”}”(hj%oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj!oubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mühjoubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hji_mutex locked.”h]”hX¦Notify the security module of what the security context of an inode should be. Initializes the incore security context managed by the security module for this inode. Example usage: NFS client invokes this hook to initialize the security context in its incore inode to the value provided by the server for the file when the server returned the file’s attributes to the client. Must be called with inode->i_mutex locked.”…”�”}”(hjæoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÿhjþnubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj÷oh]”hŒReturn”…”�”}”(hjùoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjõoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjþnubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjþnubeh}”(h]”h ]”Œ kernelindent”ah"]”•h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_inode_setsecctx (C function)”Œc.security_inode_setsecctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒKint security_inode_setsecctx (struct dentry *dentry, void *ctx, u32 ctxlen)”h]”jA)�”}”(hŒJint security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hji_mutex locked. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj¨qh]”hŒ Parameters”…”�”}”(hjªqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¦qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¢qubjH)�”}”(hhh]”(jM)�”}”(hŒ ``struct dentry *dentry`` inode ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hjÇqh]”hŒstruct dentry *dentry”…”�”}”(hjÉqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÅqubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjÁqubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjàqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜqh´MhjÝqubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÁqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜqh´Mhj¾qubjM)�”}”(hŒ``void *ctx`` secctx ”h]”(jS)�”}”(hŒ ``void *ctx``”h]”hë)�”}”(hjrh]”hŒ void *ctx”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjþqubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjúqubjm)�”}”(hhh]”hÌ)�”}”(hŒsecctx”h]”hŒsecctx”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrh´Mhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjúqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrh´Mhj¾qubjM)�”}”(hŒ ``u32 ctxlen`` length of secctx ”h]”(jS)�”}”(hŒ``u32 ctxlen``”h]”hë)�”}”(hj9rh]”hŒ u32 ctxlen”…”�”}”(hj;rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj7rubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj3rubjm)�”}”(hhh]”hÌ)�”}”(hŒlength of secctx”h]”hŒlength of secctx”…”�”}”(hjRrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jNrh´MhjOrubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj3rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jNrh´Mhj¾qubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¢qubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjtrh]”hŒ Description”…”�”}”(hjvrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjrrubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¢qubhÌ)�”}”(hXÇChange the security context of an inode. Updates the incore security context managed by the security module and invokes the fs code as needed (via __vfs_setxattr_noperm) to update any backing xattrs that represent the context. Example usage: NFS server invokes this hook to change the security context in its incore inode and on the backing filesystem to a value provided by the client on a SETATTR operation. Must be called with inode->i_mutex locked.”h]”hXÇChange the security context of an inode. Updates the incore security context managed by the security module and invokes the fs code as needed (via __vfs_setxattr_noperm) to update any backing xattrs that represent the context. Example usage: NFS server invokes this hook to change the security context in its incore inode and on the backing filesystem to a value provided by the client on a SETATTR operation. Must be called with inode->i_mutex locked.”…”�”}”(hjŠrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¢qubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj›rh]”hŒReturn”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj™rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¢qubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hj±rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¢qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_inode_getsecctx (C function)”Œc.security_inode_getsecctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒJint security_inode_getsecctx (struct inode *inode, struct lsm_context *cp)”h]”jA)�”}”(hŒIint security_inode_getsecctx(struct inode *inode, struct lsm_context *cp)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjàrh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÜrh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M&ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïrh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÜrh²hh³jîrh´M&ubjj)�”}”(hŒsecurity_inode_getsecctx”h]”jp)�”}”(hŒsecurity_inode_getsecctx”h]”hŒsecurity_inode_getsecctx”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjýrubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjÜrh²hh³jîrh´M&ubj‹)�”}”(hŒ-(struct inode *inode, struct lsm_context *cp)”h]”(j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjsubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*sh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjsubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj;sh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj8subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j=sŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjssbŒc.security_inode_getsecctx”†”asbuh1hhjsubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[sh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjsubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjish²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjsubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjvsh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjsubj‘)�”}”(hŒstruct lsm_context *cp”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‹subjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœsh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‹subh)�”}”(hhh]”jp)�”}”(hŒ lsm_context”h]”hŒ lsm_context”…”�”}”(hj­sh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjªsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j¯sŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jWsŒc.security_inode_getsecctx”†”asbuh1hhj‹subjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËsh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‹subj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÙsh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‹subjp)�”}”(hŒcp”h]”hŒcp”…”�”}”(hjæsh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‹subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjsubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjÜrh²hh³jîrh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjØrh²hh³jîrh´M&ubah}”(h]”jÓrah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jîrh´M&hjÕrh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Get the security label of an inode”h]”hŒ"Get the security label of an inode”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M&hj th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÕrh²hh³jîrh´M&ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j(tj#j(tj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct inode *inode`` inode ``struct lsm_context *cp`` security context **Description** On success, returns 0 and fills out **cp** with the security context for the given **inode**. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj2th]”hŒ Parameters”…”�”}”(hj4th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj0tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M*hj,tubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hjQth]”hŒstruct inode *inode”…”�”}”(hjSth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjOtubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M'hjKtubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jfth´M'hjgtubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjKtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jfth´M'hjHtubjM)�”}”(hŒ,``struct lsm_context *cp`` security context ”h]”(jS)�”}”(hŒ``struct lsm_context *cp``”h]”hë)�”}”(hjŠth]”hŒstruct lsm_context *cp”…”�”}”(hjŒth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjˆtubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M(hj„tubjm)�”}”(hhh]”hÌ)�”}”(hŒsecurity context”h]”hŒsecurity context”…”�”}”(hj£th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŸth´M(hj tubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj„tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŸth´M(hjHtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj,tubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjÅth]”hŒ Description”…”�”}”(hjÇth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÃtubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M*hj,tubhÌ)�”}”(hŒ]On success, returns 0 and fills out **cp** with the security context for the given **inode**.”h]”(hŒ$On success, returns 0 and fills out ”…”�”}”(hjÛth²hh³Nh´Nubj2)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hjãth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÛtubhŒ) with the security context for the given ”…”�”}”(hjÛth²hh³Nh´Nubj2)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjõth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÛtubhŒ.”…”�”}”(hjÛth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M)hj,tubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjuh]”hŒReturn”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M,hj,tubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hj&uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M-hj,tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ)security_unix_stream_connect (C function)”Œc.security_unix_stream_connect”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ\int security_unix_stream_connect (struct sock *sock, struct sock *other, struct sock *newsk)”h]”jA)�”}”(hŒ[int security_unix_stream_connect(struct sock *sock, struct sock *other, struct sock *newsk)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjUuh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjQuh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MmubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjduh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjQuh²hh³jcuh´Mmubjj)�”}”(hŒsecurity_unix_stream_connect”h]”jp)�”}”(hŒsecurity_unix_stream_connect”h]”hŒsecurity_unix_stream_connect”…”�”}”(hjvuh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjruubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjQuh²hh³jcuh´Mmubj‹)�”}”(hŒ;(struct sock *sock, struct sock *other, struct sock *newsk)”h]”(j‘)�”}”(hŒstruct sock *sock”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj’uh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjŽuubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸuh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽuubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj°uh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj­uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j²uŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjxusbŒc.security_unix_stream_connect”†”asbuh1hhjŽuubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐuh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽuubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÞuh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjŽuubjp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjëuh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŽuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠuubj‘)�”}”(hŒstruct sock *other”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjvubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj"vh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j$vŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jÌuŒc.security_unix_stream_connect”†”asbuh1hhjvubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@vh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjNvh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjvubjp)�”}”(hŒother”h]”hŒother”…”�”}”(hj[vh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠuubj‘)�”}”(hŒstruct sock *newsk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjtvh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjpvubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjpvubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj’vh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j”vŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jÌuŒc.security_unix_stream_connect”†”asbuh1hhjpvubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°vh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjpvubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¾vh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjpvubjp)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjËvh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjpvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠuubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjQuh²hh³jcuh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjMuh²hh³jcuh´Mmubah}”(h]”jHuah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jcuh´MmhjJuh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ$Check if a AF_UNIX stream is allowed”h]”hŒ$Check if a AF_UNIX stream is allowed”…”�”}”(hjõvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mmhjòvh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjJuh²hh³jcuh´Mmubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j wj#j wj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXÃ**Parameters** ``struct sock *sock`` originating sock ``struct sock *other`` peer sock ``struct sock *newsk`` new sock **Description** Check permissions before establishing a Unix domain stream connection between **sock** and **other**. The **unix_stream_connect** and **unix_may_send** hooks were necessary because Linux provides an alternative to the conventional file name space for Unix domain sockets. Whereas binding and connecting to sockets in the file name space is mediated by the typical file permissions (and caught by the mknod and permission hooks in inode_security_ops), binding and connecting to sockets in the abstract name space is completely unmediated. Sufficient control of Unix domain sockets in the abstract name space isn't possible using only the socket layer hooks, since we need to know the actual target socket, which is not looked up until we are inside the af_unix code. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjwh]”hŒ Parameters”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MqhjwubjH)�”}”(hhh]”(jM)�”}”(hŒ'``struct sock *sock`` originating sock ”h]”(jS)�”}”(hŒ``struct sock *sock``”h]”hë)�”}”(hj6wh]”hŒstruct sock *sock”…”�”}”(hj8wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj4wubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mnhj0wubjm)�”}”(hhh]”hÌ)�”}”(hŒoriginating sock”h]”hŒoriginating sock”…”�”}”(hjOwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKwh´MnhjLwubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj0wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKwh´Mnhj-wubjM)�”}”(hŒ!``struct sock *other`` peer sock ”h]”(jS)�”}”(hŒ``struct sock *other``”h]”hë)�”}”(hjowh]”hŒstruct sock *other”…”�”}”(hjqwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjmwubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mohjiwubjm)�”}”(hhh]”hÌ)�”}”(hŒ peer sock”h]”hŒ peer sock”…”�”}”(hjˆwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„wh´Mohj…wubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjiwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„wh´Mohj-wubjM)�”}”(hŒ ``struct sock *newsk`` new sock ”h]”(jS)�”}”(hŒ``struct sock *newsk``”h]”hë)�”}”(hj¨wh]”hŒstruct sock *newsk”…”�”}”(hjªwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¦wubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mphj¢wubjm)�”}”(hhh]”hÌ)�”}”(hŒnew sock”h]”hŒnew sock”…”�”}”(hjÁwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½wh´Mphj¾wubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¢wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½wh´Mphj-wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjwubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjãwh]”hŒ Description”…”�”}”(hjåwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjáwubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MrhjwubhÌ)�”}”(hŒeCheck permissions before establishing a Unix domain stream connection between **sock** and **other**.”h]”(hŒNCheck permissions before establishing a Unix domain stream connection between ”…”�”}”(hjùwh²hh³Nh´Nubj2)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjùwubhŒ and ”…”�”}”(hjùwh²hh³Nh´Nubj2)�”}”(hŒ **other**”h]”hŒother”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjùwubhŒ.”…”�”}”(hjùwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MqhjwubhÌ)�”}”(hX™The **unix_stream_connect** and **unix_may_send** hooks were necessary because Linux provides an alternative to the conventional file name space for Unix domain sockets. Whereas binding and connecting to sockets in the file name space is mediated by the typical file permissions (and caught by the mknod and permission hooks in inode_security_ops), binding and connecting to sockets in the abstract name space is completely unmediated. Sufficient control of Unix domain sockets in the abstract name space isn't possible using only the socket layer hooks, since we need to know the actual target socket, which is not looked up until we are inside the af_unix code.”h]”(hŒThe ”…”�”}”(hj,xh²hh³Nh´Nubj2)�”}”(hŒ**unix_stream_connect**”h]”hŒunix_stream_connect”…”�”}”(hj4xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj,xubhŒ and ”…”�”}”(hj,xh²hh³Nh´Nubj2)�”}”(hŒ**unix_may_send**”h]”hŒ unix_may_send”…”�”}”(hjFxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj,xubhXj hooks were necessary because Linux provides an alternative to the conventional file name space for Unix domain sockets. Whereas binding and connecting to sockets in the file name space is mediated by the typical file permissions (and caught by the mknod and permission hooks in inode_security_ops), binding and connecting to sockets in the abstract name space is completely unmediated. Sufficient control of Unix domain sockets in the abstract name space isn’t possible using only the socket layer hooks, since we need to know the actual target socket, which is not looked up until we are inside the af_unix code.”…”�”}”(hj,xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MthjwubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjaxh]”hŒReturn”…”�”}”(hjcxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj_xubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M~hjwubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjwxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ#security_unix_may_send (C function)”Œc.security_unix_may_send”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒFint security_unix_may_send (struct socket *sock, struct socket *other)”h]”jA)�”}”(hŒEint security_unix_may_send(struct socket *sock, struct socket *other)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj¦xh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¢xh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‰ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµxh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¢xh²hh³j´xh´M‰ubjj)�”}”(hŒsecurity_unix_may_send”h]”jp)�”}”(hŒsecurity_unix_may_send”h]”hŒsecurity_unix_may_send”…”�”}”(hjÇxh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÃxubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj¢xh²hh³j´xh´M‰ubj‹)�”}”(hŒ+(struct socket *sock, struct socket *other)”h]”(j‘)�”}”(hŒstruct socket *sock”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjãxh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjßxubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðxh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjßxubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjþxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jyŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÉxsbŒc.security_unix_may_send”†”asbuh1hhjßxubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!yh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjßxubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj/yh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjßxubjp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjCheck permissions before connecting or sending datagrams from ”…”�”}”(hj¡zh²hh³Nh´Nubj2)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hj©zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¡zubhŒ to ”…”�”}”(hj¡zh²hh³Nh´Nubj2)�”}”(hŒ **other**”h]”hŒother”…”�”}”(hj»zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¡zubhŒ.”…”�”}”(hj¡zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŒhjòyubhÌ)�”}”(hX™The **unix_stream_connect** and **unix_may_send** hooks were necessary because Linux provides an alternative to the conventional file name space for Unix domain sockets. Whereas binding and connecting to sockets in the file name space is mediated by the typical file permissions (and caught by the mknod and permission hooks in inode_security_ops), binding and connecting to sockets in the abstract name space is completely unmediated. Sufficient control of Unix domain sockets in the abstract name space isn't possible using only the socket layer hooks, since we need to know the actual target socket, which is not looked up until we are inside the af_unix code.”h]”(hŒThe ”…”�”}”(hjÔzh²hh³Nh´Nubj2)�”}”(hŒ**unix_stream_connect**”h]”hŒunix_stream_connect”…”�”}”(hjÜzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÔzubhŒ and ”…”�”}”(hjÔzh²hh³Nh´Nubj2)�”}”(hŒ**unix_may_send**”h]”hŒ unix_may_send”…”�”}”(hjîzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÔzubhXj hooks were necessary because Linux provides an alternative to the conventional file name space for Unix domain sockets. Whereas binding and connecting to sockets in the file name space is mediated by the typical file permissions (and caught by the mknod and permission hooks in inode_security_ops), binding and connecting to sockets in the abstract name space is completely unmediated. Sufficient control of Unix domain sockets in the abstract name space isn’t possible using only the socket layer hooks, since we need to know the actual target socket, which is not looked up until we are inside the af_unix code.”…”�”}”(hjÔzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hjòyubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj {h]”hŒReturn”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M™hjòyubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mšhjòyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_socket_socketpair (C function)”Œc.security_socket_socketpair”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒKint security_socket_socketpair (struct socket *socka, struct socket *sockb)”h]”jA)�”}”(hŒJint security_socket_socketpair(struct socket *socka, struct socket *sockb)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjN{h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjJ{h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÌubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]{h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJ{h²hh³j\{h´MÌubjj)�”}”(hŒsecurity_socket_socketpair”h]”jp)�”}”(hŒsecurity_socket_socketpair”h]”hŒsecurity_socket_socketpair”…”�”}”(hjo{h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjk{ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjJ{h²hh³j\{h´MÌubj‹)�”}”(hŒ,(struct socket *socka, struct socket *sockb)”h]”(j‘)�”}”(hŒstruct socket *socka”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj‹{h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‡{ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜{h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‡{ubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj©{h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¦{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j«{Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjq{sbŒc.security_socket_socketpair”†”asbuh1hhj‡{ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ{h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‡{ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj×{h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‡{ubjp)�”}”(hŒsocka”h]”hŒsocka”…”�”}”(hjä{h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‡{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjƒ{ubj‘)�”}”(hŒstruct socket *sockb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjý{h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjù{ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjù{ubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j|Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jÅ{Œc.security_socket_socketpair”†”asbuh1hhjù{ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9|h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjù{ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjG|h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjù{ubjp)�”}”(hŒsockb”h]”hŒsockb”…”�”}”(hjT|h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjù{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjƒ{ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjJ{h²hh³j\{h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjF{h²hh³j\{h´MÌubah}”(h]”jA{ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j\{h´MÌhjC{h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Check if creating a socketpair is allowed”h]”hŒ)Check if creating a socketpair is allowed”…”�”}”(hj~|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÌhj{|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjC{h²hh³j\{h´MÌubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j–|j#j–|j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct socket *socka`` first socket ``struct socket *sockb`` second socket **Description** Check permissions before creating a fresh pair of sockets. **Return** Returns 0 if permission is granted and the connection was established.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj |h]”hŒ Parameters”…”�”}”(hj¢|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjž|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐhjš|ubjH)�”}”(hhh]”(jM)�”}”(hŒ&``struct socket *socka`` first socket ”h]”(jS)�”}”(hŒ``struct socket *socka``”h]”hë)�”}”(hj¿|h]”hŒstruct socket *socka”…”�”}”(hjÁ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj½|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÍhj¹|ubjm)�”}”(hhh]”hÌ)�”}”(hŒ first socket”h]”hŒ first socket”…”�”}”(hjØ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÔ|h´MÍhjÕ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¹|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÔ|h´MÍhj¶|ubjM)�”}”(hŒ'``struct socket *sockb`` second socket ”h]”(jS)�”}”(hŒ``struct socket *sockb``”h]”hë)�”}”(hjø|h]”hŒstruct socket *sockb”…”�”}”(hjú|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjö|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎhjò|ubjm)�”}”(hhh]”hÌ)�”}”(hŒ second socket”h]”hŒ second socket”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j }h´MÎhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjò|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j }h´MÎhj¶|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjš|ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj3}h]”hŒ Description”…”�”}”(hj5}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj1}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐhjš|ubhÌ)�”}”(hŒ:Check permissions before creating a fresh pair of sockets.”h]”hŒ:Check permissions before creating a fresh pair of sockets.”…”�”}”(hjI}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÏhjš|ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjZ}h]”hŒReturn”…”�”}”(hj\}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjX}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑhjš|ubhÌ)�”}”(hŒFReturns 0 if permission is granted and the connection was established.”h]”hŒFReturns 0 if permission is granted and the connection was established.”…”�”}”(hjp}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjš|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ"security_sock_rcv_skb (C function)”Œc.security_sock_rcv_skb”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ@int security_sock_rcv_skb (struct sock *sk, struct sk_buff *skb)”h]”jA)�”}”(hŒ?int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸ}h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj›}h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M†ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®}h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj›}h²hh³j­}h´M†ubjj)�”}”(hŒsecurity_sock_rcv_skb”h]”jp)�”}”(hŒsecurity_sock_rcv_skb”h]”hŒsecurity_sock_rcv_skb”…”�”}”(hjÀ}h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¼}ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj›}h²hh³j­}h´M†ubj‹)�”}”(hŒ&(struct sock *sk, struct sk_buff *skb)”h]”(j‘)�”}”(hŒstruct sock *sk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÜ}h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjØ}ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjé}h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjØ}ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjú}h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj÷}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jü}Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÂ}sbŒc.security_sock_rcv_skb”†”asbuh1hhjØ}ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjØ}ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj(~h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjØ}ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj5~h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjØ}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÔ}ubj‘)�”}”(hŒstruct sk_buff *skb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjN~h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjJ~ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[~h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJ~ubh)�”}”(hhh]”jp)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjl~h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johji~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jn~Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j~Œc.security_sock_rcv_skb”†”asbuh1hhjJ~ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ~h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJ~ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj˜~h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjJ~ubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¥~h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjJ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÔ}ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj›}h²hh³j­}h´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj—}h²hh³j­}h´M†ubah}”(h]”j’}ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j­}h´M†hj”}h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ.Check if an incoming network packet is allowed”h]”hŒ.Check if an incoming network packet is allowed”…”�”}”(hjÏ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M†hjÌ~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj”}h²hh³j­}h´M†ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jç~j#jç~j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXÃ**Parameters** ``struct sock *sk`` destination sock ``struct sk_buff *skb`` incoming packet **Description** Check permissions on incoming network packets. This hook is distinct from Netfilter's IP input hooks since it is the first time that the incoming sk_buff **skb** has been associated with a particular socket, **sk**. Must not sleep inside this hook because some callers hold spinlocks. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjñ~h]”hŒ Parameters”…”�”}”(hjó~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjï~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŠhjë~ubjH)�”}”(hhh]”(jM)�”}”(hŒ%``struct sock *sk`` destination sock ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hjh]”hŒstruct sock *sk”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‡hj ubjm)�”}”(hhh]”hÌ)�”}”(hŒdestination sock”h]”hŒdestination sock”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j%h´M‡hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j%h´M‡hjubjM)�”}”(hŒ(``struct sk_buff *skb`` incoming packet ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hjIh]”hŒstruct sk_buff *skb”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MˆhjCubjm)�”}”(hhh]”hÌ)�”}”(hŒincoming packet”h]”hŒincoming packet”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^h´Mˆhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^h´Mˆhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjë~ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj„h]”hŒ Description”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŠhjë~ubhÌ)�”}”(hXCheck permissions on incoming network packets. This hook is distinct from Netfilter's IP input hooks since it is the first time that the incoming sk_buff **skb** has been associated with a particular socket, **sk**. Must not sleep inside this hook because some callers hold spinlocks.”h]”(hŒ�Check permissions on incoming network packets. This hook is distinct from Netfilter’s IP input hooks since it is the first time that the incoming sk_buff ”…”�”}”(hjšh²hh³Nh´Nubj2)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjšubhŒ/ has been associated with a particular socket, ”…”�”}”(hjšh²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjšubhŒG. Must not sleep inside this hook because some callers hold spinlocks.”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‰hjë~ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÏh]”hŒReturn”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŽhjë~ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hjë~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ-security_socket_getpeersec_dgram (C function)”Œ"c.security_socket_getpeersec_dgram”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ[int security_socket_getpeersec_dgram (struct socket *sock, struct sk_buff *skb, u32 *secid)”h]”jA)�”}”(hŒZint security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj€h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M®ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#€h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj€h²hh³j"€h´M®ubjj)�”}”(hŒ security_socket_getpeersec_dgram”h]”jp)�”}”(hŒ security_socket_getpeersec_dgram”h]”hŒ security_socket_getpeersec_dgram”…”�”}”(hj5€h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj1€ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj€h²hh³j"€h´M®ubj‹)�”}”(hŒ6(struct socket *sock, struct sk_buff *skb, u32 *secid)”h]”(j‘)�”}”(hŒstruct socket *sock”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjQ€h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjM€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^€h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjM€ubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjo€h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjl€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jq€Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj7€sbŒ"c.security_socket_getpeersec_dgram”†”asbuh1hhjM€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjM€ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjM€ubjp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjª€h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjM€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjI€ubj‘)�”}”(hŒstruct sk_buff *skb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¿€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjЀh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¿€ubh)�”}”(hhh]”jp)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjá€h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÞ€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j「modname”NŒ classname”Nj‡jŠ)�”}”j�]”j‹€Œ"c.security_socket_getpeersec_dgram”†”asbuh1hhj¿€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ€h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¿€ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¿€ubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¿€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjI€ubj‘)�”}”(hŒ u32 *secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj3�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j8�Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j‹€Œ"c.security_socket_getpeersec_dgram”†”asbuh1hhj/�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj/�ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj/�ubjp)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj/�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjI€ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj€h²hh³j"€h´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj €h²hh³j"€h´M®ubah}”(h]”j€ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j"€h´M®hj €h²hubj)�”}”(hhh]”hÌ)�”}”(hŒGet the remote peer label”h]”hŒGet the remote peer label”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M®hj–�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj €h²hh³j"€h´M®ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j±�j#j±�j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX0**Parameters** ``struct socket *sock`` socket ``struct sk_buff *skb`` datagram packet ``u32 *secid`` remote peer label secid **Description** This hook allows the security module to provide peer socket security state for udp sockets on a per-packet basis to userspace via getsockopt SO_GETPEERSEC. The application must first have indicated the IP_PASSSEC option via getsockopt. It can then retrieve the security state returned by this hook for a packet via the SCM_SECURITY ancillary message type. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj»�h]”hŒ Parameters”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¹�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M²hjµ�ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct socket *sock`` socket ”h]”(jS)�”}”(hŒ``struct socket *sock``”h]”hë)�”}”(hjÚ�h]”hŒstruct socket *sock”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjØ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯hjÔ�ubjm)�”}”(hhh]”hÌ)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jï�h´M¯hjð�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÔ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jï�h´M¯hjÑ�ubjM)�”}”(hŒ(``struct sk_buff *skb`` datagram packet ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hj‚h]”hŒstruct sk_buff *skb”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M°hj ‚ubjm)�”}”(hhh]”hÌ)�”}”(hŒdatagram packet”h]”hŒdatagram packet”…”�”}”(hj,‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(‚h´M°hj)‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(‚h´M°hjÑ�ubjM)�”}”(hŒ'``u32 *secid`` remote peer label secid ”h]”(jS)�”}”(hŒ``u32 *secid``”h]”hë)�”}”(hjL‚h]”hŒ u32 *secid”…”�”}”(hjN‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjJ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M±hjF‚ubjm)�”}”(hhh]”hÌ)�”}”(hŒremote peer label secid”h]”hŒremote peer label secid”…”�”}”(hje‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ja‚h´M±hjb‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjF‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ja‚h´M±hjÑ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjµ�ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj‡‚h]”hŒ Description”…”�”}”(hj‰‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj…‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M³hjµ�ubhÌ)�”}”(hXcThis hook allows the security module to provide peer socket security state for udp sockets on a per-packet basis to userspace via getsockopt SO_GETPEERSEC. The application must first have indicated the IP_PASSSEC option via getsockopt. It can then retrieve the security state returned by this hook for a packet via the SCM_SECURITY ancillary message type.”h]”hXcThis hook allows the security module to provide peer socket security state for udp sockets on a per-packet basis to userspace via getsockopt SO_GETPEERSEC. The application must first have indicated the IP_PASSSEC option via getsockopt. It can then retrieve the security state returned by this hook for a packet via the SCM_SECURITY ancillary message type.”…”�”}”(hj�‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M²hjµ�ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj®‚h]”hŒReturn”…”�”}”(hj°‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¬‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¸hjµ�ubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hjÄ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¹hjµ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œsecurity_sk_clone (C function)”Œc.security_sk_clone”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒBvoid security_sk_clone (const struct sock *sk, struct sock *newsk)”h]”jA)�”}”(hŒAvoid security_sk_clone(const struct sock *sk, struct sock *newsk)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjó‚h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjï‚h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MõubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjï‚h²hh³jƒh´Mõubjj)�”}”(hŒsecurity_sk_clone”h]”jp)�”}”(hŒsecurity_sk_clone”h]”hŒsecurity_sk_clone”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjƒubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjï‚h²hh³jƒh´Mõubj‹)�”}”(hŒ+(const struct sock *sk, struct sock *newsk)”h]”(j‘)�”}”(hŒconst struct sock *sk”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj0ƒh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj,ƒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ƒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,ƒubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjKƒh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj,ƒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXƒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,ƒubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjiƒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjfƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jkƒŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjƒsbŒc.security_sk_clone”†”asbuh1hhj,ƒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ƒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,ƒubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj—ƒh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj,ƒubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj¤ƒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj,ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj(ƒubj‘)�”}”(hŒstruct sock *newsk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj½ƒh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¹ƒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʃh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¹ƒubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjÛƒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj؃ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j݃Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j…ƒŒc.security_sk_clone”†”asbuh1hhj¹ƒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùƒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¹ƒubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¹ƒubjp)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¹ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj(ƒubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjï‚h²hh³jƒh´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjë‚h²hh³jƒh´Mõubah}”(h]”jæ‚ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jƒh´Mõhjè‚h²hubj)�”}”(hhh]”hÌ)�”}”(hŒClone a sock's LSM state”h]”hŒClone a sock’s LSM state”…”�”}”(hj>„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mõhj;„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjè‚h²hh³jƒh´Mõubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jV„j#jV„j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ�**Parameters** ``const struct sock *sk`` original sock ``struct sock *newsk`` target sock **Description** Clone/copy security structure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj`„h]”hŒ Parameters”…”�”}”(hjb„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj^„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MùhjZ„ubjH)�”}”(hhh]”(jM)�”}”(hŒ(``const struct sock *sk`` original sock ”h]”(jS)�”}”(hŒ``const struct sock *sk``”h]”hë)�”}”(hj„h]”hŒconst struct sock *sk”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj}„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Möhjy„ubjm)�”}”(hhh]”hÌ)�”}”(hŒ original sock”h]”hŒ original sock”…”�”}”(hj˜„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”„h´Möhj•„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjy„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j”„h´Möhjv„ubjM)�”}”(hŒ#``struct sock *newsk`` target sock ”h]”(jS)�”}”(hŒ``struct sock *newsk``”h]”hë)�”}”(hj¸„h]”hŒstruct sock *newsk”…”�”}”(hjº„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¶„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷hj²„ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target sock”h]”hŒ target sock”…”�”}”(hjÑ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍ„h´M÷hj΄ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj²„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÍ„h´M÷hjv„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjZ„ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjó„h]”hŒ Description”…”�”}”(hjõ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjñ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MùhjZ„ubhÌ)�”}”(hŒClone/copy security structure.”h]”hŒClone/copy security structure.”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MøhjZ„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ&security_sk_classify_flow (C function)”Œc.security_sk_classify_flow”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒQvoid security_sk_classify_flow (const struct sock *sk, struct flowi_common *flic)”h]”jA)�”}”(hŒPvoid security_sk_classify_flow(const struct sock *sk, struct flowi_common *flic)”h]”(jG•)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8…h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj4…h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG…h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj4…h²hh³jF…h´Mubjj)�”}”(hŒsecurity_sk_classify_flow”h]”jp)�”}”(hŒsecurity_sk_classify_flow”h]”hŒsecurity_sk_classify_flow”…”�”}”(hjY…h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjU…ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj4…h²hh³jF…h´Mubj‹)�”}”(hŒ2(const struct sock *sk, struct flowi_common *flic)”h]”(j‘)�”}”(hŒconst struct sock *sk”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hju…h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjq…ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚…h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjq…ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjq…ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjq…ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj®…h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj«…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j°…Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj[…sbŒc.security_sk_classify_flow”†”asbuh1hhjq…ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ…h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjq…ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÜ…h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjq…ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjé…h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjq…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjm…ubj‘)�”}”(hŒstruct flowi_common *flic”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjþ…ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjþ…ubh)�”}”(hhh]”jp)�”}”(hŒ flowi_common”h]”hŒ flowi_common”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j"†Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jÊ…Œc.security_sk_classify_flow”†”asbuh1hhjþ…ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>†h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjþ…ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjL†h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjþ…ubjp)�”}”(hŒflic”h]”hŒflic”…”�”}”(hjY†h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjþ…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjm…ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj4…h²hh³jF…h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj0…h²hh³jF…h´Mubah}”(h]”j+…ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jF…h´Mhj-…h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Set a flow's secid based on socket”h]”hŒ$Set a flow’s secid based on socket”…”�”}”(hjƒ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj€†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj-…h²hh³jF…h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j›†j#j›†j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ©**Parameters** ``const struct sock *sk`` original socket ``struct flowi_common *flic`` target flow **Description** Set the target flow's secid to socket's secid.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj¥†h]”hŒ Parameters”…”�”}”(hj§†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj£†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjŸ†ubjH)�”}”(hhh]”(jM)�”}”(hŒ*``const struct sock *sk`` original socket ”h]”(jS)�”}”(hŒ``const struct sock *sk``”h]”hë)�”}”(hjĆh]”hŒconst struct sock *sk”…”�”}”(hjƆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj¾†ubjm)�”}”(hhh]”hÌ)�”}”(hŒoriginal socket”h]”hŒoriginal socket”…”�”}”(hj݆h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙ†h´MhjÚ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¾†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÙ†h´Mhj»†ubjM)�”}”(hŒ*``struct flowi_common *flic`` target flow ”h]”(jS)�”}”(hŒ``struct flowi_common *flic``”h]”hë)�”}”(hjý†h]”hŒstruct flowi_common *flic”…”�”}”(hjÿ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjû†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj÷†ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target flow”h]”hŒ target flow”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡h´Mhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj÷†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡h´Mhj»†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjŸ†ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj8‡h]”hŒ Description”…”�”}”(hj:‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj6‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjŸ†ubhÌ)�”}”(hŒ.Set the target flow's secid to socket's secid.”h]”hŒ2Set the target flow’s secid to socket’s secid.”…”�”}”(hjN‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjŸ†ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_req_classify_flow (C function)”Œc.security_req_classify_flow”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ[void security_req_classify_flow (const struct request_sock *req, struct flowi_common *flic)”h]”jA)�”}”(hŒZvoid security_req_classify_flow(const struct request_sock *req, struct flowi_common *flic)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}‡h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjy‡h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ‡h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjy‡h²hh³j‹‡h´Mubjj)�”}”(hŒsecurity_req_classify_flow”h]”jp)�”}”(hŒsecurity_req_classify_flow”h]”hŒsecurity_req_classify_flow”…”�”}”(hjž‡h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjš‡ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjy‡h²hh³j‹‡h´Mubj‹)�”}”(hŒ;(const struct request_sock *req, struct flowi_common *flic)”h]”(j‘)�”}”(hŒconst struct request_sock *req”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjº‡h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¶‡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLJh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶‡ubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÕ‡h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¶‡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ‡h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶‡ubh)�”}”(hhh]”jp)�”}”(hŒ request_sock”h]”hŒ request_sock”…”�”}”(hjó‡h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjð‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jõ‡Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj ‡sbŒc.security_req_classify_flow”†”asbuh1hhj¶‡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶‡ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj!ˆh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¶‡ubjp)�”}”(hŒreq”h]”hŒreq”…”�”}”(hj.ˆh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¶‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj²‡ubj‘)�”}”(hŒstruct flowi_common *flic”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjGˆh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjCˆubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTˆh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjCˆubh)�”}”(hhh]”jp)�”}”(hŒ flowi_common”h]”hŒ flowi_common”…”�”}”(hjeˆh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjbˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jgˆŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jˆŒc.security_req_classify_flow”†”asbuh1hhjCˆubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒˆh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjCˆubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‘ˆh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjCˆubjp)�”}”(hŒflic”h]”hŒflic”…”�”}”(hjžˆh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjCˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj²‡ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjy‡h²hh³j‹‡h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhju‡h²hh³j‹‡h´Mubah}”(h]”jp‡ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j‹‡h´Mhjr‡h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Set a flow's secid based on request_sock”h]”hŒ*Set a flow’s secid based on request_sock”…”�”}”(hjȈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjňh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjr‡h²hh³j‹‡h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jàˆj#jàˆj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒª**Parameters** ``const struct request_sock *req`` request_sock ``struct flowi_common *flic`` target flow **Description** Sets **flic**'s secid to **req**'s secid.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjêˆh]”hŒ Parameters”…”�”}”(hjìˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjèˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjäˆubjH)�”}”(hhh]”(jM)�”}”(hŒ0``const struct request_sock *req`` request_sock ”h]”(jS)�”}”(hŒ"``const struct request_sock *req``”h]”hë)�”}”(hj ‰h]”hŒconst struct request_sock *req”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‰ubjm)�”}”(hhh]”hÌ)�”}”(hŒ request_sock”h]”hŒ request_sock”…”�”}”(hj"‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰h´Mhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‰h´Mhj‰ubjM)�”}”(hŒ*``struct flowi_common *flic`` target flow ”h]”(jS)�”}”(hŒ``struct flowi_common *flic``”h]”hë)�”}”(hjB‰h]”hŒstruct flowi_common *flic”…”�”}”(hjD‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj@‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj<‰ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target flow”h]”hŒ target flow”…”�”}”(hj[‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jW‰h´MhjX‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj<‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jW‰h´Mhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjäˆubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj}‰h]”hŒ Description”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj{‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjäˆubhÌ)�”}”(hŒ)Sets **flic**'s secid to **req**'s secid.”h]”(hŒSets ”…”�”}”(hj“‰h²hh³Nh´Nubj2)�”}”(hŒ**flic**”h]”hŒflic”…”�”}”(hj›‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj“‰ubhŒ’s secid to ”…”�”}”(hj“‰h²hh³Nh´Nubj2)�”}”(hŒ**req**”h]”hŒreq”…”�”}”(hj­‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj“‰ubhŒ ’s secid.”…”�”}”(hj“‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjäˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_sock_graft (C function)”Œc.security_sock_graft”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒAvoid security_sock_graft (struct sock *sk, struct socket *parent)”h]”jA)�”}”(hŒ@void security_sock_graft(struct sock *sk, struct socket *parent)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjæ‰h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjâ‰h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ‰h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjâ‰h²hh³jô‰h´Mubjj)�”}”(hŒsecurity_sock_graft”h]”jp)�”}”(hŒsecurity_sock_graft”h]”hŒsecurity_sock_graft”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŠubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjâ‰h²hh³jô‰h´Mubj‹)�”}”(hŒ((struct sock *sk, struct socket *parent)”h]”(j‘)�”}”(hŒstruct sock *sk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj#Šh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjŠubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Šh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŠubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjAŠh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj>Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jCŠŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj ŠsbŒc.security_sock_graft”†”asbuh1hhjŠubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaŠh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŠubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjoŠh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjŠubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj|Šh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠubj‘)�”}”(hŒstruct socket *parent”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj•Šh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‘ŠubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Šh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘Šubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj³Šh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj°Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jµŠŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j]ŠŒc.security_sock_graft”†”asbuh1hhj‘ŠubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑŠh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘Šubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjߊh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‘Šubjp)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjìŠh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘Šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŠubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjâ‰h²hh³jô‰h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjÞ‰h²hh³jô‰h´Mubah}”(h]”jÙ‰ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jô‰h´MhjÛ‰h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ4Reconcile LSM state when grafting a sock on a socket”h]”hŒ4Reconcile LSM state when grafting a sock on a socket”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÛ‰h²hh³jô‰h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j.‹j#j.‹j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒì**Parameters** ``struct sock *sk`` sock being grafted ``struct socket *parent`` target parent socket **Description** Sets **parent**'s inode secid to **sk**'s secid and update **sk** with any necessary LSM state from **parent**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj8‹h]”hŒ Parameters”…”�”}”(hj:‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj6‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M!hj2‹ubjH)�”}”(hhh]”(jM)�”}”(hŒ'``struct sock *sk`` sock being grafted ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hjW‹h]”hŒstruct sock *sk”…”�”}”(hjY‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjU‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjQ‹ubjm)�”}”(hhh]”hÌ)�”}”(hŒsock being grafted”h]”hŒsock being grafted”…”�”}”(hjp‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jl‹h´Mhjm‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjQ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jl‹h´MhjN‹ubjM)�”}”(hŒ/``struct socket *parent`` target parent socket ”h]”(jS)�”}”(hŒ``struct socket *parent``”h]”hë)�”}”(hj�‹h]”hŒstruct socket *parent”…”�”}”(hj’‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjŽ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjŠ‹ubjm)�”}”(hhh]”hÌ)�”}”(hŒtarget parent socket”h]”hŒtarget parent socket”…”�”}”(hj©‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥‹h´Mhj¦‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjŠ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¥‹h´MhjN‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj2‹ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjË‹h]”hŒ Description”…”�”}”(hjÍ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÉ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M!hj2‹ubhÌ)�”}”(hŒoSets **parent**'s inode secid to **sk**'s secid and update **sk** with any necessary LSM state from **parent**.”h]”(hŒSets ”…”�”}”(hjá‹h²hh³Nh´Nubj2)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjé‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjá‹ubhŒ’s inode secid to ”…”�”}”(hjá‹h²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hjû‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjá‹ubhŒ’s secid and update ”…”�”}”(hjá‹h²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjá‹ubhŒ# with any necessary LSM state from ”…”�”}”(hjá‹h²hh³Nh´Nubj2)�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjá‹ubhŒ.”…”�”}”(hjá‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj2‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_inet_conn_request (C function)”Œc.security_inet_conn_request”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒeint security_inet_conn_request (const struct sock *sk, struct sk_buff *skb, struct request_sock *req)”h]”jA)�”}”(hŒdint security_inet_conn_request(const struct sock *sk, struct sk_buff *skb, struct request_sock *req)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjXŒh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjTŒh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgŒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjTŒh²hh³jfŒh´M+ubjj)�”}”(hŒsecurity_inet_conn_request”h]”jp)�”}”(hŒsecurity_inet_conn_request”h]”hŒsecurity_inet_conn_request”…”�”}”(hjyŒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjuŒubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjTŒh²hh³jfŒh´M+ubj‹)�”}”(hŒF(const struct sock *sk, struct sk_buff *skb, struct request_sock *req)”h]”(j‘)�”}”(hŒconst struct sock *sk”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj•Œh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‘ŒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Œh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘ŒubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj°Œh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‘ŒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Œh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘Œubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjÎŒh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjËŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÐŒŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj{ŒsbŒc.security_inet_conn_request”†”asbuh1hhj‘ŒubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîŒh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘Œubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjüŒh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‘Œubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Œubj‘)�”}”(hŒstruct sk_buff *skb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�ubh)�”}”(hhh]”jp)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj@�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj=�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jB�Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jꌌc.security_inet_conn_request”†”asbuh1hhj�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj�ubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjy�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Œubj‘)�”}”(hŒstruct request_sock *req”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjŽ�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽ�ubh)�”}”(hhh]”jp)�”}”(hŒ request_sock”h]”hŒ request_sock”…”�”}”(hj°�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj­�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j²�Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jꌌc.security_inet_conn_request”†”asbuh1hhjŽ�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽ�ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjŽ�ubjp)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŽ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Œubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjTŒh²hh³jfŒh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjPŒh²hh³jfŒh´M+ubah}”(h]”jKŒah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jfŒh´M+hjMŒh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ-Set request_sock state using incoming connect”h]”hŒ-Set request_sock state using incoming connect”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M+hjŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjMŒh²hh³jfŒh´M+ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j+Žj#j+Žj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX:**Parameters** ``const struct sock *sk`` parent listening sock ``struct sk_buff *skb`` incoming connection ``struct request_sock *req`` new request_sock **Description** Initialize the **req** LSM state based on **sk** and the incoming connect in **skb**. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj5Žh]”hŒ Parameters”…”�”}”(hj7Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj3Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M/hj/ŽubjH)�”}”(hhh]”(jM)�”}”(hŒ0``const struct sock *sk`` parent listening sock ”h]”(jS)�”}”(hŒ``const struct sock *sk``”h]”hë)�”}”(hjTŽh]”hŒconst struct sock *sk”…”�”}”(hjVŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjRŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M,hjNŽubjm)�”}”(hhh]”hÌ)�”}”(hŒparent listening sock”h]”hŒparent listening sock”…”�”}”(hjmŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jiŽh´M,hjjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjNŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jiŽh´M,hjKŽubjM)�”}”(hŒ,``struct sk_buff *skb`` incoming connection ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hj�Žh]”hŒstruct sk_buff *skb”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‹Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M-hj‡Žubjm)�”}”(hhh]”hÌ)�”}”(hŒincoming connection”h]”hŒincoming connection”…”�”}”(hj¦Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¢Žh´M-hj£Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‡Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¢Žh´M-hjKŽubjM)�”}”(hŒ.``struct request_sock *req`` new request_sock ”h]”(jS)�”}”(hŒ``struct request_sock *req``”h]”hë)�”}”(hjÆŽh]”hŒstruct request_sock *req”…”�”}”(hjÈŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÄŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M.hjÀŽubjm)�”}”(hhh]”hÌ)�”}”(hŒnew request_sock”h]”hŒnew request_sock”…”�”}”(hjߎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛŽh´M.hjÜŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÀŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÛŽh´M.hjKŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj/ŽubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj�h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÿŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M0hj/ŽubhÌ)�”}”(hŒUInitialize the **req** LSM state based on **sk** and the incoming connect in **skb**.”h]”(hŒInitialize the ”…”�”}”(hj�h²hh³Nh´Nubj2)�”}”(hŒ**req**”h]”hŒreq”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�ubhŒ LSM state based on ”…”�”}”(hj�h²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hj1�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�ubhŒ and the incoming connect in ”…”�”}”(hj�h²hh³Nh´Nubj2)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�ubhŒ.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M/hj/ŽubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj^�h]”hŒReturn”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj\�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M1hj/ŽubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjt�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M2hj/Žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ+security_inet_conn_established (C function)”Œ c.security_inet_conn_established”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒJvoid security_inet_conn_established (struct sock *sk, struct sk_buff *skb)”h]”jA)�”}”(hŒIvoid security_inet_conn_established(struct sock *sk, struct sk_buff *skb)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjŸ�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MIubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŸ�h²hh³j±�h´MIubjj)�”}”(hŒsecurity_inet_conn_established”h]”jp)�”}”(hŒsecurity_inet_conn_established”h]”hŒsecurity_inet_conn_established”…”�”}”(hjÄ�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÀ�ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjŸ�h²hh³j±�h´MIubj‹)�”}”(hŒ&(struct sock *sk, struct sk_buff *skb)”h]”(j‘)�”}”(hŒstruct sock *sk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÜ�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÜ�ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjû�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j�Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÆ�sbŒ c.security_inet_conn_established”†”asbuh1hhjÜ�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÜ�ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÜ�ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÜ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjØ�ubj‘)�”}”(hŒstruct sk_buff *skb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjN�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjN�ubh)�”}”(hhh]”jp)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjp�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjm�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jr�Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�Œ c.security_inet_conn_established”†”asbuh1hhjN�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjN�ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjœ�h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjN�ubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj©�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjN�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjØ�ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjŸ�h²hh³j±�h´MIubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj›�h²hh³j±�h´MIubah}”(h]”j–�ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j±�h´MIhj˜�h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ'Update sock's LSM state with connection”h]”hŒ)Update sock’s LSM state with connection”…”�”}”(hjÓ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MIhjÐ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj˜�h²hh³j±�h´MIubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jë�j#jë�j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ±**Parameters** ``struct sock *sk`` sock ``struct sk_buff *skb`` connection packet **Description** Update **sock**'s LSM state to represent a new connection from **skb**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjõ�h]”hŒ Parameters”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjó�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MMhjï�ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct sock *sk`` sock ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hj‘h]”hŒstruct sock *sk”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MJhj‘ubjm)�”}”(hhh]”hÌ)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj-‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)‘h´MJhj*‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)‘h´MJhj ‘ubjM)�”}”(hŒ*``struct sk_buff *skb`` connection packet ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hjM‘h]”hŒstruct sk_buff *skb”…”�”}”(hjO‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjK‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MKhjG‘ubjm)�”}”(hhh]”hÌ)�”}”(hŒconnection packet”h]”hŒconnection packet”…”�”}”(hjf‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jb‘h´MKhjc‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjG‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jb‘h´MKhj ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjï�ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjˆ‘h]”hŒ Description”…”�”}”(hjŠ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj†‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MMhjï�ubhÌ)�”}”(hŒGUpdate **sock**'s LSM state to represent a new connection from **skb**.”h]”(hŒUpdate ”…”�”}”(hjž‘h²hh³Nh´Nubj2)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hj¦‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjž‘ubhŒ2’s LSM state to represent a new connection from ”…”�”}”(hjž‘h²hh³Nh´Nubj2)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj¸‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjž‘ubhŒ.”…”�”}”(hjž‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MLhjï�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ,security_secmark_relabel_packet (C function)”Œ!c.security_secmark_relabel_packet”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ/int security_secmark_relabel_packet (u32 secid)”h]”jA)�”}”(hŒ.int security_secmark_relabel_packet(u32 secid)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjñ‘h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjí‘h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MWubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjí‘h²hh³jÿ‘h´MWubjj)�”}”(hŒsecurity_secmark_relabel_packet”h]”jp)�”}”(hŒsecurity_secmark_relabel_packet”h]”hŒsecurity_secmark_relabel_packet”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj’ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjí‘h²hh³jÿ‘h´MWubj‹)�”}”(hŒ (u32 secid)”h]”j‘)�”}”(hŒ u32 secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj1’h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj.’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j3’Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj’sbŒ!c.security_secmark_relabel_packet”†”asbuh1hhj*’ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ’h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj*’ubjp)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hj_’h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj*’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj&’ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjí‘h²hh³jÿ‘h´MWubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjé‘h²hh³jÿ‘h´MWubah}”(h]”jä‘ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÿ‘h´MWhjæ‘h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ%Check if setting a secmark is allowed”h]”hŒ%Check if setting a secmark is allowed”…”�”}”(hj‰’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MWhj†’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjæ‘h²hh³jÿ‘h´MWubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j¡’j#j¡’j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ¼**Parameters** ``u32 secid`` new secmark value **Description** Check if the process should be allowed to relabel packets to **secid**. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj«’h]”hŒ Parameters”…”�”}”(hj­’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj©’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M[hj¥’ubjH)�”}”(hhh]”jM)�”}”(hŒ ``u32 secid`` new secmark value ”h]”(jS)�”}”(hŒ ``u32 secid``”h]”hë)�”}”(hjÊ’h]”hŒ u32 secid”…”�”}”(hjÌ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÈ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MXhjÄ’ubjm)�”}”(hhh]”hÌ)�”}”(hŒnew secmark value”h]”hŒnew secmark value”…”�”}”(hjã’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jß’h´MXhjà’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÄ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jß’h´MXhjÁ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¥’ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj“h]”hŒ Description”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MZhj¥’ubhÌ)�”}”(hŒGCheck if the process should be allowed to relabel packets to **secid**.”h]”(hŒ=Check if the process should be allowed to relabel packets to ”…”�”}”(hj“h²hh³Nh´Nubj2)�”}”(hŒ **secid**”h]”hŒsecid”…”�”}”(hj#“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj“ubhŒ.”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MYhj¥’ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj>“h]”hŒReturn”…”�”}”(hj@“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj<“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M[hj¥’ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjT“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M\hj¥’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ*security_secmark_refcount_inc (C function)”Œc.security_secmark_refcount_inc”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ)void security_secmark_refcount_inc (void)”h]”jA)�”}”(hŒ(void security_secmark_refcount_inc(void)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ“h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj“h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MeubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’“h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj“h²hh³j‘“h´Meubjj)�”}”(hŒsecurity_secmark_refcount_inc”h]”jp)�”}”(hŒsecurity_secmark_refcount_inc”h]”hŒsecurity_secmark_refcount_inc”…”�”}”(hj¤“h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj “ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj“h²hh³j‘“h´Meubj‹)�”}”(hŒ(void)”h]”j‘)�”}”(hŒvoid”h]”jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀ“h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¼“ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj¸“ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj“h²hh³j‘“h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj{“h²hh³j‘“h´Meubah}”(h]”jv“ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j‘“h´Mehjx“h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Increment the secmark labeling rule count”h]”hŒ)Increment the secmark labeling rule count”…”�”}”(hjê“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mehjç“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjx“h²hh³j‘“h´Meubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j”j#j”j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ�**Parameters** ``void`` no arguments **Description** Tells the LSM to increment the number of secmark labeling rules loaded.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj ”h]”hŒ Parameters”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mihj”ubjH)�”}”(hhh]”jM)�”}”(hŒ``void`` no arguments ”h]”(jS)�”}”(hŒ``void``”h]”hë)�”}”(hj+”h]”hŒvoid”…”�”}”(hj-”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj)”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Khj%”ubjm)�”}”(hhh]”hÌ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjD”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@”h´KhjA”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj%”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j@”h´Khj"”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj”ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjf”h]”hŒ Description”…”�”}”(hjh”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjd”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Khj”ubhÌ)�”}”(hŒGTells the LSM to increment the number of secmark labeling rules loaded.”h]”hŒGTells the LSM to increment the number of secmark labeling rules loaded.”…”�”}”(hj|”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mfhj”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ*security_secmark_refcount_dec (C function)”Œc.security_secmark_refcount_dec”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ)void security_secmark_refcount_dec (void)”h]”jA)�”}”(hŒ(void security_secmark_refcount_dec(void)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj«”h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj§”h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MpubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº”h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj§”h²hh³j¹”h´Mpubjj)�”}”(hŒsecurity_secmark_refcount_dec”h]”jp)�”}”(hŒsecurity_secmark_refcount_dec”h]”hŒsecurity_secmark_refcount_dec”…”�”}”(hjÌ”h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÈ”ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj§”h²hh³j¹”h´Mpubj‹)�”}”(hŒ(void)”h]”j‘)�”}”(hŒvoid”h]”jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjè”h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjä”ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjà”ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj§”h²hh³j¹”h´Mpubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj£”h²hh³j¹”h´Mpubah}”(h]”jž”ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¹”h´Mphj ”h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Decrement the secmark labeling rule count”h]”hŒ)Decrement the secmark labeling rule count”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mphj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj ”h²hh³j¹”h´Mpubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j*•j#j*•j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ�**Parameters** ``void`` no arguments **Description** Tells the LSM to decrement the number of secmark labeling rules loaded.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj4•h]”hŒ Parameters”…”�”}”(hj6•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj2•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mthj.•ubjH)�”}”(hhh]”jM)�”}”(hŒ``void`` no arguments ”h]”(jS)�”}”(hŒ``void``”h]”hë)�”}”(hjS•h]”hŒvoid”…”�”}”(hjU•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjQ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´KhjM•ubjm)�”}”(hhh]”hÌ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hjl•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh•h´Khji•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjM•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh•h´KhjJ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj.•ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjŽ•h]”hŒ Description”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjŒ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Khj.•ubhÌ)�”}”(hŒGTells the LSM to decrement the number of secmark labeling rules loaded.”h]”hŒGTells the LSM to decrement the number of secmark labeling rules loaded.”…”�”}”(hj¤•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mqhj.•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ,security_tun_dev_alloc_security (C function)”Œ!c.security_tun_dev_alloc_security”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ5int security_tun_dev_alloc_security (void **security)”h]”jA)�”}”(hŒ4int security_tun_dev_alloc_security(void **security)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjÓ•h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÏ•h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M{ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ•h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÏ•h²hh³já•h´M{ubjj)�”}”(hŒsecurity_tun_dev_alloc_security”h]”jp)�”}”(hŒsecurity_tun_dev_alloc_security”h]”hŒsecurity_tun_dev_alloc_security”…”�”}”(hjô•h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjð•ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjÏ•h²hh³já•h´M{ubj‹)�”}”(hŒ(void **security)”h]”j‘)�”}”(hŒvoid **security”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj –ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj –ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj,–h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj –ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj9–h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj –ubjp)�”}”(hŒsecurity”h]”hŒsecurity”…”�”}”(hjF–h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj –ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj–ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjÏ•h²hh³já•h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjË•h²hh³já•h´M{ubah}”(h]”jÆ•ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³já•h´M{hjÈ•h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ$Allocate a LSM blob for a TUN device”h]”hŒ$Allocate a LSM blob for a TUN device”…”�”}”(hjp–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M{hjm–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÈ•h²hh³já•h´M{ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jˆ–j#jˆ–j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``void **security`` pointer to the LSM blob **Description** This hook allows a module to allocate a security structure for a TUN device, returning the pointer in **security**. **Return** Returns a zero on success, negative values on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj’–h]”hŒ Parameters”…”�”}”(hj”–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjŒ–ubjH)�”}”(hhh]”jM)�”}”(hŒ,``void **security`` pointer to the LSM blob ”h]”(jS)�”}”(hŒ``void **security``”h]”hë)�”}”(hj±–h]”hŒvoid **security”…”�”}”(hj³–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¯–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M|hj«–ubjm)�”}”(hhh]”hÌ)�”}”(hŒpointer to the LSM blob”h]”hŒpointer to the LSM blob”…”�”}”(hjÊ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÆ–h´M|hjÇ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj«–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÆ–h´M|hj¨–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjŒ–ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjì–h]”hŒ Description”…”�”}”(hjî–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjê–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M~hjŒ–ubhÌ)�”}”(hŒsThis hook allows a module to allocate a security structure for a TUN device, returning the pointer in **security**.”h]”(hŒfThis hook allows a module to allocate a security structure for a TUN device, returning the pointer in ”…”�”}”(hj—h²hh³Nh´Nubj2)�”}”(hŒ **security**”h]”hŒsecurity”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj—ubhŒ.”…”�”}”(hj—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M}hjŒ–ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj%—h]”hŒReturn”…”�”}”(hj'—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj#—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M€hjŒ–ubhÌ)�”}”(hŒ6Returns a zero on success, negative values on failure.”h]”hŒ6Returns a zero on success, negative values on failure.”…”�”}”(hj;—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M�hjŒ–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ+security_tun_dev_free_security (C function)”Œ c.security_tun_dev_free_security”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ4void security_tun_dev_free_security (void *security)”h]”jA)�”}”(hŒ3void security_tun_dev_free_security(void *security)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjj—h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjf—h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M•ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy—h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjf—h²hh³jx—h´M•ubjj)�”}”(hŒsecurity_tun_dev_free_security”h]”jp)�”}”(hŒsecurity_tun_dev_free_security”h]”hŒsecurity_tun_dev_free_security”…”�”}”(hj‹—h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‡—ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjf—h²hh³jx—h´M•ubj‹)�”}”(hŒ(void *security)”h]”j‘)�”}”(hŒvoid *security”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§—h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj£—ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ—h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj£—ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj£—ubjp)�”}”(hŒsecurity”h]”hŒsecurity”…”�”}”(hjЗh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj£—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjŸ—ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjf—h²hh³jx—h´M•ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjb—h²hh³jx—h´M•ubah}”(h]”j]—ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jx—h´M•hj_—h²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree a TUN device LSM blob”h]”hŒFree a TUN device LSM blob”…”�”}”(hjú—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M•hj÷—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj_—h²hh³jx—h´M•ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j˜j#j˜j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒŠ**Parameters** ``void *security`` LSM blob **Description** This hook allows a module to free the security structure for a TUN device.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj˜h]”hŒ Parameters”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M™hj˜ubjH)�”}”(hhh]”jM)�”}”(hŒ``void *security`` LSM blob ”h]”(jS)�”}”(hŒ``void *security``”h]”hë)�”}”(hj;˜h]”hŒvoid *security”…”�”}”(hj=˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj9˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M–hj5˜ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hjT˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jP˜h´M–hjQ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj5˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jP˜h´M–hj2˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj˜ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjv˜h]”hŒ Description”…”�”}”(hjx˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjt˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M˜hj˜ubhÌ)�”}”(hŒJThis hook allows a module to free the security structure for a TUN device.”h]”hŒJThis hook allows a module to free the security structure for a TUN device.”…”�”}”(hjŒ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M—hj˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ$security_tun_dev_create (C function)”Œc.security_tun_dev_create”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ"int security_tun_dev_create (void)”h]”jA)�”}”(hŒ!int security_tun_dev_create(void)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj»˜h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj·˜h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʘh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj·˜h²hh³jɘh´M¡ubjj)�”}”(hŒsecurity_tun_dev_create”h]”jp)�”}”(hŒsecurity_tun_dev_create”h]”hŒsecurity_tun_dev_create”…”�”}”(hjܘh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjؘubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj·˜h²hh³jɘh´M¡ubj‹)�”}”(hŒ(void)”h]”j‘)�”}”(hŒvoid”h]”jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjø˜h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjô˜ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjð˜ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj·˜h²hh³jɘh´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj³˜h²hh³jɘh´M¡ubah}”(h]”j®˜ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jɘh´M¡hj°˜h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Check if creating a TUN device is allowed”h]”hŒ)Check if creating a TUN device is allowed”…”�”}”(hj"™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¡hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj°˜h²hh³jɘh´M¡ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j:™j#j:™j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ **Parameters** ``void`` no arguments **Description** Check permissions prior to creating a new TUN device. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjD™h]”hŒ Parameters”…”�”}”(hjF™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjB™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¥hj>™ubjH)�”}”(hhh]”jM)�”}”(hŒ``void`` no arguments ”h]”(jS)�”}”(hŒ``void``”h]”hë)�”}”(hjc™h]”hŒvoid”…”�”}”(hje™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhja™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Khj]™ubjm)�”}”(hhh]”hÌ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj|™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jx™h´Khjy™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj]™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jx™h´KhjZ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj>™ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjž™h]”hŒ Description”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjœ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Khj>™ubhÌ)�”}”(hŒ5Check permissions prior to creating a new TUN device.”h]”hŒ5Check permissions prior to creating a new TUN device.”…”�”}”(hj´™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¢hj>™ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÅ™h]”hŒReturn”…”�”}”(hjÇ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¤hj>™ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjÛ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¥hj>™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ*security_tun_dev_attach_queue (C function)”Œc.security_tun_dev_attach_queue”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ2int security_tun_dev_attach_queue (void *security)”h]”jA)�”}”(hŒ1int security_tun_dev_attach_queue(void *security)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjšh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M®ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjšh²hh³jšh´M®ubjj)�”}”(hŒsecurity_tun_dev_attach_queue”h]”jp)�”}”(hŒsecurity_tun_dev_attach_queue”h]”hŒsecurity_tun_dev_attach_queue”…”�”}”(hj+šh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj'šubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjšh²hh³jšh´M®ubj‹)�”}”(hŒ(void *security)”h]”j‘)�”}”(hŒvoid *security”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjGšh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjCšubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUšh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjCšubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjcšh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjCšubjp)�”}”(hŒsecurity”h]”hŒsecurity”…”�”}”(hjpšh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjCšubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj?šubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjšh²hh³jšh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjšh²hh³jšh´M®ubah}”(h]”jý™ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jšh´M®hjÿ™h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Check if attaching a TUN queue is allowed”h]”hŒ)Check if attaching a TUN queue is allowed”…”�”}”(hjššh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M®hj—šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjÿ™h²hh³jšh´M®ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j²šj#j²šj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ·**Parameters** ``void *security`` TUN device LSM blob **Description** Check permissions prior to attaching to a TUN device queue. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj¼šh]”hŒ Parameters”…”�”}”(hj¾šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjºšubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M²hj¶šubjH)�”}”(hhh]”jM)�”}”(hŒ'``void *security`` TUN device LSM blob ”h]”(jS)�”}”(hŒ``void *security``”h]”hë)�”}”(hjÛšh]”hŒvoid *security”…”�”}”(hjÝšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÙšubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯hjÕšubjm)�”}”(hhh]”hÌ)�”}”(hŒTUN device LSM blob”h]”hŒTUN device LSM blob”…”�”}”(hjôšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jðšh´M¯hjñšubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÕšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jðšh´M¯hjÒšubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¶šubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj›h]”hŒ Description”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M±hj¶šubhÌ)�”}”(hŒ;Check permissions prior to attaching to a TUN device queue.”h]”hŒ;Check permissions prior to attaching to a TUN device queue.”…”�”}”(hj,›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M°hj¶šubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj=›h]”hŒReturn”…”�”}”(hj?›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj;›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M²hj¶šubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjS›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M³hj¶šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ$security_tun_dev_attach (C function)”Œc.security_tun_dev_attach”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ=int security_tun_dev_attach (struct sock *sk, void *security)”h]”jA)�”}”(hŒŸh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj:Ÿubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjŸh²hh³j+Ÿh´MÛubj‹)�”}”(hŒ4(struct sctp_association *asoc, struct sk_buff *skb)”h]”(j‘)�”}”(hŒstruct sctp_association *asoc”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjZŸh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjVŸubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgŸh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVŸubh)�”}”(hhh]”jp)�”}”(hŒsctp_association”h]”hŒsctp_association”…”�”}”(hjxŸh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjuŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jzŸŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj@ŸsbŒc.security_sctp_assoc_request”†”asbuh1hhjVŸubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Ÿh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVŸubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¦Ÿh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjVŸubjp)�”}”(hŒasoc”h]”hŒasoc”…”�”}”(hj³Ÿh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjVŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjRŸubj‘)�”}”(hŒstruct sk_buff *skb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÌŸh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÈŸubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙŸh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÈŸubh)�”}”(hhh]”jp)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjêŸh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjçŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j쟌modname”NŒ classname”Nj‡jŠ)�”}”j�]”j”ŸŒc.security_sctp_assoc_request”†”asbuh1hhjÈŸubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÈŸubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÈŸubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÈŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjRŸubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjŸh²hh³j+Ÿh´MÛubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjŸh²hh³j+Ÿh´MÛubah}”(h]”jŸah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j+Ÿh´MÛhjŸh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Update the LSM on a SCTP association req”h]”hŒ(Update the LSM on a SCTP association req”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÛhjJ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjŸh²hh³j+Ÿh´MÛubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"je j#je j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct sctp_association *asoc`` SCTP association ``struct sk_buff *skb`` packet requesting the association **Description** Passes the **asoc** and **chunk->skb** of the association INIT packet to the LSM. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjo h]”hŒ Parameters”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjm ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mßhji ubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct sctp_association *asoc`` SCTP association ”h]”(jS)�”}”(hŒ!``struct sctp_association *asoc``”h]”hë)�”}”(hjŽ h]”hŒstruct sctp_association *asoc”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÜhjˆ ubjm)�”}”(hhh]”hÌ)�”}”(hŒSCTP association”h]”hŒSCTP association”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£ h´MÜhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjˆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£ h´MÜhj… ubjM)�”}”(hŒ:``struct sk_buff *skb`` packet requesting the association ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hjÇ h]”hŒstruct sk_buff *skb”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÝhjÁ ubjm)�”}”(hhh]”hÌ)�”}”(hŒ!packet requesting the association”h]”hŒ!packet requesting the association”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜ h´MÝhjÝ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜ h´MÝhj… ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhji ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj¡h]”hŒ Description”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mßhji ubhÌ)�”}”(hŒQPasses the **asoc** and **chunk->skb** of the association INIT packet to the LSM.”h]”(hŒ Passes the ”…”�”}”(hj¡h²hh³Nh´Nubj2)�”}”(hŒ**asoc**”h]”hŒasoc”…”�”}”(hj ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¡ubhŒ and ”…”�”}”(hj¡h²hh³Nh´Nubj2)�”}”(hŒ**chunk->skb**”h]”hŒ chunk->skb”…”�”}”(hj2¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¡ubhŒ+ of the association INIT packet to the LSM.”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÞhji ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjM¡h]”hŒReturn”…”�”}”(hjO¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjK¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Màhji ubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hjc¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Máhji ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_sctp_bind_connect (C function)”Œc.security_sctp_bind_connect”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒdint security_sctp_bind_connect (struct sock *sk, int optname, struct sockaddr *address, int addrlen)”h]”jA)�”}”(hŒcint security_sctp_bind_connect(struct sock *sk, int optname, struct sockaddr *address, int addrlen)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj’¡h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjŽ¡h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MëubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡¡h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjŽ¡h²hh³j ¡h´Mëubjj)�”}”(hŒsecurity_sctp_bind_connect”h]”jp)�”}”(hŒsecurity_sctp_bind_connect”h]”hŒsecurity_sctp_bind_connect”…”�”}”(hj³¡h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¯¡ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjŽ¡h²hh³j ¡h´Mëubj‹)�”}”(hŒE(struct sock *sk, int optname, struct sockaddr *address, int addrlen)”h]”(j‘)�”}”(hŒstruct sock *sk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÏ¡h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjË¡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ¡h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjË¡ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjí¡h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjê¡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjµ¡sbŒc.security_sctp_bind_connect”†”asbuh1hhjË¡ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjË¡ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjË¡ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj(¢h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjË¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÇ¡ubj‘)�”}”(hŒ int optname”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjA¢h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj=¢ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO¢h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj=¢ubjp)�”}”(hŒoptname”h]”hŒoptname”…”�”}”(hj]¢h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj=¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÇ¡ubj‘)�”}”(hŒstruct sockaddr *address”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjv¢h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjr¢ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¢h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjr¢ubh)�”}”(hhh]”jp)�”}”(hŒsockaddr”h]”hŒsockaddr”…”�”}”(hj”¢h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j–¢Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j ¢Œc.security_sctp_bind_connect”†”asbuh1hhjr¢ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¢h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjr¢ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÀ¢h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjr¢ubjp)�”}”(hŒaddress”h]”hŒaddress”…”�”}”(hjÍ¢h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjr¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÇ¡ubj‘)�”}”(hŒ int addrlen”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjæ¢h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjâ¢ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô¢h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjâ¢ubjp)�”}”(hŒaddrlen”h]”hŒaddrlen”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjâ¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÇ¡ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjŽ¡h²hh³j ¡h´Mëubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjŠ¡h²hh³j ¡h´Mëubah}”(h]”j…¡ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j ¡h´Mëhj‡¡h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ*Validate a list of addrs for a SCTP option”h]”hŒ*Validate a list of addrs for a SCTP option”…”�”}”(hj,£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mëhj)£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj‡¡h²hh³j ¡h´Mëubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jD£j#jD£j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX4**Parameters** ``struct sock *sk`` socket ``int optname`` SCTP option to validate ``struct sockaddr *address`` list of IP addresses to validate ``int addrlen`` length of the address list **Description** Validiate permissions required for each address associated with sock **sk**. Depending on **optname**, the addresses will be treated as either a connect or bind service. The **addrlen** is calculated on each IPv4 and IPv6 address using sizeof(struct sockaddr_in) or sizeof(struct sockaddr_in6). **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjN£h]”hŒ Parameters”…”�”}”(hjP£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjL£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MïhjH£ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct sock *sk`` socket ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hjm£h]”hŒstruct sock *sk”…”�”}”(hjo£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjk£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mìhjg£ubjm)�”}”(hhh]”hÌ)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hj†£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚£h´Mìhjƒ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjg£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‚£h´Mìhjd£ubjM)�”}”(hŒ(``int optname`` SCTP option to validate ”h]”(jS)�”}”(hŒ``int optname``”h]”hë)�”}”(hj¦£h]”hŒ int optname”…”�”}”(hj¨£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¤£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Míhj £ubjm)�”}”(hhh]”hÌ)�”}”(hŒSCTP option to validate”h]”hŒSCTP option to validate”…”�”}”(hj¿£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»£h´Míhj¼£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj £ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»£h´Míhjd£ubjM)�”}”(hŒ>``struct sockaddr *address`` list of IP addresses to validate ”h]”(jS)�”}”(hŒ``struct sockaddr *address``”h]”hë)�”}”(hjߣh]”hŒstruct sockaddr *address”…”�”}”(hjá£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÝ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MîhjÙ£ubjm)�”}”(hhh]”hÌ)�”}”(hŒ list of IP addresses to validate”h]”hŒ list of IP addresses to validate”…”�”}”(hjø£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô£h´Mîhjõ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÙ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jô£h´Mîhjd£ubjM)�”}”(hŒ+``int addrlen`` length of the address list ”h]”(jS)�”}”(hŒ``int addrlen``”h]”hë)�”}”(hj¤h]”hŒ int addrlen”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mïhj¤ubjm)�”}”(hhh]”hÌ)�”}”(hŒlength of the address list”h]”hŒlength of the address list”…”�”}”(hj1¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-¤h´Mïhj.¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j-¤h´Mïhjd£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjH£ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjS¤h]”hŒ Description”…”�”}”(hjU¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjQ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MñhjH£ubhÌ)�”}”(hX&Validiate permissions required for each address associated with sock **sk**. Depending on **optname**, the addresses will be treated as either a connect or bind service. The **addrlen** is calculated on each IPv4 and IPv6 address using sizeof(struct sockaddr_in) or sizeof(struct sockaddr_in6).”h]”(hŒEValidiate permissions required for each address associated with sock ”…”�”}”(hji¤h²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hjq¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hji¤ubhŒ. Depending on ”…”�”}”(hji¤h²hh³Nh´Nubj2)�”}”(hŒ **optname**”h]”hŒoptname”…”�”}”(hjƒ¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hji¤ubhŒI, the addresses will be treated as either a connect or bind service. The ”…”�”}”(hji¤h²hh³Nh´Nubj2)�”}”(hŒ **addrlen**”h]”hŒaddrlen”…”�”}”(hj•¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hji¤ubhŒm is calculated on each IPv4 and IPv6 address using sizeof(struct sockaddr_in) or sizeof(struct sockaddr_in6).”…”�”}”(hji¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MðhjH£ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj°¤h]”hŒReturn”…”�”}”(hj²¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj®¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MõhjH£ubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hjƤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MöhjH£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ#security_sctp_sk_clone (C function)”Œc.security_sctp_sk_clone”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ`void security_sctp_sk_clone (struct sctp_association *asoc, struct sock *sk, struct sock *newsk)”h]”jA)�”}”(hŒ_void security_sctp_sk_clone(struct sctp_association *asoc, struct sock *sk, struct sock *newsk)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjõ¤h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjñ¤h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjñ¤h²hh³j¥h´Mubjj)�”}”(hŒsecurity_sctp_sk_clone”h]”jp)�”}”(hŒsecurity_sctp_sk_clone”h]”hŒsecurity_sctp_sk_clone”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¥ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjñ¤h²hh³j¥h´Mubj‹)�”}”(hŒD(struct sctp_association *asoc, struct sock *sk, struct sock *newsk)”h]”(j‘)�”}”(hŒstruct sctp_association *asoc”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj2¥h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj.¥ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?¥h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj.¥ubh)�”}”(hhh]”jp)�”}”(hŒsctp_association”h]”hŒsctp_association”…”�”}”(hjP¥h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjM¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jR¥Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¥sbŒc.security_sctp_sk_clone”†”asbuh1hhj.¥ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¥h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj.¥ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj~¥h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj.¥ubjp)�”}”(hŒasoc”h]”hŒasoc”…”�”}”(hj‹¥h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj.¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj*¥ubj‘)�”}”(hŒstruct sock *sk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¤¥h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj ¥ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±¥h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ¥ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjÂ¥h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¿¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÄ¥Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jl¥Œc.security_sctp_sk_clone”†”asbuh1hhj ¥ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà¥h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ¥ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjî¥h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj ¥ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjû¥h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj*¥ubj‘)�”}”(hŒstruct sock *newsk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¦ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!¦h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¦ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj2¦h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj/¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j4¦Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jl¥Œc.security_sctp_sk_clone”†”asbuh1hhj¦ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP¦h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¦ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj^¦h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¦ubjp)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjk¦h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj*¥ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjñ¤h²hh³j¥h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjí¤h²hh³j¥h´Mubah}”(h]”jè¤ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¥h´Mhjê¤h²hubj)�”}”(hhh]”hÌ)�”}”(hŒClone a SCTP sock's LSM state”h]”hŒClone a SCTP sock’s LSM state”…”�”}”(hj•¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj’¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjê¤h²hh³j¥h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j­¦j#j­¦j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX6**Parameters** ``struct sctp_association *asoc`` SCTP association ``struct sock *sk`` original sock ``struct sock *newsk`` target sock **Description** Called whenever a new socket is created by accept(2) (i.e. a TCP style socket) or when a socket is 'peeled off' e.g userspace calls sctp_peeloff(3).”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj·¦h]”hŒ Parameters”…”�”}”(hj¹¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjµ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj±¦ubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct sctp_association *asoc`` SCTP association ”h]”(jS)�”}”(hŒ!``struct sctp_association *asoc``”h]”hë)�”}”(hjÖ¦h]”hŒstruct sctp_association *asoc”…”�”}”(hjئh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÔ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjЦubjm)�”}”(hhh]”hÌ)�”}”(hŒSCTP association”h]”hŒSCTP association”…”�”}”(hjï¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jë¦h´Mhjì¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjЦubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jë¦h´MhjͦubjM)�”}”(hŒ"``struct sock *sk`` original sock ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hj§h]”hŒstruct sock *sk”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj §ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj §ubjm)�”}”(hhh]”hÌ)�”}”(hŒ original sock”h]”hŒ original sock”…”�”}”(hj(§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j$§h´Mhj%§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj §ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j$§h´MhjͦubjM)�”}”(hŒ#``struct sock *newsk`` target sock ”h]”(jS)�”}”(hŒ``struct sock *newsk``”h]”hë)�”}”(hjH§h]”hŒstruct sock *newsk”…”�”}”(hjJ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjF§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjB§ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target sock”h]”hŒ target sock”…”�”}”(hja§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]§h´Mhj^§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjB§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j]§h´Mhjͦubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj±¦ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjƒ§h]”hŒ Description”…”�”}”(hj…§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj�§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj±¦ubhÌ)�”}”(hŒ”Called whenever a new socket is created by accept(2) (i.e. a TCP style socket) or when a socket is 'peeled off' e.g userspace calls sctp_peeloff(3).”h]”hŒ˜Called whenever a new socket is created by accept(2) (i.e. a TCP style socket) or when a socket is ‘peeled off’ e.g userspace calls sctp_peeloff(3).”…”�”}”(hj™§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj±¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ,security_sctp_assoc_established (C function)”Œ!c.security_sctp_assoc_established”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒXint security_sctp_assoc_established (struct sctp_association *asoc, struct sk_buff *skb)”h]”jA)�”}”(hŒWint security_sctp_assoc_established(struct sctp_association *asoc, struct sk_buff *skb)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjȧh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjħh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×§h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjħh²hh³jÖ§h´Mubjj)�”}”(hŒsecurity_sctp_assoc_established”h]”jp)�”}”(hŒsecurity_sctp_assoc_established”h]”hŒsecurity_sctp_assoc_established”…”�”}”(hjé§h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjå§ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjħh²hh³jÖ§h´Mubj‹)�”}”(hŒ4(struct sctp_association *asoc, struct sk_buff *skb)”h]”(j‘)�”}”(hŒstruct sctp_association *asoc”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¨ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¨ubh)�”}”(hhh]”jp)�”}”(hŒsctp_association”h]”hŒsctp_association”…”�”}”(hj#¨h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj ¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j%¨Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjë§sbŒ!c.security_sctp_assoc_established”†”asbuh1hhj¨ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC¨h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¨ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjQ¨h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¨ubjp)�”}”(hŒasoc”h]”hŒasoc”…”�”}”(hj^¨h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjý§ubj‘)�”}”(hŒstruct sk_buff *skb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjw¨h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjs¨ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„¨h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjs¨ubh)�”}”(hhh]”jp)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj•¨h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj’¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j—¨Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j?¨Œ!c.security_sctp_assoc_established”†”asbuh1hhjs¨ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³¨h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjs¨ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÁ¨h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjs¨ubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjΨh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjs¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjý§ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjħh²hh³jÖ§h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjÀ§h²hh³jÖ§h´Mubah}”(h]”j»§ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÖ§h´Mhj½§h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ'Update LSM state when assoc established”h]”hŒ'Update LSM state when assoc established”…”�”}”(hjø¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjõ¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj½§h²hh³jÖ§h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j©j#j©j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX***Parameters** ``struct sctp_association *asoc`` SCTP association ``struct sk_buff *skb`` packet establishing the association **Description** Passes the **asoc** and **chunk->skb** of the association COOKIE_ACK packet to the security module. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj©h]”hŒ Parameters”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj©ubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct sctp_association *asoc`` SCTP association ”h]”(jS)�”}”(hŒ!``struct sctp_association *asoc``”h]”hë)�”}”(hj9©h]”hŒstruct sctp_association *asoc”…”�”}”(hj;©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj7©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj3©ubjm)�”}”(hhh]”hÌ)�”}”(hŒSCTP association”h]”hŒSCTP association”…”�”}”(hjR©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jN©h´MhjO©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj3©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jN©h´Mhj0©ubjM)�”}”(hŒ<``struct sk_buff *skb`` packet establishing the association ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hjr©h]”hŒstruct sk_buff *skb”…”�”}”(hjt©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjp©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjl©ubjm)�”}”(hhh]”hÌ)�”}”(hŒ#packet establishing the association”h]”hŒ#packet establishing the association”…”�”}”(hj‹©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡©h´Mhjˆ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjl©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‡©h´Mhj0©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj©ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj­©h]”hŒ Description”…”�”}”(hj¯©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj«©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj©ubhÌ)�”}”(hŒcPasses the **asoc** and **chunk->skb** of the association COOKIE_ACK packet to the security module.”h]”(hŒ Passes the ”…”�”}”(hjéh²hh³Nh´Nubj2)�”}”(hŒ**asoc**”h]”hŒasoc”…”�”}”(hjË©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjéubhŒ and ”…”�”}”(hjéh²hh³Nh´Nubj2)�”}”(hŒ**chunk->skb**”h]”hŒ chunk->skb”…”�”}”(hjÝ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjéubhŒ= of the association COOKIE_ACK packet to the security module.”…”�”}”(hjéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj©ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjø©h]”hŒReturn”…”�”}”(hjú©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjö©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj©ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œsecurity_unix_find (C function)”Œc.security_unix_find”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒOint security_unix_find (const struct path *path, struct sock *other, int flags)”h]”jA)�”}”(hŒNint security_unix_find(const struct path *path, struct sock *other, int flags)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj=ªh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj9ªh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLªh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj9ªh²hh³jKªh´M6ubjj)�”}”(hŒsecurity_unix_find”h]”jp)�”}”(hŒsecurity_unix_find”h]”hŒsecurity_unix_find”…”�”}”(hj^ªh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjZªubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj9ªh²hh³jKªh´M6ubj‹)�”}”(hŒ8(const struct path *path, struct sock *other, int flags)”h]”(j‘)�”}”(hŒconst struct path *path”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjzªh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjvªubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡ªh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvªubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hj•ªh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjvªubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ªh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvªubh)�”}”(hhh]”jp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hj³ªh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj°ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jµªŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj`ªsbŒc.security_unix_find”†”asbuh1hhjvªubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓªh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvªubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjáªh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjvªubjp)�”}”(hŒpath”h]”hŒpath”…”�”}”(hjîªh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjvªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrªubj‘)�”}”(hŒstruct sock *other”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj«ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj«ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj%«h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj"«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j'«Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jϪŒc.security_unix_find”†”asbuh1hhj«ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC«h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj«ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjQ«h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj«ubjp)�”}”(hŒother”h]”hŒother”…”�”}”(hj^«h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrªubj‘)�”}”(hŒ int flags”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjw«h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjs«ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…«h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjs«ubjp)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj“«h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjs«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrªubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj9ªh²hh³jKªh´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj5ªh²hh³jKªh´M6ubah}”(h]”j0ªah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jKªh´M6hj2ªh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if a named AF_UNIX socket can connect”h]”hŒ+Check if a named AF_UNIX socket can connect”…”�”}”(hj½«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M6hjº«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj2ªh²hh³jKªh´M6ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÕ«j#jÕ«j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXs**Parameters** ``const struct path *path`` path of the socket being connected to ``struct sock *other`` peer sock ``int flags`` flags associated with the socket **Description** This hook is called to check permissions before connecting to a named AF_UNIX socket. The caller does not hold any locks on **other**. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjß«h]”hŒ Parameters”…”�”}”(hjá«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÝ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M:hjÙ«ubjH)�”}”(hhh]”(jM)�”}”(hŒB``const struct path *path`` path of the socket being connected to ”h]”(jS)�”}”(hŒ``const struct path *path``”h]”hë)�”}”(hjþ«h]”hŒconst struct path *path”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjü«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M7hjø«ubjm)�”}”(hhh]”hÌ)�”}”(hŒ%path of the socket being connected to”h]”hŒ%path of the socket being connected to”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬h´M7hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjø«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¬h´M7hjõ«ubjM)�”}”(hŒ!``struct sock *other`` peer sock ”h]”(jS)�”}”(hŒ``struct sock *other``”h]”hë)�”}”(hj7¬h]”hŒstruct sock *other”…”�”}”(hj9¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj5¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M8hj1¬ubjm)�”}”(hhh]”hÌ)�”}”(hŒ peer sock”h]”hŒ peer sock”…”�”}”(hjP¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL¬h´M8hjM¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj1¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jL¬h´M8hjõ«ubjM)�”}”(hŒ/``int flags`` flags associated with the socket ”h]”(jS)�”}”(hŒ ``int flags``”h]”hë)�”}”(hjp¬h]”hŒ int flags”…”�”}”(hjr¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjn¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M9hjj¬ubjm)�”}”(hhh]”hÌ)�”}”(hŒ flags associated with the socket”h]”hŒ flags associated with the socket”…”�”}”(hj‰¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…¬h´M9hj†¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j…¬h´M9hjõ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÙ«ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj«¬h]”hŒ Description”…”�”}”(hj­¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj©¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M;hjÙ«ubhÌ)�”}”(hŒ†This hook is called to check permissions before connecting to a named AF_UNIX socket. The caller does not hold any locks on **other**.”h]”(hŒ|This hook is called to check permissions before connecting to a named AF_UNIX socket. The caller does not hold any locks on ”…”�”}”(hjÁ¬h²hh³Nh´Nubj2)�”}”(hŒ **other**”h]”hŒother”…”�”}”(hjɬh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÁ¬ubhŒ.”…”�”}”(hjÁ¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M:hjÙ«ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjä¬h]”hŒReturn”…”�”}”(hjæ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjâ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M=hjÙ«ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjú¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M>hjÙ«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ$security_ib_pkey_access (C function)”Œc.security_ib_pkey_access”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒDint security_ib_pkey_access (void *sec, u64 subnet_prefix, u16 pkey)”h]”jA)�”}”(hŒCint security_ib_pkey_access(void *sec, u64 subnet_prefix, u16 pkey)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj)­h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj%­h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MJubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8­h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj%­h²hh³j7­h´MJubjj)�”}”(hŒsecurity_ib_pkey_access”h]”jp)�”}”(hŒsecurity_ib_pkey_access”h]”hŒsecurity_ib_pkey_access”…”�”}”(hjJ­h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjF­ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj%­h²hh³j7­h´MJubj‹)�”}”(hŒ((void *sec, u64 subnet_prefix, u16 pkey)”h]”(j‘)�”}”(hŒ void *sec”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjf­h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjb­ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt­h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjb­ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‚­h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjb­ubjp)�”}”(hŒsec”h]”hŒsec”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjb­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj^­ubj‘)�”}”(hŒu64 subnet_prefix”h]”(h)�”}”(hhh]”jp)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj«­h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¨­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j­­Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjL­sbŒc.security_ib_pkey_access”†”asbuh1hhj¤­ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË­h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¤­ubjp)�”}”(hŒ subnet_prefix”h]”hŒ subnet_prefix”…”�”}”(hjÙ­h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¤­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj^­ubj‘)�”}”(hŒu16 pkey”h]”(h)�”}”(hhh]”jp)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjõ­h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjò­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j÷­Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jÇ­Œc.security_ib_pkey_access”†”asbuh1hhjî­ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjî­ubjp)�”}”(hŒpkey”h]”hŒpkey”…”�”}”(hj!®h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjî­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj^­ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj%­h²hh³j7­h´MJubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj!­h²hh³j7­h´MJubah}”(h]”j­ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j7­h´MJhj­h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Check if access to an IB pkey is allowed”h]”hŒ(Check if access to an IB pkey is allowed”…”�”}”(hjK®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MJhjH®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj­h²hh³j7­h´MJubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jc®j#jc®j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒí**Parameters** ``void *sec`` LSM blob ``u64 subnet_prefix`` subnet prefix of the port ``u16 pkey`` IB pkey **Description** Check permission to access a pkey when modifying a QP. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjm®h]”hŒ Parameters”…”�”}”(hjo®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjk®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MNhjg®ubjH)�”}”(hhh]”(jM)�”}”(hŒ``void *sec`` LSM blob ”h]”(jS)�”}”(hŒ ``void *sec``”h]”hë)�”}”(hjŒ®h]”hŒ void *sec”…”�”}”(hjŽ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjŠ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MKhj†®ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hj¥®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡®h´MKhj¢®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj†®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¡®h´MKhjƒ®ubjM)�”}”(hŒ0``u64 subnet_prefix`` subnet prefix of the port ”h]”(jS)�”}”(hŒ``u64 subnet_prefix``”h]”hë)�”}”(hjÅ®h]”hŒu64 subnet_prefix”…”�”}”(hjÇ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MLhj¿®ubjm)�”}”(hhh]”hÌ)�”}”(hŒsubnet prefix of the port”h]”hŒsubnet prefix of the port”…”�”}”(hjÞ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ®h´MLhjÛ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¿®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÚ®h´MLhjƒ®ubjM)�”}”(hŒ``u16 pkey`` IB pkey ”h]”(jS)�”}”(hŒ ``u16 pkey``”h]”hë)�”}”(hjþ®h]”hŒu16 pkey”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjü®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MMhjø®ubjm)�”}”(hhh]”hÌ)�”}”(hŒIB pkey”h]”hŒIB pkey”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯h´MMhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjø®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¯h´MMhjƒ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjg®ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj9¯h]”hŒ Description”…”�”}”(hj;¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj7¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MOhjg®ubhÌ)�”}”(hŒ6Check permission to access a pkey when modifying a QP.”h]”hŒ6Check permission to access a pkey when modifying a QP.”…”�”}”(hjO¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MNhjg®ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj`¯h]”hŒReturn”…”�”}”(hjb¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj^¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MPhjg®ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjv¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MQhjg®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ.security_ib_endport_manage_subnet (C function)”Œ#c.security_ib_endport_manage_subnet”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒTint security_ib_endport_manage_subnet (void *sec, const char *dev_name, u8 port_num)”h]”jA)�”}”(hŒSint security_ib_endport_manage_subnet(void *sec, const char *dev_name, u8 port_num)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥¯h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¡¯h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MZubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´¯h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¡¯h²hh³j³¯h´MZubjj)�”}”(hŒ!security_ib_endport_manage_subnet”h]”jp)�”}”(hŒ!security_ib_endport_manage_subnet”h]”hŒ!security_ib_endport_manage_subnet”…”�”}”(hjƯh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¯ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj¡¯h²hh³j³¯h´MZubj‹)�”}”(hŒ.(void *sec, const char *dev_name, u8 port_num)”h]”(j‘)�”}”(hŒ void *sec”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjâ¯h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÞ¯ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð¯h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÞ¯ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjþ¯h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÞ¯ubjp)�”}”(hŒsec”h]”hŒsec”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÞ¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÚ¯ubj‘)�”}”(hŒconst char *dev_name”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj$°h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj °ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1°h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj °ubjG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj?°h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj °ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM°h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj °ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj[°h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj °ubjp)�”}”(hŒdev_name”h]”hŒdev_name”…”�”}”(hjh°h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj °ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÚ¯ubj‘)�”}”(hŒ u8 port_num”h]”(h)�”}”(hhh]”jp)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj„°h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j†°Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjȯsbŒ#c.security_ib_endport_manage_subnet”†”asbuh1hhj}°ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤°h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj}°ubjp)�”}”(hŒport_num”h]”hŒport_num”…”�”}”(hj²°h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj}°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÚ¯ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj¡¯h²hh³j³¯h´MZubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj�¯h²hh³j³¯h´MZubah}”(h]”j˜¯ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j³¯h´MZhjš¯h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ Check if SMPs traffic is allowed”h]”hŒ Check if SMPs traffic is allowed”…”�”}”(hjܰh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MZhjÙ°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjš¯h²hh³j³¯h´MZubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jô°j#jô°j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒï**Parameters** ``void *sec`` LSM blob ``const char *dev_name`` IB device name ``u8 port_num`` port number **Description** Check permissions to send and receive SMPs on a end port. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjþ°h]”hŒ Parameters”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjü°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M^hjø°ubjH)�”}”(hhh]”(jM)�”}”(hŒ``void *sec`` LSM blob ”h]”(jS)�”}”(hŒ ``void *sec``”h]”hë)�”}”(hj±h]”hŒ void *sec”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M[hj±ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hj6±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j2±h´M[hj3±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2±h´M[hj±ubjM)�”}”(hŒ(``const char *dev_name`` IB device name ”h]”(jS)�”}”(hŒ``const char *dev_name``”h]”hë)�”}”(hjV±h]”hŒconst char *dev_name”…”�”}”(hjX±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjT±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M\hjP±ubjm)�”}”(hhh]”hÌ)�”}”(hŒIB device name”h]”hŒIB device name”…”�”}”(hjo±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jk±h´M\hjl±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjP±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jk±h´M\hj±ubjM)�”}”(hŒ``u8 port_num`` port number ”h]”(jS)�”}”(hŒ``u8 port_num``”h]”hë)�”}”(hj�±h]”hŒ u8 port_num”…”�”}”(hj‘±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj�±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M]hj‰±ubjm)�”}”(hhh]”hÌ)�”}”(hŒ port number”h]”hŒ port number”…”�”}”(hj¨±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤±h´M]hj¥±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‰±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¤±h´M]hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjø°ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjʱh]”hŒ Description”…”�”}”(hj̱h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjȱubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M_hjø°ubhÌ)�”}”(hŒ9Check permissions to send and receive SMPs on a end port.”h]”hŒ9Check permissions to send and receive SMPs on a end port.”…”�”}”(hjà±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M^hjø°ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjñ±h]”hŒReturn”…”�”}”(hjó±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjï±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M`hjø°ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mahjø°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_ib_alloc_security (C function)”Œc.security_ib_alloc_security”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ+int security_ib_alloc_security (void **sec)”h]”jA)�”}”(hŒ*int security_ib_alloc_security(void **sec)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj6²h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj2²h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MkubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE²h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj2²h²hh³jD²h´Mkubjj)�”}”(hŒsecurity_ib_alloc_security”h]”jp)�”}”(hŒsecurity_ib_alloc_security”h]”hŒsecurity_ib_alloc_security”…”�”}”(hjW²h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjS²ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj2²h²hh³jD²h´Mkubj‹)�”}”(hŒ (void **sec)”h]”j‘)�”}”(hŒ void **sec”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjs²h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjo²ubjY•où)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjo²ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjo²ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjœ²h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjo²ubjp)�”}”(hŒsec”h]”hŒsec”…”�”}”(hj©²h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjo²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjk²ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj2²h²hh³jD²h´Mkubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj.²h²hh³jD²h´Mkubah}”(h]”j)²ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jD²h´Mkhj+²h²hubj)�”}”(hhh]”hÌ)�”}”(hŒAllocate an Infiniband LSM blob”h]”hŒAllocate an Infiniband LSM blob”…”�”}”(hjÓ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mkhjвh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj+²h²hh³jD²h´Mkubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jë²j#jë²j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ©**Parameters** ``void **sec`` LSM blob **Description** Allocate a security structure for Infiniband objects. **Return** Returns 0 on success, non-zero on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjõ²h]”hŒ Parameters”…”�”}”(hj÷²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjó²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mohjï²ubjH)�”}”(hhh]”jM)�”}”(hŒ``void **sec`` LSM blob ”h]”(jS)�”}”(hŒ``void **sec``”h]”hë)�”}”(hj³h]”hŒ void **sec”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mlhj³ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hj-³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)³h´Mlhj*³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)³h´Mlhj ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjï²ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjO³h]”hŒ Description”…”�”}”(hjQ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjM³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mnhjï²ubhÌ)�”}”(hŒ5Allocate a security structure for Infiniband objects.”h]”hŒ5Allocate a security structure for Infiniband objects.”…”�”}”(hje³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mmhjï²ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjv³h]”hŒReturn”…”�”}”(hjx³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjt³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mohjï²ubhÌ)�”}”(hŒ*Returns 0 on success, non-zero on failure.”h]”hŒ*Returns 0 on success, non-zero on failure.”…”�”}”(hjŒ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mphjï²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ&security_ib_free_security (C function)”Œc.security_ib_free_security”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ*void security_ib_free_security (void *sec)”h]”jA)�”}”(hŒ)void security_ib_free_security(void *sec)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj»³h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj·³h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M„ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjʳh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj·³h²hh³jɳh´M„ubjj)�”}”(hŒsecurity_ib_free_security”h]”jp)�”}”(hŒsecurity_ib_free_security”h]”hŒsecurity_ib_free_security”…”�”}”(hjܳh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjسubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj·³h²hh³jɳh´M„ubj‹)�”}”(hŒ (void *sec)”h]”j‘)�”}”(hŒ void *sec”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjø³h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjô³ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjô³ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjô³ubjp)�”}”(hŒsec”h]”hŒsec”…”�”}”(hj!´h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjô³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjð³ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj·³h²hh³jɳh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj³³h²hh³jɳh´M„ubah}”(h]”j®³ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jɳh´M„hj°³h²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree an Infiniband LSM blob”h]”hŒFree an Infiniband LSM blob”…”�”}”(hjK´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M„hjH´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj°³h²hh³jɳh´M„ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jc´j#jc´j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒg**Parameters** ``void *sec`` LSM blob **Description** Deallocate an Infiniband security structure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjm´h]”hŒ Parameters”…”�”}”(hjo´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjk´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mˆhjg´ubjH)�”}”(hhh]”jM)�”}”(hŒ``void *sec`` LSM blob ”h]”(jS)�”}”(hŒ ``void *sec``”h]”hë)�”}”(hjŒ´h]”hŒ void *sec”…”�”}”(hjŽ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjŠ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M…hj†´ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hj¥´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡´h´M…hj¢´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj†´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¡´h´M…hjƒ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjg´ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjÇ´h]”hŒ Description”…”�”}”(hjÉ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÅ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‡hjg´ubhÌ)�”}”(hŒ,Deallocate an Infiniband security structure.”h]”hŒ,Deallocate an Infiniband security structure.”…”�”}”(hjÝ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M†hjg´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_xfrm_policy_alloc (C function)”Œc.security_xfrm_policy_alloc”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒiint security_xfrm_policy_alloc (struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx, gfp_t gfp)”h]”jA)�”}”(hŒhint security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx, gfp_t gfp)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj µh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjµh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M’ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjµh²hh³jµh´M’ubjj)�”}”(hŒsecurity_xfrm_policy_alloc”h]”jp)�”}”(hŒsecurity_xfrm_policy_alloc”h]”hŒsecurity_xfrm_policy_alloc”…”�”}”(hj-µh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj)µubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjµh²hh³jµh´M’ubj‹)�”}”(hŒJ(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx, gfp_t gfp)”h]”(j‘)�”}”(hŒstruct xfrm_sec_ctx **ctxp”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjIµh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjEµubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVµh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjEµubh)�”}”(hhh]”jp)�”}”(hŒ xfrm_sec_ctx”h]”hŒ xfrm_sec_ctx”…”�”}”(hjgµh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjdµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jiµŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj/µsbŒc.security_xfrm_policy_alloc”†”asbuh1hhjEµubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡µh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjEµubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj•µh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjEµubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¢µh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjEµubjp)�”}”(hŒctxp”h]”hŒctxp”…”�”}”(hj¯µh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjEµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjAµubj‘)�”}”(hŒ!struct xfrm_user_sec_ctx *sec_ctx”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjȵh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjĵubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕµh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjĵubh)�”}”(hhh]”jp)�”}”(hŒxfrm_user_sec_ctx”h]”hŒxfrm_user_sec_ctx”…”�”}”(hjæµh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjãµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j赌modname”NŒ classname”Nj‡jŠ)�”}”j�]”jƒµŒc.security_xfrm_policy_alloc”†”asbuh1hhjĵubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjĵubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjĵubjp)�”}”(hŒsec_ctx”h]”hŒsec_ctx”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjĵubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjAµubj‘)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”jp)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj;¶h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj8¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j=¶Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jƒµŒc.security_xfrm_policy_alloc”†”asbuh1hhj4¶ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY¶h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj4¶ubjp)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjg¶h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj4¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjAµubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjµh²hh³jµh´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjµh²hh³jµh´M’ubah}”(h]”jÿ´ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jµh´M’hjµh²hubj)�”}”(hhh]”hÌ)�”}”(hŒAllocate a xfrm policy LSM blob”h]”hŒAllocate a xfrm policy LSM blob”…”�”}”(hj‘¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M’hj޶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjµh²hh³jµh´M’ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j©¶j#j©¶j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX‘**Parameters** ``struct xfrm_sec_ctx **ctxp`` xfrm security context being added to the SPD ``struct xfrm_user_sec_ctx *sec_ctx`` security label provided by userspace ``gfp_t gfp`` gfp flags **Description** Allocate a security structure to the xp->security field; the security field is initialized to NULL when the xfrm_policy is allocated. **Return** Return 0 if operation was successful.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj³¶h]”hŒ Parameters”…”�”}”(hjµ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj±¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M–hj­¶ubjH)�”}”(hhh]”(jM)�”}”(hŒL``struct xfrm_sec_ctx **ctxp`` xfrm security context being added to the SPD ”h]”(jS)�”}”(hŒ``struct xfrm_sec_ctx **ctxp``”h]”hë)�”}”(hjÒ¶h]”hŒstruct xfrm_sec_ctx **ctxp”…”�”}”(hjÔ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjжubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M“hj̶ubjm)�”}”(hhh]”hÌ)�”}”(hŒ,xfrm security context being added to the SPD”h]”hŒ,xfrm security context being added to the SPD”…”�”}”(hjë¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jç¶h´M“hjè¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj̶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jç¶h´M“hjɶubjM)�”}”(hŒK``struct xfrm_user_sec_ctx *sec_ctx`` security label provided by userspace ”h]”(jS)�”}”(hŒ%``struct xfrm_user_sec_ctx *sec_ctx``”h]”hë)�”}”(hj ·h]”hŒ!struct xfrm_user_sec_ctx *sec_ctx”…”�”}”(hj ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M”hj·ubjm)�”}”(hhh]”hÌ)�”}”(hŒ$security label provided by userspace”h]”hŒ$security label provided by userspace”…”�”}”(hj$·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ·h´M”hj!·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j ·h´M”hjɶubjM)�”}”(hŒ``gfp_t gfp`` gfp flags ”h]”(jS)�”}”(hŒ ``gfp_t gfp``”h]”hë)�”}”(hjD·h]”hŒ gfp_t gfp”…”�”}”(hjF·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjB·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M•hj>·ubjm)�”}”(hhh]”hÌ)�”}”(hŒ gfp flags”h]”hŒ gfp flags”…”�”}”(hj]·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jY·h´M•hjZ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj>·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jY·h´M•hjɶubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj­¶ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj·h]”hŒ Description”…”�”}”(hj�·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj}·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M—hj­¶ubhÌ)�”}”(hŒ…Allocate a security structure to the xp->security field; the security field is initialized to NULL when the xfrm_policy is allocated.”h]”hŒ…Allocate a security structure to the xp->security field; the security field is initialized to NULL when the xfrm_policy is allocated.”…”�”}”(hj•·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M–hj­¶ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¦·h]”hŒReturn”…”�”}”(hj¨·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¤·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M™hj­¶ubhÌ)�”}”(hŒ%Return 0 if operation was successful.”h]”hŒ%Return 0 if operation was successful.”…”�”}”(hj¼·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mšhj­¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ&security_xfrm_policy_free (C function)”Œc.security_xfrm_policy_free”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ9void security_xfrm_policy_free (struct xfrm_sec_ctx *ctx)”h]”jA)�”}”(hŒ8void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjë·h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjç·h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MµubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú·h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjç·h²hh³jù·h´Mµubjj)�”}”(hŒsecurity_xfrm_policy_free”h]”jp)�”}”(hŒsecurity_xfrm_policy_free”h]”hŒsecurity_xfrm_policy_free”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¸ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjç·h²hh³jù·h´Mµubj‹)�”}”(hŒ(struct xfrm_sec_ctx *ctx)”h]”j‘)�”}”(hŒstruct xfrm_sec_ctx *ctx”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj(¸h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj$¸ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5¸h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj$¸ubh)�”}”(hhh]”jp)�”}”(hŒ xfrm_sec_ctx”h]”hŒ xfrm_sec_ctx”…”�”}”(hjF¸h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjC¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jH¸Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¸sbŒc.security_xfrm_policy_free”†”asbuh1hhj$¸ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf¸h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj$¸ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjt¸h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj$¸ubjp)�”}”(hŒctx”h]”hŒctx”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj$¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj ¸ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjç·h²hh³jù·h´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjã·h²hh³jù·h´Mµubah}”(h]”jÞ·ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jù·h´Mµhjà·h²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree a xfrm security context”h]”hŒFree a xfrm security context”…”�”}”(hj«¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mµhj¨¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjà·h²hh³jù·h´Mµubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jøj#jøj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ‚**Parameters** ``struct xfrm_sec_ctx *ctx`` xfrm security context **Description** Free LSM resources associated with **ctx**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj͸h]”hŒ Parameters”…”�”}”(hjϸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj˸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¹hjǸubjH)�”}”(hhh]”jM)�”}”(hŒ3``struct xfrm_sec_ctx *ctx`` xfrm security context ”h]”(jS)�”}”(hŒ``struct xfrm_sec_ctx *ctx``”h]”hë)�”}”(hjì¸h]”hŒstruct xfrm_sec_ctx *ctx”…”�”}”(hjî¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjê¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¶hjæ¸ubjm)�”}”(hhh]”hÌ)�”}”(hŒxfrm security context”h]”hŒxfrm security context”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹h´M¶hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjæ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¹h´M¶hjã¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjǸubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj'¹h]”hŒ Description”…”�”}”(hj)¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj%¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¸hjǸubhÌ)�”}”(hŒ+Free LSM resources associated with **ctx**.”h]”(hŒ#Free LSM resources associated with ”…”�”}”(hj=¹h²hh³Nh´Nubj2)�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hjE¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj=¹ubhŒ.”…”�”}”(hj=¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M·hjǸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ&security_xfrm_state_alloc (C function)”Œc.security_xfrm_state_alloc”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒWint security_xfrm_state_alloc (struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx)”h]”jA)�”}”(hŒVint security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj~¹h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjz¹h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjz¹h²hh³jŒ¹h´MÎubjj)�”}”(hŒsecurity_xfrm_state_alloc”h]”jp)�”}”(hŒsecurity_xfrm_state_alloc”h]”hŒsecurity_xfrm_state_alloc”…”�”}”(hjŸ¹h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj›¹ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjz¹h²hh³jŒ¹h´MÎubj‹)�”}”(hŒ9(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx)”h]”(j‘)�”}”(hŒstruct xfrm_state *x”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj»¹h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj·¹ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjȹh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj·¹ubh)�”}”(hhh]”jp)�”}”(hŒ xfrm_state”h]”hŒ xfrm_state”…”�”}”(hjÙ¹h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÖ¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÛ¹Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¡¹sbŒc.security_xfrm_state_alloc”†”asbuh1hhj·¹ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù¹h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj·¹ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj·¹ubjp)�”}”(hŒx”h]”hŒx”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj·¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj³¹ubj‘)�”}”(hŒ!struct xfrm_user_sec_ctx *sec_ctx”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj-ºh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj)ºubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:ºh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj)ºubh)�”}”(hhh]”jp)�”}”(hŒxfrm_user_sec_ctx”h]”hŒxfrm_user_sec_ctx”…”�”}”(hjKºh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjHºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jMºŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jõ¹Œc.security_xfrm_state_alloc”†”asbuh1hhj)ºubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiºh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj)ºubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjwºh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj)ºubjp)�”}”(hŒsec_ctx”h]”hŒsec_ctx”…”�”}”(hj„ºh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj)ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj³¹ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjz¹h²hh³jŒ¹h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjv¹h²hh³jŒ¹h´MÎubah}”(h]”jq¹ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jŒ¹h´MÎhjs¹h²hubj)�”}”(hhh]”hÌ)�”}”(hŒAllocate a xfrm state LSM blob”h]”hŒAllocate a xfrm state LSM blob”…”�”}”(hj®ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎhj«ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjs¹h²hh³jŒ¹h´MÎubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jƺj#jƺj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX•**Parameters** ``struct xfrm_state *x`` xfrm state being added to the SAD ``struct xfrm_user_sec_ctx *sec_ctx`` security label provided by userspace **Description** Allocate a security structure to the **x->security** field; the security field is initialized to NULL when the xfrm_state is allocated. Set the context to correspond to **sec_ctx**. **Return** Return 0 if operation was successful.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjкh]”hŒ Parameters”…”�”}”(hjÒºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjκubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjʺubjH)�”}”(hhh]”(jM)�”}”(hŒ;``struct xfrm_state *x`` xfrm state being added to the SAD ”h]”(jS)�”}”(hŒ``struct xfrm_state *x``”h]”hë)�”}”(hjïºh]”hŒstruct xfrm_state *x”…”�”}”(hjñºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjíºubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÏhjéºubjm)�”}”(hhh]”hÌ)�”}”(hŒ!xfrm state being added to the SAD”h]”hŒ!xfrm state being added to the SAD”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»h´MÏhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjéºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»h´MÏhjæºubjM)�”}”(hŒK``struct xfrm_user_sec_ctx *sec_ctx`` security label provided by userspace ”h]”(jS)�”}”(hŒ%``struct xfrm_user_sec_ctx *sec_ctx``”h]”hë)�”}”(hj(»h]”hŒ!struct xfrm_user_sec_ctx *sec_ctx”…”�”}”(hj*»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj&»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÐhj"»ubjm)�”}”(hhh]”hÌ)�”}”(hŒ$security label provided by userspace”h]”hŒ$security label provided by userspace”…”�”}”(hjA»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=»h´MÐhj>»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj"»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j=»h´MÐhjæºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjʺubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjc»h]”hŒ Description”…”�”}”(hje»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hja»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjʺubhÌ)�”}”(hŒµAllocate a security structure to the **x->security** field; the security field is initialized to NULL when the xfrm_state is allocated. Set the context to correspond to **sec_ctx**.”h]”(hŒ%Allocate a security structure to the ”…”�”}”(hjy»h²hh³Nh´Nubj2)�”}”(hŒ**x->security**”h]”hŒ x->security”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjy»ubhŒu field; the security field is initialized to NULL when the xfrm_state is allocated. Set the context to correspond to ”…”�”}”(hjy»h²hh³Nh´Nubj2)�”}”(hŒ **sec_ctx**”h]”hŒsec_ctx”…”�”}”(hj“»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjy»ubhŒ.”…”�”}”(hjy»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑhjʺubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj®»h]”hŒReturn”…”�”}”(hj°»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¬»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÕhjʺubhÌ)�”}”(hŒ%Return 0 if operation was successful.”h]”hŒ%Return 0 if operation was successful.”…”�”}”(hjÄ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÖhjʺubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_xfrm_state_delete (C function)”Œc.security_xfrm_state_delete”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ5int security_xfrm_state_delete (struct xfrm_state *x)”h]”jA)�”}”(hŒ4int security_xfrm_state_delete(struct xfrm_state *x)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjó»h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjï»h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MòubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjï»h²hh³j¼h´Mòubjj)�”}”(hŒsecurity_xfrm_state_delete”h]”jp)�”}”(hŒsecurity_xfrm_state_delete”h]”hŒsecurity_xfrm_state_delete”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¼ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjï»h²hh³j¼h´Mòubj‹)�”}”(hŒ(struct xfrm_state *x)”h]”j‘)�”}”(hŒstruct xfrm_state *x”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj0¼h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj,¼ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=¼h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,¼ubh)�”}”(hhh]”jp)�”}”(hŒ xfrm_state”h]”hŒ xfrm_state”…”�”}”(hjN¼h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjK¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jP¼Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¼sbŒc.security_xfrm_state_delete”†”asbuh1hhj,¼ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn¼h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,¼ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj|¼h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj,¼ubjp)�”}”(hjºh]”hŒx”…”�”}”(hj‰¼h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj,¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj(¼ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjï»h²hh³j¼h´Mòubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjë»h²hh³j¼h´Mòubah}”(h]”jæ»ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¼h´Mòhjè»h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Check if deleting a xfrm state is allowed”h]”hŒ)Check if deleting a xfrm state is allowed”…”�”}”(hj²¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mòhj¯¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjè»h²hh³j¼h´Mòubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jʼj#jʼj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ›**Parameters** ``struct xfrm_state *x`` xfrm state **Description** Authorize deletion of x->security. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÔ¼h]”hŒ Parameters”…”�”}”(hjÖ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÒ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MöhjμubjH)�”}”(hhh]”jM)�”}”(hŒ$``struct xfrm_state *x`` xfrm state ”h]”(jS)�”}”(hŒ``struct xfrm_state *x``”h]”hë)�”}”(hjó¼h]”hŒstruct xfrm_state *x”…”�”}”(hjõ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjñ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Móhjí¼ubjm)�”}”(hhh]”hÌ)�”}”(hŒ xfrm state”h]”hŒ xfrm state”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½h´Móhj ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjí¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½h´Móhjê¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjμubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj.½h]”hŒ Description”…”�”}”(hj0½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj,½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MõhjμubhÌ)�”}”(hŒ"Authorize deletion of x->security.”h]”hŒ"Authorize deletion of x->security.”…”�”}”(hjD½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MôhjμubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjU½h]”hŒReturn”…”�”}”(hjW½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjS½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MöhjμubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjk½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷hjμubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ!security_locked_down (C function)”Œc.security_locked_down”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ4int security_locked_down (enum lockdown_reason what)”h]”jA)�”}”(hŒ3int security_locked_down(enum lockdown_reason what)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjš½h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj–½h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¼ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©½h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj–½h²hh³j¨½h´M¼ubjj)�”}”(hŒsecurity_locked_down”h]”jp)�”}”(hŒsecurity_locked_down”h]”hŒsecurity_locked_down”…”�”}”(hj»½h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj·½ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj–½h²hh³j¨½h´M¼ubj‹)�”}”(hŒ(enum lockdown_reason what)”h]”j‘)�”}”(hŒenum lockdown_reason what”h]”(jL)�”}”(hjN=h]”hŒenum”…”�”}”(hj×½h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÓ½ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä½h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÓ½ubh)�”}”(hhh]”jp)�”}”(hŒlockdown_reason”h]”hŒlockdown_reason”…”�”}”(hjõ½h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjò½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j÷½Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj½½sbŒc.security_locked_down”†”asbuh1hhjÓ½ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÓ½ubjp)�”}”(hŒwhat”h]”hŒwhat”…”�”}”(hj#¾h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÓ½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjϽubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj–½h²hh³j¨½h´M¼ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj’½h²hh³j¨½h´M¼ubah}”(h]”j�½ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¨½h´M¼hj�½h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ$Check if a kernel feature is allowed”h]”hŒ$Check if a kernel feature is allowed”…”�”}”(hjM¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¼hjJ¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj�½h²hh³j¨½h´M¼ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"je¾j#je¾j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``enum lockdown_reason what`` requested kernel feature **Description** Determine whether a kernel feature that potentially enables arbitrary code execution in kernel space should be permitted. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjo¾h]”hŒ Parameters”…”�”}”(hjq¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjm¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÀhji¾ubjH)�”}”(hhh]”jM)�”}”(hŒ7``enum lockdown_reason what`` requested kernel feature ”h]”(jS)�”}”(hŒ``enum lockdown_reason what``”h]”hë)�”}”(hj޾h]”hŒenum lockdown_reason what”…”�”}”(hj�¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjŒ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M½hjˆ¾ubjm)�”}”(hhh]”hÌ)�”}”(hŒrequested kernel feature”h]”hŒrequested kernel feature”…”�”}”(hj§¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£¾h´M½hj¤¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjˆ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£¾h´M½hj…¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhji¾ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjɾh]”hŒ Description”…”�”}”(hj˾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjǾubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¿hji¾ubhÌ)�”}”(hŒyDetermine whether a kernel feature that potentially enables arbitrary code execution in kernel space should be permitted.”h]”hŒyDetermine whether a kernel feature that potentially enables arbitrary code execution in kernel space should be permitted.”…”�”}”(hjß¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¾hji¾ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjð¾h]”hŒReturn”…”�”}”(hjò¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjî¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÁhji¾ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÂhji¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_bdev_alloc (C function)”Œc.security_bdev_alloc”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ3int security_bdev_alloc (struct block_device *bdev)”h]”jA)�”}”(hŒ2int security_bdev_alloc(struct block_device *bdev)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj5¿h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj1¿h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MËubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD¿h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj1¿h²hh³jC¿h´MËubjj)�”}”(hŒsecurity_bdev_alloc”h]”jp)�”}”(hŒsecurity_bdev_alloc”h]”hŒsecurity_bdev_alloc”…”�”}”(hjV¿h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjR¿ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj1¿h²hh³jC¿h´MËubj‹)�”}”(hŒ(struct block_device *bdev)”h]”j‘)�”}”(hŒstruct block_device *bdev”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjr¿h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjn¿ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjn¿ubh)�”}”(hhh]”jp)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j’¿Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjX¿sbŒc.security_bdev_alloc”†”asbuh1hhjn¿ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°¿h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjn¿ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¾¿h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjn¿ubjp)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjË¿h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjn¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjj¿ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj1¿h²hh³jC¿h´MËubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj-¿h²hh³jC¿h´MËubah}”(h]”j(¿ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jC¿h´MËhj*¿h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ Allocate a block device LSM blob”h]”hŒ Allocate a block device LSM blob”…”�”}”(hjõ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MËhjò¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj*¿h²hh³jC¿h´MËubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j Àj#j Àj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``struct block_device *bdev`` block device **Description** Allocate and attach a security structure to **bdev->bd_security**. The security field is initialized to NULL when the bdev structure is allocated. **Return** Return 0 if operation was successful.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÀh]”hŒ Parameters”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÏhjÀubjH)�”}”(hhh]”jM)�”}”(hŒ+``struct block_device *bdev`` block device ”h]”(jS)�”}”(hŒ``struct block_device *bdev``”h]”hë)�”}”(hj6Àh]”hŒstruct block_device *bdev”…”�”}”(hj8Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj4Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÌhj0Àubjm)�”}”(hhh]”hÌ)�”}”(hŒ block device”h]”hŒ block device”…”�”}”(hjOÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKÀh´MÌhjLÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj0Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKÀh´MÌhj-Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÀubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjqÀh]”hŒ Description”…”�”}”(hjsÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjoÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÎhjÀubhÌ)�”}”(hŒ“Allocate and attach a security structure to **bdev->bd_security**. The security field is initialized to NULL when the bdev structure is allocated.”h]”(hŒ,Allocate and attach a security structure to ”…”�”}”(hj‡Àh²hh³Nh´Nubj2)�”}”(hŒ**bdev->bd_security**”h]”hŒbdev->bd_security”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‡ÀubhŒR. The security field is initialized to NULL when the bdev structure is allocated.”…”�”}”(hj‡Àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÍhjÀubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjªÀh]”hŒReturn”…”�”}”(hj¬Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¨Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÑhjÀubhÌ)�”}”(hŒ%Return 0 if operation was successful.”h]”hŒ%Return 0 if operation was successful.”…”�”}”(hjÀÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÒhjÀubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œsecurity_bdev_free (C function)”Œc.security_bdev_free”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ3void security_bdev_free (struct block_device *bdev)”h]”jA)�”}”(hŒ2void security_bdev_free(struct block_device *bdev)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjïÀh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjëÀh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MåubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÀh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjëÀh²hh³jýÀh´Måubjj)�”}”(hŒsecurity_bdev_free”h]”jp)�”}”(hŒsecurity_bdev_free”h]”hŒsecurity_bdev_free”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj Áubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjëÀh²hh³jýÀh´Måubj‹)�”}”(hŒ(struct block_device *bdev)”h]”j‘)�”}”(hŒstruct block_device *bdev”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj,Áh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj(ÁubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Áh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj(Áubh)�”}”(hhh]”jp)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjJÁh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjGÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jLÁŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÁsbŒc.security_bdev_free”†”asbuh1hhj(ÁubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjÁh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj(Áubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjxÁh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj(Áubjp)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hj…Áh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj(Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj$Áubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjëÀh²hh³jýÀh´Måubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjçÀh²hh³jýÀh´Måubah}”(h]”jâÀah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jýÀh´MåhjäÀh²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree a block device's LSM blob”h]”hŒ Free a block device’s LSM blob”…”�”}”(hj¯Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Måhj¬Áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjäÀh²hh³jýÀh´Måubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÇÁj#jÇÁj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒœ**Parameters** ``struct block_device *bdev`` block device **Description** Deallocate the bdev security structure and set **bdev->bd_security** to NULL.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÑÁh]”hŒ Parameters”…”�”}”(hjÓÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÏÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MéhjËÁubjH)�”}”(hhh]”jM)�”}”(hŒ+``struct block_device *bdev`` block device ”h]”(jS)�”}”(hŒ``struct block_device *bdev``”h]”hë)�”}”(hjðÁh]”hŒstruct block_device *bdev”…”�”}”(hjòÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjîÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MæhjêÁubjm)�”}”(hhh]”hÌ)�”}”(hŒ block device”h]”hŒ block device”…”�”}”(hj Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂh´MæhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjêÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÂh´MæhjçÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjËÁubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj+Âh]”hŒ Description”…”�”}”(hj-Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj)Âubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MèhjËÁubhÌ)�”}”(hŒMDeallocate the bdev security structure and set **bdev->bd_security** to NULL.”h]”(hŒ/Deallocate the bdev security structure and set ”…”�”}”(hjAÂh²hh³Nh´Nubj2)�”}”(hŒ**bdev->bd_security**”h]”hŒbdev->bd_security”…”�”}”(hjIÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjAÂubhŒ to NULL.”…”�”}”(hjAÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MçhjËÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_bdev_setintegrity (C function)”Œc.security_bdev_setintegrity”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒxint security_bdev_setintegrity (struct block_device *bdev, enum lsm_integrity_type type, const void *value, size_t size)”h]”jA)�”}”(hŒwint security_bdev_setintegrity(struct block_device *bdev, enum lsm_integrity_type type, const void *value, size_t size)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚Âh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj~Âh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Âh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj~Âh²hh³j�Âh´M÷ubjj)�”}”(hŒsecurity_bdev_setintegrity”h]”jp)�”}”(hŒsecurity_bdev_setintegrity”h]”hŒsecurity_bdev_setintegrity”…”�”}”(hj£Âh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŸÂubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj~Âh²hh³j�Âh´M÷ubj‹)�”}”(hŒY(struct block_device *bdev, enum lsm_integrity_type type, const void *value, size_t size)”h]”(j‘)�”}”(hŒstruct block_device *bdev”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj¿Âh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj»ÂubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÂh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj»Âubh)�”}”(hhh]”jp)�”}”(hŒ block_device”h]”hŒ block_device”…”�”}”(hjÝÂh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÚÂubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jßÂŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¥ÂsbŒc.security_bdev_setintegrity”†”asbuh1hhj»ÂubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÂh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj»Âubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj»Âubjp)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj»Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·Âubj‘)�”}”(hŒenum lsm_integrity_type type”h]”(jL)�”}”(hjN=h]”hŒenum”…”�”}”(hj1Ãh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj-ÃubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Ãh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj-Ãubh)�”}”(hhh]”jp)�”}”(hŒlsm_integrity_type”h]”hŒlsm_integrity_type”…”�”}”(hjOÃh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjLÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jQÃŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jùÂŒc.security_bdev_setintegrity”†”asbuh1hhj-ÃubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÃh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj-Ãubjp)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj{Ãh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj-Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·Âubj‘)�”}”(hŒconst void *value”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj”Ãh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj�ÃubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Ãh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�ÃubjG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯Ãh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj�ÃubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Ãh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�Ãubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjËÃh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj�Ãubjp)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjØÃh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj�Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·Âubj‘)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jp)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjôÃh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjñÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jöÃŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jùÂŒc.security_bdev_setintegrity”†”asbuh1hhjíÃubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjíÃubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj Äh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjíÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj·Âubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj~Âh²hh³j�Âh´M÷ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjzÂh²hh³j�Âh´M÷ubah}”(h]”juÂah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j�Âh´M÷hjwÂh²hubj)�”}”(hhh]”hÌ)�”}”(hŒSet the device's integrity data”h]”hŒ!Set the device’s integrity data”…”�”}”(hjJÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷hjGÄh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjwÂh²hh³j�Âh´M÷ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jbÄj#jbÄj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXê**Parameters** ``struct block_device *bdev`` block device ``enum lsm_integrity_type type`` type of integrity, e.g. hash digest, signature, etc ``const void *value`` the integrity value ``size_t size`` size of the integrity value **Description** Register a verified integrity measurement of a bdev with LSMs. LSMs should free the previously saved data if **value** is NULL. Please note that the new hook should be invoked every time the security information is updated to keep these data current. For example, in dm-verity, if the mapping table is reloaded and configured to use a different dm-verity target with a new roothash and signing information, the previously stored data in the LSM blob will become obsolete. It is crucial to re-invoke the hook to refresh these data and ensure they are up to date. This necessity arises from the design of device-mapper, where a device-mapper device is first created, and then targets are subsequently loaded into it. These targets can be modified multiple times during the device's lifetime. Therefore, while the LSM blob is allocated during the creation of the block device, its actual contents are not initialized at this stage and can change substantially over time. This includes alterations from data that the LSMs 'trusts' to those they do not, making it essential to handle these changes correctly. Failure to address this dynamic aspect could potentially allow for bypassing LSM checks. **Return** Returns 0 on success, negative values on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjlÄh]”hŒ Parameters”…”�”}”(hjnÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MûhjfÄubjH)�”}”(hhh]”(jM)�”}”(hŒ+``struct block_device *bdev`` block device ”h]”(jS)�”}”(hŒ``struct block_device *bdev``”h]”hë)�”}”(hj‹Äh]”hŒstruct block_device *bdev”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‰Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Møhj…Äubjm)�”}”(hhh]”hÌ)�”}”(hŒ block device”h]”hŒ block device”…”�”}”(hj¤Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Äh´Møhj¡Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj…Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Äh´Møhj‚ÄubjM)�”}”(hŒU``enum lsm_integrity_type type`` type of integrity, e.g. hash digest, signature, etc ”h]”(jS)�”}”(hŒ ``enum lsm_integrity_type type``”h]”hë)�”}”(hjÄÄh]”hŒenum lsm_integrity_type type”…”�”}”(hjÆÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÂÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mùhj¾Äubjm)�”}”(hhh]”hÌ)�”}”(hŒ3type of integrity, e.g. hash digest, signature, etc”h]”hŒ3type of integrity, e.g. hash digest, signature, etc”…”�”}”(hjÝÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙÄh´MùhjÚÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¾Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÙÄh´Mùhj‚ÄubjM)�”}”(hŒ*``const void *value`` the integrity value ”h]”(jS)�”}”(hŒ``const void *value``”h]”hë)�”}”(hjýÄh]”hŒconst void *value”…”�”}”(hjÿÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjûÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Múhj÷Äubjm)�”}”(hhh]”hÌ)�”}”(hŒthe integrity value”h]”hŒthe integrity value”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅh´MúhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj÷Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÅh´Múhj‚ÄubjM)�”}”(hŒ,``size_t size`` size of the integrity value ”h]”(jS)�”}”(hŒ``size_t size``”h]”hë)�”}”(hj6Åh]”hŒ size_t size”…”�”}”(hj8Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj4Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mûhj0Åubjm)�”}”(hhh]”hÌ)�”}”(hŒsize of the integrity value”h]”hŒsize of the integrity value”…”�”}”(hjOÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKÅh´MûhjLÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj0Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKÅh´Mûhj‚Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjfÄubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjqÅh]”hŒ Description”…”�”}”(hjsÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjoÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MýhjfÄubhÌ)�”}”(hX¨Register a verified integrity measurement of a bdev with LSMs. LSMs should free the previously saved data if **value** is NULL. Please note that the new hook should be invoked every time the security information is updated to keep these data current. For example, in dm-verity, if the mapping table is reloaded and configured to use a different dm-verity target with a new roothash and signing information, the previously stored data in the LSM blob will become obsolete. It is crucial to re-invoke the hook to refresh these data and ensure they are up to date. This necessity arises from the design of device-mapper, where a device-mapper device is first created, and then targets are subsequently loaded into it. These targets can be modified multiple times during the device's lifetime. Therefore, while the LSM blob is allocated during the creation of the block device, its actual contents are not initialized at this stage and can change substantially over time. This includes alterations from data that the LSMs 'trusts' to those they do not, making it essential to handle these changes correctly. Failure to address this dynamic aspect could potentially allow for bypassing LSM checks.”h]”(hŒmRegister a verified integrity measurement of a bdev with LSMs. LSMs should free the previously saved data if ”…”�”}”(hj‡Åh²hh³Nh´Nubj2)�”}”(hŒ **value**”h]”hŒvalue”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‡ÅubhX8 is NULL. Please note that the new hook should be invoked every time the security information is updated to keep these data current. For example, in dm-verity, if the mapping table is reloaded and configured to use a different dm-verity target with a new roothash and signing information, the previously stored data in the LSM blob will become obsolete. It is crucial to re-invoke the hook to refresh these data and ensure they are up to date. This necessity arises from the design of device-mapper, where a device-mapper device is first created, and then targets are subsequently loaded into it. These targets can be modified multiple times during the device’s lifetime. Therefore, while the LSM blob is allocated during the creation of the block device, its actual contents are not initialized at this stage and can change substantially over time. This includes alterations from data that the LSMs ‘trusts’ to those they do not, making it essential to handle these changes correctly. Failure to address this dynamic aspect could potentially allow for bypassing LSM checks.”…”�”}”(hj‡Åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MühjfÄubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjªÅh]”hŒReturn”…”�”}”(hj¬Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¨Åubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjfÄubhÌ)�”}”(hŒ1Returns 0 on success, negative values on failure.”h]”hŒ1Returns 0 on success, negative values on failure.”…”�”}”(hjÀÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjfÄubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubeh}”(h]”Œ!linux-security-module-development”ah ]”h"]”Œ!linux security module development”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÆŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”jÛÅjØÅsŒ nametypes”}”jÛʼnsh}”(jØÅh·j3j<jÝjâjjjfjkj‰ jŽ jÍ jÒ j[j`j“j˜jÚjßjjjŒ j‘ jy#j~#jå%jê%jH*jM*jÞ-jã-j†1j‹1j›4j 4jÙ7jÞ7j7:j<:ju<jz<jþ?j@jðBjõBj¬Ej±EjîHjóHjKj KjQMjVMj¹Oj¾OjkRjpRj«Uj°Uj³Wj¸WjÅZjÊZjX\j]\j¥^jª^jó`jø`j˜bj�bjÓdjØdjågjêgj‰jjŽjj ljlj‹mj�mj/pj4pjÓrjØrjHujMuj™xjžxjA{jF{j’}j—}j€j €jæ‚jë‚j+…j0…jp‡ju‡jÙ‰jÞ‰jKŒjPŒj–�j›�jä‘jé‘jv“j{“jž”j£”jÆ•jË•j]—jb—j®˜j³˜jý™jšju›jz›j˜�j��jŸjŸj…¡jŠ¡jè¤jí¤j»§jÀ§j0ªj5ªj­j!­j˜¯j�¯j)²j.²j®³j³³jÿ´jµjÞ·jã·jq¹jv¹jæ»jë»j�½j’½j(¿j-¿jâÀjçÀjuÂjzÂuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.