linux/fs/ecryptfs/super.c
<<
opti v/spa v/form va opti href="../linux+v3ue=2/fs/ecryptfs/super.c">opti vimg src="../.static/gfx/right.png" alt=">>">opv/spa opvspa class="lxr_search">optiopti vinput typopthidden" namoptnavtarget" 15opti vinput typopttext" namoptsearch" idptsearch">opti vbutt32.typoptsubmit">Searchopti Prefs v/a>opv/spa ti v/div ti vform ac15" ="ajax+*" method="post" onsubmit="return false;">opvinput typopthidden" namoptajax_lookup" idptajax_lookup" 15oti v/form oti vdiv class="headingbott3m">
vdiv idptfile_contents"
   1v/a>vspa
 class="comment">/**v/spa
	    2v/a>vspa
 class="comment"> * eCryptfs: Linux filesystem encrypt.32.layerv/spa
	    3v/a>vspa
 class="comment"> *v/spa
	    4v/a>vspa
 class="comment"> * Copyright (C) 1997-2003 Erez Zadokv/spa
	    5v/a>vspa
 class="comment"> * Copyright (C) 2001-2003 St32y Brook Universityv/spa
	    6v/a>vspa
 class="comment"> * Copyright (C) 2004-2006 Internat.32al Business Machines Corp.v/spa
	    7v/a>vspa
 class="comment"> *   Author(s): Michael A. Halcrow <mahalcro@us.ibm.com>v/spa
	    8v/a>vspa
 class="comment"> *              Michael C. Thomps32.<mcthomps@us.ibm.com>v/spa
	    9v/a>vspa
 class="comment"> *v/spa
	   >
  a>vspa
 class="comment"> * This program is free software; you ca
 redistribute it and/orv/spa
	   11v/a>vspa
 class="comment"> * modify it under the terms of the GNU General Public License asv/spa
	   12v/a>vspa
 class="comment"> * published by the Free Software Foundat.32; either versi32.2 of thev/spa
	   13v/a>vspa
 class="comment"> * License, or (at your 2.15"
) any.later versi32.v/spa
	   14v/a>vspa
 class="comment"> *v/spa
	   15v/a>vspa
 class="comment"> * This program is distributed in the hope that it will be useful, butv/spa
	   16v/a>vspa
 class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty ofv/spa
	   17v/a>vspa
 class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNUv/spa
	   18v/a>vspa
 class="comment"> * General Public License for more details.v/spa
	   19v/a>vspa
 class="comment"> *v/spa
	   2
  a>vspa
 class="comment"> * You should have received a copy of the GNU General Public Licensev/spa
	   21v/a>vspa
 class="comment"> * along with this program; if not, write to the Free Softwarev/spa
	   22v/a>vspa
 class="comment"> * Foundat.32, Inc., 59 Temple Place - Suite 330, Bost32, MAv/spa
	   23v/a>vspa
 class="comment"> * 02111-1307, USA.v/spa
	   24v/a>vspa
 class="comment"> */v/spa
	   25v/a>   26v/a>#include.<linux/fs.hv/a>>   27v/a>#include.<linux/mount.hv/a>>   28v/a>#include.<linux/key.hv/a>>   29v/a>#include.<linux/slab.hv/a>>   30v/a>#include.<linux/seq_file.hv/a>>   31v/a>#include.<linux/file.hv/a>>   32v/a>#include.<linux/crypto.hv/a>>   33v/a>#include.<linux/statfs.hv/a>>   34v/a>#include.<linux/magic.hv/a>>   35v/a>#include."ecryptfs_kernel.hv/a>"   36v/a>   37v/a>struct va href="+code=kmem_cache" class="sref">kmem_cachev/a> *va href="+code=ecryptfs_inode_info_cache" class="sref">ecryptfs_inode_info_cachev/a>;   38v/a>   39v/a>vspa
 class="comment">/**v/spa
	   4
  a>vspa
 class="comment"> * ecryptfs_alloc_inode - allocate an ecryptfs inodev/spa
	   41v/a>vspa
 class="comment"> * @sb: Pointer to the ecryptfs super blockv/spa
	   42v/a>vspa
 class="comment"> *v/spa
	   43v/a>vspa
 class="comment"> * Called to bring a
 inode into existence.v/spa
	   44v/a>vspa
 class="comment"> *v/spa
	   45v/a>vspa
 class="comment"> * Only handle allocat.32, setting up structures should be done inv/spa
	   46v/a>vspa
 class="comment"> * ecryptfs_read_inode. This is because the kernel, between now andv/spa
	   47v/a>vspa
 class="comment"> * the2, will 0 out the private data pointer.v/spa
	   48v/a>vspa
 class="comment"> *v/spa
	   49v/a>vspa
 class="comment"> * Returns a pointer to a newly allocated inode, NULL otherwisev/spa
	   5
  a>vspa
 class="comment"> */v/spa
	   51v/a>static struct va href="+code=inode" class="sref">inodev/a> *va href="+code=ecryptfs_alloc_inode" class="sref">ecryptfs_alloc_inodev/a>(struct va href="+code=super_block" class="sref">super_blockv/a> *va href="+code=sb" class="sref">sbv/a>)   52v/a>{   53v/a>        struct va href="+code=ecryptfs_inode_info" class="sref">ecryptfs_inode_infov/a> *va href="+code=inode_info" class="sref">inode_infov/a>;   54v/a>        struct va href="+code=inode" class="sref">inodev/a> *va href="+code=inode" class="sref">inodev/a> = va href="+code=NULL" class="sref">NULLv/a>;   55v/a>   56v/a>        va href="+code=inode_info" class="sref">inode_infov/a> = va href="+code=kmem_cache_alloc" class="sref">kmem_cache_allocv/a>(va href="+code=ecryptfs_inode_info_cache" class="sref">ecryptfs_inode_info_cachev/a>, va href="+code=GFP_KERNEL" class="sref">GFP_KERNELv/a>);   57v/a>        if (va href="+code=unlikely" class="sref">unlikelyv/a>(!va href="+code=inode_info" class="sref">inode_infov/a>))   58v/a>                goto va href="+code=out" class="sref">outv/a>;   59v/a>        va href="+code=ecryptfs_init_crypt_stat" class="sref">ecryptfs_init_crypt_statv/a>(&va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=crypt_stat" class="sref">crypt_statv/a>);   60v/a>        va href="+code=mutex_init" class="sref">mutex_initv/a>(&va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=lower_file_mutex" class="sref">lower_file_mutexv/a>);   61v/a>        va href="+code=atomic_set" class="sref">atomic_setv/a>(&va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=lower_file_count" class="sref">lower_file_countv/a>, 0);   62v/a>        va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=lower_file" class="sref">lower_filev/a> = va href="+code=NULL" class="sref">NULLv/a>;   63v/a>        va href="+code=inode" class="sref">inodev/a> = &va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=vfs_inode" class="sref">vfs_inodev/a>;   64v/a>va href="+code=out" class="sref">outv/a>:   65v/a>        return va href="+code=inode" class="sref">inodev/a>;   66v/a>}   67v/a>   68v/a>static void va href="+code=ecryptfs_i_callback" class="sref">ecryptfs_i_callbackv/a>(struct va href="+code=rcu_head" class="sref">rcu_headv/a> *va href="+code=head" class="sref">headv/a>)   69v/a>{   70v/a>        struct va href="+code=inode" class="sref">inodev/a> *va href="+code=inode" class="sref">inodev/a> = va href="+code=container_of" class="sref">container_ofv/a>(va href="+code=head" class="sref">headv/a>, struct va href="+code=inode" class="sref">inodev/a>, va href="+code=i_rcu" class="sref">i_rcuv/a>);   71v/a>        struct va href="+code=ecryptfs_inode_info" class="sref">ecryptfs_inode_infov/a> *va href="+code=inode_info" class="sref">inode_infov/a>;   72v/a>        va href="+code=inode_info" class="sref">inode_infov/a> = va href="+code=ecryptfs_inode_to_private" class="sref">ecryptfs_inode_to_privatev/a>(va href="+code=inode" class="sref">inodev/a>);   73v/a>   74v/a>        va href="+code=kmem_cache_free" class="sref">kmem_cache_freev/a>(va href="+code=ecryptfs_inode_info_cache" class="sref">ecryptfs_inode_info_cachev/a>, va href="+code=inode_info" class="sref">inode_infov/a>);   75v/a>}   76v/a>   77v/a>vspa
 class="comment">/**v/spa
	   78v/a>vspa
 class="comment"> * ecryptfs_destroy_inodev/spa
	   79v/a>vspa
 class="comment"> * @inode: The ecryptfs inodev/spa
	   8
  a>vspa
 class="comment"> *v/spa
	   81v/a>vspa
 class="comment"> * This is used during the fi2al destruc15"
 of the inode.  Allv/spa
	   82v/a>vspa
 class="comment"> * allocat.32 of memory related to the inode, including allocatedv/spa
	   83v/a>vspa
 class="comment"> * memory in the crypt_stat struct, will be released here.v/spa
	   84v/a>vspa
 class="comment"> * There should be no chance that this deallocat.32 will be missed.v/spa
	   85v/a>vspa
 class="comment"> */v/spa
	   86v/a>static void va href="+code=ecryptfs_destroy_inode" class="sref">ecryptfs_destroy_inodev/a>(struct va href="+code=inode" class="sref">inodev/a> *va href="+code=inode" class="sref">inodev/a>)   87v/a>{   88v/a>        struct va href="+code=ecryptfs_inode_info" class="sref">ecryptfs_inode_infov/a> *va href="+code=inode_info" class="sref">inode_infov/a>;   89v/a>   90v/a>        va href="+code=inode_info" class="sref">inode_infov/a> = va href="+code=ecryptfs_inode_to_private" class="sref">ecryptfs_inode_to_privatev/a>(va href="+code=inode" class="sref">inodev/a>);   91v/a>        va href="+code=BUG_ON" class="sref">BUG_ONv/a>(va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=lower_file" class="sref">lower_filev/a>);   92v/a>        va href="+code=ecryptfs_destroy_crypt_stat" class="sref">ecryptfs_destroy_crypt_statv/a>(&va href="+code=inode_info" class="sref">inode_infov/a>->va href="+code=crypt_stat" class="sref">crypt_statv/a>);   93v/a>        va href="+code=call_rcu" class="sref">call_rcuv/a>(&va href="+code=inode" class="sref">inodev/a>->va href="+code=i_rcu" class="sref">i_rcuv/a>, va href="+code=ecryptfs_i_callback" class="sref">ecryptfs_i_callbackv/a>);   94v/a>}   95v/a>   96v/a>vspa
 class="comment">/**v/spa
	   97v/a>vspa
 class="comment"> * ecryptfs_statfsv/spa
	   98v/a>vspa
 class="comment"> * @sb: The ecryptfs super blockv/spa
	   99v/a>vspa
 class="comment"> * @buf: The struct kstatfs to fill in with statsv/spa
	  100  a>vspa
 class="comment"> *v/spa
	  101v/a>vspa
 class="comment"> * Get the filesystem statistics. Currently, we let this pass right throughv/spa
	  102v/a>vspa
 class="comment"> * to the lower filesystem and take no ac15"
 ourselves.v/spa
	  103v/a>vspa
 class="comment"> */v/spa
	  104v/a>static int va href="+code=ecryptfs_statfs" class="sref">ecryptfs_statfsv/a>(struct va href="+code=dentry" class="sref">dentryv/a> *va href="+code=dentry" class="sref">dentryv/a>, struct va href="+code=kstatfs" class="sref">kstatfsv/a> *va href="+code=buf" class="sref">bufv/a>)  105v/a>{  106v/a>        struct va href="+code=dentry" class="sref">dentryv/a> *va href="+code=lower_dentry" class="sref">lower_dentryv/a> = va href="+code=ecryptfs_dentry_to_lower" class="sref">ecryptfs_dentry_to_lowerv/a>(va href="+code=dentry" class="sref">dentryv/a>);  107v/a>        int va href="+code=rc" class="sref">rcv/a>;  108v/a>  109v/a>        if (!va href="+code=lower_dentry" class="sref">lower_dentryv/a>->va href="+code=d_sb" class="sref">d_sbv/a>->va href="+code=s_op" class="sref">s_opv/a>->va href="+code=statfs" class="sref">statfsv/a>)  110v/a>                return -va href="+code=ENOSYS" class="sref">ENOSYSv/a>;  111v/a>  112v/a>        va href="+code=rc" class="sref">rcv/a> = va href="+code=lower_dentry" class="sref">lower_dentryv/a>->va href="+code=d_sb" class="sref">d_sbv/a>->va href="+code=s_op" class="sref">s_opv/a>->va href="+code=statfs" class="sref">statfsv/a>(va href="+code=lower_dentry" class="sref">lower_dentryv/a>, va href="+code=buf" class="sref">bufv/a>);  113v/a>        if (va href="+code=rc" class="sref">rcv/a>)  114v/a>                return va href="+code=rc" class="sref">rcv/a>;  115v/a>  116v/a>        va href="+code=buf" class="sref">bufv/a>->va href="+code=f_typo" class="sref">f_typov/a> = va href="+code=ECRYPTFS_SUPER_MAGIC" class="sref">ECRYPTFS_SUPER_MAGICv/a>;  117v/a>        va href="+code=rc" class="sref">rcv/a> = va href="+code=ecryptfs_set_f_namolen" class="sref">ecryptfs_set_f_namolenv/a>(&va href="+code=buf" class="sref">bufv/a>->va href="+code=f_namolen" class="sref">f_namolenv/a>, va href="+code=buf" class="sref">bufv/a>->va href="+code=f_namolen" class="sref">f_namolenv/a>,  118v/a>               &va href="+code=ecryptfs_superblock_to_private" class="sref">ecryptfs_superblock_to_privatev/a>(va href="+code=dentry" class="sref">dentryv/a>->va href="+code=d_sb" class="sref">d_sbv/a>)->va href="+code=mount_crypt_stat" class="sref">mount_crypt_statv/a>);  119v/a>  120v/a>        return va href="+code=rc" class="sref">rcv/a>;  121v/a>}  122v/a>  123v/a>vspa
 class="comment">/**v/spa
	  124v/a>vspa
 class="comment"> * ecryptfs_evict_inodev/spa
	  125v/a>vspa
 class="comment"> * @inode - The ecryptfs inodev/spa
	  126v/a>vspa
 class="comment"> *v/spa
	  127v/a>vspa
 class="comment"> * Called by iput() when the inode reference count reached zerov/spa
	  128v/a>vspa
 class="comment"> * and the inode is not hashed anywhere.  Used to clear anythingv/spa
	  129v/a>vspa
 class="comment"> * that needs to be, before the inode is completely destroyed and putv/spa
	  13
  a>vspa
 class="comment"> * on the inode free list. We use this to drop out reference to thev/spa
	  131v/a>vspa
 class="comment"> * lower inode.v/spa
	  132v/a>vspa
 class="comment"> */v/spa
	  133v/a>static void va href="+code=ecryptfs_evict_inode" class="sref">ecryptfs_evict_inodev/a>(struct va href="+code=inode" class="sref">inodev/a> *va href="+code=inode" class="sref">inodev/a>)  134v/a>{  135v/a>        va href="+code=truncate_inode_pages" class="sref">truncate_inode_pagesv/a>(&va href="+code=inode" class="sref">inodev/a>->va href="+code=i_data" class="sref">i_datav/a>, 0);  136v/a>        va href="+code=clear_inode" class="sref">clear_inodev/a>(va href="+code=inode" class="sref">inodev/a>);  137v/a>        va href="+code=iput" class="sref">iputv/a>(va href="+code=ecryptfs_inode_to_lower" class="sref">ecryptfs_inode_to_lowerv/a>(va href="+code=inode" class="sref">inodev/a>));  138v/a>}  139v/a>  14
  a>vspa
 class="comment">/**v/spa
	  141v/a>vspa
 class="comment"> * ecryptfs_show_2.15"
sv/spa
	  142v/a>vspa
 class="comment"> *v/spa
	  143v/a>vspa
 class="comment"> * Prints the mount 2.15"
s for a given superblock.v/spa
	  144v/a>vspa
 class="comment"> * Returns zero; does not fail.v/spa
	  145v/a>vspa
 class="comment"> */v/spa
	  146v/a>static int va href="+code=ecryptfs_show_2.15"
s" class="sref">ecryptfs_show_2.15"
sv/a>(struct va href="+code=seq_file" class="sref">seq_filev/a> *va href="+code=m" class="sref">mv/a>, struct va href="+code=dentry" class="sref">dentryv/a> *va href="+code=root" class="sref">rootv/a>)  147v/a>{  148v/a>        struct va href="+code=super_block" class="sref">super_blockv/a> *va href="+code=sb" class="sref">sbv/a> = va href="+code=root" class="sref">rootv/a>->va href="+code=d_sb" class="sref">d_sbv/a>;  149v/a>        struct va href="+code=ecryptfs_mount_crypt_stat" class="sref">ecryptfs_mount_crypt_statv/a> *va href="+code=mount_crypt_stat" class="sref">mount_crypt_statv/a> =  150v/a>                &va href="+code=ecryptfs_superblock_to_private" class="sref">ecryptfs_superblock_to_privatev/a>(va href="+code=sb" class="sref">sbv/a>)->va href="+code=mount_crypt_stat" class="sref">mount_crypt_statv/a>;  151v/a>        struct va href="+code=ecryptfs_global_auth_tok" class="sref">ecryptfs_global_auth_tokv/a> *va href="+code=walker" class="sref">walkerv/a>;  152v/a>  153v/a>        va href="+code=mutex_lock" class="sref">mutex_lockv/a>(&va href="+code=mount_crypt_stat" class="sref">mount_crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sref">global_auth_tok_list_mutexv/a>);  154v/a>        va href="+code=list_for_each_entry" class="sref">list_for_each_entryv/a>(va href="+code=walker" class="sref">walkerv/a>,  155v/a>                            &va href="+code=mount_crypt_stat" class="sref">mount_crypt_statv/a>->va href="+code=global_auth_tok_list" class="sref">global_auth_tok_listv/a>,  156v/a>                            va href="+code=mount_crypt_stat_list" class="sref">mount_crypt_stat_listv/a>) {  157v/a>                if (va href="+code=walker" class="sref">walkerv/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=ECRYPTFS_AUTH_TOK_FNEK" class="sref">ECRYPTFS_AUTH_TOK_FNEKv/a>)  158v/a>                        va href="+code=seq_printf" class="sref">seq_printfv/a>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_fnek_sig=%s"walkerv/a>->va href="+code=sig" class="sref">sigv/a>);  159v/a>                else  160v/a>                        va href="+code=seq_printf" class="sref">seq_printfv/a>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s"walkerv/a>->va href="+code=sig" class="sref">sigv/a>);  161v/a>        }  162v/a>        va href="+code=mutex_unlock" class="sref">mutex_unlockv/a>(&va href="+code=mount_crypt_stat" class="sref">mount_crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sref">global_auth_tok_list_mutexv/a>);  1else  161v/a>     t="+code=m" class_entry" class="sref">lisa>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s".v/spa
	  155v/a>       return va href="+1code=16;va href="+code=mounts="sref">mount_crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sref">glodefaultocipherper.cutexv/a>); vsppa
 class="comment"> * WI  va 67" idptL77" class="line" namoptL77">1  67v/a> 1unlikelyv/a>(!crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sref">glodefaultocipherpkeyodezcutexv/a>); s1tatic void va href="+cod1e=ecr16"+code=seq_printf" cllass="sref">lisa>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s".v/spa
	  159v/a> mount_crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sref">glodefaultocipherpkeyodezcutexv/a>);  1       struct va href="+1code=1node" class="sref">unlikelyv/a>(!crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sra href="+code=ECRYPTFS_AUTH_TOK_FNEK" class="sref">ECRYPTFS_PLAINTEXT_PASSTHROUGH_ENABLEDv/a>)  1       struct va href="+1code=1cryptfs_inode_intf" cllass="sref">lisa>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s" 162v/a>       va href="+code=in1ode_i1fo" class="sreref">unlikelyv/a>(!crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sra href="+code=ECRYPTFS_AUTH_TOK_FNEK" class="sref">ECRYPTFS_XATTR_METADATA_ENABLEDv/a>)  1else <lisa>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s"unlikelyv/a>(!crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sra href="+code=ECRYPTFS_AUTH_TOK_FNEK" class="sref">ECRYPTFS_ENCRYPTED_VIEW_ENABLEDv/a>)  155v/a> mount_a>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s"vsunlikelyv/a>(!crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sra href="+code=ECRYPTFS_AUTH_TOK_FNEK" class="sref">ECRYPTFS_UNLINK_SIGfs/ecryptfs/superCRYPTFS_UNLINK_SIGf58" idptL158" class="line" namoptL158  17v/a>vsppa
 class="comment"> * MEr.c#17de=walker" class="sres="sref">mount_a>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s"s1spa
 class="comment"> * 1ecryp178_free" classref">unlikelyv/a>(!crypt_statv/a>->va href="+code=global_auth_tok_list_mutex" class="sra href="+code=ECRYPTFS_AUTH_TOK_FNEK" class="sref">ECRYPTFS_GLOBAL_MOUNTtfs/super.ONLYs/ecryptfs/superCRYPTFS_GLOBAL_MOUNTtfs/super.ONLY58" idptL158" class="line" namoptL158 > 159v/a>spa
 class="comment"> * 1@inod17/ecryptfs/super.c#L16s="sref">mount_a>(va href="+code=m" class="sref">mv/a>, vspa
 class="string">",ecryptfs_sig=%s"v1spa
 class="comment"> *v1/spa
1  1spa
 class="comment"> * 1This 18ryptfs_inode_">rcv/a0idptL163" class="line" namoptL163 > 162v/a>spa
 class="comment"> * 1alloc1t.32 oidptL162" class="line" namoptL162  83v/a>v1spa
 class="comment"> * 1memor18block.v/spa
	 v1spa
 class="comment"> * 1There1shouldconstlass="sref">super_blockv/a> *oa> a5"
sv/a>(struct va hv/a> *oa> a5"
svyptfs_private" class="sref">ecopv/a>(struct va href="+codeopvef">rooidptL157" class="line" namoptL157  85v/a>v1spa
 class="comment"> */1v/spa18;va href="+co._private" classloc_inodev/a>(struct va hr=super_block" clen" class="sref">ecryptfs_loc_inodev/a>(struct va href="+code=super_block" c>.v/spa
	 s1tatic void va href="+cod1e=ecr186va href="+co._private" classdestroy_inodev/a>(struct va de=inode" class="lower" class="sref">ecryptfs_stroy_inodev/a>(struct va href="+code=inode" class=">.v/spa
	 vs ecryptfs_sa>(struct va href="+code=dentry" class=>.v/spa
	 vsppa
 class="comment"> * Gecryp1cryptfs_inode_._private" classrede=glostruct va href="+rede=glostss="len" class="sref">"fs/ecryptfs/super.c#L63" i>.v/spa
	  159v/a>(struct va hreinode" class="len" class="sref">ecryptfs_ict_inodev/a>(struct va href="+code=inode" class=">.v/spa
	  1       va href="+code=in1ode_i1fo" class="sre._private" classeow_2.15"
sv/a>(struct va he=seq_file" claslen" class="sref">ecryptfs_sow_2.15"
sv/a>(struct va href="+code=seq_file" clas.v/spa
	  1       va href="+code=BU1G_ON"1class=}idptL163" class="line" namoptL163  92v/a> 1       va href="+code=ec1ryptf1_destr


/ecrorigspa LXR sof thev/er versptL163" chttp://sourced age.net/projects/lxr">LXR tfs/unitf">bufva lxr@lptfs.no">bu.
lxr.lptfs.no kindcturost countptL163" chttp://www.redpill-lptpro.no">Redpill Lptpro AS">bufvproviderudinLptfs consulta hrefd oa> a5" sv serinofs/eis/su1995.