€•Œ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´MóubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjoh²hh³j�h´Móubjj)�”}”(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´Móubj‹)�”}”(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´Móubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjkh²hh³j�h´Móubah}”(h]”jfah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j�h´Móhjhh²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´Móhjrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjhh²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 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´M÷hj‘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´Môhj°ubjm)�”}”(hhh]”hÌ)�”}”(hŒfilesystem superblock”h]”hŒfilesystem superblock”…”�”}”(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Œ%``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´Mõhjé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´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Œ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´Möhj‘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´Mùhj‘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´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_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´MaubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj’ h²hh³j¤ h´Maubjj)�”}”(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´Maubj‹)�”}”(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´Maubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjŽ h²hh³j¤ h´Maubah}”(h]”j‰ ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¤ h´Mahj‹ 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´MahjD h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj‹ h²hh³j¤ h´Maubeh}”(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´Mehjc 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´Mbhj‚ ubjm)�”}”(hhh]”hÌ)�”}”(hŒfilesystem superblock”h]”hŒfilesystem superblock”…”�”}”(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Œ(``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´Mchj» 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´Mchj× ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj» ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖ h´Mchj 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´Mdhjô 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´Mdhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j h´Mdhj 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´Mehj- 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´MehjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj- ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH h´Mehj 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´Mghjc 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´Mfhjc 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´Mhhjc 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´Mihjc 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´Mhjubjm)�”}”(hhh]”hÌ)�”}”(hŒsource superblock”h]”hŒsource superblock”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+h´Mhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j+h´Mhj 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´MóhjÞ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´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_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´M hj7ubhÌ)�”}”(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 hj7ubeh}”(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´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjãh²hh³jõh´Mubjj)�”}”(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´Mubj‹)�”}”(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´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Œ!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´MhjDh²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()�”}”(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´MhjcubjH)�”}”(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´Mhj‚ubjm)�”}”(hhh]”hÌ)�”}”(hŒ the inode”h]”hŒ the inode”…”�”}”(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´MhjubjM)�”}”(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´Mhj»ubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(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´MhjubjM)�”}”(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´Mhjô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´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jh´MhjubjM)�”}”(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´Mhj-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´MhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jHh´MhjubjM)�”}”(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´Mhjfubjm)�”}”(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´Mhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�h´Mhjubeh}”(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´MhjcubhÌ)�”}”(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´M%hjcubhÌ)�”}”(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´M0hjcubeh}”(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´MyubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjh²hh³j0h´Myubjj)�”}”(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´Myubj‹)�”}”(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´Myubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjh²hh³j0h´Myubah}”(h]”jah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j0h´Myhjh²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´Myhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjh²hh³j0h´Myubeh}”(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´MzhjAubjm)�”}”(hhh]”hÌ)�”}”(hŒparent directory”h]”hŒparent directory”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\h´Mzhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j\h´Mzhj>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´Mhj"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´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_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´Môubj‹)�”}”(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´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 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´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** ``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´Møhj¥(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´MõhjÄ(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´Mõhjà(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÄ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jß(h´MõhjÁ(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´Möhjý(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´Möhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjý(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j)h´MöhjÁ(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´M÷hj6)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´M÷hjR)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj6)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ)h´M÷hjÁ(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´Møhjo)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´Møhj‹)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjo)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠ)h´MøhjÁ(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´Mùhj¨)ubjm)�”}”(hhh]”hÌ)�”}”(hŒflags”h]”hŒflags”…”�”}”(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Œ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ŒRint security_inode_create (struct inode *dir, struct dentry *dentry, umode_t mode)”h]”jA)�”}”(hŒQint security_inode_create(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´MPubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd*h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjQ*h²hh³jc*h´MPubjj)�”}”(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´MPubj‹)�”}”(hŒ8(struct inode *dir, struct dentry *dentry, umode_t mode)”h]”(j‘)�”}”(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�)�”}”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Œ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Œ ”…”�”}”(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Œ*”…”�”}”(hjN+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”…”�”}”(hjw+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjt+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jy+Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jÌ*Œc.security_inode_create”†”asbuh1hhjp+ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•+h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjp+ubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj£+h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjp+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´MPubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjM*h²hh³jc*h´MPubah}”(h]”jH*ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jc*h´MPhjJ*h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ#Check if creating a file is allowed”h]”hŒ#Check if creating 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´MPhjÊ+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjJ*h²hh³jc*h´MPubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jå+j#jå+j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX**Parameters** ``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)�”}”(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´MThjé+ubjH)�”}”(hhh]”(jM)�”}”(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´MQhj,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´MQhj$,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j#,h´MQhj,ubjM)�”}”(hŒ1``struct dentry *dentry`` the file being created ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hjG,h]”hŒstruct dentry *dentry”…”�”}”(hjI,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjE,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MRhjA,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´MRhj],ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjA,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j\,h´MRhj,ubjM)�”}”(hŒ%``umode_t mode`` requested 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´MShjz,ubjm)�”}”(hhh]”hÌ)�”}”(hŒrequested file mode”h]”hŒrequested file mode”…”�”}”(hj™,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•,h´MShj–,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjz,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•,h´MShj,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´MUhjé+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´MThjé+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´MVhjé+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´MWhjé+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ŒQint security_inode_mkdir (struct inode *dir, struct dentry *dentry, umode_t mode)”h]”jA)�”}”(hŒPint security_inode_mkdir(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Œ ”…”�”}”(hj6-h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj#-h²hh³j5-h´M¦ubjj)�”}”(hŒsecurity_inode_mkdir”h]”jp)�”}”(hŒsecurity_inode_mkdir”h]”hŒsecurity_inode_mkdir”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjD-ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj#-h²hh³j5-h´M¦ubj‹)�”}”(hŒ8(struct inode *dir, struct dentry *dentry, umode_t mode)”h]”(j‘)�”}”(hŒstruct inode *dir”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjd-h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj`-ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq-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ƒjJ-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Œ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Œ ”…”�”}”(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_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”…”�”}”(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ž-Œc.security_inode_mkdir”†”asbuh1hhjB.ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjB.ubjp)�”}”(hŒmode”h]”hŒmode”…”�”}”(hju.h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjB.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj\-ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj#-h²hh³j5-h´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj-h²hh³j5-h´M¦ubah}”(h]”j-ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j5-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³j5-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 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)�”}”(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 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§hj×.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”…”�”}”(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Œ$``umode_t mode`` new directory mode ”h]”(jS)�”}”(hŒ``umode_t mode``”h]”hë)�”}”(hjR/h]”hŒ umode_t mode”…”�”}”(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Œnew directory mode”h]”hŒnew directory mode”…”�”}”(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Œ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£/h²hh³Nh´Nubj2)�”}”(hŒ**dir**”h]”hŒdir”…”�”}”(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_inode_setattr (C function)”Œc.security_inode_setattr”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ_int security_inode_setattr (struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”jA)�”}”(hŒ^int security_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj0h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj0h²hh³j0h´M6ubjj)�”}”(hŒsecurity_inode_setattr”h]”jp)�”}”(hŒsecurity_inode_setattr”h]”hŒsecurity_inode_setattr”…”�”}”(hj,0h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj(0ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj0h²hh³j0h´M6ubj‹)�”}”(hŒD(struct mnt_idmap *idmap, struct dentry *dentry, struct iattr *attr)”h]”(j‘)�”}”(hŒstruct mnt_idmap *idmap”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjH0h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjD0ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU0h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjD0ubh)�”}”(hhh]”jp)�”}”(hŒ mnt_idmap”h]”hŒ mnt_idmap”…”�”}”(hjf0h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjc0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jh0Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj.0sbŒc.security_inode_setattr”†”asbuh1hhjD0ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†0h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjD0ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj”0h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjD0ubjp)�”}”(hŒidmap”h]”hŒidmap”…”�”}”(hj¡0h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjD0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj@0ubj‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjº0h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj¶0ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ0h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶0ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjØ0h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÕ0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÚ0Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j‚0Œc.security_inode_setattr”†”asbuh1hhj¶0ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö0h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¶0ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¶0ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¶0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj@0ubj‘)�”}”(hŒstruct iattr *attr”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj*1h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj&1ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj71h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj&1ubh)�”}”(hhh]”jp)�”}”(hŒiattr”h]”hŒiattr”…”�”}”(hjH1h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjE1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jJ1Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j‚0Œc.security_inode_setattr”†”asbuh1hhj&1ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf1h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj&1ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjt1h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj&1ubjp)�”}”(hŒattr”h]”hŒattr”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj&1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj@0ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj0h²hh³j0h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj0h²hh³j0h´M6ubah}”(h]”jþ/ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j0h´M6hj0h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if setting file attributes is allowed”h]”hŒ+Check if setting file attributes is allowed”…”�”}”(hj«1h²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¨1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj0h²hh³j0h´M6ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÃ1j#jÃ1j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXË**Parameters** ``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)�”}”(hjÍ1h]”hŒ Parameters”…”�”}”(hjÏ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjË1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M:hjÇ1ubjH)�”}”(hhh]”(jM)�”}”(hŒ/``struct mnt_idmap *idmap`` idmap of the mount ”h]”(jS)�”}”(hŒ``struct mnt_idmap *idmap``”h]”hë)�”}”(hjì1h]”hŒstruct mnt_idmap *idmap”…”�”}”(hjî1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjê1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M7hjæ1ubjm)�”}”(hhh]”hÌ)�”}”(hŒidmap of the mount”h]”hŒidmap of the mount”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j2h´M7hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjæ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j2h´M7hjã1ubjM)�”}”(hŒ``struct dentry *dentry`` file ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj%2h]”hŒstruct dentry *dentry”…”�”}”(hj'2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj#2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M8hj2ubjm)�”}”(hhh]”hÌ)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj>2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:2h´M8hj;2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j:2h´M8hjã1ubjM)�”}”(hŒ&``struct iattr *attr`` new attributes ”h]”(jS)�”}”(hŒ``struct iattr *attr``”h]”hë)�”}”(hj^2h]”hŒstruct iattr *attr”…”�”}”(hj`2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj\2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M9hjX2ubjm)�”}”(hhh]”hÌ)�”}”(hŒnew attributes”h]”hŒnew attributes”…”�”}”(hjw2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js2h´M9hjt2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjX2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³js2h´M9hjã1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÇ1ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj™2h]”hŒ Description”…”�”}”(hj›2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj—2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M;hjÇ1ubhÌ)�”}”(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).”…”�”}”(hj¯2h²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Ç1ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÀ2h]”hŒReturn”…”�”}”(hjÂ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¾2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M?hjÇ1ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjÖ2h²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Ç1ubeh}”(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”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj3h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÓubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj3h²hh³j3h´MÓubjj)�”}”(hŒsecurity_inode_listsecurity”h]”jp)�”}”(hŒsecurity_inode_listsecurity”h]”hŒsecurity_inode_listsecurity”…”�”}”(hj&3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj"3ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj3h²hh³j3h´MÓubj‹)�”}”(hŒ=(struct inode *inode, char **buffer, ssize_t *remaining_size)”h]”(j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjB3h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj>3ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO3h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj>3ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj`3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj]3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jb3Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj(3sbŒc.security_inode_listsecurity”†”asbuh1hhj>3ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€3h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj>3ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjŽ3h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj>3ubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj›3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj>3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj:3ubj‘)�”}”(hŒ char **buffer”h]”(jG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj´3h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj°3ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂ3h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj°3ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÐ3h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj°3ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÝ3h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj°3ubjp)�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjê3h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj°3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj:3ubj‘)�”}”(hŒssize_t *remaining_size”h]”(h)�”}”(hhh]”jp)�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j4Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j|3Œc.security_inode_listsecurity”†”asbuh1hhjÿ3ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$4h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÿ3ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj24h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÿ3ubjp)�”}”(hŒremaining_size”h]”hŒremaining_size”…”�”}”(hj?4h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÿ3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj:3ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj3h²hh³j3h´MÓubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjý2h²hh³j3h´MÓubah}”(h]”jø2ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j3h´MÓhjú2h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ#List the xattr security label names”h]”hŒ#List the xattr security label names”…”�”}”(hji4h²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Óhjf4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjú2h²hh³j3h´MÓubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j�4j#j�4j$‰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‹4h]”hŒ Parameters”…”�”}”(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´M×hj…4ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hjª4h]”hŒstruct inode *inode”…”�”}”(hj¬4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¨4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÔhj¤4ubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÃ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿4h´MÔhjÀ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¤4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¿4h´MÔhj¡4ubjM)�”}”(hŒ$``char **buffer`` pointer to buffer ”h]”(jS)�”}”(hŒ``char **buffer``”h]”hë)�”}”(hjã4h]”hŒ char **buffer”…”�”}”(hjå4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjá4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÕhjÝ4ubjm)�”}”(hhh]”hÌ)�”}”(hŒpointer to buffer”h]”hŒpointer to buffer”…”�”}”(hjü4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jø4h´MÕhjù4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÝ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jø4h´MÕhj¡4ubjM)�”}”(hŒ@``ssize_t *remaining_size`` pointer to remaining size of buffer ”h]”(jS)�”}”(hŒ``ssize_t *remaining_size``”h]”hë)�”}”(hj5h]”hŒssize_t *remaining_size”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÖhj5ubjm)�”}”(hhh]”hÌ)�”}”(hŒ#pointer to remaining size of buffer”h]”hŒ#pointer to remaining size of buffer”…”�”}”(hj55h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j15h´MÖhj25ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j15h´MÖhj¡4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj…4ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjW5h]”hŒ Description”…”�”}”(hjY5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjU5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MØhj…4ubhÌ)�”}”(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 ”…”�”}”(hjm5h²hh³Nh´Nubj2)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hju5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjm5ubhŒ into ”…”�”}”(hjm5h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ *(**buffer**”h]”hŒ (**buffer*”…”�”}”(hj‰5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡5hjm5ubhŒ). The remaining size of ”…”�”}”(hjm5h²hh³Nh´Nubj2)�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hj›5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjm5ubhŒ is specified by ”…”�”}”(hjm5h²hh³Nh´Nubjˆ5)�”}”(hŒ*(**remaining_size**”h]”hŒ(**remaining_size*”…”�”}”(hj­5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡5hjm5ubhŒ). ”…”�”}”(hjm5h²hh³Nh´Nubjˆ5)�”}”(hŒ *(**buffer**”h]”hŒ (**buffer*”…”�”}”(hj¿5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡5hjm5ubhŒB) may be NULL to request the size of the buffer required. Updates ”…”�”}”(hjm5h²hh³Nh´Nubjˆ5)�”}”(hŒ *(**buffer**”h]”hŒ (**buffer*”…”�”}”(hjÑ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡5hjm5ubhŒ) and ”…”�”}”(hjm5h²hh³Nh´Nubjˆ5)�”}”(hŒ*(**remaining_size**”h]”hŒ(**remaining_size*”…”�”}”(hjã5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡5hjm5ubhŒ).”…”�”}”(hjm5h²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…4ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjþ5h]”hŒReturn”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjü5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÜhj…4ubhÌ)�”}”(hŒ+Returns 0 on success, or -errno on failure.”h]”hŒ+Returns 0 on success, or -errno on failure.”…”�”}”(hj6h²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…4ubeh}”(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”…”�”}”(hjC6h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj?6h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MõubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR6h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj?6h²hh³jQ6h´Mõubjj)�”}”(hŒsecurity_inode_copy_up”h]”jp)�”}”(hŒsecurity_inode_copy_up”h]”hŒsecurity_inode_copy_up”…”�”}”(hjd6h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj`6ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj?6h²hh³jQ6h´Mõubj‹)�”}”(hŒ'(struct dentry *src, struct cred **new)”h]”(j‘)�”}”(hŒstruct dentry *src”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj€6h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj|6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj|6ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjž6h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj›6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j 6Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjf6sbŒc.security_inode_copy_up”†”asbuh1hhj|6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾6h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj|6ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÌ6h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj|6ubjp)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÙ6h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj|6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjx6ubj‘)�”}”(hŒstruct cred **new”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjò6h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjî6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ6h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjî6ubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj 7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j7Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jº6Œc.security_inode_copy_up”†”asbuh1hhjî6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.7h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjî6ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj<7h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjî6ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjI7h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjî6ubjp)�”}”(hŒnew”h]”hŒnew”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjî6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjx6ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj?6h²hh³jQ6h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj;6h²hh³jQ6h´Mõubah}”(h]”j66ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jQ6h´Mõhj86h²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€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}7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj86h²hh³jQ6h´Mõubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j˜7j#j˜7j$‰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)�”}”(hj¢7h]”hŒ Parameters”…”�”}”(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œ7ubjH)�”}”(hhh]”(jM)�”}”(hŒ4``struct dentry *src`` union dentry of copy-up file ”h]”(jS)�”}”(hŒ``struct dentry *src``”h]”hë)�”}”(hjÁ7h]”hŒstruct dentry *src”…”�”}”(hjÃ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¿7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Möhj»7ubjm)�”}”(hhh]”hÌ)�”}”(hŒunion dentry of copy-up file”h]”hŒunion dentry of copy-up file”…”�”}”(hjÚ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖ7h´Möhj×7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj»7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÖ7h´Möhj¸7ubjM)�”}”(hŒ*``struct cred **new`` newly created creds ”h]”(jS)�”}”(hŒ``struct cred **new``”h]”hë)�”}”(hjú7h]”hŒstruct cred **new”…”�”}”(hjü7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjø7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M÷hjô7ubjm)�”}”(hhh]”hÌ)�”}”(hŒnewly created creds”h]”hŒnewly created creds”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8h´M÷hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjô7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8h´M÷hj¸7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjœ7ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj58h]”hŒ Description”…”�”}”(hj78h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj38ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mùhjœ7ubhÌ)�”}”(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.”…”�”}”(hjK8h²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œ7ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj\8h]”hŒReturn”…”�”}”(hj^8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjZ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mýhjœ7ubhÌ)�”}”(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.”…”�”}”(hjr8h²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œ7ubeh}”(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”…”�”}”(hj¡8h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj�8h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°8h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�8h²hh³j¯8h´M ubjj)�”}”(hŒsecurity_inode_copy_up_xattr”h]”jp)�”}”(hŒsecurity_inode_copy_up_xattr”h]”hŒsecurity_inode_copy_up_xattr”…”�”}”(hjÂ8h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¾8ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj�8h²hh³j¯8h´M ubj‹)�”}”(hŒ&(struct dentry *src, const char *name)”h]”(j‘)�”}”(hŒstruct dentry *src”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Œdentry”h]”hŒdentry”…”�”}”(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�)�”}”jƒjÄ8sbŒc.security_inode_copy_up_xattr”†”asbuh1hhjÚ8ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÚ8ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj*9h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÚ8ubjp)�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj79h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÚ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÖ8ubj‘)�”}”(hŒconst char *name”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hjP9h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjL9ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]9h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjL9ubjG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjk9h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjL9ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjL9ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‡9h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjL9ubjp)�”}”(hŒname”h]”hŒname”…”�”}”(hj”9h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjL9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÖ8ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj�8h²hh³j¯8h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj™8h²hh³j¯8h´M ubah}”(h]”j”8ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¯8h´M hj–8h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Filter xattrs in an overlayfs copy-up op”h]”hŒ(Filter xattrs in 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–8h²hh³j¯8h´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 ``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à9h]”hŒ Parameters”…”�”}”(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Ú9ubjH)�”}”(hhh]”(jM)�”}”(hŒ4``struct dentry *src`` union dentry of copy-up file ”h]”(jS)�”}”(hŒ``struct dentry *src``”h]”hë)�”}”(hjÿ9h]”hŒstruct dentry *src”…”�”}”(hj:h²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Œ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ù9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j:h´M hjö9ubjM)�”}”(hŒ ``const char *name`` xattr name ”h]”(jS)�”}”(hŒ``const char *name``”h]”hë)�”}”(hj8:h]”hŒconst char *name”…”�”}”(hj::h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj6:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj2:ubjm)�”}”(hhh]”hÌ)�”}”(hŒ xattr name”h]”hŒ xattr name”…”�”}”(hjQ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM:h´M hjN:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj2:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jM:h´M hjö9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÚ9ubhÌ)�”}”(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 hjÚ9ubhÌ)�”}”(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Ú9ubhÌ)�”}”(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Ú9ubhÌ)�”}”(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.”…”�”}”(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_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´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_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´M 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”…”�”}”(hj7;h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj;ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD;h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj;ubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjU;h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjR;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jW;Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj;sbŒc.security_inode_setintegrity”†”asbuh1hhj;ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hju;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”…”�”}”(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)�”}”(hŒenum”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Œlsm_integrity_type”h]”hŒlsm_integrity_type”…”�”}”(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�]”jq;Œc.security_inode_setintegrity”†”asbuh1hhj¥;ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ;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Œ ”…”�”}”(hj6<h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj <ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjD<h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj <ubjp)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjQ<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”…”�”}”(hjm<h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjj<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jo<Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jq;Œc.security_inode_setintegrity”†”asbuh1hhjf<ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹<h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjf<ubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj™<h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjf<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ŒSet the inode's integrity data”h]”hŒ Set the inode’s integrity data”…”�”}”(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** ``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´M! hjþ<ubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒ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! 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" hj7=ubjm)�”}”(hhh]”hÌ)�”}”(hŒ3type of integrity, e.g. hash digest, signature, etc”h]”hŒ3type of integrity, e.g. hash digest, signature, etc”…”�”}”(hjV=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR=h´M" hjS=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj7=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jR=h´M" hjû<ubjM)�”}”(hŒ*``const void *value`` the integrity value ”h]”(jS)�”}”(hŒ``const void *value``”h]”hë)�”}”(hjv=h]”hŒconst void *value”…”�”}”(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Œ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&]”uh1jlhjp=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ë)�”}”(hj¯=h]”hŒ size_t size”…”�”}”(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Œsize of the integrity value”h]”hŒsize of 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û<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.”…”�”}”(hj9>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”…”�”}”(hjh>h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjd>h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw>h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjd>h²hh³jv>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‰uh1jihjd>h²hh³jv>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”…”�”}”(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Œfile”h]”hŒfile”…”�”}”(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_file_ioctl”†”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Œfile”h]”hŒfile”…”�”}”(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 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”…”�”}”(hj3?h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj?ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA?h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj?ubjp)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjO?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”…”�”}”(hjh?h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjd?ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjd?ubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hj„?h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjd?ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’?h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjd?ubjp)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjd?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�>ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjd>h²hh³jv>h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj`>h²hh³jv>h´M ubah}”(h]”j[>ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jv>h´M hj]>h²hubj)�”}”(hhh]”hÌ)�”}”(hŒCheck if an ioctl is allowed”h]”hŒCheck if an ioctl 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³jv>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 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ì?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 file *file`` associated file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hj @h]”hŒstruct file *file”…”�”}”(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Œassociated file”h]”hŒassociated 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Œ``unsigned int cmd`` ioctl cmd ”h]”(jS)�”}”(hŒ``unsigned int cmd``”h]”hë)�”}”(hjD@h]”hŒunsigned int cmd”…”�”}”(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Œ ioctl cmd”h]”hŒ ioctl cmd”…”�”}”(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@ubjM)�”}”(hŒ&``unsigned long arg`` ioctl arguments ”h]”(jS)�”}”(hŒ``unsigned long arg``”h]”hë)�”}”(hj}@h]”hŒunsigned long arg”…”�”}”(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Å hjw@ubjm)�”}”(hhh]”hÌ)�”}”(hŒioctl arguments”h]”hŒioctl arguments”…”�”}”(hj–@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’@h´MÅ hj“@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjw@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Ì)�”}”(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 ”…”�”}”(hjÎ@h²hh³Nh´Nubj2)�”}”(hŒ**file**”h]”hŒfile”…”�”}”(hjÖ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÎ@ubhŒ . Note that ”…”�”}”(hjÎ@h²hh³Nh´Nubj2)�”}”(hŒ**arg**”h]”hŒarg”…”�”}”(hjè@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÎ@ubhŒd sometimes represents a user space pointer; in other cases, it may be a simple integer value. When ”…”�”}”(hjÎ@h²hh³Nh´Nubj2)�”}”(hŒ**arg**”h]”hŒarg”…”�”}”(hjú@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÎ@ubhŒQ represents a user space pointer, it should never be used by 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´MÆ hjæ?ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjAh]”hŒReturn”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjAubah}”(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+Ah²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_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”…”�”}”(hjZAh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjVAh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÕ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiAh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVAh²hh³jhAh´MÕ ubjj)�”}”(hŒsecurity_file_ioctl_compat”h]”jp)�”}”(hŒsecurity_file_ioctl_compat”h]”hŒsecurity_file_ioctl_compat”…”�”}”(hj{Ah²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjwAubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjVAh²hh³jhAh´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—Ah²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj“AubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Ah²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj“Aubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjµAh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj²Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j·AŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj}AsbŒc.security_file_ioctl_compat”†”asbuh1hhj“AubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕAh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj“Aubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjãAh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj“Aubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjðAh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj“Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Aubj‘)�”}”(hŒunsigned int cmd”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjBubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjBubjG)�”}”(hŒint”h]”hŒint”…”�”}”(hj%Bh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjBubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjBubjp)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjABh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Aubj‘)�”}”(hŒunsigned long arg”h]”(jG)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjZBh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjVBubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhBh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVBubjG)�”}”(hŒlong”h]”hŒlong”…”�”}”(hjvBh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjVBubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Bh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVBubjp)�”}”(hŒarg”h]”hŒarg”…”�”}”(hj’Bh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjVBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Aubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjVAh²hh³jhAh´MÕ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjRAh²hh³jhAh´MÕ ubah}”(h]”jMAah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jhAh´MÕ hjOAh²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¼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¹Bh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjOAh²hh³jhAh´MÕ ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÔBj#jÔBj$‰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ÞBh]”hŒ Parameters”…”�”}”(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ØBubjH)�”}”(hhh]”(jM)�”}”(hŒ&``struct file *file`` associated file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hjýBh]”hŒstruct file *file”…”�”}”(hjÿBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjûBubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÖ hj÷Bubjm)�”}”(hhh]”hÌ)�”}”(hŒassociated file”h]”hŒassociated file”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCh´MÖ hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj÷Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jCh´MÖ hjôBubjM)�”}”(hŒ``unsigned int cmd`` ioctl cmd ”h]”(jS)�”}”(hŒ``unsigned int cmd``”h]”hë)�”}”(hj6Ch]”hŒunsigned int cmd”…”�”}”(hj8Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj4Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M× hj0Cubjm)�”}”(hhh]”hÌ)�”}”(hŒ ioctl cmd”h]”hŒ ioctl cmd”…”�”}”(hjOCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKCh´M× hjLCubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj0Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jKCh´M× hjôBubjM)�”}”(hŒ&``unsigned long arg`` ioctl arguments ”h]”(jS)�”}”(hŒ``unsigned long arg``”h]”hë)�”}”(hjoCh]”hŒunsigned long arg”…”�”}”(hjqCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjmCubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MØ hjiCubjm)�”}”(hhh]”hÌ)�”}”(hŒioctl arguments”h]”hŒioctl arguments”…”�”}”(hjˆC•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„Ch´MØ hj…Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjiCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j„Ch´MØ hjôBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjØBubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjªCh]”hŒ Description”…”�”}”(hj¬Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¨Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÚ hjØBubhÌ)�”}”(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.”…”�”}”(hjÀCh²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ØBubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjÑCh]”hŒReturn”…”�”}”(hjÓCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÏCubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÜ hjØBubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjçCh²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ØBubeh}”(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”…”�”}”(hjDh²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Œ ”…”�”}”(hj%Dh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjDh²hh³j$Dh´M ubjj)�”}”(hŒsecurity_mmap_backing_file”h]”jp)�”}”(hŒsecurity_mmap_backing_file”h]”hŒsecurity_mmap_backing_file”…”�”}”(hj7Dh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj3Dubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjDh²hh³j$Dh´M 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”…”�”}”(hjSDh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjODubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Dh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjODubh)�”}”(hhh]”jp)�”}”(hŒvm_area_struct”h]”hŒvm_area_struct”…”�”}”(hjqDh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjnDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jsDŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj9DsbŒc.security_mmap_backing_file”†”asbuh1hhjODubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘Dh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjODubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjŸDh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjODubjp)�”}”(hŒvma”h]”hŒvma”…”�”}”(hj¬Dh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjODubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjKDubj‘)�”}”(hŒstruct file *backing_file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÅDh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÁDubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒDh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÁDubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjãDh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjàDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jåDŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�DŒc.security_mmap_backing_file”†”asbuh1hhjÁDubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÁDubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÁDubjp)�”}”(hŒ backing_file”h]”hŒ backing_file”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÁDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjKDubj‘)�”}”(hŒstruct file *user_file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj5Eh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj1EubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBEh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj1Eubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjSEh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjPEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jUEŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�DŒc.security_mmap_backing_file”†”asbuh1hhj1EubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqEh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj1Eubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj1Eubjp)�”}”(hŒ user_file”h]”hŒ user_file”…”�”}”(hjŒEh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj1Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjKDubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjDh²hh³j$Dh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjDh²hh³j$Dh´M ubah}”(h]”j Dah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j$Dh´M hj Dh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if mmap'ing a backing file is allowed”h]”hŒ-Check if mmap’ing a backing file is allowed”…”�”}”(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³Eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj Dh²hh³j$Dh´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÎEj#jÎEj$‰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ØEh]”hŒ Parameters”…”�”}”(hjÚEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÖEubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjÒEubjH)�”}”(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÷Eh]”hŒstruct vm_area_struct *vma”…”�”}”(hjùEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjõEubah}”(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Œ(the vm_area_struct for the mmap'd region”h]”hŒ*the vm_area_struct for the mmap’d region”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Fh´M hj Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjñEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j Fh´M hjîEubjM)�”}”(hŒ<``struct file *backing_file`` the backing file being mmap'd ”h]”(jS)�”}”(hŒ``struct file *backing_file``”h]”hë)�”}”(hj0Fh]”hŒstruct file *backing_file”…”�”}”(hj2Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj.Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hj*Fubjm)�”}”(hhh]”hÌ)�”}”(hŒthe backing file being mmap'd”h]”hŒthe backing file being mmap’d”…”�”}”(hjIFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEFh´M hjFFubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj*Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEFh´M hjîEubjM)�”}”(hŒ6``struct file *user_file`` the user file being mmap'd ”h]”(jS)�”}”(hŒ``struct file *user_file``”h]”hë)�”}”(hjiFh]”hŒstruct file *user_file”…”�”}”(hjkFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjgFubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjcFubjm)�”}”(hhh]”hÌ)�”}”(hŒthe user file being mmap'd”h]”hŒthe user file being mmap’d”…”�”}”(hj‚Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~Fh´M hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjcFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j~Fh´M hjîEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÒEubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj¤Fh]”hŒ Description”…”�”}”(hj¦Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¢Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjÒEubhÌ)�”}”(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ºFh²hh³Nh´Nubj2)�”}”(hŒ**backing_file**”h]”hŒ backing_file”…”�”}”(hjÂFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjºFubhŒ6. It is important to note that the mmap operation on ”…”�”}”(hjºFh²hh³Nh´Nubj2)�”}”(hŒ **user_file**”h]”hŒ user_file”…”�”}”(hjÔFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjºFubhŒ% has already been authorized and the ”…”�”}”(hjºFh²hh³Nh´Nubj2)�”}”(hŒ**vma->vm_file**”h]”hŒ vma->vm_file”…”�”}”(hjæFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjºFubhŒ has been set to ”…”�”}”(hjºFh²hh³Nh´Nubj2)�”}”(hŒ**backing_file**”h]”hŒ backing_file”…”�”}”(hjøFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjºFubhŒ.”…”�”}”(hjºFh²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ÒEubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjGh]”hŒReturn”…”�”}”(hjGh²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$ hjÒEubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj)Gh²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ÒEubeh}”(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”…”�”}”(hjXGh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjTGh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M· ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgGh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjTGh²hh³jfGh´M· ubjj)�”}”(hŒsecurity_file_post_open”h]”jp)�”}”(hŒsecurity_file_post_open”h]”hŒsecurity_file_post_open”…”�”}”(hjyGh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjuGubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjTGh²hh³jfGh´M· ubj‹)�”}”(hŒ(struct file *file, int mask)”h]”(j‘)�”}”(hŒstruct file *file”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj•Gh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj‘GubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Gh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘Gubh)�”}”(hhh]”jp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj³Gh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj°Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jµGŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj{GsbŒc.security_file_post_open”†”asbuh1hhj‘GubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓGh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‘Gubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjáGh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‘Gubjp)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjîGh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘Gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Gubj‘)�”}”(hŒint mask”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjHubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjHubjp)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj#Hh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj�Gubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjTGh²hh³jfGh´M· ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjPGh²hh³jfGh´M· ubah}”(h]”jKGah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jfGh´M· hjMGh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ(Evaluate a file after it has been opened”h]”hŒ(Evaluate a file after it has been opened”…”�”}”(hjMHh²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· hjJHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjMGh²hh³jfGh´M· ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jeHj#jeHj$‰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)�”}”(hjoHh]”hŒ Parameters”…”�”}”(hjqHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjmHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M» hjiHubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct file *file`` the file ”h]”(jS)�”}”(hŒ``struct file *file``”h]”hë)�”}”(hjŽHh]”hŒstruct file *file”…”�”}”(hj�Hh²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´M¸ hjˆHubjm)�”}”(hhh]”hÌ)�”}”(hŒthe file”h]”hŒthe file”…”�”}”(hj§Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£Hh´M¸ hj¤Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjˆHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j£Hh´M¸ hj…HubjM)�”}”(hŒ``int mask`` access mask ”h]”(jS)�”}”(hŒ ``int mask``”h]”hë)�”}”(hjÇHh]”hŒint mask”…”�”}”(hjÉHh²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´M¹ hjÁHubjm)�”}”(hhh]”hÌ)�”}”(hŒ access mask”h]”hŒ access mask”…”�”}”(hjàHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜHh´M¹ hjÝHubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÁHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÜHh´M¹ hj…Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjiHubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjIh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M» hjiHubhÌ)�”}”(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.”…”�”}”(hjIh²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º hjiHubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj)Ih]”hŒReturn”…”�”}”(hj+Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj'Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¾ hjiHubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(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¿ hjiHubeh}”(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”…”�”}”(hjnIh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjjIh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MJ ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Ih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjjIh²hh³j|Ih´MJ ubjj)�”}”(hŒsecurity_cred_getsecid”h]”jp)�”}”(hŒsecurity_cred_getsecid”h]”hŒsecurity_cred_getsecid”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‹Iubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjjIh²hh³j|Ih´MJ ubj‹)�”}”(hŒ"(const struct cred *c, u32 *secid)”h]”(j‘)�”}”(hŒconst struct cred *c”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(hj«Ih²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj§IubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸Ih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj§IubjL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÆIh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj§IubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓIh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj§Iubh)�”}”(hhh]”jp)�”}”(hŒcred”h]”hŒcred”…”�”}”(hjäIh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjáIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jæIŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj‘IsbŒc.security_cred_getsecid”†”asbuh1hhj§IubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj§Iubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj§Iubjp)�”}”(hjh]”hŒc”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj§Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj£Iubj‘)�”}”(hŒ u32 *secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj:Jh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj7Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jVh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj:Vubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjVh²hh³j+Vh´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”…”�”}”(hjZVh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjVVubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhVh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVVubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjvVh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjVVubjp)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjƒVh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjVVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjRVubj‘)�”}”(hŒ loff_t size”h]”(h)�”}”(hhh]”jp)�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(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�)�”}”jƒj@VsbŒ c.security_kernel_post_load_data”†”asbuh1hhj˜VubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Vh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj˜Vubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÍVh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj˜Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjRVubj‘)�”}”(hŒenum kernel_load_data_id id”h]”(jL)�”}”(hj«;h]”hŒenum”…”�”}”(hjæVh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjâVubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóVh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjâVubh)�”}”(hhh]”jp)�”}”(hŒkernel_load_data_id”h]”hŒkernel_load_data_id”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jWŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j»VŒ c.security_kernel_post_load_data”†”asbuh1hhjâVubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Wh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjâVubjp)�”}”(hŒid”h]”hŒid”…”�”}”(hj0Wh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjâVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjRVubj‘)�”}”(hŒchar *description”h]”(jG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjIWh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjEWubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWWh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjEWubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjeWh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjEWubjp)�”}”(hŒ description”h]”hŒ description”…”�”}”(hjrWh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjEWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjRVubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjVh²hh³j+Vh´MÉ ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjVh²hh³j+Vh´MÉ ubah}”(h]”jVah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j+Vh´MÉ hjVh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ*Load userspace data from a non-file source”h]”hŒ*Load userspace data from a non-file source”…”�”}”(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™Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjVh²hh³j+Vh´MÉ ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j´Wj#j´Wj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXò**Parameters** ``char *buf`` data ``loff_t size`` size of data ``enum kernel_load_data_id id`` data identifier ``char *description`` text description of data, specific to the id value **Description** Load data provided by a non-file source (usually userspace buffer). This must be paired with a prior security_kernel_load_data() call that indicated this hook would also be called, see security_kernel_load_data() for more information. **Return** Returns 0 if permission is granted.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj¾Wh]”hŒ Parameters”…”�”}”(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´MÍ hj¸WubjH)�”}”(hhh]”(jM)�”}”(hŒ``char *buf`` data ”h]”(jS)�”}”(hŒ ``char *buf``”h]”hë)�”}”(hjÝWh]”hŒ char *buf”…”�”}”(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´MÊ hj×Wubjm)�”}”(hhh]”hÌ)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjöWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jòWh´MÊ hjóWubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj×Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jòWh´MÊ hjÔWubjM)�”}”(hŒ``loff_t size`` size of data ”h]”(jS)�”}”(hŒ``loff_t size``”h]”hë)�”}”(hjXh]”hŒ loff_t size”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MË hjXubjm)�”}”(hhh]”hÌ)�”}”(hŒ size of data”h]”hŒ size of data”…”�”}”(hj/Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+Xh´MË hj,Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j+Xh´MË hjÔWubjM)�”}”(hŒ0``enum kernel_load_data_id id`` data identifier ”h]”(jS)�”}”(hŒ``enum kernel_load_data_id id``”h]”hë)�”}”(hjOXh]”hŒenum kernel_load_data_id id”…”�”}”(hjQXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjMXubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÌ hjIXubjm)�”}”(hhh]”hÌ)�”}”(hŒdata identifier”h]”hŒdata identifier”…”�”}”(hjhXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdXh´MÌ hjeXubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjIXubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jdXh´MÌ hjÔWubjM)�”}”(hŒI``char *description`` text description of data, specific to the id value ”h]”(jS)�”}”(hŒ``char *description``”h]”hë)�”}”(hjˆXh]”hŒchar *description”…”�”}”(hjŠXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj†Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÍ hj‚Xubjm)�”}”(hhh]”hÌ)�”}”(hŒ2text description of data, specific to the id value”h]”hŒ2text description of data, specific to the id value”…”�”}”(hj¡Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�Xh´MÍ hjžXubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‚Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�Xh´MÍ hjÔWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¸WubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjÃXh]”hŒ Description”…”�”}”(hjÅXh²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Ï hj¸WubhÌ)�”}”(hŒëLoad data provided by a non-file source (usually userspace buffer). This must be paired with a prior security_kernel_load_data() call that indicated this hook would also be called, see security_kernel_load_data() for more information.”h]”hŒëLoad data provided by a non-file source (usually userspace buffer). This must be paired with a prior security_kernel_load_data() call that indicated this hook would also be called, see security_kernel_load_data() for more information.”…”�”}”(hjÙXh²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¸WubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjêXh]”hŒReturn”…”�”}”(hjìXh²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Ó hj¸WubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjYh²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¸Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ-security_current_getlsmprop_subj (C function)”Œ"c.security_current_getlsmprop_subj”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ=void security_current_getlsmprop_subj (struct lsm_prop *prop)”h]”jA)�”}”(hŒYh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj+Yh²hh³j=Yh´MB ubjj)�”}”(hŒ security_current_getlsmprop_subj”h]”jp)�”}”(hŒ security_current_getlsmprop_subj”h]”hŒ security_current_getlsmprop_subj”…”�”}”(hjPYh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjLYubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj+Yh²hh³j=Yh´MB ubj‹)�”}”(hŒ(struct lsm_prop *prop)”h]”j‘)�”}”(hŒstruct lsm_prop *prop”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjlYh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjhYubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyYh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjhYubh)�”}”(hhh]”jp)�”}”(hŒlsm_prop”h]”hŒlsm_prop”…”�”}”(hjŠYh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‡Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jŒYŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjRYsbŒ"c.security_current_getlsmprop_subj”†”asbuh1hhjhYubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªYh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjhYubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¸Yh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjhYubjp)�”}”(hŒprop”h]”hŒprop”…”�”}”(hjÅYh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjhYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjdYubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj+Yh²hh³j=Yh´MB ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj'Yh²hh³j=Yh´MB ubah}”(h]”j"Yah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j=Yh´MB •phj$Yh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Current task's subjective LSM data”h]”hŒ$Current task’s subjective LSM data”…”�”}”(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´MB hjìYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj$Yh²hh³j=Yh´MB ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jZj#jZj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ±**Parameters** ``struct lsm_prop *prop`` lsm specific information **Description** Retrieve the subjective security identifier of the current task and return it in **prop**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjZh]”hŒ Parameters”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MF hj ZubjH)�”}”(hhh]”jM)�”}”(hŒ3``struct lsm_prop *prop`` lsm specific information ”h]”(jS)�”}”(hŒ``struct lsm_prop *prop``”h]”hë)�”}”(hj0Zh]”hŒstruct lsm_prop *prop”…”�”}”(hj2Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj.Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MC hj*Zubjm)�”}”(hhh]”hÌ)�”}”(hŒlsm specific information”h]”hŒlsm specific information”…”�”}”(hjIZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEZh´MC hjFZubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj*Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jEZh´MC hj'Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj ZubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjkZh]”hŒ Description”…”�”}”(hjmZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjiZubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´ME hj ZubhÌ)�”}”(hŒZRetrieve the subjective security identifier of the current task and return it in **prop**.”h]”(hŒQRetrieve the subjective security identifier of the current task and return it in ”…”�”}”(hj�Zh²hh³Nh´Nubj2)�”}”(hŒ**prop**”h]”hŒprop”…”�”}”(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´MD hj Zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ)security_task_getlsmprop_obj (C function)”Œc.security_task_getlsmprop_obj”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒPvoid security_task_getlsmprop_obj (struct task_struct *p, struct lsm_prop *prop)”h]”jA)�”}”(hŒOvoid security_task_getlsmprop_obj(struct task_struct *p, struct lsm_prop *prop)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÂZh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj¾Zh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MP ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑZh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¾Zh²hh³jÐZh´MP ubjj)�”}”(hŒsecurity_task_getlsmprop_obj”h]”jp)�”}”(hŒsecurity_task_getlsmprop_obj”h]”hŒsecurity_task_getlsmprop_obj”…”�”}”(hjãZh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjßZubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj¾Zh²hh³jÐZh´MP ubj‹)�”}”(hŒ.(struct task_struct *p, struct lsm_prop *prop)”h]”(j‘)�”}”(hŒstruct task_struct *p”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÿZh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjûZubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjûZubh)�”}”(hhh]”jp)�”}”(hŒ task_struct”h]”hŒ task_struct”…”�”}”(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åZsbŒc.security_task_getlsmprop_obj”†”asbuh1hhjûZubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=[h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjûZubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjK[h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjûZubjp)�”}”(hj¿h]”hŒp”…”�”}”(hjX[h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjûZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj÷Zubj‘)�”}”(hŒstruct lsm_prop *prop”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Œlsm_prop”h]”hŒlsm_prop”…”�”}”(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�]”j9[Œc.security_task_getlsmprop_obj”†”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Œprop”h]”hŒprop”…”�”}”(hjÇ[h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjl[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj÷Zubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj¾Zh²hh³jÐZh´MP ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjºZh²hh³jÐZh´MP ubah}”(h]”jµZah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÐZh´MP hj·Zh²hubj)�”}”(hhh]”hÌ)�”}”(hŒGet a task's objective LSM data”h]”hŒ!Get a task’s objective LSM data”…”�”}”(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´MP hjî[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj·Zh²hh³jÐZh´MP ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j \j#j \j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒá**Parameters** ``struct task_struct *p`` target task ``struct lsm_prop *prop`` lsm specific information **Description** Retrieve the objective security identifier of the task_struct in **p** and return it in **prop**.”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´MT hj \ubjH)�”}”(hhh]”(jM)�”}”(hŒ&``struct task_struct *p`` target task ”h]”(jS)�”}”(hŒ``struct task_struct *p``”h]”hë)�”}”(hj2\h]”hŒstruct task_struct *p”…”�”}”(hj4\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj0\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MQ hj,\ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target task”h]”hŒ target task”…”�”}”(hjK\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG\h´MQ hjH\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj,\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jG\h´MQ hj)\ubjM)�”}”(hŒ3``struct lsm_prop *prop`` lsm specific information ”h]”(jS)�”}”(hŒ``struct lsm_prop *prop``”h]”hë)�”}”(hjk\h]”hŒstruct lsm_prop *prop”…”�”}”(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´MR hje\ubjm)�”}”(hhh]”hÌ)�”}”(hŒlsm specific information”h]”hŒlsm specific information”…”�”}”(hj„\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€\h´MR hj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhje\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j€\h´MR 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´MT hj \ubhÌ)�”}”(hŒaRetrieve the objective security identifier of the task_struct in **p** and return it in **prop**.”h]”(hŒARetrieve the objective security identifier of the task_struct in ”…”�”}”(hj¼\h²hh³Nh´Nubj2)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hjÄ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¼\ubhŒ and return it in ”…”�”}”(hj¼\h²hh³Nh´Nubj2)�”}”(hŒ**prop**”h]”hŒprop”…”�”}”(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´MS hj \ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ#security_d_instantiate (C function)”Œc.security_d_instantiate”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒHvoid security_d_instantiate (struct dentry *dentry, struct inode *inode)”h]”jA)�”}”(hŒGvoid security_d_instantiate(struct dentry *dentry, struct inode *inode)”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´MmubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj ]h²hh³j]h´Mmubjj)�”}”(hŒsecurity_d_instantiate”h]”jp)�”}”(hŒsecurity_d_instantiate”h]”hŒsecurity_d_instantiate”…”�”}”(hj0]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´Mmubj‹)�”}”(hŒ,(struct dentry *dentry, struct inode *inode)”h]”(j‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjL]h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjH]ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY]h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjH]ubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(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ƒj2]sbŒc.security_d_instantiate”†”asbuh1hhjH]ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ]h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjH]ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj˜]h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjH]ubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj¥]h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjH]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjD]ubj‘)�”}”(hŒstruct inode *inode”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_d_instantiate”†”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”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjº]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjD]ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj ]h²hh³j]h´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj]h²hh³j]h´Mmubah}”(h]”j]ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j]h´Mmhj]h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ/Populate an inode's LSM state based on a dentry”h]”hŒ1Populate an inode’s LSM state based on a dentry”…”�”}”(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´Mmhj<^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj]h²hh³j]h´Mmubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jW^j#jW^j$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ©**Parameters** ``struct dentry *dentry`` dentry ``struct inode *inode`` inode **Description** Fill in **inode** security information for a **dentry** if allowed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hja^h]”hŒ Parameters”…”�”}”(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´Mqhj[^ubjH)�”}”(hhh]”(jM)�”}”(hŒ!``struct dentry *dentry`` dentry ”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´Mnhjz^ubjm)�”}”(hhh]”hÌ)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj™^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•^h´Mnhj–^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjz^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•^h´Mnhjw^ubjM)�”}”(hŒ``struct inode *inode`` 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´Mohj³^ubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÒ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎ^h´MohjÏ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj³^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÎ^h´Mohjw^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´Mqhj[^ubhÌ)�”}”(hŒCFill in **inode** security information for a **dentry** if allowed.”h]”(hŒFill in ”…”�”}”(hj _h²hh³Nh´Nubj2)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj _ubhŒ security information for a ”…”�”}”(hj _h²hh³Nh´Nubj2)�”}”(hŒ **dentry**”h]”hŒdentry”…”�”}”(hj$_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj _ubhŒ if allowed.”…”�”}”(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´Mphj[^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ security_ismaclabel (C function)”Œc.security_ismaclabel”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ*int security_ismaclabel (const char *name)”h]”jA)�”}”(hŒ)int security_ismaclabel(const char *name)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(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´M@ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl_h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjY_h²hh³jk_h´M@ubjj)�”}”(hŒsecurity_ismaclabel”h]”jp)�”}”(hŒsecurity_ismaclabel”h]”hŒsecurity_ismaclabel”…”�”}”(hj~_h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjz_ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjY_h²hh³jk_h´M@ubj‹)�”}”(hŒ(const char *name)”h]”j‘)�”}”(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”…”�”}”(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ŠhjY_h²hh³jk_h´M@ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjU_h²hh³jk_h´M@ubah}”(h]”jP_ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jk_h´M@hjR_h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Check if the named attribute is a MAC label”h]”hŒ+Check if the named attribute is a MAC 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ÿhjR_h²hh³jk_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 char *name`` full extended attribute name **Description** Check if the extended attribute specified by **name** represents a MAC label. **Return** Returns 1 if name is a MAC attribute otherwise returns 0.”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´MDhj$`ubjH)�”}”(hhh]”jM)�”}”(hŒ2``const char *name`` full extended attribute name ”h]”(jS)�”}”(hŒ``const char *name``”h]”hë)�”}”(hjI`h]”hŒconst char *name”…”�”}”(hjK`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjG`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MAhjC`ubjm)�”}”(hhh]”hÌ)�”}”(hŒfull extended attribute name”h]”hŒfull extended attribute name”…”�”}”(hjb`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^`h´MAhj_`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjC`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^`h´MAhj@`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´MChj$`ubhÌ)�”}”(hŒMCheck if the extended attribute specified by **name** represents a MAC label.”h]”(hŒ-Check if the extended attribute specified by ”…”�”}”(hjš`h²hh³Nh´Nubj2)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hj¢`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjš`ubhŒ represents a MAC label.”…”�”}”(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´MBhj$`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´MDhj$`ubhÌ)�”}”(hŒ9Returns 1 if name is a MAC attribute otherwise returns 0.”h]”hŒ9Returns 1 if name is a MAC attribute otherwise returns 0.”…”�”}”(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$`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_secid_to_secctx (C function)”Œc.security_secid_to_secctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ@int security_secid_to_secctx (u32 secid, struct lsm_context *cp)”h]”jA)�”}”(hŒ?int security_secid_to_secctx(u32 secid, struct lsm_context *cp)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjah²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´MNubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjþ`h²hh³jah´MNubjj)�”}”(hŒsecurity_secid_to_secctx”h]”jp)�”}”(hŒsecurity_secid_to_secctx”h]”hŒsecurity_secid_to_secctx”…”�”}”(hj#ah²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjaubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjþ`h²hh³jah´MNubj‹)�”}”(hŒ#(u32 secid, struct lsm_context *cp)”h]”(j‘)�”}”(hŒ u32 secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjBah²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj?aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jDaŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj%asbŒc.security_secid_to_secctx”†”asbuh1hhj;aubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbah²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj;aubjp)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hjpah²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj;aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj7aubj‘)�”}”(hŒstruct lsm_context *cp”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj‰ah²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj…aubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ah²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj…aubh)�”}”(hhh]”jp)�”}”(hŒ lsm_context”h]”hŒ lsm_context”…”�”}”(hj§ah²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¤aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j©aŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j^aŒc.security_secid_to_secctx”†”asbuh1hhj…aubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅah²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj…aubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÓah²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj…aubjp)�”}”(hŒcp”h]”hŒcp”…”�”}”(hjàah²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj…aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj7aubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjþ`h²hh³jah´MNubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjú`h²hh³jah´MNubah}”(h]”jõ`ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jah´MNhj÷`h²hubj)�”}”(hhh]”hÌ)�”}”(hŒConvert a secid to a secctx”h]”hŒConvert a secid to a secctx”…”�”}”(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´MNhjbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj÷`h²hh³jah´MNubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j"bj#j"bj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXµ**Parameters** ``u32 secid`` secid ``struct lsm_context *cp`` the LSM context **Description** Convert secid to security context. If **cp** is NULL the length of the result will be returned, but no data will be returned. This does mean that the length could change between calls to check the length and the next call which actually allocates and returns the data. **Return** Return length of data on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj,bh]”hŒ Parameters”…”�”}”(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´MRhj&bubjH)�”}”(hhh]”(jM)�”}”(hŒ``u32 secid`` secid ”h]”(jS)�”}”(hŒ ``u32 secid``”h]”hë)�”}”(hjKbh]”hŒ u32 secid”…”�”}”(hjMbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjIbubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MOhjEbubjm)�”}”(hhh]”hÌ)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hjdbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`bh´MOhjabubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjEbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j`bh´MOhjBbubjM)�”}”(hŒ+``struct lsm_context *cp`` the LSM context ”h]”(jS)�”}”(hŒ``struct lsm_context *cp``”h]”hë)�”}”(hj„bh]”hŒstruct lsm_context *cp”…”�”}”(hj†bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‚bubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MPhj~bubjm)�”}”(hhh]”hÌ)�”}”(hŒthe LSM context”h]”hŒthe LSM context”…”�”}”(hj�bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™bh´MPhjšbubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj~bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j™bh´MPhjBbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj&bubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj¿bh]”hŒ Description”…”�”}”(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´MRhj&bubhÌ)�”}”(hXConvert secid to security context. If **cp** is NULL the length of the result will be returned, but no data will be returned. This does mean that the length could change between calls to check the length and the next call which actually allocates and returns the data.”h]”(hŒ'Convert secid to security context. If ”…”�”}”(hjÕbh²hh³Nh´Nubj2)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hjÝbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÕbubhŒá is NULL the length of the result will be returned, but no data will be returned. This does mean that the length could change between calls to check the length and the next call which actually allocates and returns the data.”…”�”}”(hjÕbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MQhj&bubhÌ)�”}”(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´MVhj&bubhÌ)�”}”(hŒ3Return length of data on success, error on failure.”h]”hŒ3Return length of data on success, error on failure.”…”�”}”(hjch²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&bubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ'security_lsmprop_to_secctx (C function)”Œc.security_lsmprop_to_secctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒYint security_lsmprop_to_secctx (struct lsm_prop *prop, struct lsm_context *cp, int lsmid)”h]”jA)�”}”(hŒXint security_lsmprop_to_secctx(struct lsm_prop *prop, struct lsm_context *cp, int lsmid)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj=ch²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj9ch²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M`ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLch²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj9ch²hh³jKch´M`ubjj)�”}”(hŒsecurity_lsmprop_to_secctx”h]”jp)�”}”(hŒsecurity_lsmprop_to_secctx”h]”hŒsecurity_lsmprop_to_secctx”…”�”}”(hj^ch²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjZcubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj9ch²hh³jKch´M`ubj‹)�”}”(hŒ:(struct lsm_prop *prop, struct lsm_context *cp, int lsmid)”h]”(j‘)�”}”(hŒstruct lsm_prop *prop”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjzch²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjvcubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡ch²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvcubh)�”}”(hhh]”jp)�”}”(hŒlsm_prop”h]”hŒlsm_prop”…”�”}”(hj˜ch²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj•cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jšcŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj`csbŒc.security_lsmprop_to_secctx”†”asbuh1hhjvcubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸ch²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvcubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÆch²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjvcubjp)�”}”(hŒprop”h]”hŒprop”…”�”}”(hjÓch²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjvcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrcubj‘)�”}”(hŒstruct lsm_context *cp”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjìch²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjècubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùch²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjècubh)�”}”(hhh]”jp)�”}”(hŒ lsm_context”h]”hŒ lsm_context”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j dŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j´cŒc.security_lsmprop_to_secctx”†”asbuh1hhjècubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(dh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjècubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj6dh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjècubjp)�”}”(hŒcp”h]”hŒcp”…”�”}”(hjCdh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjècubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrcubj‘)�”}”(hŒ int lsmid”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hj\dh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjXdubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjdh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjXdubjp)�”}”(hŒlsmid”h]”hŒlsmid”…”�”}”(hjxdh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjXdubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrcubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj9ch²hh³jKch´M`ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj5ch²hh³jKch´M`ubah}”(h]”j0cah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jKch´M`hj2ch²hubj)�”}”(hhh]”hÌ)�”}”(hŒConvert a lsm_prop to a secctx”h]”hŒConvert a lsm_prop to a secctx”…”�”}”(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ÿhj2ch²hh³jKch´M`ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jºdj#jºdj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hXÍ**Parameters** ``struct lsm_prop *prop`` lsm specific information ``struct lsm_context *cp`` the LSM context ``int lsmid`` which security module to report **Description** Convert a **prop** entry to security context. If **cp** is NULL the length of the result will be returned. This does mean that the length could change between calls to check the length and the next call which actually allocates and returns the **cp**. **lsmid** identifies which LSM should supply the context. A value of LSM_ID_UNDEF indicates that the first LSM suppling the hook should be used. This is used in cases where the ID of the supplying LSM is unambiguous. **Return** Return length of data on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÄdh]”hŒ Parameters”…”�”}”(hjÆdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÂdubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mdhj¾dubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct lsm_prop *prop`` lsm specific information ”h]”(jS)�”}”(hŒ``struct lsm_prop *prop``”h]”hë)�”}”(hjãdh]”hŒstruct lsm_prop *prop”…”�”}”(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´MahjÝdubjm)�”}”(hhh]”hÌ)�”}”(hŒlsm specific information”h]”hŒlsm specific information”…”�”}”(hjüdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jødh´Mahjùdubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÝdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jødh´MahjÚdubjM)�”}”(hŒ+``struct lsm_context *cp`` the LSM context ”h]”(jS)�”}”(hŒ``struct lsm_context *cp``”h]”hë)�”}”(hjeh]”hŒstruct lsm_context *cp”…”�”}”(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´Mbhjeubjm)�”}”(hhh]”hÌ)�”}”(hŒthe LSM context”h]”hŒthe LSM context”…”�”}”(hj5eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1eh´Mbhj2eubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1eh´MbhjÚdubjM)�”}”(hŒ.``int lsmid`` which security module to report ”h]”(jS)�”}”(hŒ ``int lsmid``”h]”hë)�”}”(hjUeh]”hŒ int lsmid”…”�”}”(hjWeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjSeubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MchjOeubjm)�”}”(hhh]”hÌ)�”}”(hŒwhich security module to report”h]”hŒwhich security module to report”…”�”}”(hjneh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jjeh´Mchjkeubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjOeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jjeh´MchjÚdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj¾dubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj�eh]”hŒ Description”…”�”}”(hj’eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjŽeubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mehj¾dubhÌ)�”}”(hŒüConvert a **prop** entry to security context. If **cp** is NULL the length of the result will be returned. This does mean that the length could change between calls to check the length and the next call which actually allocates and returns the **cp**.”h]”(hŒ Convert a ”…”�”}”(hj¦eh²hh³Nh´Nubj2)�”}”(hŒ**prop**”h]”hŒprop”…”�”}”(hj®eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¦eubhŒ entry to security context. If ”…”�”}”(hj¦eh²hh³Nh´Nubj2)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hjÀeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¦eubhŒ½ is NULL the length of the result will be returned. This does mean that the length could change between calls to check the length and the next call which actually allocates and returns the ”…”�”}”(hj¦eh²hh³Nh´Nubj2)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hjÒeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¦eubhŒ.”…”�”}”(hj¦eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mdhj¾dubhÌ)�”}”(hŒØ**lsmid** identifies which LSM should supply the context. A value of LSM_ID_UNDEF indicates that the first LSM suppling the hook should be used. This is used in cases where the ID of the supplying LSM is unambiguous.”h]”(j2)�”}”(hŒ **lsmid**”h]”hŒlsmid”…”�”}”(hjïeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjëeubhŒÏ identifies which LSM should supply the context. A value of LSM_ID_UNDEF indicates that the first LSM suppling the hook should be used. This is used in cases where the ID of the supplying LSM is unambiguous.”…”�”}”(hjëeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mihj¾dubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj fh]”hŒReturn”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mnhj¾dubhÌ)�”}”(hŒ3Return length of data on success, error on failure.”h]”hŒ3Return length of data on success, error on failure.”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mohj¾dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ%security_secctx_to_secid (C function)”Œc.security_secctx_to_secid”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒJint security_secctx_to_secid (const char *secdata, u32 seclen, u32 *secid)”h]”jA)�”}”(hŒIint security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjOfh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjKfh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M€ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^fh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjKfh²hh³j]fh´M€ubjj)�”}”(hŒsecurity_secctx_to_secid”h]”jp)�”}”(hŒsecurity_secctx_to_secid”h]”hŒsecurity_secctx_to_secid”…”�”}”(hjpfh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjlfubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjKfh²hh³j]fh´M€ubj‹)�”}”(hŒ-(const char *secdata, u32 seclen, u32 *secid)”h]”(j‘)�”}”(hŒconst char *secdata”h]”(jL)�”}”(hj h]”hŒconst”…”�”}”(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ˆfubjG)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj§fh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjˆfubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµfh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjˆfubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÃfh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjˆfubjp)�”}”(hŒsecdata”h]”hŒsecdata”…”�”}”(hjÐfh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjˆfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj„fubj‘)�”}”(hŒ u32 seclen”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(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�]”j�)�”}”jƒjrfsbŒc.security_secctx_to_secid”†”asbuh1hhjåfubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjåfubjp)�”}”(hŒseclen”h]”hŒseclen”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjåfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj„fubj‘)�”}”(hŒ u32 *secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj6gh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj3gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j8gŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jgŒc.security_secctx_to_secid”†”asbuh1hhj/gubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTgh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj/gubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjbgh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj/gubjp)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hjogh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj/gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj„fubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjKfh²hh³j]fh´M€ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjGfh²hh³j]fh´M€ubah}”(h]”jBfah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j]fh´M€hjDfh²hubj)�”}”(hhh]”hÌ)�”}”(hŒConvert a secctx to a secid”h]”hŒConvert a secctx to a secid”…”�”}”(hj™gh²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–gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjDfh²hh³j]fh´M€ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j±gj#j±gj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒÕ**Parameters** ``const char *secdata`` secctx ``u32 seclen`` length of secctx ``u32 *secid`` secid **Description** Convert security context to secid. **Return** Returns 0 on success, error on failure.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hj»gh]”hŒ Parameters”…”�”}”(hj½gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj¹gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M„hjµgubjH)�”}”(hhh]”(jM)�”}”(hŒ``const char *secdata`` secctx ”h]”(jS)�”}”(hŒ``const char *secdata``”h]”hë)�”}”(hjÚgh]”hŒconst char *secdata”…”�”}”(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´M�hjÔgubjm)�”}”(hhh]”hÌ)�”}”(hŒsecctx”h]”hŒsecctx”…”�”}”(hjógh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïgh´M�hjðgubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÔgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jïgh´M�hjÑgubjM)�”}”(hŒ ``u32 seclen`` length of secctx ”h]”(jS)�”}”(hŒ``u32 seclen``”h]”hë)�”}”(hjhh]”hŒ u32 seclen”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M‚hj hubjm)�”}”(hhh]”hÌ)�”}”(hŒlength of secctx”h]”hŒlength of secctx”…”�”}”(hj,hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(hh´M‚hj)hubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j(hh´M‚hjÑgubjM)�”}”(hŒ``u32 *secid`` secid ”h]”(jS)�”}”(hŒ``u32 *secid``”h]”hë)�”}”(hjLhh]”hŒ u32 *secid”…”�”}”(hjNhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjJhubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MƒhjFhubjm)�”}”(hhh]”hÌ)�”}”(hŒsecid”h]”hŒsecid”…”�”}”(hjehh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jahh´Mƒhjbhubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjFhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jahh´MƒhjÑgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjµgubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj‡hh]”hŒ Description”…”�”}”(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…hjµgubhÌ)�”}”(hŒ"Convert security context to secid.”h]”hŒ"Convert security context to secid.”…”�”}”(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„hjµgubhÌ)�”}”(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†hjµgubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(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‡hjµgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ$security_release_secctx (C function)”Œc.security_release_secctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ5void security_release_secctx (struct lsm_context *cp)”h]”jA)�”}”(hŒ4void security_release_secctx(struct lsm_context *cp)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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Œ ”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjïhh²hh³jih´M‘ubjj)�”}”(hŒsecurity_release_secctx”h]”jp)�”}”(hŒsecurity_release_secctx”h]”hŒsecurity_release_secctx”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjiubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjïhh²hh³jih´M‘ubj‹)�”}”(hŒ(struct lsm_context *cp)”h]”j‘)�”}”(hŒstruct lsm_context *cp”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj0ih²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj,iubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=ih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,iubh)�”}”(hhh]”jp)�”}”(hŒ lsm_context”h]”hŒ lsm_context”…”�”}”(hjNih²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjKiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jPiŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjisbŒc.security_release_secctx”†”asbuh1hhj,iubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnih²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj,iubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj|ih²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj,iubjp)�”}”(hŒcp”h]”hŒcp”…”�”}”(hj‰ih²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj,iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj(iubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjïhh²hh³jih´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjëhh²hh³jih´M‘ubah}”(h]”jæhah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jih´M‘hjèhh²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree a secctx buffer”h]”hŒFree a secctx buffer”…”�”}”(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³jih´M‘ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jËij#jËij$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒq**Parameters** ``struct lsm_context *cp`` the security context **Description** Release the security context.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjÕih]”hŒ Parameters”…”�”}”(hj×ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÓiubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M•hjÏiubjH)�”}”(hhh]”jM)�”}”(hŒ0``struct lsm_context *cp`` the security context ”h]”(jS)�”}”(hŒ``struct lsm_context *cp``”h]”hë)�”}”(hjôih]”hŒstruct lsm_context *cp”…”�”}”(hjöih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjòiubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M’hjîiubjm)�”}”(hhh]”hÌ)�”}”(hŒthe security context”h]”hŒthe security context”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j jh´M’hj jubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjîiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j jh´M’hjëiubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÏiubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj/jh]”hŒ Description”…”�”}”(hj1jh²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ÏiubhÌ)�”}”(hŒRelease the security context.”h]”hŒRelease the security context.”…”�”}”(hjEjh²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Ïiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ-security_inode_invalidate_secctx (C function)”Œ"c.security_inode_invalidate_secctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒ;void security_inode_invalidate_secctx (struct inode *inode)”h]”jA)�”}”(hŒ:void security_inode_invalidate_secctx(struct inode *inode)”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjtjh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjpjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MžubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjpjh²hh³j‚jh´Mžubjj)�”}”(hŒ security_inode_invalidate_secctx”h]”jp)�”}”(hŒ security_inode_invalidate_secctx”h]”hŒ security_inode_invalidate_secctx”…”�”}”(hj•jh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj‘jubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjpjh²hh³j‚jh´Mžubj‹)�”}”(hŒ(struct inode *inode)”h]”j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj±jh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj­jubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾jh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj­jubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÏjh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÌjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jÑjŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj—jsbŒ"c.security_inode_invalidate_secctx”†”asbuh1hhj­jubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïjh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj­jubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjýjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj­jubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj­jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj©jubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjpjh²hh³j‚jh´Mžubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjljh²hh³j‚jh´Mžubah}”(h]”jgjah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j‚jh´Mžhjijh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ$Invalidate an inode's security label”h]”hŒ&Invalidate an inode’s security label”…”�”}”(hj4kh²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žhj1kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjijh²hh³j‚jh´Mžubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jLkj#jLkj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hŒ–**Parameters** ``struct inode *inode`` inode **Description** Notify the security module that it must revalidate the security context of an inode.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjVkh]”hŒ Parameters”…”�”}”(hjXkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjTkubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¢hjPkubjH)�”}”(hhh]”jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hjukh]”hŒstruct inode *inode”…”�”}”(hjwkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjskubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MŸhjokubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjŽkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠkh´MŸhj‹kubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjokubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jŠkh´MŸhjlkubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjPkubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj°kh]”hŒ Description”…”�”}”(hj²kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj®kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¡hjPkubhÌ)�”}”(hŒTNotify the security module that it must revalidate the security context of an inode.”h]”hŒTNotify the security module that it must revalidate the security context of an inode.”…”�”}”(hjÆkh²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 hjPkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j'hh·h²hh³Nh´Nubj%)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j1Œ(security_inode_notifysecctx (C function)”Œc.security_inode_notifysecctx”hNt”auh1j$hh·h²hh³Nh´Nubj6)�”}”(hhh]”(j;)�”}”(hŒLint security_inode_notifysecctx (struct inode *inode, void *ctx, u32 ctxlen)”h]”jA)�”}”(hŒKint security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen)”h]”(jG)�”}”(hŒint”h]”hŒint”…”�”}”(hjõkh²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Œ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjñkh²hh³jlh´M«ubjj)�”}”(hŒsecurity_inode_notifysecctx”h]”jp)�”}”(hŒsecurity_inode_notifysecctx”h]”hŒsecurity_inode_notifysecctx”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjlubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjñkh²hh³jlh´M«ubj‹)�”}”(hŒ,(struct inode *inode, void *ctx, u32 ctxlen)”h]”(j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj2lh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj.lubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?lh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj.lubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjPlh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjMlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jRlŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjlsbŒc.security_inode_notifysecctx”†”asbuh1hhj.lubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjplh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj.lubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj~lh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj.lubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj‹lh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj.lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj*lubj‘)�”}”(hŒ void *ctx”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¤lh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj lubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²lh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj lubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÀlh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj lubjp)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjÍlh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj*lubj‘)�”}”(hŒ u32 ctxlen”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjélh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjælubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jëlŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jllŒc.security_inode_notifysecctx”†”asbuh1hhjâlubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjâlubjp)�”}”(hŒctxlen”h]”hŒctxlen”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjâlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj*lubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjñkh²hh³jlh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjíkh²hh³jlh´M«ubah}”(h]”jèkah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jlh´M«hjêkh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ+Notify the LSM of an inode's security label”h]”hŒ-Notify the LSM of an inode’s security label”…”�”}”(hj?mh²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)�”}”(hjamh]”hŒ Parameters”…”�”}”(hjcmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj_mubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¯hj[mubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hj€mh]”hŒstruct inode *inode”…”�”}”(hj‚mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj~mubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¬hjzmubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj™mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•mh´M¬hj–mubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjzmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j•mh´M¬hjwmubjM)�”}”(hŒ``void *ctx`` secctx ”h]”(jS)�”}”(hŒ ``void *ctx``”h]”hë)�”}”(hj¹mh]”hŒ void *ctx”…”�”}”(hj»mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj·mubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M­hj³mubjm)�”}”(hhh]”hÌ)�”}”(hŒsecctx”h]”hŒsecctx”…”�”}”(hjÒmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÎmh´M­hjÏmubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj³mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÎmh´M­hjwmubjM)�”}”(hŒ ``u32 ctxlen`` length of secctx ”h]”(jS)�”}”(hŒ``u32 ctxlen``”h]”hë)�”}”(hjòmh]”hŒ u32 ctxlen”…”�”}”(hjômh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjðmubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M®hjìmubjm)�”}”(hhh]”hÌ)�”}”(hŒlength of secctx”h]”hŒlength of secctx”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnh´M®hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjìmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jnh´M®hjwmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj[mubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj-nh]”hŒ Description”…”�”}”(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´M°hj[mubhÌ)�”}”(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.”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.”…”�”}”(hjCnh²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[mubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjTnh]”hŒReturn”…”�”}”(hjVnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjRnubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M¶hj[mubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hjjnh²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[mubeh}”(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”…”�”}”(hj™nh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj•nh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÀubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨nh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj•nh²hh³j§nh´MÀubjj)�”}”(hŒsecurity_inode_setsecctx”h]”jp)�”}”(hŒsecurity_inode_setsecctx”h]”hŒsecurity_inode_setsecctx”…”�”}”(hjºnh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj¶nubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj•nh²hh³j§nh´MÀubj‹)�”}”(hŒ.(struct dentry *dentry, void *ctx, u32 ctxlen)”h]”(j‘)�”}”(hŒstruct dentry *dentry”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÖnh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÒnubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãnh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÒnubh)�”}”(hhh]”jp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hjônh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjñnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jönŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¼nsbŒc.security_inode_setsecctx”†”asbuh1hhjÒnubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÒnubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj"oh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÒnubjp)�”}”(hŒdentry”h]”hŒdentry”…”�”}”(hj/oh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÒnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÎnubj‘)�”}”(hŒ void *ctx”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHoh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjDoubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVoh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjDoubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjdoh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjDoubjp)�”}”(hŒctx”h]”hŒctx”…”�”}”(hjqoh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjDoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÎnubj‘)�”}”(hŒ u32 ctxlen”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj�oh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŠoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j�oŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”joŒc.security_inode_setsecctx”†”asbuh1hhj†oubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«oh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj†oubjp)�”}”(hŒctxlen”h]”hŒctxlen”…”�”}”(hj¹oh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj†oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjÎnubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj•nh²hh³j§nh´MÀubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj‘nh²hh³j§nh´MÀubah}”(h]”jŒnah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j§nh´MÀhjŽnh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ%Change the security label of an inode”h]”hŒ%Change the security label of an inode”…”�”}”(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àoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjŽnh²hh³j§nh´MÀubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jûoj#jûoj$‰j%‰j&‰uh1j5h²hhh·h³Nh´Nubj()�”}”(hX{**Parameters** ``struct dentry *dentry`` inode ``void *ctx`` secctx ``u32 ctxlen`` length of secctx **Description** 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. **Return** Returns 0 on success, error on failure.”•h]”(hÌ)�”}”(hŒ**Parameters**”h]”j2)�”}”(hjph]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÄhjÿoubjH)�”}”(hhh]”(jM)�”}”(hŒ ``struct dentry *dentry`` inode ”h]”(jS)�”}”(hŒ``struct dentry *dentry``”h]”hë)�”}”(hj$ph]”hŒstruct dentry *dentry”…”�”}”(hj&ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj"pubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÁhjpubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj=ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9ph´MÁhj:pubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9ph´MÁhjpubjM)�”}”(hŒ``void *ctx`` secctx ”h]”(jS)�”}”(hŒ ``void *ctx``”h]”hë)�”}”(hj]ph]”hŒ void *ctx”…”�”}”(hj_ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj[pubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÂhjWpubjm)�”}”(hhh]”hÌ)�”}”(hŒsecctx”h]”hŒsecctx”…”�”}”(hjvph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrph´MÂhjspubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjWpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jrph´MÂhjpubjM)�”}”(hŒ ``u32 ctxlen`` length of secctx ”h]”(jS)�”}”(hŒ``u32 ctxlen``”h]”hë)�”}”(hj–ph]”hŒ u32 ctxlen”…”�”}”(hj˜ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj”pubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÃhj�pubjm)�”}”(hhh]”hÌ)�”}”(hŒlength of secctx”h]”hŒlength of secctx”…”�”}”(hj¯ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«ph´MÃhj¬pubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj�pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j«ph´MÃhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÿoubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjÑph]”hŒ Description”…”�”}”(hjÓph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÏpubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÅhjÿoubhÌ)�”}”(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ç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´MÄhjÿoubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjøph]”hŒReturn”…”�”}”(hjúph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjöpubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÌhjÿoubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error 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´MÍhjÿoubeh}”(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=qh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj9qh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÖubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLqh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj9qh²hh³jKqh´MÖubjj)�”}”(hŒsecurity_inode_getsecctx”h]”jp)�”}”(hŒsecurity_inode_getsecctx”h]”hŒsecurity_inode_getsecctx”…”�”}”(hj^qh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjZqubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj9qh²hh³jKqh´MÖubj‹)�”}”(hŒ-(struct inode *inode, struct lsm_context *cp)”h]”(j‘)�”}”(hŒstruct inode *inode”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjzqh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjvqubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡qh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvqubh)�”}”(hhh]”jp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hj˜qh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj•qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jšqŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj`qsbŒc.security_inode_getsecctx”†”asbuh1hhjvqubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸qh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjvqubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÆqh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjvqubjp)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÓqh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjvqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrqubj‘)�”}”(hŒstruct lsm_context *cp”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjìqh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjèqubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùqh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjèqubh)�”}”(hhh]”jp)�”}”(hŒ lsm_context”h]”hŒ lsm_context”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j rŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j´qŒc.security_inode_getsecctx”†”asbuh1hhjèqubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(rh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjèqubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj6rh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjèqubjp)�”}”(hŒcp”h]”hŒcp”…”�”}”(hjCrh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjèqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjrqubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj9qh²hh³jKqh´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj5qh²hh³jKqh´MÖubah}”(h]”j0qah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jKqh´MÖhj2qh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ"Get the security label of an inode”h]”hŒ"Get the security label of an inode”…”�”}”(hjmrh²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Öhjjrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj2qh²hh³jKqh´MÖubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j…rj#j…rj$‰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)�”}”(hj�rh]”hŒ Parameters”…”�”}”(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´MÚhj‰rubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct inode *inode`` inode ”h]”(jS)�”}”(hŒ``struct inode *inode``”h]”hë)�”}”(hj®rh]”hŒstruct inode *inode”…”�”}”(hj°rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj¬rubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M×hj¨rubjm)�”}”(hhh]”hÌ)�”}”(hŒinode”h]”hŒinode”…”�”}”(hjÇrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃrh´M×hjÄrubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj¨rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jÃrh´M×hj¥rubjM)�”}”(hŒ,``struct lsm_context *cp`` security context ”h]”(jS)�”}”(hŒ``struct lsm_context *cp``”h]”hë)�”}”(hjçrh]”hŒstruct lsm_context *cp”…”�”}”(hjérh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjårubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MØhjárubjm)�”}”(hhh]”hÌ)�”}”(hŒsecurity context”h]”hŒsecurity context”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jürh´MØhjýrubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjárubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jürh´MØhj¥rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‰rubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj"sh]”hŒ Description”…”�”}”(hj$sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÚhj‰rubhÌ)�”}”(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 ”…”�”}”(hj8sh²hh³Nh´Nubj2)�”}”(hŒ**cp**”h]”hŒcp”…”�”}”(hj@sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj8subhŒ) with the security context for the given ”…”�”}”(hj8sh²hh³Nh´Nubj2)�”}”(hŒ **inode**”h]”hŒinode”…”�”}”(hjRsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj8subhŒ.”…”�”}”(hj8sh²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‰rubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjmsh]”hŒReturn”…”�”}”(hjosh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjksubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÜhj‰rubhÌ)�”}”(hŒ'Returns 0 on success, error on failure.”h]”hŒ'Returns 0 on success, error on failure.”…”�”}”(hjƒsh²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‰rubeh}”(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”…”�”}”(hj²sh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj®sh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁsh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj®sh²hh³jÀsh´Mubjj)�”}”(hŒsecurity_unix_stream_connect”h]”jp)�”}”(hŒsecurity_unix_stream_connect”h]”hŒsecurity_unix_stream_connect”…”�”}”(hjÓsh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÏsubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj®sh²hh³jÀsh´Mubj‹)�”}”(hŒ;(struct sock *sock, struct sock *other, struct sock *newsk)”h]”(j‘)�”}”(hŒstruct sock *sock”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Œsock”h]”hŒsock”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jtŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÕssbŒc.security_unix_stream_connect”†”asbuh1hhjësubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-th²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjësubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj;th²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjësubjp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjHth²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjësubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjçsubj‘)�”}”(hŒstruct sock *other”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjath²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj]tubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnth²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj]tubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj|tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”j�tŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j)tŒc.security_unix_stream_connect”†”asbuh1hhj]tubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�th²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj]tubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj«th²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj]tubjp)�”}”(hŒother”h]”hŒother”…”�”}”(hj¸th²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj]tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjçsubj‘)�”}”(hŒstruct sock *newsk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjÑth²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjÍtubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞth²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÍtubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjïth²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjìtubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jñtŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j)tŒc.security_unix_stream_connect”†”asbuh1hhjÍtubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÍtubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÍtubjp)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hj(uh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÍtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjçsubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj®sh²hh³jÀsh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjªsh²hh³jÀsh´Mubah}”(h]”j¥sah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÀsh´Mhj§sh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ$Check if a AF_UNIX stream is allowed”h]”hŒ$Check if a AF_UNIX stream is allowed”…”�”}”(hjRuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjOuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj§sh²hh³jÀsh´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jjuj#jjuj$‰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)�”}”(hjtuh]”hŒ Parameters”…”�”}”(hjvuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjruubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M!hjnuubjH)�”}”(hhh]”(jM)�”}”(hŒ'``struct sock *sock`` originating sock ”h]”(jS)�”}”(hŒ``struct sock *sock``”h]”hë)�”}”(hj“uh]”hŒstruct sock *sock”…”�”}”(hj•uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj‘uubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhj�uubjm)�”}”(hhh]”hÌ)�”}”(hŒoriginating sock”h]”hŒoriginating sock”…”�”}”(hj¬uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨uh´Mhj©uubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj�uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¨uh´MhjŠuubjM)�”}”(hŒ!``struct sock *other`` peer sock ”h]”(jS)�”}”(hŒ``struct sock *other``”h]”hë)�”}”(hjÌuh]”hŒstruct sock *other”…”�”}”(hjÎuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjÊuubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjÆuubjm)�”}”(hhh]”hÌ)�”}”(hŒ peer sock”h]”hŒ peer sock”…”�”}”(hjåuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jáuh´Mhjâuubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÆuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jáuh´MhjŠuubjM)�”}”(hŒ ``struct sock *newsk`` new sock ”h]”(jS)�”}”(hŒ``struct sock *newsk``”h]”hë)�”}”(hjvh]”hŒstruct sock *newsk”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjvubah}”(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Œnew sock”h]”hŒnew sock”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvh´M hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÿuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jvh´M hjŠuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjnuubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj@vh]”hŒ Description”…”�”}”(hjBvh²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"hjnuubhÌ)�”}”(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 ”…”�”}”(hjVvh²hh³Nh´Nubj2)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hj^vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjVvubhŒ and ”…”�”}”(hjVvh²hh³Nh´Nubj2)�”}”(hŒ **other**”h]”hŒother”…”�”}”(hjpvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjVvubhŒ.”…”�”}”(hjVvh²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!hjnuubhÌ)�”}”(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‰vh²hh³Nh´Nubj2)�”}”(hŒ**unix_stream_connect**”h]”hŒunix_stream_connect”…”�”}”(hj‘vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‰vubhŒ and ”…”�”}”(hj‰vh²hh³Nh´Nubj2)�”}”(hŒ**unix_may_send**”h]”hŒ unix_may_send”…”�”}”(hj£vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj‰vubhXj 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‰vh²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$hjnuubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hj¾vh]”hŒReturn”…”�”}”(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.hjnuubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(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/hjnuubeh}”(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”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjÿvh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M9ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÿvh²hh³jwh´M9ubjj)�”}”(hŒsecurity_unix_may_send”h]”jp)�”}”(hŒsecurity_unix_may_send”h]”hŒsecurity_unix_may_send”…”�”}”(hj$wh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj wubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjÿvh²hh³jwh´M9ubj‹)�”}”(hŒ+(struct socket *sock, struct socket *other)”h]”(j‘)�”}”(hŒstruct socket *sock”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj@wh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjCheck permissions before connecting or sending datagrams from ”…”�”}”(hjþxh²hh³Nh´Nubj2)�”}”(hŒ**sock**”h]”hŒsock”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjþxubhŒ to ”…”�”}”(hjþxh²hh³Nh´Nubj2)�”}”(hŒ **other**”h]”hŒother”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjþxubhŒ.”…”�”}”(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´M<hjOxubhÌ)�”}”(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 ”…”�”}”(hj1yh²hh³Nh´Nubj2)�”}”(hŒ**unix_stream_connect**”h]”hŒunix_stream_connect”…”�”}”(hj9yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj1yubhŒ and ”…”�”}”(hj1yh²hh³Nh´Nubj2)�”}”(hŒ**unix_may_send**”h]”hŒ unix_may_send”…”�”}”(hjKyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hj1yubhXj 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.”…”�”}”(hj1yh²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?hjOxubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjfyh]”hŒReturn”…”�”}”(hjhyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjdyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MIhjOxubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(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´MJhjOxubeh}”(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”…”�”}”(hj«yh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhj§yh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M|ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºyh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj§yh²hh³j¹yh´M|ubjj)�”}”(hŒsecurity_socket_socketpair”h]”jp)�”}”(hŒsecurity_socket_socketpair”h]”hŒsecurity_socket_socketpair”…”�”}”(hjÌyh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjÈyubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj§yh²hh³j¹yh´M|ubj‹)�”}”(hŒ,(struct socket *socka, struct socket *sockb)”h]”(j‘)�”}”(hŒstruct socket *socka”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjèyh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjäyubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõyh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjäyubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jzŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjÎysbŒc.security_socket_socketpair”†”asbuh1hhjäyubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&zh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjäyubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj4zh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjäyubjp)�”}”(hŒsocka”h]”hŒsocka”…”�”}”(hjAzh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjäyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjàyubj‘)�”}”(hŒstruct socket *sockb”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjZzh²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhjVzubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgzh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVzubh)�”}”(hhh]”jp)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjxzh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjuzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jzzŒmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j"zŒc.security_socket_socketpair”†”asbuh1hhjVzubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–zh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjVzubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj¤zh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjVzubjp)�”}”(hŒsockb”h]”hŒsockb”…”�”}”(hj±zh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjVzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjàyubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj§yh²hh³j¹yh´M|ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj£yh²hh³j¹yh´M|ubah}”(h]”jžyah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¹yh´M|hj yh²hubj)�”}”(hhh]”hÌ)�”}”(hŒ)Check if creating a socketpair is allowed”h]”hŒ)Check if creating a socketpair is allowed”…”�”}”(hjÛzh²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Øzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj yh²hh³j¹yh´M|ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"józj#józj$‰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ýzh]”hŒ Parameters”…”�”}”(hjÿzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjûzubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M€hj÷zubjH)�”}”(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”…”�”}”(hj5{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1{h´M}hj2{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j1{h´M}hj{ubjM)�”}”(hŒ'``struct socket *sockb`` second socket ”h]”(jS)�”}”(hŒ``struct socket *sockb``”h]”hë)�”}”(hjU{h]”hŒstruct socket *sockb”…”�”}”(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´M~hjO{ubjm)�”}”(hhh]”hÌ)�”}”(hŒ second socket”h]”hŒ second socket”…”�”}”(hjn{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jj{h´M~hjk{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjO{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jj{h´M~hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj÷zubhÌ)�”}”(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÷zubhÌ)�”}”(hŒ:Check permissions before creating a fresh pair of sockets.”h]”hŒ:Check permissions before creating a fresh pair of sockets.”…”�”}”(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÷zubhÌ)�”}”(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÷zubhÌ)�”}”(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.”…”�”}”(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÷zubeh}”(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´M6ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjø{h²hh³j |h´M6ubjj)�”}”(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´M6ubj‹)�”}”(hŒ&(struct sock *sk, struct sk_buff *skb)”h]”(j‘)�”}”(hŒstruct sock *sk”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hj9|h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj5|ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF|h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj5|ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjW|h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjT|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jY|Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj|sbŒc.security_sock_rcv_skb”†”asbuh1hhj5|ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw|h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj5|ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj…|h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj5|ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj’|h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj5|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj1|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�]”js|Œ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Œ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�hj1|ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjø{h²hh³j |h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjô{h²hh³j |h´M6ubah}”(h]”jï{ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j |h´M6hjñ{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´M6hj)}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjñ{h²hh³j |h´M6ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jD}j#jD}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)�”}”(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`` destination sock ”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´M7hjg}ubjm)�”}”(hhh]”hÌ)�”}”(hŒdestination sock”h]”hŒdestination sock”…”�”}”(hj†}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚}h´M7hjƒ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjg}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j‚}h´M7hjd}ubjM)�”}”(hŒ(``struct sk_buff *skb`` incoming 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´M8hj }ubjm)�”}”(hhh]”hÌ)�”}”(hŒincoming packet”h]”hŒincoming packet”…”�”}”(hj¿}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»}h´M8hj¼}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj }ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j»}h´M8hjd}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Ì)�”}”(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´M9hjH}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 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hjB~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_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”…”�”}”(hjq~h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjm~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&]”uh1jXhjm~h²hh³j~h´M^ubjj)�”}”(hŒ security_socket_getpeersec_dgram”h]”jp)�”}”(hŒ security_socket_getpeersec_dgram”h]”hŒ security_socket_getpeersec_dgram”…”�”}”(hj’~h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjŽ~ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjm~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”…”�”}”(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ƒj”~sbŒ"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Œsock”h]”hŒsock”…”�”}”(hjh²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&]”uh1jKhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubh)�”}”(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”†”asbuh1hhjubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjubjp)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj¦~ubj‘)�”}”(hŒ u32 *secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(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Œ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¦~ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjm~h²hh³j~h´M^ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhji~h²hh³j~h´M^ubah}”(h]”jd~ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j~h´M^hjf~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ÿhjf~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´Mbhj€ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct socket *sock`` socket ”h]”(jS)�”}”(hŒ``struct socket *sock``”h]”hë)�”}”(hj7€h]”hŒstruct socket *sock”…”�”}”(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´M_hj1€ubjm)�”}”(hhh]”hÌ)�”}”(hŒsocket”h]”hŒsocket”…”�”}”(hjP€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL€h´M_hjM€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj1€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jL€h´M_hj.€ubjM)�”}”(hŒ(``struct sk_buff *skb`` datagram packet ”h]”(jS)�”}”(hŒ``struct sk_buff *skb``”h]”hë)�”}”(hjp€h]”hŒstruct sk_buff *skb”…”�”}”(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´M`hjj€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&]”uh1jlhjj€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ë)�”}”(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´Mahj£€ubjm)�”}”(hhh]”hÌ)�”}”(hŒremote peer label secid”h]”hŒremote peer label secid”…”�”}”(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.€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´Mchj€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´Mbhj€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´Mhhj€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´Mihj€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”…”�”}”(hjP�h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjL�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&]”uh1jXhjL�h²hh³j^�h´M¥ubjj)�”}”(hŒsecurity_sk_clone”h]”jp)�”}”(hŒsecurity_sk_clone”h]”hŒsecurity_sk_clone”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjm�ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjL�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”…”�”}”(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ƒjs�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”…”�”}”(hj8‚h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj5‚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Œ ”…”�”}”(hjV‚h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj‚ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjd‚h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj‚ubjp)�”}”(hŒnewsk”h]”hŒnewsk”…”�”}”(hjq‚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ŠhjL�h²hh³j^�h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjH�h²hh³j^�h´M¥ubah}”(h]”jC�ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j^�h´M¥hjE�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ÿhjE�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 sock *sk`` original sock ``struct sock *newsk`` target sock **Description** Clone/copy security structure.”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 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¦hjÖ‚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&]”uh1jlhjÖ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jñ‚h´M¦hjÓ‚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§hjÓ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj·‚ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjPƒh]”hŒ Description”…”�”}”(hjRƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjNƒ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ŒClone/copy security structure.”h]”hŒClone/copy security structure.”…”�”}”(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´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_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”…”�”}”(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_classify_flow”h]”jp)�”}”(hŒsecurity_sk_classify_flow”h]”hŒsecurity_sk_classify_flow”…”�”}”(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Œ2(const struct sock *sk, struct flowi_common *flic)”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_sk_classify_flow”†”asbuh1hhj΃ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+„h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj΃ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj9„h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj΃ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjF„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”…”�”}”(hj_„h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj[„ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl„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&]”uh1johjz„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Œ*”…”�”}”(hj©„h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj[„ubjp)�”}”(hŒflic”h]”hŒflic”…”�”}”(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Œ"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´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 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´M¶hjü„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´M³hj…ubjm)�”}”(hhh]”hÌ)�”}”(hŒoriginal socket”h]”hŒoriginal socket”…”�”}”(hj:…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6…h´M³hj7…ubah}”(h]”h ]”h"]”h$]”•Hh&]”uh1jlhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6…h´M³hj…ubjM)�”}”(hŒ*``struct flowi_common *flic`` target flow ”h]”(jS)�”}”(hŒ``struct flowi_common *flic``”h]”hë)�”}”(hjZ…h]”hŒstruct flowi_common *flic”…”�”}”(hj\…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjX…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M´hjT…ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target flow”h]”hŒ target flow”…”�”}”(hjs…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jo…h´M´hjp…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjT…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jo…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Œ.Set the target flow's secid to socket's secid.”h]”hŒ2Set the target flow’s secid to socket’s secid.”…”�”}”(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_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&]”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_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‰uh1jihjÖ…h²hh³jè…h´M¿ubj‹)�”}”(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Œ ”…”�”}”(hj$†h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj†ubjL)�”}”(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Œ request_sock”h]”hŒ request_sock”…”�”}”(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_req_classify_flow”†”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Œ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”…”�”}”(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�]”jl†Œ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Œflic”h]”hŒflic”…”�”}”(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Œ(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´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 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)�”}”(hjG‡h]”hŒ Parameters”…”�”}”(hjI‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjE‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÃhjA‡ubjH)�”}”(hhh]”(jM)�”}”(hŒ0``const struct request_sock *req`` request_sock ”h]”(jS)�”}”(hŒ"``const struct request_sock *req``”h]”hë)�”}”(hjf‡h]”hŒconst struct request_sock *req”…”�”}”(hjh‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjd‡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Œ request_sock”h]”hŒ 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Àhj]‡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´MÁhj™‡ubjm)�”}”(hhh]”hÌ)�”}”(hŒ target flow”h]”hŒ target flow”…”�”}”(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&]”uh1jGhjA‡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ÃhjA‡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´MÂhjA‡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”…”�”}”(hjCˆ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Œ ”…”�”}”(hjRˆh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj?ˆh²hh³jQˆh´MÍubjj)�”}”(hŒsecurity_sock_graft”h]”jp)�”}”(hŒsecurity_sock_graft”h]”hŒsecurity_sock_graft”…”�”}”(hjdˆh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj`ˆubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj?ˆh²hh³jQˆh´MÍubj‹)�”}”(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Œ ”…”�”}”(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ƒjfˆsbŒ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Œ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�hjxˆ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”…”�”}”(hjI‰h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjîˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjxˆubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj?ˆh²hh³jQˆh´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj;ˆh²hh³jQˆh´MÍubah}”(h]”j6ˆah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jQˆh´MÍhj8ˆ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”…”�”}”(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Íhjp‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj8ˆh²hh³jQˆ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 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)�”}”(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`` sock being grafted ”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´MÎhj®‰ubjm)�”}”(hhh]”hÌ)�”}”(hŒsock being grafted”h]”hŒsock being grafted”…”�”}”(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 *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´MÏhjç‰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´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Œ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”…”�”}”(hjFŠ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”…”�”}”(hjXŠ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”…”�”}”(hjjŠ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Ðhj�‰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”…”�”}”(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_inet_conn_request”h]”jp)�”}”(hŒsecurity_inet_conn_request”h]”hŒsecurity_inet_conn_request”…”�”}”(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Œ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Œ ”…”�”}”(hjK‹h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjîŠubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjY‹h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjîŠubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjf‹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”jŸ‹Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”jG‹Œ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Œ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�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�]”jG‹Œ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Œ*”…”�”}”(hj9Œh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjë‹ubjp)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjFŒ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Œ-Set request_sock state using incoming connect”h]”hŒ-Set request_sock state using incoming connect”…”�”}”(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** ``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)�”}”(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Œ0``const struct sock *sk`` parent listening 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Ühj«Œubjm)�”}”(hhh]”hÌ)�”}”(hŒparent listening sock”h]”hŒparent listening 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Ühj¨Œ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Ýhj¨Œ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³j8�h´MÞhj9�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j8�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ŒUInitialize the **req** LSM state based on **sk** and the incoming connect in **skb**.”h]”(hŒInitialize the ”…”�”}”(hjt�h²hh³Nh´Nubj2)�”}”(hŒ**req**”h]”hŒreq”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjt�ubhŒ LSM state based on ”…”�”}”(hjt�h²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hjŽ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjt�ubhŒ and the incoming connect in ”…”�”}”(hjt�h²hh³Nh´Nubj2)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjt�ubhŒ.”…”�”}”(hjt�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_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´MùubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjü�h²hh³jŽh´Mùubjj)�”}”(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´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&]”uh1jKhj9ŽubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJŽh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj9Žubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(hj[Žh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjXŽ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”†”asbuh1hhj9ŽubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Žh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj9Žubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‰Žh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj9Žubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hj–Žh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj9Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj5Ž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�]”jwŽŒ 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Œ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�hj5Ž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 sock's LSM state with connection”h]”hŒ)Update sock’s LSM state with connection”…”�”}”(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ù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"jH�j#jH�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)�”}”(hjR�h]”hŒ Parameters”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjP�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MýhjL�ubjH)�”}”(hhh]”(jM)�”}”(hŒ``struct sock *sk`` sock ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hjq�h]”hŒstruct sock *sk”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjo�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Múhjk�ubjm)�”}”(hhh]”hÌ)�”}”(hŒsock”h]”hŒsock”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†�h´Múhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjk�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†�h´Múhjh�ubjM)�”}”(hŒ*``struct sk_buff *skb`` connection 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Œconnection packet”h]”hŒconnection 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ûhjh�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjL�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ýhjL�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´MühjL�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”…”�”}”(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´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]�h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJ�h²hh³j\�h´Mubjj)�”}”(hŒsecurity_secmark_relabel_packet”h]”jp)�”}”(hŒsecurity_secmark_relabel_packet”h]”hŒsecurity_secmark_relabel_packet”…”�”}”(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´Mubj‹)�”}”(hŒ (u32 secid)”h]”j‘)�”}”(hŒ u32 secid”h]”(h)�”}”(hhh]”jp)�”}”(hŒu32”h]”hŒu32”…”�”}”(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_secmark_relabel_packet”†”asbuh1hhj‡�ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®�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ŠhjJ�h²hh³j\�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjF�h²hh³j\�h´Mubah}”(h]”jA�ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j\�h´MhjC�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´Mhjã�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjC�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** ``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´Mhj!‘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´Mhj=‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj!‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j<‘h´Mhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj‘ubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hjb‘h]”hŒ Description”…”�”}”(hjd‘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Œ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 ”…”�”}”(hjx‘h²hh³Nh´Nubj2)�”}”(hŒ **secid**”h]”hŒsecid”…”�”}”(hj€‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjx‘ubhŒ.”…”�”}”(hjx‘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_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´MubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï‘h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÜ‘h²hh³jî‘h´Mubjj)�”}”(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´Mubj‹)�”}”(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´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Œ)Increment the secmark labeling rule count”h]”hŒ)Increment the secmark labeling rule count”…”�”}”(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´MhjD’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** ``void`` no arguments **Description** Tells the LSM to increment the number of secmark labeling rules loaded.”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´Mhjc’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”…”�”}”(hj¡’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�’h´Khjž’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj‚’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�’h´Khj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjc’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´Khjc’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´Mhjc’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´M ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj“h²hh³j“h´M ubjj)�”}”(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´M ubj‹)�”}”(hŒ(void)”h]”j‘)�”}”(hŒvoid”h]”jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjE“h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjA“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Œ)Decrement the secmark labeling rule count”h]”hŒ)Decrement the secmark labeling rule count”…”�”}”(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´M hjl“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** Tells the LSM to decrement 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´M$hj‹“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”…”�”}”(hjÉ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅ“h´KhjÆ“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)�”}”(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´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_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”…”�”}”(hj0”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”…”�”}”(hjQ”h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjM”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”…”�”}”(hjm”h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhji”ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{”h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhji”ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj‰”h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hji”ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hj–”h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hji”ubjp)�”}”(hŒsecurity”h]”hŒsecurity”…”�”}”(hj£”h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johji”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hje”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”…”�”}”(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** ``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´M/hjé”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)�”}”(hjI•h]”hŒ Description”…”�”}”(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´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”…”�”}”(hjg•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´M0hjé”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´M1hjé”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”…”�”}”(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_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‰uh1jihjÕh²hh³jÕ•h´MEubj‹)�”}”(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ŠhjÕh²hh³jÕ•h´MEubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj¿•h²hh³jÕ•h´MEubah}”(h]”jº•ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jÕ•h´MEhj¼•h²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree a TUN device LSM blob”h]”hŒFree a TUN device LSM blob”…”�”}”(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´MEhjT–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¼•h²hh³jÕ•h´MEubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jo–j#jo–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)�”}”(hjy–h]”hŒ Parameters”…”�”}”(hj{–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjw–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MIhjs–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êhj––ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MFhj’–ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hj±–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­–h´MFhj®–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj’–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j­–h´MFhj�–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjs–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´MHhjs–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´MGhjs–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´MQubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'—h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj—h²hh³j&—h´MQubjj)�”}”(hŒsecurity_tun_dev_create”h]”jp)�”}”(hŒsecurity_tun_dev_create”h]”hŒsecurity_tun_dev_create”…”�”}”(hj9—h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj5—ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj—h²hh³j&—h´MQubj‹)�”}”(hŒ(void)”h]”j‘)�”}”(hŒvoid”h]”jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjU—h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjQ—ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjM—ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj—h²hh³j&—h´MQubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj—h²hh³j&—h´MQubah}”(h]”j —ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j&—h´MQhj —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´MQhj|—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj —h²hh³j&—h´MQubeh}”(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)�”}”(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´MUhj›—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”…”�”}”(hjÙ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÕ—h´KhjÖ—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)�”}”(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´MRhj›—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´MThj›—ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(hj8˜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´MUhj›—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”…”�”}”(hjg˜h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjc˜h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M^ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv˜h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjc˜h²hh³ju˜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‰uh1jihjc˜h²hh³ju˜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Šhjc˜h²hh³ju˜h´M^ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj_˜h²hh³ju˜h´M^ubah}”(h]”jZ˜ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³ju˜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³ju˜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´Mbhj™ubjH)�”}”(hhh]”jM)�”}”(hŒ'``void *security`` TUN device LSM blob ”h]”(jS)�”}”(hŒ``void *security``”h]”hë)�”}”(hj8™h]”hŒvoid *security”…”�”}”(hj:™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhj6™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M_hj2™ubjm)�”}”(hhh]”hÌ)�”}”(hŒTUN device LSM blob”h]”hŒTUN device LSM blob”…”�”}”(hjQ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM™h´M_hjN™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj2™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jM™h´M_hj/™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhj™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´Mahj™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´Mbhj™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´Mchj™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Œskb** of the association INIT packet to the LSM. **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Œ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³j9Ÿh´M�hj:Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j9Ÿh´M�hjâžubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjÆžubhÌ)�”}”(hŒ**Description**”h]”j2)�”}”(hj_Ÿh]”hŒ Description”…”�”}”(hjaŸ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ŒQPasses the **asoc** and **chunk->skb** of the association INIT packet to the LSM.”h]”(hŒ Passes the ”…”�”}”(hjuŸh²hh³Nh´Nubj2)�”}”(hŒ**asoc**”h]”hŒasoc”…”�”}”(hj}Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjuŸubhŒ and ”…”�”}”(hjuŸh²hh³Nh´Nubj2)�”}”(hŒ**chunk->skb**”h]”hŒ chunk->skb”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjuŸubhŒ+ of the association INIT packet to the LSM.”…”�”}”(hjuŸ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 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_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Œ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj( ubh)�”}”(hhh]”jp)�”}”(hŒsock”h]”hŒsock”…”�”}”(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_sctp_bind_connect”†”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Œ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”…”�”}”(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Œ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”…”�”}”(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Œ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�]”jf Œ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Œaddress”h]”hŒaddress”…”�”}”(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 addrlen”h]”(jG)�”}”(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Œ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"j¡¡j#j¡¡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)�”}”(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`` socket ”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´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Œ(``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�hjÁ¡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žhj6¢ubjm)�”}”(hhh]”hÌ)�”}”(hŒ list of IP addresses to validate”h]”hŒ list of IP addresses to validate”…”�”}”(hjU¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQ¢h´MžhjR¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj6¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jQ¢h´MžhjÁ¡ubjM)�”}”(hŒ+``int addrlen`` length of the address list ”h]”(jS)�”}”(hŒ``int addrlen``”h]”hë)�”}”(hju¢h]”hŒ int addrlen”…”�”}”(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´MŸhjo¢ubjm)�”}”(hhh]”hÌ)�”}”(hŒlength of the address list”h]”hŒlength of the address list”…”�”}”(hjŽ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠ¢h´MŸhj‹¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjo¢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Ì)�”}”(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 ”…”�”}”(hjÆ¢h²hh³Nh´Nubj2)�”}”(hŒ**sk**”h]”hŒsk”…”�”}”(hj΢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÆ¢ubhŒ. Depending on ”…”�”}”(hjÆ¢h²hh³Nh´Nubj2)�”}”(hŒ **optname**”h]”hŒoptname”…”�”}”(hjà¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÆ¢ubhŒI, the addresses will be treated as either a connect or bind service. The ”…”�”}”(hjÆ¢h²hh³Nh´Nubj2)�”}”(hŒ **addrlen**”h]”hŒaddrlen”…”�”}”(hjò¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÆ¢ubhŒm is calculated on each IPv4 and IPv6 address using sizeof(struct sockaddr_in) or sizeof(struct sockaddr_in6).”…”�”}”(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 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_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”…”�”}”(hjR£h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjN£h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M°ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hja£h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjN£h²hh³j`£h´M°ubjj)�”}”(hŒsecurity_sctp_sk_clone”h]”jp)�”}”(hŒsecurity_sctp_sk_clone”h]”hŒsecurity_sctp_sk_clone”…”�”}”(hjs£h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjo£ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjN£h²hh³j`£h´M°ubj‹)�”}”(hŒD(struct sctp_association *asoc, struct sock *sk, struct sock *newsk)”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ƒju£sbŒ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Œ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�]”jÉ£Œ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Œ*”…”�”}”(hjK¤h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjý£ubjp)�”}”(hŒsk”h]”hŒsk”…”�”}”(hjX¤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”…”�”}”(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Œ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_sctp_sk_clone”†”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Œnewsk”h]”hŒnewsk”…”�”}”(hjȤh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjm¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj‡£ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjN£h²hh³j`£h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjJ£h²hh³j`£h´M°ubah}”(h]”jE£ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j`£h´M°hjG£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´M°hjï¤h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjG£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()�”}”(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´M´hj¥ubjH)�”}”(hhh]”(jM)�”}”(hŒ3``struct sctp_association *asoc`` SCTP association ”h]”(jS)�”}”(hŒ!``struct sctp_association *asoc``”h]”hë)�”}”(hj3¥h]”hŒstruct sctp_association *asoc”…”�”}”(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´M±hj-¥ubjm)�”}”(hhh]”hÌ)�”}”(hŒSCTP association”h]”hŒSCTP association”…”�”}”(hjL¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jH¥h´M±hjI¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj-¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jH¥h´M±hj*¥ubjM)�”}”(hŒ"``struct sock *sk`` original sock ”h]”(jS)�”}”(hŒ``struct sock *sk``”h]”hë)�”}”(hjl¥h]”hŒstruct sock *sk”…”�”}”(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Œ 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&]”uh1jlhjf¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�¥h´M²hj*¥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³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Œ”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´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_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´MÁubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4¦h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj!¦h²hh³j3¦h´MÁubjj)�”}”(hŒsecurity_sctp_assoc_established”h]”jp)�”}”(hŒsecurity_sctp_assoc_established”h]”hŒsecurity_sctp_assoc_established”…”�”}”(hjF¦h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjB¦ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj!¦h²hh³j3¦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”…”�”}”(hjb¦h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj^¦ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo¦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ƒjH¦sbŒ!c.security_sctp_assoc_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Œ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�hjZ¦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_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Œ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�hjZ¦ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj!¦h²hh³j3¦h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj¦h²hh³j3¦h´MÁubah}”(h]”j¦ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j3¦h´MÁhj¦h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ'Update LSM state when assoc established”h]”hŒ'Update LSM state when assoc established”…”�”}”(hjU§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ÁhjR§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj¦h²hh³j3¦h´MÁubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jm§j#jm§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)�”}”(hjw§h]”hŒ Parameters”…”�”}”(hjy§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hju§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MÅhjq§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 establishing 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 establishing the association”h]”hŒ#packet establishing 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&]”uh1jGhjq§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Åhjq§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´MÄhjq§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Çhjq§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Èhjq§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&]”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_unix_find”h]”jp)�”}”(hŒsecurity_unix_find”h]”hŒsecurity_unix_find”…”�”}”(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(const struct path *path, struct sock *other, int flags)”h]”(j‘)�”}”(hŒconst struct path *path”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_unix_find”†”asbuh1hhjÓ¨ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0©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Œpath”h]”hŒpath”…”�”}”(hjK©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 *other”h]”(jL)�”}”(hjOh]”hŒstruct”…”�”}”(hjd©h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj`©ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq©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Œ ”…”�”}”(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Œ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�hjϨubj‘)�”}”(hŒ int flags”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Œ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´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 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´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"j2ªj#j2ª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êhj6ª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êhjYªubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MçhjUªubjm)�”}”(hhh]”hÌ)�”}”(hŒ%path of the socket being connected to”h]”hŒ%path of the socket being connected to”…”�”}”(hjtªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jpªh´Mçhjqªubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjUªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jpªh´MçhjRªubjM)�”}”(hŒ!``struct sock *other`` peer sock ”h]”(jS)�”}”(hŒ``struct sock *other``”h]”hë)�”}”(hj”ªh]”hŒstruct sock *other”…”�”}”(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Œ peer sock”h]”hŒ peer 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èhjRªubjM)�”}”(hŒ/``int flags`` flags associated with the socket ”h]”(jS)�”}”(hŒ ``int flags``”h]”hë)�”}”(hjͪh]”hŒ 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´MéhjǪ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´Méhjãªubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjǪubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jâªh´MéhjRªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhj6ª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ëhj6ª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êhj6ª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íhj6ª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îhj6ª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´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_pkey_access”h]”jp)�”}”(hŒsecurity_ib_pkey_access”h]”hŒsecurity_ib_pkey_access”…”�”}”(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, u64 subnet_prefix, u16 pkey)”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Œ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ƒj©«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”…”�”}”(hj6¬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”…”�”}”(hjR¬h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjO¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jT¬Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j$¬Œc.security_ib_pkey_access”†”asbuh1hhjK¬ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¬h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjK¬ubjp)�”}”(hŒpkey”h]”hŒpkey”…”�”}”(hj~¬h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjK¬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 access to an IB pkey is allowed”h]”hŒ(Check if access to an IB pkey 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 *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)�”}”(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”…”�”}”(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Œ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´Mühj­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³j7­h´Mühj8­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j7­h´Mühjà¬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êhjY­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MýhjU­ubjm)�”}”(hhh]”hÌ)�”}”(hŒIB pkey”h]”hŒIB pkey”…”�”}”(hjt­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jp­h´Mýhjq­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjU­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jp­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Œ6Check permission to access a pkey when modifying a QP.”h]”hŒ6Check permission to access a pkey when modifying a QP.”…”�”}”(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´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_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´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_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´M ubj‹)�”}”(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Œ ”…”�”}”(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Œsec”h]”hŒsec”…”�”}”(hjh®h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj;®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj7®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Œ ”…”�”}”(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Œdev_name”h]”hŒdev_name”…”�”}”(hjÅ®h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj}®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hj7®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�hj7®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 SMPs traffic is allowed”h]”hŒ Check if SMPs traffic is allowed”…”�”}”(hj9¯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 hj6¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj÷­h²hh³j®h´M ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jQ¯j#jQ¯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&]”uh1j1hjY¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjU¯ubjH)�”}”(hhh]”(jM)�”}”(hŒ``void *sec`` LSM blob ”h]”(jS)�”}”(hŒ ``void *sec``”h]”hë)�”}”(hjz¯h]”hŒ void *sec”…”�”}”(hj|¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjx¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´M hjt¯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&]”uh1jlhjt¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j�¯h´M hjq¯ubjM)�”}”(hŒ(``const char *dev_name`` IB device name ”h]”(jS)�”}”(hŒ``const char *dev_name``”h]”hë)�”}”(hj³¯h]”hŒconst char *dev_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ŒIB device name”h]”hŒIB device 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 hjq¯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 hjq¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jGhjU¯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´MhjU¯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´MhjU¯ubhÌ)�”}”(hŒ **Return**”h]”j2)�”}”(hjN°h]”hŒReturn”…”�”}”(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´MhjU¯ubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(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´MhjU¯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”…”�”}”(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_ib_alloc_security”h]”jp)�”}”(hŒsecurity_ib_alloc_security”h]”hŒsecurity_ib_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´Mubj‹)�”}”(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̰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´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ŒAllocate an Infiniband LSM blob”h]”hŒAllocate an Infiniband LSM blob”…”�”}”(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´Mhj-±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjˆ°h²hh³j¡°h´Mubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jH±j#jH±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)�”}”(hjR±h]”hŒ Parameters”…”�”}”(hjT±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjP±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MhjL±ubjH)�”}”(hhh]”jM)�”}”(hŒ``void **sec`` LSM blob ”h]”(jS)�”}”(hŒ``void **sec``”h]”hë)�”}”(hjq±h]”hŒ void **sec”…”�”}”(hjs±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjo±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´Mhjk±ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hjбh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†±h´Mhj‡±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjk±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j†±h´Mhjh±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjL±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´MhjL±ubhÌ)�”}”(hŒ5Allocate a security structure for Infiniband objects.”h]”hŒ5Allocate a security structure for Infiniband objects.”…”�”}”(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´MhjL±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´MhjL±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´M hjL±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´M4ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'²h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj²h²hh³j&²h´M4ubjj)�”}”(hŒsecurity_ib_free_security”h]”jp)�”}”(hŒsecurity_ib_free_security”h]”hŒsecurity_ib_free_security”…”�”}”(hj9²h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj5²ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihj²h²hh³j&²h´M4ubj‹)�”}”(hŒ (void *sec)”h]”j‘)�”}”(hŒ void *sec”h]”(jG)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjU²h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjQ²ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc²•’çh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjQ²ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjq²h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjQ²ubjp)�”}”(hŒsec”h]”hŒsec”…”�”}”(hj~²h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjQ²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjˆj‰uh1j�hjM²ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhj²h²hh³j&²h´M4ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj²h²hh³j&²h´M4ubah}”(h]”j ²ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j&²h´M4hj ²h²hubj)�”}”(hhh]”hÌ)�”}”(hŒFree an Infiniband LSM blob”h]”hŒFree 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´M4hj¥²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj ²h²hh³j&²h´M4ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jÀ²j#jÀ²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)�”}”(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´M8hjIJubjH)�”}”(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´M5hjã²ubjm)�”}”(hhh]”hÌ)�”}”(hŒLSM blob”h]”hŒLSM blob”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ²h´M5hjÿ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjã²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jþ²h´M5hjà²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jGhjIJubhÌ)�”}”(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´M7hjIJubhÌ)�”}”(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´M6hjIJubeh}”(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”…”�”}”(hji³h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhje³h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MBubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx³h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhje³h²hh³jw³h´MBubjj)�”}”(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‰uh1jihje³h²hh³jw³h´MBubj‹)�”}”(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”…”�”}”(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_sec_ctx”h]”hŒ xfrm_sec_ctx”…”�”}”(hjijh²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_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¢³ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjÿ³h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¢³ubjp)�”}”(hŒctxp”h]”hŒctxp”…”�”}”(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Œ ”…”�”}”(hj2´h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj!´ubh)�”}”(hhh]”jp)�”}”(hŒxfrm_user_sec_ctx”h]”hŒxfrm_user_sec_ctx”…”�”}”(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_xfrm_policy_alloc”†”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Œ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ž³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&]”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‘´ubjp)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(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Šhje³h²hh³jw³h´MBubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhja³h²hh³jw³h´MBubah}”(h]”j\³ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jw³h´MBhj^³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´MBhjë´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj^³h²hh³jw³h´MBubeh}”(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´MFhj µ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”…”�”}”(hj1µ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´MChj)µubjm)�”}”(hhh]”hÌ)�”}”(hŒ,xfrm security context being added to the SPD”h]”hŒ,xfrm security context being added to the SPD”…”�”}”(hjHµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDµh´MChjEµubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj)µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jDµh´MChj&µ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ë)�”}”(hjhµh]”hŒ!struct xfrm_user_sec_ctx *sec_ctx”…”�”}”(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´MDhjbµ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´MDhj~µubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjbµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j}µh´MDhj&µubjM)�”}”(hŒ``gfp_t gfp`` gfp flags ”h]”(jS)�”}”(hŒ ``gfp_t gfp``”h]”hë)�”}”(hj¡µh]”hŒ gfp_t gfp”…”�”}”(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´MEhj›µubjm)�”}”(hhh]”hÌ)�”}”(hŒ gfp flags”h]”hŒ gfp flags”…”�”}”(hjºµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶µh´MEhj·µubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhj›µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j¶µh´MEhj&µ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´MGhj µ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´MFhj µ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´MIhj µ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´MJhj µ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”…”�”}”(hjH¶h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjD¶h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MeubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW¶h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjD¶h²hh³jV¶h´Meubjj)�”}”(hŒsecurity_xfrm_policy_free”h]”jp)�”}”(hŒsecurity_xfrm_policy_free”h]”hŒsecurity_xfrm_policy_free”…”�”}”(hji¶h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johje¶ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjD¶h²hh³jV¶h´Meubj‹)�”}”(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Œ ”…”�”}”(hj’¶h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj�¶ubh)�”}”(hhh]”jp)�”}”(hŒ xfrm_sec_ctx”h]”hŒ xfrm_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�)�”}”jƒjk¶sbŒc.security_xfrm_policy_free”†”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Œ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ŠhjD¶h²hh³jV¶h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhj@¶h²hh³jV¶h´Meubah}”(h]”j;¶ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jV¶h´Mehj=¶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´Mehj·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj=¶h²hh³jV¶h´Meubeh}”(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´Mihj$·ubjH)�”}”(hhh]”jM)�”}”(hŒ3``struct xfrm_sec_ctx *ctx`` xfrm security context ”h]”(jS)�”}”(hŒ``struct xfrm_sec_ctx *ctx``”h]”hë)�”}”(hjI·h]”hŒstruct xfrm_sec_ctx *ctx”…”�”}”(hjK·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjG·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MfhjC·ubjm)�”}”(hhh]”hÌ)�”}”(hŒxfrm security context”h]”hŒxfrm security context”…”�”}”(hjb·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^·h´Mfhj_·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjC·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j^·h´Mfhj@·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´Mhhj$·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”…”�”}”(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´Mghj$·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&]”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_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‰uh1jihj×·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”…”�”}”(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�)�”}”jƒjþ·sbŒc.security_xfrm_state_alloc”†”asbuh1hhj¸ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV¸h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj¸ubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjd¸h²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hj¸ubjp)�”}”(hŒx”h]”hŒx”…”�”}”(hjq¸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”…”�”}”(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�]”jR¸Œ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Œ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Š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 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ÿ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_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ë)�”}”(hjL¹h]”hŒstruct xfrm_state *x”…”�”}”(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´MhjF¹ubjm)�”}”(hhh]”hÌ)�”}”(hŒ!xfrm state being added to the SAD”h]”hŒ!xfrm state being added to the SAD”…”�”}”(hje¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³ja¹h´Mhjb¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjF¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³ja¹h´MhjC¹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€hjC¹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 **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 ”…”�”}”(hjÖ¹h²hh³Nh´Nubj2)�”}”(hŒ**x->security**”h]”hŒ x->security”…”�”}”(hjÞ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j1hjÖ¹ubhŒu field; the security field is initialized to NULL when the xfrm_state is allocated. Set the context to correspond to ”…”�”}”(hjÖ¹h²hh³Nh´Nubj2)�”}”(hŒ **sec_ctx**”h]”hŒsec_ctx”…”�”}”(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Œ%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”…”�”}”(hjPºh²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjLº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&]”uh1jXhjLºh²hh³j^ºh´M¢ubjj)�”}”(hŒsecurity_xfrm_state_delete”h]”jp)�”}”(hŒsecurity_xfrm_state_delete”h]”hŒsecurity_xfrm_state_delete”…”�”}”(hjqºh²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjmºubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjLºh²hh³j^ºh´M¢ubj‹)�”}”(hŒ(struct xfrm_state *x)”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ƒjsºsbŒc.security_xfrm_state_delete”†”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)�”}”(hjs¸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ŠhjLºh²hh³j^ºh´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjHºh²hh³j^ºh´M¢ubah}”(h]”jCºah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j^ºh´M¢hjEº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ÿhjEº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)�”}”(hj1»h]”hŒ Parameters”…”�”}”(hj3»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ë)�”}”(hjP»h]”hŒstruct xfrm_state *x”…”�”}”(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´M£hjJ»ubjm)�”}”(hhh]”hÌ)�”}”(hŒ xfrm state”h]”hŒ xfrm state”…”�”}”(hji»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³je»h´M£hjf»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjJ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³je»h´M£hjG»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Œ"Authorize deletion of x->security.”h]”hŒ"Authorize deletion of x->security.”…”�”}”(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_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´MlubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjó»h²hh³j¼h´Mlubjj)�”}”(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´Mlubj‹)�”}”(hŒ(enum lockdown_reason what)”h]”j‘)�”}”(hŒenum lockdown_reason what”h]”(jL)�”}”(hj«;h]”hŒenum”…”�”}”(hj4¼h²hh³Nh´Nubah}”(h]”h ]”jXah"]”h$]”h&]”uh1jKhj0¼ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA¼h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj0¼ubh)�”}”(hhh]”jp)�”}”(hŒlockdown_reason”h]”hŒlockdown_reason”…”�”}”(hjR¼h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johjO¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jŒreftype”jƒŒ reftarget”jT¼Œmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒj¼sbŒc.security_locked_down”†”asbuh1hhj0¼ubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr¼h²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhj0¼ubjp)�”}”(hŒwhat”h]”hŒwhat”…”�”}”(hj€¼h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johj0¼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´Mlubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjï»h²hh³j¼h´Mlubah}”(h]”jê»ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³j¼h´Mlhjì»h²hubj)�”}”(hhh]”hÌ)�”}”(hŒ$Check if a kernel feature is allowed”h]”hŒ$Check if a kernel feature 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´Mlhj§¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhjì»h²hh³j¼h´Mlubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"j¼j#j¼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)�”}”(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´MphjƼ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´Mmhjå¼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´Mmhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjå¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j½h´Mmhjâ¼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´MohjƼ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´MnhjƼ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´MqhjƼubhÌ)�”}”(hŒ#Returns 0 if permission is granted.”h]”hŒ#Returns 0 if permission is granted.”…”�”}”(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´MrhjƼ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”…”�”}”(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_alloc”h]”jp)�”}”(hŒsecurity_bdev_alloc”h]”hŒsecurity_bdev_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Œ(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Œ ”…”�”}”(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”jlmodname”NŒ classname”Nj‡jŠ)�”}”j�]”j�)�”}”jƒjµ½sbŒc.security_bdev_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Œ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Œ Allocate a block device LSM blob”h]”hŒ Allocate a block device LSM blob”…”�”}”(hjR¾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{hjO¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jÿhj‡½h²hh³j ½h´M{ubeh}”(h]”h ]”(jŒfunction”eh"]”h$]”h&]”j!jj"jj¾j#jj¾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)�”}”(hjt¾h]”hŒ Parameters”…”�”}”(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´Mhjn¾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&]”uh1jGhjn¾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~hjn¾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}hjn¾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�hjn¾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‚hjn¾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”…”�”}”(hjL¿h²hh³Nh´Nubah}”(h]”h ]”jSah"]”h$]”h&]”uh1jFhjH¿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&]”uh1jXhjH¿h²hh³jZ¿h´M•ubjj)�”}”(hŒsecurity_bdev_free”h]”jp)�”}”(hŒsecurity_bdev_free”h]”hŒsecurity_bdev_free”…”�”}”(hjm¿h²hh³Nh´Nubah}”(h]”h ]”j|ah"]”h$]”h&]”uh1johji¿ubah}”(h]”h ]”(jƒj„eh"]”h$]”h&]”jˆj‰uh1jihjH¿h²hh³jZ¿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Œ ”…”�”}”(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ƒjo¿sbŒc.security_bdev_free”†”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�¿ubah}”(h]”h ]”h"]”h$]”h&]”jˆj‰uh1jŠhjH¿h²hh³jZ¿h´M•ubeh}”(h]”h ]”h"]”h$]”h&]”jˆj‰jñˆuh1j@jòjóhjD¿h²hh³jZ¿h´M•ubah}”(h]”j?¿ah ]”(j÷jøeh"]”h$]”h&]”jüˆjý)jþhuh1j:h³jZ¿h´M•hjA¿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ÿhjA¿h²hh³jZ¿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”…”�”}”(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(ÀubjH)�”}”(hhh]”jM)�”}”(hŒ+``struct block_device *bdev`` block device ”h]”(jS)�”}”(hŒ``struct block_device *bdev``”h]”hë)�”}”(hjMÀh]”hŒstruct block_device *bdev”…”�”}”(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Œ block device”h]”hŒ block device”…”�”}”(hjfÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jbÀh´M–hjcÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjGÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³jbÀh´M–hjDÀ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 ”…”�”}”(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Œ to 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(À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&]”uh1johj7Á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Œ ”…”�”}”(hjZÁh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjÁubj³)�”}”(hj¶h]”hŒ*”…”�”}”(hjhÁh²hh³Nh´Nubah}”(h]”h ]”j¿ah"]”h$]”h&]”uh1j²hjÁubjp)�”}”(hŒbdev”h]”hŒbdev”…”�”}”(hjuÁ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)�”}”(hj«;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Œlsm_integrity_type”h]”hŒlsm_integrity_type”…”�”}”(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�]”jVÁŒc.security_bdev_setintegrity”†”asbuh1hhjŠÁubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊÁ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”…”�”}”(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Œ size_t size”h]”(h)�”}”(hhh]”jp)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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�]”jVÁŒc.security_bdev_setintegrity”†”asbuh1hhjJÂubjY)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÂh²hh³Nh´Nubah}”(h]”h ]”jeah"]”h$]”h&]”uh1jXhjJÂubjp)�”}”(hŒsize”h]”hŒsize”…”�”}”(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ŒSet the device's integrity data”h]”hŒ!Set the device’s integrity data”…”�”}”(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 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)�”}”(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ßÂ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³j6Ãh´M©hj7Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³j6Ãh´M©hjßÂubjM)�”}”(hŒ*``const void *value`` the integrity value ”h]”(jS)�”}”(hŒ``const void *value``”h]”hë)�”}”(hjZÃh]”hŒconst void *value”…”�”}”(hj\Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hêhjXÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jRh³Œ\/var/lib/git/docbuild/linux/Documentation/security/lsm-development:16: ./security/security.c”h´MªhjTÃubjm)�”}”(hhh]”hÌ)�”}”(hŒthe integrity value”h]”hŒthe integrity value”…”�”}”(hjsÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³joÃh´MªhjpÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jlhjTÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jLh³joÃh´MªhjßÂubjM)�”}”(hŒ,``size_t size`` size of the integrity value ”h]”(jS)�”}”(hŒ``size_t size``”h]”hë)�”}”(hj“Ãh]”hŒ size_t size”…”�”}”(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Œsize of the integrity value”h]”hŒsize of 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ßÂ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Ì)�”}”(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¬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´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”}”j8Äj5ÄsŒ nametypes”}”j8ĉsh}”(j5Ä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þ/j0jø2jý2j66j;6j”8j™8jÒ:j×:j[>j`>jMAjRAj DjDjKGjPGjaIjfIj®Kj³KjNjNjÈPjÍPjTj TjVjVj"Yj'YjµZjºZj]j]jP_jU_jõ`jú`j0cj5cjBfjGfjæhjëhjgjjljjèkjíkjŒnj‘nj0qj5qj¥sjªsjövjûvjžyj£yjï{jô{jd~ji~jC�jH�jˆƒj�ƒjÍ…jÒ…j6ˆj;ˆj¨Šj­Šjó�jø�jA�jF�jÓ‘jØ‘jû’j“j#”j(”jº•j¿•j —j—jZ˜j_˜jÒ™j×™jõ›jú›jm�jr�jâŸjçŸjE£jJ£j¦j¦j�¨j’¨jy«j~«jõ­jú­j†°j‹°j ²j²j\³ja³j;¶j@¶jηjÓ·jCºjHºjê»jï»j…½jнj?¿jD¿jÒÀj×À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.