linux/ipc/shm.c
<<
.5" /spaon> /formn> a .5" href="../linux+v3 3.1./ipc/shm.c">.5" img src="../.static/gfx/right.png" alt=">>">.5 /spaon>.5 spao class="lxr_search">.5" .5" input typue=hidden" namue=navtarget" value=">.5" input typue=text" namue=search" ide=search">.5" buttiontypue=submit">Search /formn> /spaon>.5 spao class="lxr_prefs"n> a href="+prefs?return=ipc/shm.c".5" onclick="return ajax_prefs();">.5" Prefs> /a>.5 /spaon>" /divn>" form acptio="ajax+*" method="post" onsubmit="return false;">.5 input typue=hidden" namue=ajax_lookup" ide=ajax_lookup" value=">." /formn>." div class="headingbottim">" " div ide=search_results" class="search_results"> n>" /divn> div ide=content">> div ide=file_contents"n
   1 /a> spao class="comment">/* /spaon>   2 /a> spao class="comment"> * linux/ipc/shm.c /spaon>   3 /a> spao class="comment"> * Copyright (C) 1992, 1993 Krishna Balasubramanian /spaon>   4 /a> spao class="comment"> *       Many improvements/fixes by Bruno Haible. /spaon>   5 /a> spao class="comment"> * Replaced `struct shm_desc' by `struct vm_area_struct', July 1994. /spaon>   6 /a> spao class="comment"> * Fixed the shm swap deallocaption(shm_unuse()), August 1998 Andrea Arcangeli. /spaon>   7 /a> spao class="comment"> * /spaon>   8 /a> spao class="comment"> * /proc/sysvipc/shm support (c) 1999 Dragos Acostachioaie <dragos@inamu.com> /spaon>   9 /a> spao class="comment"> * BIGMEM support, Andrea Arcangeli <andrea@suse.de> /spaon>  .11 spao class="comment"> * SMP thread shm, Jean-Luc Boyard <jean-luc.boyard@siemens.fr> /spaon>  11 /a> spao class="comment"> * HIGHMEM support, Ingo Molnar <mingo@redhat.com> /spaon>  12 /a> spao class="comment"> * Make shmmax, shmall, shmmni sysctl'able, Christoph Rohland <cr@sap.com> /spaon>  13 /a> spao class="comment"> * Shared /dev/zero support, Kanoj Sarcar <kanoj@sgi.com> /spaon>  14 /a> spao class="comment"> * Move the mm funcptioality over to mm/shmem.c, Christoph Rohland <cr@sap.com> /spaon>  15 /a> spao class="comment"> * /spaon>  16 /a> spao class="comment"> * support for audit of ipc object properties and permisstionchanges /spaon>  17 /a> spao class="comment"> * Dustin Kirkland <dustin.kirkland@us.ibm.com> /spaon>  18 /a> spao class="comment"> * /spaon>  19 /a> spao class="comment"> * namuspaces support /spaon>  211 spao class="comment"> * OpenVZ, SWsoft Inc. /spaon>  21 /a> spao class="comment"> * Pavel Emelianov <xemul@openvz.org> /spaon>  22 /a> spao class="comment"> */ /spaon>  23 /a>>  24 /a>#include <linux/slab.h /a>>>  25 /a>#include <linux/mm.h /a>>>  26 /a>#include <linux/hugetlb.h /a>>>  27 /a>#include <linux/shm.h /a>>>  28 /a>#include <linux/init.h /a>>>  29 /a>#include <linux/file.h /a>>>  30 /a>#include <linux/mman.h /a>>>  31 /a>#include <linux/shmem_fs.h /a>>>  32 /a>#include <linux/security.h /a>>>  33 /a>#include <linux/syscalls.h /a>>>  34 /a>#include <linux/audit.h /a>>>  35 /a>#include <linux/capability.h /a>>>  36 /a>#include <linux/ptrace.h /a>>>  37 /a>#include <linux/seq_file.h /a>>>  38 /a>#include <linux/rwsem.h /a>>>  39 /a>#include <linux/nsproxy.h /a>>>  40 /a>#include <linux/mount.h /a>>>  41 /a>#include <linux/ipc_namuspace.h /a>>>  42 /a>>  43 /a>#include <asm/uaccess.h /a>>>  44 /a>>  45 /a>#include "util.h /a>">  46 /a>>  47 /a>struct shm_file_data /a> {>  48 /a>        int id /a>;>  49 /a>        struct ipc_namuspace /a> *ns /a>;>  50 /a>        struct file /a> *file /a>;>  51 /a>        const struct vm_operaptios_struct /a> *vm_ops /a>;>  52 /a>};>  53 /a>>  54 /a>#define shm_file_data /a>(file /a>) (*((struct shm_file_data /a> **)&(file /a>)-> a href="+code=private_data" class="sref">private_data /a>))>  55 /a>>  56 /a>static const struct file_operaptios /a> shm_file_operaptios /a>;>  57 /a>static const struct vm_operaptios_struct /a> shm_vm_ops /a>;>  58 /a>>  59 /a>#define shm_ids /a>(ns /a>)     ((ns /a>)-> a href="+code=ids" class="sref">ids /a>[ a href="+code=IPC_SHM_IDS" class="sref">IPC_SHM_IDS /a>])>  60 /a>>  61 /a>#define shm_unlock /a>(shp /a>)                 \>  62 /a>        ipc_unlock /a>(&(shp /a>)-> a href="+code=shm_perm" class="sref">shm_perm /a>)>  63 /a>>  64 /a>static int newseg /a>(struct ipc_namuspace /a> *, struct ipc_params /a> *);>  65 /a>static void shm_open /a>(struct vm_area_struct /a> *vma /a>);>  66 /a>static void shm_close /a>(struct vm_area_struct /a> *vma /a>);>  67 /a>static void shm_destroy /a> (struct ipc_namuspace /a> *ns /a>, struct shmid_kernel /a> *shp /a>);>  68 /a>#ifdef CONFIG_PROC_FS /a>>  69 /a>static int sysvipc_shm_proc_show /a>(struct seq_file /a> *s /a>, void *it /a>);>  70 /a>#endif>  71 /a>>  72 /a>void shm_init_os /a>(struct ipc_namuspace /a> *ns /a>)>  73 /a>{>  74 /a>        ns /a>-> a href="+code=shm_ctlmax" class="sref">shm_ctlmax /a> = SHMMAX /a>;>  75 /a>        ns /a>-> a href="+code=shm_ctlall" class="sref">shm_ctlall /a> = SHMALL /a>;>  76 /a>        ns /a>-> a href="+code=shm_ctlmni" class="sref">shm_ctlmni /a> = SHMMNI /a>;>  77 /a>        ns /a>-> a href="+code=shm_rmid_forced" class="sref">shm_rmid_forced /a> = 0;>  78 /a>        ns /a>-> a href="+code=shm_tot" class="sref">shm_tot /a> = 0;>  79 /a>        ipc_init_ids /a>(&shm_ids /a>(ns /a>));>  80 /a>}>  81 /a>>  82 /a> spao class="comment">/* /spaon>  83 /a> spao class="comment"> * Called with shm_ids.rw_mutex (writer) and the shp structure locked. /spaon>  84 /a> spao class="comment"> * Only shm_ids.rw_mutex remains locked on exit. /spaon>  85 /a> spao class="comment"> */ /spaon>  86 /a>static void do_shm_rmid /a>(struct ipc_namuspace /a> *ns /a>, struct kern_ipc_perm /a> *ipcp /a>)>  87 /a>{>  88 /a>        struct shmid_kernel /a> *shp /a>;>  89 /a>        shp /a> = container_of /a>(ipcp /a>, struct shmid_kernel /a>, shm_perm /a>);>  90 /a>>  91 /a>        if (shp /a>-> a href="+code=shm_nattch" class="sref">shm_nattch /a>){>  92 /a>                shp /a>-> a href="+code=shm_perm" class="sref">shm_perm /a>. a href="+code=mode" class="sref">mode /a> |= SHM_DEST /a>;>  93 /a>                /* Do not find it any more */ /spaon>  94 /a>                shp /a>-> a href="+code=shm_perm" class="sref">shm_perm /a>. a href="+code=key" class="sref">key /a> = IPC_PRIVATE /a>;>  95 /a>                shm_unlock /a>(shp /a>);>  96 /a>        } else>  97 /a>                shm_destroy /a>(ns /a>, shp /a>);>  98 /a>}>  99 /a>> 100 /a>#ifdef CONFIG_IPC_NS /a>> 101 /a>void shm_exit_os /a>(struct ipc_namuspace /a> *ns /a>)> 102 /a>{> 103 /a>        free_ipcs /a>(ns /a>, &shm_ids /a>(ns /a>), do_shm_rmid /a>);> 104 /a>        idr_destroy /a>(&ns /a>-> a href="+code=ids" class="sref">ids /a>[ a href="+code=IPC_SHM_IDS" class="sref">IPC_SHM_IDS /a>]. a href="+code=ipcs_idr" class="sref">ipcs_idr /a>);> 105 /a>}> 106 /a>#endif> 107 /a>> 108 /a>static int __init /a> ipc_ns_init /a>(void)> 109 /a>{> 110 /a>        shm_init_os /a>(&init_ipc_ns /a>);> 111 /a>        return 0;> 112 /a>}> 113 /a>> 114 /a> a href="+code=pure_initcall" class="sref">pure_initcall /a>(ipc_ns_init /a>);> 115 /a>> 116 /a>void __init /a> shm_init /a> (void)> 117 /a>{> 118 /a>        ipc_init_proc_interface /a>("sysvipc/shm" 119 /a>#if BITS_PER_LONG /a> <= 32> 120 /a>                                "       key      shmid perms       size  cpid  lpid nattch   uid   gid  cuid  cgid      atime      dtime      ctime        rss       swap\n" 121 /a>#else> 122 /a>                                "       key      shmid perms                  size  cpid  lpid nattch   uid   gid  cuid  cgid      atime      dtime      ctime                   rss                  swap\n" 123 /a>#endif> 124 /a>                                IPC_SHM_IDS /a>, sysvipc_shm_proc_show /a>);> 125 /a>}> 126 /a>> 127 /a> spao class="comment">/* /spaon> 128 /a> spao class="comment"> * shm_lock_(check_) routines are called in the paths where the rw_mutex /spaon> 129 /a> spao class="comment"> * is not necessarily held. /spaon> 1311 spao class="comment"> */ /spaon> 131 /a>static inline /a> struct shmid_kernel /a> *shm_lock /a>(struct ipc_namuspace /a> *ns /a>, int id /a>)> 132 /a>{> 133 /a>        struct kern_ipc_perm /a> *ipcp /a> = ipc_lock /a>(&shm_ids /a>(ns /a>), id /a>);> 134 /a>> 135 /a>        if (IS_ERR /a>(ipcp /a>))> 136 /a>                return (struct shmid_kernel /a> *)ipcp /a>;> 137 /a>> 138 /a>        return container_of /a>(ipcp /a>, struct shmid_kernel /a>, shm_perm /a>);> 139 /a>}> 140 /a>> 141 /a>static inline /a> void shm_lock_by_ptr /a>(struct shmid_kernel /a> *ipcp /a>)> 142 /a>{> 143 /a>        rcu_read_lock /a>();> 144 /a>        spin_lock /a>(&ipcp /a>-> a href="+code=shm_perm" class="sref">shm_perm /a>. a href="+code=lock" class="sref">lock /a>);> 145 /a>}> 146 /a>> 147 /a>static inline /a> struct shmid_kernel /a> *shm_lock_check /a>(struct ipc_namuspace /a> *ns /a>,> 148 /a>                                                int id /a>)> 149 /a>{> 150 /a>        struct kern_ipc_perm /a> *ipcp /a> = ipc_lock_check /a>(&shm_ids /a>(ns /a>), id /a>);> 151 /a>> 152 /a>        if (IS_ERR /a>(ipcp /a>))> 153 /a>                return (struct shmid_kernel /a> *)ipcp /a>;> 154 /a>> 155 /a>        return container_of /a>(ipcp /a>, struct shmid_kernel /a>, shm_perm /a>);> 156 /a>}> 157 /a>> 158 /a>static inline /a> void shm_rmid /a>(struct ipc_namuspace /a> *ns /a>, struct shmid_kernel /a> *s /a>)> 159 /a>{> 160 /a>        ipc_rmid /a>(&shm_ids /a>(ns /a>), &s /a>-> a href="+code=shm_perm" class="sref">shm_perm /a>);> 161 /a>}> 162 /a>> 163 /a>> 164 /a> spao class="comment">/* This is called by fork, once for every shm attach. */ /spaon> 165 /a>static void shm_open /a>(struct vm_area_struct /a> *vma /a>)> 166 /a>{> 167 /a>        struct file /a> *file /a> = vma /a>-> a href="+code=vm_file" class="sref">vm_file /a>;> 108 /a>        struct shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" class="line" namue=L69">  69 /a>static 1int <16 shmid_kernel /a> *;>  70 /a>#endif>1  71 /a>>shm_lock /a>(struct shm_rmid /a>(struct fdde=v=vm_file" class="sre /a>, shm_rmid /a>(struct fdde=v=vm_file" class="sre /a>);>  72 /a>void s">IS_ERR /a>(hp /a>);>  73 /a>{>-> a href="+code=shm_perm" class="sref">   clock /a>(struct (  74 /a>       1 nshp /a>-> a href="+code=shm_perm" class="sref">lprm_rmid /a>(struct task_tgrefvn_=ipcp" class="sref">currled iner_of /a>(  75 /a>       1 nshp /a>-> a href="+code=shm_nattch" class="sref">shm_nattch /a>){>  76 /a>       1 nssref">shm_unlock /a>(shp /a>);>  77 /a>       1   78 /a>       1   79 /a>       1  * is not necessariipc/shm.c#L128" ide=L128" class"line" na1mue=L80">  80 /a>}> * OpenVZ, SWsoft Inc.sref="+code - ef="locked by `struref="+code=shm.c#L128" ide=L128" class"line" na1mue=L81">  81 /a>> * Pavel Emelianov &le=shm.c#L128" ide=L128" class"line" na1mue=L82">  82 /a> spao c1lass=1comment">/* /spaon>  83 /a> spao c1lass=1comment"> * Called with shm_ids@ipc:ed by `sto ef="e=shm.c#L128" ide=L128" class"line" na1mue=L84">  84 /a> spao c1lass=1comment"> * Only shm_ids.rw_mue=shm.c#L128" ide=L128" class""line" namue=L85">  85 /a> spao c1lass=1comment"> */ /spaon>  86 /a>static 1void 18omment"> * support for audit obutode=cons ex (wripu"+codere re lef="ipc/shm.c#L130" ide=L130" class"line" na1mue=L87">  87 /a>{> * Dustin Kirkland &lpc/shm.c#L165" ide=L165" class"line" na1mue=L88">  88 /a>       1 stru18="+code=inli=shm_destroy" class="sref">shm_destroy /a> (struct ipc_namuspace /a> *ns /a>, struct shmid_kernel /a> *s /ap /a>);>  89 /a>       1   90 /a>>shm_tot /a> = 0;>shp /a>-> a href="+code=shm_nattch" class="srefsegsztot /a> = 0;>  91 /a>       1 if (191="+code=ipc_rmid" class="srhp">shm_rmid /a>(struct shp /a>);>  92 /a>       1     19f="+code=ipc_unlock" class="sref">shm_unlock /a>(shp /a>);>  93 /a>       1     1   shp /a>);>  94 /a>       1     1   shp hreshm_unlock /a>(shp /a>);>shp /a>);>  95 /a>       1     1   shp /a>-> a href="+code=shm_nattch" class="m;m;  96 /a>       1 } el19  return (struct shm_unlock /a>(shm_="+co class="sref">shp /a>);>dlanr_destroy /a> (stdlanr_shm.=shm_nattch" class="d_inode /a> |=   97 /a>       1     1   shp /a>);>  98 /a>}> = 0;>shp /a>);>  19 /a> spao clasha href=_srefef="file /a> *shp /a>);> 100 /a>#ifdef2icu_pu_ref=mid /a>(&shp /a>);> 101 /a>void <2 href20/shm.c#L162" ide=L162" clas2="line" n2mue=L102"> 102 /a>{> 103 /a>      2  * Called with shm_ipc/shm.c#L128" ide=L128" clas2="line" n2mue=L104"> 104 /a>      2  * Only shm_ids.rw_mutsrefmayf="+code - idlanifchanwhetheraon>  95 /a>       2ef="i20omment"> * /spaon> 106 /a>#endif2 * support for audit oRe=cons e=sc=shpre lox reshptspaonathsno active use_sertiockedegds.rare c/shm.c#L16" ide=L16" class=2=line" nammue=L107"> 107 /a>> * Dustin Kirkland <oneertiockefollowing once=sc:c/shm.c#L16" ide=L16" class=2=line" nammue=L108"> 108 /a>static2int <20omment"> * /spaon> 109 /a>{> * is not necessarily 1)  clctl(id,  hreRMID, NULL) wance for eh. *trk, ipc/sshm.c#L21" ide=L21" class="l"line" n2mue=L110"> 110 /a>      2  * OpenVZ, SWsoft Inc/sshm.c#L21" ide=L21" class="lline" namuue=L21">  21 /a> spao clahref21omment"> * Pavel Emelianov <2)  ysctl ="+cod.  112 /a>}> */ /spaon> 113 /a>> *ipc_namuspace /a> *ns /a>, struct shmid_kernel /a> *s /ap /a>);> 114 /a> a hre2="+co2e=purec#L160" ide=L160" clas2="line" n2mue=L115"> 115 /a>>shp /a>-> a href="+code=shm_nattch" class="sref">shm_nattch /a>){> 116 /a>void <2 href21  return (struct shm_rmid_forced /a> = 0;> 117 /a>{>shp /a>-> a href="+code=shm_nattch" class="srefshm_perm /a>. a href="+code=mode" class="sref">mode /a> |= SHM_DEST /a>;> 118 /a>      2  119 /a>#if  120 /a>      2     22omment"> * OpenVZ, SWsoft Iipc/shm.c#L128" ide=L128" clas2="line" n2mue=L121"> 121 /a>#else>2a hre22omment"> * Pavel Emelianov <remov"lockea hrefs="+cript. *vmapc/shm.c#L21" ide=L21" class="="line" n2mue=L122"> 122 /a>      2     22omment">/* /spaon> 123 /a>#endif2 * Called with shm_idsThes="+cript. *hassal hrey bhentremov" lefomlocke urrled=shm_mm=shm_mmap listc/shm.c#L21" ide=L21" class="="line" n2mue=L124"> 124 /a>      2     22omment"> * Only shm_ids.rw_mutre lwill laterabhskef="()epc/shm.c#L21" ide=L21" class="="line" n2mue=L125"> 125 /a>}> */ /spaon> 126 /a>>shm_close /a>(struct vm_area_struct /a> *vma /a>);> 127 /a> spao 2lass=22/shm.c#L118" ide=L118" clas2="line" n2mue=L128"> 128 /a> spao 2lass=22  * *vma /a>-> a href="+code=vm_file" class="sref">vm_file /a>;> 129 /a> spao 2lass=22 shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas2="line" n2mue=L130"> 1311 spao 2lass=23 shmid_kernel /a> *;> 131 /a>static2ipc_namuspace /a> *ns /a>, struct vam_rmid /a>(struct fdde=v=vm_file" class="sre /a>,  132 /a>{> 133 /a>      2 stru23f="+code=rcu_read_lock" clasdown_ stru /a> |= shm_ids /a>(ns /a>), &nd the sa>), & 134 /a>>/* This is called by fremov"lefomlockelistertia hrefesertiockedn> 135 /a>      2 if (23f="+code=ns" class="sref">nshp /a>-> a href="+codeontainer_of" classef">shm_lock /a>(struct s /a>, shm_rmid /a>(struct fdde=v=vm_file" class="sre /a>);> 136 /a>      2     23f="+code=ns" class="sref">nsBUG_ONa>);>s">IS_ERR /a>(hp /a>);> 137 /a>>nshp /a>-> a href="+code=shm_perm" class="sref">lprm_rmid /a>(struct task_tgrefvn_=ipcp" class="sref">currled iner_of /a>( 138 /a>      2 retu23f="+code=ipc_init_proc_interhp /a>-> a href="+code=shm_perm" class="sref">d  clock /a>(struct ( 139 /a>}>shp /a> = shm_nattch /a>){> 140 /a>>shpefmayf="+codefile /a> *s /a>, shp /a>);> 141 /a>static2shpref">shm_destroy /a>(ns /a>, shp /a>);> 142 /a>{> 143 /a>      2 shpre">shm_unlock /a>(shp /a>);> 144 /a>      2 shm_ids /a>(ns /a>), &nd the sa>), & 145 /a>}> 146 /a>> 147 /a>static2/* /spaon> 148 /a>      2     24href="+code=__init" class="sref hrefryf="+code_currled iner_of /a>(id /a>)>it /a>);>it">shm_file_data /a>e=shm_ii.#L144" ide=L144" clas2="line" n2mue=L149"> 149 /a>{> 150 /a>      2 stru2t ipc_namuspace /a> *ns /a>, struct v">shm_file_data /a>e=shm_iic#L168" ide=L168" clas2="line" n2mue=L151"> 151 /a>>kern_ipc_perm /a> *ipcp /a> = );> 152 /a>      2 if (2a href="+code=de=kern_ipc_perm" clas="sref">shmid_kernel /a> *;>container_of /a>(ipcp /a>, struct shmid_kernel /a>, shm_perm /a>);> 153 /a>      2     25shm.c#L164" ide=L164" clas2="line" n2mue=L154"> 154 /a>>shp /a>-> a href="+code=shm_nattch" class="srefcreato_lock_by_ptr /a>(strcreato_="+co!ntainer_of" class=urrled iner_of /a>( 155 /a>      2 retu2n  156 /a>}> 157 /a>> * OpenVZ, SWsoft Iipc/shm.c#L128" ide=L128" clas2="line" n2mue=L158"> 158 /a>static2 * /spaon> 159 /a>{> * is not necessariliiiiiiii* ="+cod.  160 /a>      2  * OpenVZ, SWsoft Iniiiiiiii* It held.opeshptspefollowing eh="mayf="+code()ode=cons e=scpc/shm.c#L21" ide=L21" class="="line" n2mue=L161"> 161 /a>}> * Pavel Emelianov &iiiiiiii*pc/shm.c#L86" ide=L86" class=2="line" n2mue=L162"> 162 /a>>NULLshm.c#L168" ide=L168" clas2="line" n2mue=L163"> 163 /a>> 164 /a> spao 2lass=26f="+code=ns" c">/* This is called by c/shm.c#L86" ide=L86" class=2="line" n2mue=L165"> 165 /a>static2void 26omment"> */ /spaon> 166 /a>{> * support for auditiiiiiiii* held. /set,aon>onouldn't*bhs="let=" spaopc/shm.c#L21" ide=L21" class="="line" n2mue=L167"> 167 /a>      2 stru26omment"> * Dustin Kirkland &iiiiiiii*pc/shm.c#L86" ide=L86" class=2="line" n2mue=L168"> 108 /a>      2 stru2t , shm_rmid_forced /a> = 0;>  69 /a>static 2int <26   70 /a>#endif>2  71 /a>>shpefmayf="+codefile /a> *s /a>, shp /a>);>  72 /a>void shps="sref">shm_lock_by_ptr /a>(struct shp /a>);>  73 /a>{>shpref">shm_destroy /a>(ns /a>, shp /a>);>  74 /a>       2   75 /a>       2   76 /a>       2   77 /a>       2   78 /a>       2  * /spaon>  79 /a>       2 (id /a>)>it /a>);>it">shm_file_data /a>e=shm_ii.#L144" ide=L144" clas2"line" na2mue=L80">  80 /a>}>  81 /a>>ipc_namuspace /a> *ns /a>, struct v">shm_file_data /a>e=shm_iic#L168" ide=L168" clas2"line" na2mue=L82">  82 /a> spao c2lass=28 href="+code=de=kern_ipc_perm" class="sref">kern_ipc_perm /a> *ipcp /a> = );>  83 /a> spao c2lass=28 shmid_kernel /a> *;>container_of /a>(ipcp /a>, struct shmid_kernel /a>, shm_perm /a>);>  84 /a> spao c2lass=28shm.c#L155" ide=L155" clas2""line" n2mue=L85">  85 /a> spao c2lass=28f="+code=ns" c">/* This is called by c/shm.c#L86" ide=L86" class=2""line" n2mue=L86">  86 /a>static 2void 28omment"> * support for auditiiiiiiii* We want to ="+codeidegds.rs ex (out use_sere lwi (wal hreyc/shm.c#L86" ide=L86" class=2"line" na2mue=L87">  87 /a>{> * Dustin Kirkland &iiiiiiii*   88 /a>       2 stru28omment"> * /spaon>  89 /a>       2  * is not necessariliiiiiiii* A, ipc=shm_*paths hangre under href="ip,aon', iafe to skipwripucodedngpc/shm.c#L21" ide=L21" class=""line" na2mue=L90">  90 /a>> * OpenVZ, SWsoft Iniiiiiiii*pc/shm.c#L86" ide=L86" class=2"line" na2mue=L91">  91 /a>       2 if (29 href="+code=shp" class="sref">shp /a>-> a href="+code=shm_nattch" class="srefcreato_lock_by_ptr /a>(strcreato_="+co!ntainer_of" classNULLlock_by_ptr /a>NULLshm..#L144" ide=L144" clas2"line" na2mue=L92">  92 /a>       2     29    93 /a>       2     29shm.c#L164" ide=L164" clas2"line" na2mue=L94">  94 /a>       2     29f="+code=spinshp" class="sref">shpefmayf="+codefile /a> *s /a>, shp /a>);>  95 /a>       2     29 shps="sref">shm_lock_by_ptr /a>(struct shp /a>);>  96 /a>       2 } el29  return (struct shm_destroy /a>(ns /a>, shp /a>);>  97 /a>       2     2     98 /a>}>  19 /a> spao c2a 100 /a>#ifdef3 101 /a>void <3 href30/shm.=shm_destroy" class="sref">shm__orphanre iner_of /a>(ipc_namuspace /a> *ns /a>, struct  102 /a>{> 103 /a>      3  |= shm_ids /a>(ns /a>), &nd the sa>), & 104 /a>      3 shpefhm_ids /a>(ns /a>), &inhusenamuspace /a> *  95 /a>       3ef="i30 sidr hre_eam_nattch /a>){>shm_ids /a>(ns /a>), &=L1scod_lock_by_ptr /a>=L1scod_e=shp"=shm_ids" class="sref">sfryf="+code_orphanre iner_of /a>(s /a>), &  96 /a>       3nsup_ stru /a> |= shm_ids /a>(ns /a>), &nd the sa>), & 107 /a>> 108 /a>static3int <30shm.c#L59" ide=L59" class=3="line" n3mue=L109"> 109 /a>{> 110 /a>      3 ), &vm_area_struct /a> task_">vm_ae=ns" class="sref">nstaskrea_struct /a> taskf="+.#L144" ide=L144" clas3lline" na3uue=L21">  21 /a> spao c3ahref31ommenc#L143" ide=L143" clas3l"line" n3mue=L112"> 112 /a>}>ipc_namuspace /a> *ns /a>, struct vtaskrea_struct /a> taskf="+=vm_file" class="sre /hrex_destroy /a>( 113 /a>> 114 /a> a hre3="+co31f="+code=spinshp" class="sref">shpefhm_ids /a>(ns /a>), &inhusenamuspace /a> * 115 /a>> 116 /a>void <3 href31shm.c#L147" ide=L147" clas3=line" na3mue=L117"> 117 /a>{> * OpenVZ, SWsoft Iip D"+codeiallsal hrey createdidegds.rs,obutod. /mappediyeraipc/shm.c#L86" ide=L86" class=3="line" n3mue=L118"> 118 /a>      3 shm_ids /a>(ns /a>), &nd the sa>), & 119 /a>#if shpefhm_ids /a>(ns /a>), &inhusenamuspace /a> * 120 /a>      3     320sidr hre_eam_nattch /a>){>shm_ids /a>(ns /a>), &=L1scod_lock_by_ptr /a>=L1scod_e=shp"=shm_ids" class="sref">sfryf="+code_currled iner_of /a>(s /a>), & 121 /a>#else>3a hre321="+code=ipc_rmid" class="srup_ stru /a> |= shm_ids /a>(ns /a>), &nd the sa>), & 122 /a>      3     32ommenc#L162" ide=L162" clas3="line" n3mue=L123"> 123 /a>#endif3 124 /a>      3     32ommen"+code=__init" class="sref hrefauld iner_of /a>(vm_area_struct /a> *vma /a>);>(vmatainer_of /a>( 125 /a>}> 126 /a>>file /a> *file /a> = vma /a>-> a href="+code=vm_file" class="sref">vm_file /a>;> 127 /a> spao 3lass=32 s"s="sref">shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas3="line" n3mue=L128"> 128 /a> spao 3lass=32shm.c#L59" ide=L59" class=3="line" n3mue=L129"> 129 /a> spao 3lass=32 (struct fdde=v=vm_file" class="sreva hr/a>), &vma /a>);>vmatainer_of /a>( 1311 spao 3lass=33  131 /a>static3 132 /a>{>vCONFIG_NUMAainer_of /a>( 133 /a>      3 stru333mmen"+code=__init" class="sref hreset_polic_destroy /a>(vm_area_struct /a> *vma /a>);>(ns ewa>), & 134 /a>> 135 /a>      3 if (33f="+code=ns" de=file" class="sref">file /a> *file /a> = vma /a>-> a href="+code=vm_file" class="sref">vm_file /a>;> 136 /a>      3     33f="+code=ns" de=file" class="sref">s"s="sref">shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas3="line" n3mue=L137"> 137 /a>> 138 /a>      3 retu33 (struct fdde=v=vm_file" class="sreva hr/a>), & 139 /a>}>(struct fdde=v=vm_file" class="sreva hr/a>), &vma /a>);>v ewa>), & 140 /a>>er_de=vc#L112" ide=L112" clas3="line" n3mue=L141"> 141 /a>static3 142 /a>{> 143 /a>      3 (nsref=get_polic_destroy /a>(vm_area_struct /a> *vma /a>);> 144 /a>      3 add_=ns")#L164" ide=L164" clas3="line" n3mue=L145"> 145 /a>}> 146 /a>>file /a> *file /a> = vma /a>-> a href="+code=vm_file" class="sref">vm_file /a>;> 147 /a>static3s"s="sref">shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas3="line" n3mue=L148"> 148 /a>      3     34 (nspoid_kernel /a> *NULLshm.c#L168" ide=L168" clas3="line" n3mue=L149"> 149 /a>{> 150 /a>      3 stru3t (struct fdde=v=vm_file" class="sreva hr/a>), & 151 /a>>spoid_kernel /a> *(struct fdde=v=vm_file" class="sreva hr/a>), &vma /a>);>vadd_lock_by_ptr /a>add_=ns")c#L168" ide=L168" clas3="line" n3mue=L152"> 152 /a>      3 if (35f="+code=ipc_hm.coIS_Eainer_of" classma /a>-> a href="+code=vm_file" class="sref">polic_destroy /a>(polic_=ns")#L164" ide=L164" clas3="line" n3mue=L153"> 153 /a>      3     35  return (struct spoid_kernel /a> *-> a href="+code=vm_file" class="sref">polic_destroy /a>(polic_=ns"c#L168" ide=L168" clas3="line" n3mue=L154"> 154 /a>> 155 /a>      3 retu35 spoid_kernel /a> * 156 /a>}> 157 /a>> 158 /a>static3 159 /a>{> * *vm_area_struct /a> *-> a href="+code)#L164" ide=L164" clas3="line" n3mue=L160"> 160 /a>      3  161 /a>}>shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas3="line" n3mue=L162"> 162 /a>> 163 /a>> 164 /a> spao 3lass=36f="+code=ns" ct" class="srefde=a>), &(struct fdde=v=vm_file" class="srefile /a>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod=shm_nattch" class="mmapm_file_data /a>mmap=ns" ainer_of" classhm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+codco class="sref">vma /a>-> a href="+code)c#L168" ide=L168" clas3="line" n3mue=L165"> 165 /a>static3void 36 ), & 166 /a>{>sde=a>), & 167 /a>      3 stru36f="+code=ns" class="sref">nshm_rmid /a>(struct fdde=v=vm_file" class="sreva hr/a>), &-> a href="+code=vm_file" class="sref">hr/a>), & 108 /a>      3 stru3t vCONFIG_MMUainer_of /a>(  69 /a>static 3int <36f="+code=shp" class="sref">sBUG_ONa>);>(struct fdde=v=vm_file" class="sreva hr/a>), &  70 /a>#endif>3  71 /a>>hr/a>), &sf">hr/a>), &sf">hr/de=vc#L168" ide=L168" clas3"line" na3mue=L72">  72 /a>void hrena>), &shren=ns"  class="sref">vma /a>);>  73 /a>{>  74 /a>       3 sde=a>), &  75 /a>       3   76 /a>       3   77 /a>       3  |= ino /a> |=  *file /a> =   78 /a>       3   79 /a>       3 shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas3"line" na3mue=L80">  80 /a>}>  81 /a>>(struct fdde=v=vm_file" class="sre /a>), &  82 /a> spao c3lass=38f="+code=ipc_unlock" class="sr">"sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codeontainer_of" classNULLlock_by_ptr /a>NULLshm.c#L168" ide=L168" clas3""line" n3mue=L83">  83 /a> spao c3lass=38 shm_rmid /a>(struct fdde=voc#L168" ide=L168" clas3"line" na3mue=L84">  84 /a> spao c3lass=38f="+code=ns" de=cont.c#L112" ide=L112" clas3""line" n3mue=L85">  85 /a> spao c3lass=38/shm.c#L146" ide=L146" clas3""line" n3mue=L86">  86 /a>static 3void 38shm.c#L147" ide=L147" clas3"line" na3mue=L87">  87 /a>{> *vloff_=a>), &vloff_=a>), &  88 /a>       3 stru38ommenc#L150" ide=L150" clas3"line" na3mue=L89">  89 /a>       3 shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas3"line" na3mue=L90">  90 /a>>  91 /a>       3 if (39 href="+code=shp"!namuspace" clashm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod=shm_nattch" class="fsyncm_file_data /a>fsyncde=v)#L164" ide=L164" clas3"line" na3mue=L92">  92 /a>       3     39    93 /a>       3     393="+code=ns" de=contnamuspace" clashm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod=shm_nattch" class="fsyncm_file_data /a>fsyncde=v ainer_of" classhm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+codco class="sref">v tard iner_of /a>(venda>), &  94 /a>       3     39f="+cc#L146" ide=L146" clas3""line" n3mue=L95">  95 /a>       3     39   96 /a>       3 } el39 href="+codelongn_ipc_perm" clas hrefallocaru /a> |=  *vloff_=a>), &  97 /a>       3     39  vloff_=a>), &  98 /a>}>  19 /a> spao c3ashm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas4="line" n4mue=L100"> 100 /a>#ifdef4 101 /a>void <4 href40 href="+code=shp"!namuspace" clashm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod=shm_nattch" class="fallocaru /a> |=  102 /a>{> 103 /a>      4 (struct fdde=v=vm_file" class="srefile /a>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod=shm_nattch" class="fallocaru /a> |= file /a>)-> a href="+codco class="sref">vmode /a> |= voffse=a>), &  94 /a>       4   95 /a>       4ef="i40   96 /a>       4ref=get_unmappeda hre=ns" de=kern_ipc_perm" clasfile /a> *  97 /a>       4f="ip40  add_=ns",cunsignre longn_ipc_perm" claslena>), &);>  98 /a>}>), &  19 /a> spao c4ef="i40/shm.c#L150" ide=L150" clas4l"line" n4mue=L110"> 110 /a>      4 shm_file_data /a>ref="+code=shm_iid" class="sref">shm_rmid /a>(struct fdde=vma" class="sref">vass="sref">shm_file_data /a>ref="+code=shm_iie" class="sref">file /a>)-> a href="+codec#L168" ide=L168" clas4lline" na4uue=L21">  21 /a> spao c4ahref411="+code=ns" de=contnamuspace" clashm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod=shm_nattch" class="get_unmappeda hrem_file_data /a>get_unmappeda hre=ns" ainer_of" classhm_rmid /a>(struct fdde=v=vm_file" class="srefile /a>)-> a href="+codco class="sref">vadd_lock_by_ptr /a>add_=ns",c_ipc_perm" claslena>), & 112 /a>}>);>), & 113 /a>> 114 /a> a hre4="+co41shm.c#L155" ide=L155" clas4=5line" n4mue=L115"> 115 /a>>), &), & 116 /a>void <4 href41  return (stre" class="sref">mmapm_file_data /a>mmap=ns""""""""""""a" class="sref">vass=mmapm_file_data /a>ref=mmap=ns",#L168" ide=L168" clas4l7line" n4mue=L117"> 117 /a>{>fsyncm_file_data /a>fsyncde=v""""""""""a" class="sref">vass=fsyncm_file_data /a>ref="sync=ns",#L168" ide=L168" clas4l8line" n4mue=L118"> 118 /a>      4 neleam_close /a>(strucreleam_=ns"""""""""a" class="sref">vass=releam_close /a>(struct  119 /a>#if vCONFIG_MMUainer_of /a>( 120 /a>      4     420get_unmappeda hrem_file_data /a>get_unmappeda hre=ns"""""""a" class="sref">vass=get_unmappeda hrem_file_data /a>ref=get_unmappeda hre=ns",#L168" ide=L168" clas4="line" n4mue=L121"> 121 /a>#else>4a hre421="+c#endif#L157" ide=L157" clas4="line" n4mue=L122"> 122 /a>      4     422llseekrea_struct /a> llseekde=v"""""""""a" class="sref">vd.op_llseekrea_struct /a> d.op_llseek=ns",#L168" ide=L168" clas4="line" n4mue=L123"> 123 /a>#endif4fallocaru /a> |= vass=fallocaru /a> |=  124 /a>      4     42ommen}c#L168" ide=L168" clas4=5line" n4mue=L125"> 125 /a>}> 126 /a>>), & |=  127 /a> spao 4lass=42f="+code=ns" e" class="sref">mmapm_file_data /a>mmap=ns""""""""""""a" class="sref">vass=mmapm_file_data /a>ref=mmap=ns",#L168" ide=L168" clas4="line" n4mue=L128"> 128 /a> spao 4lass=42f="+code=ipc_e" class="sref">fsyncm_file_data /a>fsyncde=v""""""""""a" class="sref">vass=fsyncm_file_data /a>ref="sync=ns",#L168" ide=L168" clas4="line" n4mue=L129"> 129 /a> spao 4lass=42 neleam_close /a>(strucreleam_=ns"""""""""a" class="sref">vass=releam_close /a>(struct  1311 spao 4lass=430get_unmappeda hrem_file_data /a>get_unmappeda hre=ns"""""""a" class="sref">vass=get_unmappeda hrem_file_data /a>ref=get_unmappeda hre=ns",#L168" ide=L168" clas4="line" n4mue=L131"> 131 /a>static4llseekrea_struct /a> llseekde=v"""""""""a" class="sref">vd.op_llseekrea_struct /a> d.op_llseek=ns",#L168" ide=L168" clas4="line" n4mue=L132"> 132 /a>{>fallocaru /a> |= vass=fallocaru /a> |=  133 /a>      4 stru433mmen}c#L168" ide=L168" clas4="line" n4mue=L134"> 134 /a>> 135 /a>      4 if (43f="+cid" class="sref">id sef+cod hrehugupaget_ipc_ns /a>);> * 136 /a>      4     43f="+cc#L150" ide=L150" clas4="line" n4mue=L137"> 137 /a>>)-> a href="+cod=shm_nattch" class="f_opm_file_data /a>f_op+cod == =shm_ids" class="sref">s"+codhrer+coo /_hugu /a> |=  138 /a>      4 retu43  139 /a>}> 140 /a>>hrer+coo /_">vm_area_struct /a> *vm_ae=filit" class="sref ef=f">hr/a>), &sf">hr/de=vma"c#L150" ide=L150" clas4="line" n4mue=L141"> 141 /a>static4hrena>), &vass=hrena>), &shren=ns",="+coc"> * OpenVZ, SWsoft Iip callback for a new vm- hre hrenaipc/shm.c#L86" ide=L86" class=4="line" n4mue=L142"> 142 /a>{>clom_close /a>(strucclom_vass=clom_close /a>(strucass=clom_=ns",="+cc"> * OpenVZ, SWsoft Iip callback for whefptspevm- hre is releam_e ipc/shm.c#L86" ide=L86" class=4="line" n4mue=L143"> 143 /a>      4 fauld iner_of /a>(vass=fauld iner_of /a>( 144 /a>      4 vdefinre iner_of /a>(( 145 /a>}>set_polic_destroy /a>(vass=set_polic_destroy /a>( 146 /a>>get_polic_destroy /a>(vass=get_polic_destroy /a>( 147 /a>static4 148 /a>      4     44  149 /a>{> 150 /a>      4 stru45omment"> * OpenVZ, SWsoft I/**c/shm.c#L21" ide=L21" class=4="line" n4mue=L151"> 151 /a>> * OpenVZ, SWsoft In* newseg - Create a new sh hrd memoreidegds.rc/shm.c#L21" ide=L21" class=4="line" n4mue=L152"> 152 /a>      4 if (45f="+ct"> * OpenVZ, SWsoft In* @ns:a>   "+code=shm.c#L21" ide=L21" class=4="line" n4mue=L153"> 153 /a>      4     45  rett"> * OpenVZ, SWsoft In* @params:aptr to tspe">vm_aure tsat  href="s key, sizeere l clflge=shm.c#L21" ide=L21" class=4="line" n4mue=L154"> 154 /a>> * OpenVZ, SWsoft In*e=shm.c#L21" ide=L21" class=4="line" n4mue=L155"> 155 /a>      4 retu45  * OpenVZ, SWsoft In* .rw_mutex (ws"+codeand the shheld as a  strurpc/shm.c#L21" ide=L21" class=4="line" n4mue=L156"> 156 /a>}> * support for auditipc/shm.c#L86" ide=L86" class=4="line" n4mue=L157"> 157 /a>> 158 /a>static4ipc_namuspace /a> *ns /a>, struct  *nsparamsnamuspace /a> *paramse=ns)#L164" ide=L164" clas4="line" n4mue=L159"> 159 /a>{> 160 /a>      4 nskey_=a>), &vparamsnamuspace /a> *paramse=ns=shm_nattch" class="keya>), & 161 /a>}>vparamsnamuspace /a> *paramse=ns=shm_nattch" class="flgdestroy /a>( 162 /a>>vparamsnamuspace /a> *paramse=ns=shm_nattch" class="unamuspace /a> *ue=nse" class="sref">sizea>), & 163 /a>> 164 /a> spao 4lass=46f="+code=ns" de=kern_ipc_perm" clas="sref">shmid_kernel /a> *;> 165 /a>static4void 46 ), & 166 /a>{>file /a> *file /a> * 167 /a>      4 stru46f="+code=ns" ch hnit" class="srefn   _ipc_ns /a>);> 108 /a>      4 stru468  69 /a>static 4int <46f="+code=shp" class="sref">sf="ilag/_=a>), &  70 /a>#endif>4  71 /a>>), &  72 /a>void   73 /a>{>  74 /a>       4 , struct   75 /a>       4   76 /a>       4   77 /a>       4 nshs /a>;>v *;>  78 /a>       4 ;>  79 /a>       4   80 /a>}>  81 /a>>keya>), &vkeya>), &  82 /a> spao c4lass=48f="+code=ipc_unlock" class="sr /a>;>mode /a> |= (  83 /a> spao c4lass=48 ;>vNULLlock_by_ptr /a>NULLshm.c#L168" ide=L168" clas4"line" na4mue=L84">  84 /a> spao c4lass=48shm.c#L155" ide=L155" clas4""line" n4mue=L85">  85 /a> spao c4lass=485="+code=ipc_unlock" class="sr /a>;>securit_destroy /a>(vNULLlock_by_ptr /a>NULLshm.c#L168" ide=L168" clas4""line" n4mue=L86">  86 /a>static 4void 48f="+code=ns" class="sref">nserro_lock_by_ptr /a>erro_e=s""a" class="sref">vaecurit_d hreallocnamuspace /a> *aecurit_d hrealloc=ns" ainer_of" classhs /a>;>  87 /a>{>nserro_lock_by_ptr /a>erro_e=s")"c#L150" ide=L150" clas4"line" na4mue=L88">  88 /a>       4 stru488v *;>  89 /a>       4   90 /a>>  91 /a>       4 if (49shm.c#L152" ide=L152" clas4"line" na4mue=L92">  92 /a>       4     49f="+code=ipc_unlock" class="sprI_i/aamuspace /a> *sprI_i/="+co"ainer_of" class    _ipc_ns /a>);> * OpenVZ,strI_g">"SYSV%08x"c/shm.ccn_ipc_perm" claskeya>), &  93 /a>       4     493="+code=ns" shp" class="sref">shpeflgdestroy /a>(  94 /a>       4     49f="+code=spinnnnnnnnnc"> * OpenVZ, SWsoft Iip hugutlbef+cod pc/p applies de=ict accountI_gtipc/shm.c#L86" ide=L86" class=4""line" n4mue=L95">  95 /a>       4     49 shpeflgdestroy /a>(  96 /a>       4 } el49  return (struct   97 /a>       4     49  file /a> *);>v izea>), &vacctilaga>), &  98 /a>}>;>vHUGETLB_SHMFS_INODEa>), &  19 /a> spao c4a 100 /a>#ifdef5 * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" class=5=line" na5mue=L101"> 101 /a>void <5 href501 * OpenVZ, SWsoft Innnnnnnnnnnnnnnnn* Do not allow no accountI_gtfor OVERCOMMIT_NEVER, even=nshm.c#L86" ide=L86" class=5=2ine" na5mue=L92">  92 /a>       5ef="i50f="+ct"> * OpenVZ, SWsoft Innnnnnnnnnnnnnnnn* shpit's askedtforpc/shm.c#L21" ide=L21" class=5="line" n5mue=L103"> 103 /a>      5  * OpenVZ, SWsoft Innnnnnnnnnnnnnnnn*pc/shm.c#L86" ide=L86" class=5=4line" n5mue=L94">  94 /a>       5 shpeflgdestroy /a>(  95 /a>       5ef="i50 shysctl_over SWsit_memoredestroy /a>(  96 /a>       5  97 /a>       5f="ip50  file /a> * *);>v izea>), &vacctilaga>), &  98 /a>}>  19 /a> spao c5ef="i50f="+code=shp" class="sref">serro_lock_by_ptr /a>erro_e=s""a" class="sref">vPTR_ERRdestroy /a>()-> a href="+codec#L168" ide=L168" clas5l"line" n5mue=L110"> 110 /a>      5 sIS_ERRdestroy /a>()-> a href="+code)#L168" ide=L168" clas5lline" na5uue=L21">  21 /a> spao c5ahref511="+code=ns"         goto" class="sref">vd.>vm_file /a>;>vm_fshm.c#L168" ide=L168" clas5l"line" n5mue=L112"> 112 /a>}> 113 /a>>(v(sid/a>), &sid/=ns" ainer_of" class /a>), &;>v /a>, struct  114 /a> a hre5="+co51f="+code=ns" shp"ainer_of" classie iner_of /a>( 115 /a>>serro_lock_by_ptr /a>erro_e=s""a" class="sref">vie iner_of /a>( 116 /a>void <5 href51  return (struct vd.>ie iner_of /a>(iee=fic#L168" ide=L168" clas5l7line" n5mue=L117"> 117 /a>{> 118 /a>      5  119 /a>#if sf" /a>;>vtask_tgid_vn_lock_by_ptr /a>task_tgid_vn_=ns" ainer_of" classcurroft ock_by_ptr /a>curroft+codec#L168" ide=L168" clas5="line" n5mue=L120"> 120 /a>      5     520nsf" /a>;> 121 /a>#else>5a hre521="+code=ipc_rmid" class="srhs /a>;>;> 122 /a>      5     52f="+code=ipc_unlock" class="sr /a>;> 123 /a>#endif5;> 124 /a>      5     52f="+code=ns" ct" class="srefsr /a>;> 125 /a>}> 126 /a>>nssr /a>;> 127 /a> spao 5lass=52f="+code=ns"  "> * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" class=5="line" n5mue=L128"> 128 /a> spao 5lass=52f="+ct"> * OpenVZ, SWsoft Innnnnnnnn* a hre gets reported as "inode#" in /proc/pid/mapspc/shm.c#L21" ide=L21" class=5="line" n5mue=L129"> 129 /a> spao 5lass=52  * OpenVZ, SWsoft Innnnnnnnn* proc-ps tools use tsis. ChangI_gttsis will break tspmpc/shm.c#L21" ide=L21" class=5="line" n5mue=L130"> 1311 spao 5lass=53omment"> * OpenVZ, SWsoft Innnnnnnnn*pc/shm.c#L86" ide=L86" class=5="line" n5mue=L131"> 131 /a>static5;>ie iner_of /a>( 132 /a>{> 133 /a>      5 stru53 , struct vdumpaget_ipc_ns /a>);> 134 /a>>va" /a>;>ie iner_of /a>( 135 /a>      5 if (535="+code=ipc_unlock" class="srm_unlocka>), &;> 136 /a>      5     53f="+code=ns" ipc/shtit" class="sreferro_lock_by_ptr /a>erro_e=s"c#L168" ide=L168" clas5="line" n5mue=L137"> 137 /a>> 138 /a>      5 retu53 vd.>ie iner_of /a>(iee=fi:#L158" ide=L158" clas5="line" n5mue=L139"> 139 /a>}>);>)-> a href="+code"=shm_=shm_oainer_of" classsr /a>;> 140 /a>>), &vsr /a>;> 141 /a>static5)-> a href="+codec#L168" ide=L168" clas5="line" n5mue=L142"> 142 /a>{>vd.>vm_file /a>;>vm_fshm.:#L158" ide=L158" clas5="line" n5mue=L143"> 143 /a>      5 ;> 144 /a>      5 ;> 145 /a>}> 146 /a>> 147 /a>static5 148 /a>      5     54f="+ct"> * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" class=5="line" n5mue=L149"> 149 /a>{> * OpenVZ, SWsoft In* .rw_mutex (ws"+codeand the shre lL86p lockedpc/shm.c#L21" ide=L21" class=5="line" n5mue=L150"> 150 /a>      5 stru55omment"> * OpenVZ, SWsoft In*pc/shm.c#L86" ide=L86" class=5="line" n5mue=L151"> 151 /a>>="+c_), & * 152 /a>      5 if (55f="+cc#L150" ide=L150" clas5="line" n5mue=L153"> 153 /a>      5     55 shmid_kernel /a> *;> 154 /a>> 155 /a>      5 retu555="+code=ipc_unlock" class="sr /a>;> *chref="e__o/=ns" ainer_of" classL86paamuspace /a> *shmid_kernel /a> *vsrefperea>), & 156 /a>}>;>vsreflgdestroy /a>( 157 /a>> 158 /a>static5 159 /a>{> * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" class=5="line" n5mue=L160"> 160 /a>      5  * OpenVZ, SWsoft In* .rw_mutex (ws"+codeand the shre lL86p lockedpc/shm.c#L21" ide=L21" class=5="line" n5mue=L161"> 161 /a>}> * OpenVZ, SWsoft In*pc/shm.c#L86" ide=L86" class=5="line" n5mue=L162"> 162 /a>>smore_check/=ns" de=file" class="sref">="+c_), & * 163 /a>> *nsparamsnamuspace /a> *paramse=ns)#L164" ide=L164" clas5="line" n5mue=L164"> 164 /a> spao 5lass=56f="+cc#L150" ide=L150" clas5="line" n5mue=L165"> 165 /a>static5void 56 shmid_kernel /a> *;> 166 /a>{> 167 /a>      5 stru56f="+code=ns" class="sref">nshs /a>;>vchref="e__o/aamuspace /a> *chref="e__o/=ns" ainer_of" classL86paamuspace /a> *shmid_kernel /a> *vsrefperea>), & 108 /a>      5 stru56 ;>sizea>), &  69 /a>static 5int <56   70 /a>#endif>5  71 /a>>  72 /a>void   73 /a>{>  74 /a>       5 ), &vkey_=a>), &), &v ize_=a>), &v izea>), &vsreflgdestroy /a>(  75 /a>       5   76 /a>       5 i="sref">ipc_namuspace /a> *ns /a>, struct   77 /a>       5 i="shr/a>), &shr/="+cc#L112" ide=L112" clas5""line" n5mue=L78">  78 /a>       5  *vsrefparamsnamuspace /a> *srefparams="+cc#L112" ide=L112" clas5""line" n5mue=L79">  79 /a>       5   80 /a>}>ns /a>, struct   81 /a>>  82 /a> spao c5lass=58f="+code=ipc_unlock" class="srefhr/a>), &shr/="+ce" class="sref">getnewa>), &  83 /a> spao c5lass=58 ), &shr/="+ce" class="sref">associaru /a> |= vass=securit_destroy /a>(  84 /a> spao c5lass=58f="+code=ns" ct" class="srefsrefhr/a>), &shr/="+ce" class="sref">more_check/a>), &vass=more_check/a>), &smore_check/=ns"c#L112" ide=L112" clas5""line" n5mue=L85">  85 /a> spao c5lass=58   86 /a>static 5void 58f="+code=ns" class="sref">nssrefparamsnamuspace /a> *srefparams="+ce" class="sref">keya>), &vkeya>), &  87 /a>{>nshsefparamsnamuspace /a> *srefparams="+ce" class="sref">flgdestroy /a>(vassflgdestroy /a>(  88 /a>       5 stru588nshsefparamsnamuspace /a> *srefparams="+ce" class="sref">unamuspace /a> *ue=nse" class="sref">sizea>), &  89 /a>       5   90 /a>>, struct sid/a>), &sid/=ns" ainer_of" class /a>), &), &shr/="+c,o=shm_ids" class="sref"efparamsnamuspace /a> *srefparams="+c)c#L168" ide=L168" clas5"line" na5mue=L91">  91 /a>       5 if (59shm.cc#L146" ide=L146" clas5"line" na5mue=L92">  92 /a>       5     59shm.c#L163" ide=L163" clas5"line" na5mue=L93">  93 /a>       5     593="+c"+code=ct" class="sref *cop_d hrid_tohuse_=ns" voidn_ipc_perm" clas_huse_lock_by_ptr /a>_huse_=ns"" class="sref">nsbu/aamuspace /a> *bu/=ns",ode=kern_ipc_perm" clas="sre64_d/a>), &re64_d/="+co_lock_check" claLna>), &  94 /a>       5     59f="+cc#L150" ide=L150" clas5""line" n5mue=L95">  95 /a>       5     59 ), &  96 /a>       5 } el59  return (strcasenit" class="srefIPC_mue=L164"> ;  97 /a>       5     59  nsbu/aamuspace /a> *bu/=ns",olock_check" claLna>), &), &  98 /a>}> ;  19 /a> spao c5a 100 /a>#ifdef6re_d/="+co_ipc_perm" clasoud iner_of /a>( 101 /a>void <6 href60shm.c#L152" ide=L152" clas6=2ine" na6mue=L92">  92 /a>       6ef="i60  memse=a>), & 103 /a>      6 srefperea>), &  94 /a>       6 srefsegsza>), &vLna>), &  95 /a>       6ef="i60 srefatiefile /a>;>vLna>), &  96 /a>       6srefdtiefile /a>;>vLna>), &  97 /a>       6f="ip60  oud iner_of /a>(srefctiefile /a>;>vLna>), &  98 /a>}>voud iner_of /a>(srefcpie iner_of /a>(vLna>), &  19 /a> spao c6ef="i60 voud iner_of /a>(sreflpie iner_of /a>(vLna>), & 110 /a>      6 srefnattcha>), &vLna>), &  21 /a> spao c6ahref61shm.c#L152" ide=L152" clas6l"line" n6mue=L112"> 112 /a>}>nsbu/aamuspace /a> *bu/=ns",o=shm_ids" class="sreoud iner_of /a>( 113 /a>> 114 /a> a hre6="+co61f="+code=ns" defauld:#L158" ide=L158" clas6=5line" n6mue=L115"> 115 /a>> 116 /a>void <6 href61  return (strc#L146" ide=L146" clas6l7line" n6mue=L117"> 117 /a>{> 118 /a>      6  119 /a>#if  120 /a>      6     620cop_d hrid_fromhuse_=ns" de=kern_ipc_perm" clas="sre64_d/a>), &re64_d/="+co_lock_check" claoud iner_of /a>(_huse_=ns"" class="sref">nsbu/aamuspace /a> *bu/=ns",o__init" class="srefversiona>), & 121 /a>#else>6a hre621="+cc#L150" ide=L150" clas6="line" n6mue=L122"> 122 /a>      6     62f="+code=ipc_switch ainer_of" classversiona>), & 123 /a>#endif6 ; 124 /a>      6     62f="+code=spinnnnnnnnnIS_Eainer_of" classcop_dfromhuse_lock_by_ptr /a>cop_dfromhuse_=ns" lock_check" claoud iner_of /a>(nsbu/aamuspace /a> *bu/=ns",odizeof(_lock_check" claoud iner_of /a>( 125 /a>}> 126 /a>> 127 /a> spao 6lass=62f="+code=ns" casenit" class="srefIPC_OLDe=L164"> ; 128 /a> spao 6lass=628 129 /a> spao 6lass=62 re_d/="+co_ipc_perm" clastbu/_ole iner_of /a>( 1311 spao 6lass=63shm.c#L141" ide=L141" clas6="line" n6mue=L131"> 131 /a>static6cop_dfromhuse_=ns" =shm_ids" class="sretbu/_ole iner_of /a>(nsbu/aamuspace /a> *bu/=ns",odizeof(ids" class="sretbu/_ole iner_of /a>( 132 /a>{> 133 /a>      6 stru63shm.c#L164" ide=L164" clas6="line" n6mue=L134"> 134 /a>>uie iner_of /a>(vtbu/_ole iner_of /a>(srefperea>), &uie iner_of /a>( 135 /a>      6 if (63 gie iner_of /a>(vtbu/_ole iner_of /a>(srefperea>), &gie iner_of /a>( 136 /a>      6     63  return (struct mode /a> |= vtbu/_ole iner_of /a>(srefperea>), &mode /a> |=  137 /a>> 138 /a>      6 retu638 139 /a>}> 140 /a>> 141 /a>static6 142 /a>{> 143 /a>      6  144 /a>      6  145 /a>}>cop_d hrinfo_tohuse_=ns" voidn_ipc_perm" clas_huse_lock_by_ptr /a>_huse_=ns"" class="sref">nsbu/aamuspace /a> *bu/=ns",ode=kern_ipc_perm" clas="srnfomue=L164"> ;nsLna>), & 146 /a>> 147 /a>static6), & 148 /a>      6     648 ; 149 /a>{>nsbu/aamuspace /a> *bu/=ns",olock_check" claLna>), &), & 150 /a>      6 stru650 ; 151 /a>> 152 /a>      6 if (65   ;( 153 /a>      6     65shm.c#L164" ide=L164" clas6="line" n6mue=L154"> 154 /a>>), & ; 155 /a>      6 retu65 sremasa>), &vINT_MAXe=L164"> ; 156 /a>}> 157 /a>>sremasa>), &), & 158 /a>static6 159 /a>{>voud iner_of /a>(sremLna>), &vLna>), & 160 /a>      6 sremnia>), &vLna>), & 161 /a>}>sresegrea_struct /a> sreseg+cod""" l"a" class="sref">vLna>), & 162 /a>>oud iner_of /a>(srealid_kernel /a> *vLna>), & 163 /a>> 164 /a> spao 6lass=66f="+code=spinnnnnnnnnde=contit" class="srefcop_dtohuse_lock_by_ptr /a>cop_dtohuse_=ns" class="sref">nsbu/aamuspace /a> *bu/=ns",o=shm_ids" class="sreoud iner_of /a>( 165 /a>static6void 66  166 /a>{> 167 /a>      6 stru66   108 /a>      6 stru668   69 /a>static 6int <66   70 /a>#endif>6  71 /a>> * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" class=6"line" na6mue=L72">  72 /a>void  * OpenVZ, SWsoft In* .rwculatehre ladd used RSShre lswap paget of aws"+pc/shm.c#L21" ide=L21" class=6""line" n6mue=L73">  73 /a>{> * OpenVZ, SWsoft In* .rw_mutex (ws"+codeand the shheld as a_ipade_=nshm.c#L21" ide=L21" class=6""line" n6mue=L74">  74 /a>       6  * OpenVZ, SWsoft In*pc/shm.c#L86" ide=L86" class=6""line" n6mue=L75">  75 /a>       6 ), &shmid_kernel /a> *;>  76 /a>       6 ;>;>  77 /a>       6   78 /a>       6  |= nsLnode /a> |=   79 /a>       6   80 /a>}>ns |= va" /a>;>doftredestroy /a>(  81 /a>>  82 /a> spao c6lass=68f="+code=ipc_shp"ainer_of" classisef+codhugupaget_ipc_ns /a>);>;>  83 /a> spao c6lass=683 *address_sipc_+cod" class="sref">nsmappingrea_struct /a> mapping+cod"a" class="sref">v |= ;>(;> |= atha>), &;>;>  85 /a> spao6c5las6865 ;>;>), &nsmappingrea_struct /a> mapping+cod=shm_nattch" class=rumpaget_ipc_ns /a>);>rumpagete=s"c#L168" ide=L168" cl6s5""line"6n5mue=L86">  86 /a>stati6 5voi6 58f="+code=ns}a hhm))"c#L150" ide=L150" clas6""line" a5mue=L87">  87 /a>{>CONFIG_SHMEMet_ipc_ns /a>);CONFIG_SHMEM8shm.c#L152" ide=L152" clas6""line" n5mue=L88">  88 /a>     6 5 st68638 ;nsrnfoe=L164"> ; ;v |=   89 /a>     6 5 ), & ;), &  90 /a>>;>v |= ;>);>rumpagete=s"c#L168" ide=L168" cl6s5"line" 6a5mue=L91">  91 /a>     6 5 if69661="+code=ns"       gn_lock_check" claswp_add/a>;>vrnfoe=L164"> ;;>  92 /a>     6 5   6966   ;), &  93 /a>     6 5   6 593="# hhm.c#L168" ide=L168" clas5"line" 6a5mue=L94">  94 /a>     6 5   69m9>(;>;>v |= ;>);>rumpagete=s"c#L168" ide=L168" cl6s6""line" n5mue=L95">  95 /a>     6 5   6 59   96 /a>     6 5 } 6961  return (strc#L146" ide=L146" clas5"line" 6a5mue=L97">  97 /a>     6 5   6961shm.cc#L146" ide=L146" clas5"line" 6a5mue=L98">  98 /a>}>  19 /a> spao6c5a * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" clas7s6="line"7n6mue=L100"> 100 /a>#ifd7f6 * OpenVZ, SWsoft In* .rw_mutex (ws"+codeand the shheld as a_ipade_=nshm.c#L21" ide=L21" clas7s6=line" 7a6mue=L101"> 101 /a>void7<6 hr70561 * OpenVZ, SWsoft In*pc/shm.c#L86" ide=L86" clas7s6=2ine" 7a6mue=L92">  92 /a>     7 6ef=7056f="+c"+code=voidn_ipc_perm" class"hrgetc"+_file /a>;>i="sref">ipc_namuspace /a> *ns /a>, struct ;> 103 /a>    7 6 ;>  94 /a>     7 6   95 /a>     7 6ef=7i60   96 /a>     7 6vtohude /a> |=   97 /a>     7 6f="7063shm.c#L158" ide=L158" cl7s6=8line"7n6mue=L98">  98 /a>}>;>  19 /a> spao7c6ef=7i60 ;> 110 /a>    7 6   21 /a> spao7c6ahr71541="+code=ipc_rmid" class=">vtohude /a> |= vas>sid/a>), &sid/=ns" ainer_of" class /a>), & |=  112 /a>}> 113 /a>> totahref=filaoda" class="sref"nextd.>ie iner_of /a>(ete=fila"_init" class="srtotahmid_kernel /a> totahref=fil&lm_nit" class="sr"vtohude /a> |= ie iner_of /a>(ete=++i))"c#L150" ide=L150" cl7s6l4line"7n6mue=L114"> 114 /a> a h7e6="+71m9>(;>="+c_), & * 115 /a>>shmid_kernel /a> *;> 116 /a>void7<6 hr7156shm.c#L147" ide=L147" cl7s6l7line"7n6mue=L117"> 117 /a>{>dr_fin>ie iner_of /a>(et=ns" =shm_ids" class="s>vas>sid/a>), &sid/=ns" ainer_of" class /a>), &sse_lock_by_ptr /"pcs">ssref=oda" class="sref"nextd.>ie iner_of /a>(ete=fodc#L168" ide=L168" cl7s6l8line"7n6mue=L118"> 118 /a>    7 6  * 119 /a>#if 7a6hre7165  120 /a>    7 6   72660;>vchref="e__o/aamuspace /a> *chref="e__o/=ns" ainer_of" classLc_namuspace /a> *shmid_kernel /a> *vsrefperea>), & 121 /a>#els7>6a h7268shm.c#L152" ide=L152" cl7s6="line"7n6mue=L122"> 122 /a>    7 6   7266  ), &;>;> 123 /a>#end7f6 124 /a>    7 6   7 62f="+code=spinnnnnnninit" class="srtotahmid_kernel /a> totahref=++s)c#L168" ide=L168" cl7s6=5line"7n6mue=L125"> 125 /a>}> 126 /a>> 127 /a> spa7 6las7263shm.c#L158" ide=L158" cl7s6="line"7n6mue=L128"> 128 /a> spa7 6las7254f="+ct"> * OpenVZ, SWsoft Iipc/shm.c#L86" ide=L86" clas7s6=9line"7n6mue=L129"> 129 /a> spa7 6las7254  * OpenVZ, SWsoft InThis function handles some (wsctl Z, Sands which require the eand theipc/shm.c#L86" ide=L86" clas7s6="line"7n6mue=L130"> 1311 spa7 6las7356omment"> * OpenVZ, SWsoft Into be shhelin write ef=""+pc/shm.c#L21" ide=L21" clas7s6="line"7n6mue=L131"> 131 /a>stat7c6 * OpenVZ, SWsoft I NOTE: no6p los must be shhe, the eand the is takenlinside this function"+pc/shm.c#L21" ide=L21" clas7s6="line"7n6mue=L132"> 132 /a>{> * OpenVZ, SWsoft In*pc/shm.c#L86" ide=L86" clas7s6="line"7n6mue=L133"> 133 /a>    7 6 st73593="+c"+codco__init" class="sref ctl_dowmLna>), &i="sref">ipc_namuspace /a> *ns /a>, struct  134 /a>>re_d/="+co_ipc_perm" clas_huse_lock_by_ptr /a>_huse_=ns"" class="sref">nsbu/aamuspace /a> *bu/=ns",o__init" class="srefversiona>), & 135 /a>    7 6 if7357  136 /a>    7 6   7357f="+code=ns" de=file" class="sref">="+c_), & * 137 /a>>), &re64_d/="+le" class="srefss="sred/a>), &re p=ns)c#L168" ide=L168" cl7s6="line"7n6mue=L138"> 138 /a>    7 6 re7367 shmid_kernel /a> *;> 139 /a>}> 140 /a>> 141 /a>stat7c6(cmpc/shodd"a" class="sref"hrIPSEULTa>), & 142 /a>{>cop_d hrid_fromhuse_=ns" =shm_ids" class="s>va"sred/a>), &re p=nm.,cclass="sref">nsbu/aamuspace /a> *bu/=ns"init" class="srefversiona>), & 143 /a>    7 6  144 /a>    7 6  145 /a>}> 146 /a>>laL86paamuspace /a> *pcctl_pre_dowmLna>), &pcctl_pre_dowmd/=ns" ainer_of" class /a>), &sid/a>), &sid/=ns" ainer_of" class /a>), & 147 /a>stat7c6), &re p=nm.e" class="sref">srefperea>), & 148 /a>    7 6   7456 ), & * 149 /a>{> * 150 /a>    7 6 st7567shm.c#L141" ide=L141" cl7s6="line"7n6mue=L151"> 151 /a>>vchref="e__o/aamuspace /a> *chref="e__o/=ns" ainer_of" classL86paamuspace /a> *shmid_kernel /a> *vsrefperea>), & 152 /a>    7 6 if7559shm.c#L163" ide=L163" cl7s6="line"7n6mue=L153"> 153 /a>    7 6   7558 esecurip_d _hrsctlrea>), &;>(cmpc/shns)c#L168" ide=L141" cl7s6="line"7n6mue=L154"> 154 /a>> 155 /a>    7 6 re7u65 o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl7s6="line"7n6mue=L156"> 156 /a>}>(cmpc/shs))"c#L150" ide=L150" cl7s6="line"7n6mue=L157"> 157 /a>> ; 158 /a>stat7c6(dop_d _r lpd/=ns" ainer_of" class /a>), & * 159 /a>{>o_m86paamuspace /a>">o_m8LTshm.c#L168" ide=L168" cl7s6="line"7n6mue=L160"> 160 /a>    7 6  161 /a>}>), &), &re p=nm.e" class="sref">srefperea>), & * 162 /a>>;>), & 163 /a>> 164 /a> spa7 6las7=66f="+code=sptrdefauld:#L158" ide=L158" cl7s6="line"7n6mue=L165"> 165 /a>stat7c6voi7 66  166 /a>{> 167 /a>    7 6 st7u66  o_m_unlocka>), &o_m_unloLTshld:#L158" ide=L158" cl7s6="line"7n6mue=L168"> 108 /a>    7 6 st76588nshsm_unlocka>), &;>  69 /a>stati7 6int7<66 o_m86paamuspace /a>">o_m8LTshld:#L158" ide=L158" cl7s6"line" 7a6mue=L70">  70 /a>#endi7>6up_write6paamuspace /a>up_writee_=ns" =shm_ids" class="s>vas>sid/a>), &sid/=ns" ainer_of" class /a>), &  71 /a>>  72 /a>void 7a6 hr7f67f="trc#L146" ide=L146" cl7=6""line"7n6mue=L73">  73 /a>{>  74 /a>     7 6 ), &re_d/="+co_ipc_perm" clas_huse_lock_by_ptr /a>_huse_=ns"m.,cclass="sref">nsbu/aamuspace /a> *bu/=ns")#L164" ide=L164" cl7=6""line"7n6mue=L75">  75 /a>     7 6   76 /a>     7 6 shmid_kernel /a> *;>  77 /a>     7 6   78 /a>     7 6 i="sref">ipc_namuspace /a> *ns /a>, struct   79 /a>     7 6   80 /a>}>(cmpc/shoil&lm0 ||oinit" class="sref lpie iner_of /a>(  81 /a>>  82 /a> spao7c6las7866  o6paamuspace /a>">oALshm.c#L168" ide=L168" cl7s6""line"7n6mue=L83">  83 /a> spao7c6las7=683  85 /a> spao7c5las7865 pc_parse_efversiona>), &pc_parse_efversie_=ns" =shm_ids" class="scmpie iner_of /a>(cmpc/shns)c#L168" ide=L141" cl7s5""line"7n5mue=L86">  86 /a>stati7 5voi7858f="+code=ns" class="sref">ns /a>, struct urrWsofe iner_of /a>(currWsoc/shm.=shm_nattch" classnsproxtredestroy /a>();>*  87 /a>{>  88 /a>     7 5 st78638(cmpc/shs)) +ct"> * OpenVZ, SWsoft Isoopl"+cmutex proodco_erf"+cm? In*pc/shm.c#L86" ide=L86" clas7s6""line"7n5mue=L89">  89 /a>     7 5   90 /a>>  91 /a>     7 5 if79661="+code=ns"       ,ode=kern_ipc_perm" clas="srnfomue=L164"> ; ;  92 /a>     7 5   7959shm.c#L163" ide=L163" cl7s6""line"7a5mue=L93">  93 /a>     7 5   79603esecurip_d _hrsctlrea>), &(cmpc/shns)c#L168" ide=L141" cl7s5"line" 7a5mue=L94">  94 /a>     7 5   79m9>(;>  95 /a>     7 5   7962   96 /a>     7 5 } 7956shm.c#L147" ide=L147" cl7s5"line" 7a5mue=L97">  97 /a>     7 5   7960   ; ;  98 /a>}>va"srnmue=L164"> ;sremnia>), &va"srnmue=L164"> ;sresegrea_struct /a> sreseg+co""a" class="sref"ns /a>, struct   19 /a> spao7c5a ;sremasa>), &, struct  100 /a>#ifd8f6 ;srealid_kernel /a> *, struct   91 /a>     8<6 hr8068shm.c#L152" ide=L152" cl8s6=2ine" 8a6mue=L92">  92 /a>     8 6ef=8066   ;sremLna>), &  93 /a>     8 6 cop_d hrinfo_tohuse_=nIS_Eainer_of" clansbu/aamuspace /a> *bu/=ns",o=shm_ids" class="s>va"srnmue=L164"> ;  94 /a>     8 6   95 /a>     8 6ef=8058   96 /a>     8 6sid/=ns" ainer_of" class /a>), &  97 /a>     8 6f="8060  *(>*sid/=ns" ainer_of" class /a>), &  98 /a>}>), &sid/=ns" ainer_of" class /a>), &  19 /a> spao8c6ef=8067shm.c#L100" ide=L100" cl8s6l"line"8n6mue=L110"> 110 /a>    8 6   21 /a> spao8c6ahr81661="+code=ns"       +code=shm_" class="sreferse_lock_by_ptr /ersc/shs""a".c#L112" ide=L112" cl8s6l"line"8n6mue=L112"> 112 /a>}>o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s6l"line"8n6mue=L113"> 113 /a>> 114 /a> a h8e6="+81m9>(;>" casenit" class="srSHMPINFOLTa>), & 115 /a>> 116 /a>void8<6 hr8163  return (struct  ; ; 117 /a>{> 118 /a>    8 6 esecurip_d _hrsctlrea>), &(cmpc/shns)c#L168" ide=L141" cl8=6l9line"8n6mue=L119"> 119 /a>#if 8a6hre8165  120 /a>    8 6   82660 121 /a>#els8>6a h8268shm.c#L152" ide=L152" cl8s6="line"8n6mue=L122"> 122 /a>    8 6   8266   ; ; 123 /a>#end8f6sid/=ns" ainer_of" class /a>), & 124 /a>    8 6   8 62f="+code=spinnnnnnninit" class="sr>va_"srnfoe=L164"> ;sid/a>), &sini+co""a" class="sref">vas>sid/a>), &sid/=ns" ainer_of" class /a>), & |=  125 /a>}>;>), &srnfoe=L164"> ;;>srnfoe=L164"> ; 126 /a>>srnfoe=L164"> ;, struct  127 /a> spa8 6las8260  srnfoe=L164"> ; 128 /a> spa8 6las82608va">srnfoe=L164"> ; 129 /a> spa8 6las8265 *(>*sid/=ns" ainer_of" class /a>), & 1311 spa8 6las83660), &sid/=ns" ainer_of" class /a>), & 131 /a>stat8c6cop_dtohuse_=ns" class="sref">nsbu/aamuspace /a> *bu/=ns",o=shm_ids" class="s>va_"srnfoe=L164"> ; ; 132 /a>{> 133 /a>    8 6 st83563o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s6="line"8n6mue=L134"> 134 /a>> 135 /a>    8 6 if8358  136 /a>    8 6   8363  return (struct  137 /a>>o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s6="line"8n6mue=L138"> 138 /a>    8 6 re83668  139 /a>}> 140 /a>> 141 /a>stat8c6 142 /a>{>), &re64_d/="+le" class="sreftnsbu/aamuspace /a>t *bu/=nm.c#L168" ide=L168" cl8s6="line"8n6mue=L143"> 143 /a>    8 6  144 /a>    8 6  145 /a>}>(cmpc/shodd"a" class="sref"SHMPSTAULTa>), & 146 /a>>), &), &( 147 /a>stat8c6), &;> 148 /a>    8 6   84608), &;> 149 /a>{>o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s6="line"8n6mue=L150"> 150 /a>    8 6 st85660 151 /a>>va" /a>;>ie iner_of /a>( 152 /a>    8 6 if8566   153 /a>    8 6   85563), &), &( 154 /a>>), &;> 155 /a>    8 6 re8u65 ), &;> 156 /a>}>o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s6="line"8n6mue=L157"> 157 /a>> 158 /a>stat8c6 159 /a>{> 160 /a>    8 6 ), & 161 /a>}>);>*), &;>), & 162 /a>>o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl8s6="line"8n6mue=L163"> 163 /a>>esecurip_d _hrsctlrea>), &;>(cmpc/shns)c#L168" ide=L141" cl8s6="line"8n6mue=L164"> 164 /a> spa8 6las8663f="+code=spinnnnnnncoIS_Eainer_of" claerse_lock_by_ptr /ersc/shs")#L164" ide=L164" cl8s6="line"8n6mue=L165"> 165 /a>stat8c6voi8 66 o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl8s6="line"8n6mue=L166"> 166 /a>{> 167 /a>    8 6 st8660  ), &;>srefperea>), & 108 /a>    8 6 st86608t *bu/=nm.e" class="sref">srsegszdd/a>;>va" /a>;>  69 /a>stati8 6int8665 t *bu/=nm.e" class="sref">sratimude /a> |= sratimu08va" /a>;>  70 /a>#endi8>6t *bu/=nm.e" class="sref">srdtimude /a> |= srdtimu08va" /a>;>  71 /a>>t *bu/=nm.e" class="sref">srctimude /a> |= srctimu08va" /a>;>  72 /a>void 8a6 hr8766  srcplpie iner_of /a>(va" /a>;>  73 /a>{>srlplpie iner_of /a>(va" /a>;>  74 /a>     8 6 srnattchie iner_of /a>(va" /a>;>  75 /a>     8 6 ), &;>  76 /a>     8 6 cop_d hdfo_tohuse_=nIS_Eainer_of" clansbu/aamuspace /a> *bu/=ns",o=shm_ids" class="stnsbu/aamuspace /a>t *bu/=n,lm_ids" class="sefversiona>), &  77 /a>     8 6   78 /a>     8 6   79 /a>     8 6 resulou/=nm.c#L168" ide=L168" cl8s6"line" 8a6mue=L80">  80 /a>}>o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s6"line" 8a6mue=L81">  81 /a>>  82 /a> spao8c6las8866    83 /a> spao8c6las8=683  85 /a> spao8c5las8866  |=   86 /a>stati8 5voi8856shm.c#L147" ide=L147" cl8s6""line"8a5mue=L87">  87 /a>{>), &), &(  88 /a>     8 5 st88638), &;>  89 /a>     8 5 ), &;>  90 /a>>o6paamuspace /a>">oALshm.c#L168" ide=L168" cl8s5"line" 8a5mue=L91">  91 /a>     8 5 if89661="+code=ns"       +cc#L146" ide=L146" cl8s6"line" 8a5mue=L92">  92 /a>     8 5   8959shm.c#L163" ide=L163" cl8s6""line"8a5mue=L93">  93 /a>     8 5   89603;>  94 /a>     8 5   8964shm.c#L155" ide=L155" cl8s6""line"8n5mue=L95">  95 /a>     8 5   8962  |= ), &);ohusa gef=""+" ainer_of" claCAP_efIPLOCKLTa>), &  96 /a>     8 5 } 8963  return (struct (currWso_eulpap=nsss)c#L168" ide=L168" cl8s6""line"8a5mue=L97">  97 /a>     8 5   8960  ), &  98 /a>}>va" /a>;>  19 /a> spao8c5ava" /a>;> 100 /a>#ifd9f6o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl9s1="line"9n5mue=L91">  91 /a>     9<6 hr90661="+code=ns"       +code=sh  IS_Eainer_of" clasmpie iner_of /a>(cmpc/shodd"a" class="sref"SHMPLOCKLTa>), &rlimioap=nsoo attch" classRLIMIT_MEMLOCKLTa>), &  92 /a>     9 6ef=9066  o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl9s3=2ine" 9a5mue=L93">  93 /a>     9 6   94 /a>     9 6   95 /a>     9 6ef=9066 ), &;>(cmpc/shns)c#L168" ide=L141" cl9s6=6line"9n6mue=L96">  96 /a>     9 6  97 /a>     9 6f="9060  o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl9s8=6line"9n5mue=L98">  98 /a>}>  19 /a> spao9c6ef=9065  |= va" /a>;> 110 /a>    9 6 );ss_filu_hugepagagap=nsoo attch" classnssrfilude /a> |=   21 /a> spao9c6ahr91661="+code=ns"       +code=shgotohp"" class="sref">o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl9s6l"line"9n6mue=L112"> 112 /a>}> 113 /a>>(cmpc/shodd"a" class="sref"SHMPLOCKLTa>), & 114 /a> a h9e6="+9163f="+code=spinnnnnnnoooooooo" de=file" class="srefohusa" de=fet_ipc_ns /a>);ohusa" de=f6  115 /a>>), & |=  116 /a>void9<6 hr9163  return (struct ;> ; 117 /a>{>va" /a>;> ; 118 /a>    9 6 va" /a>;> 119 /a>#if 9a6hre9165  120 /a>    9 6   92660o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl9s6="line"9n6mue=L121"> 121 /a>#els9>6a h92661="+code=ns"       +cc#L146" ide=L146" cl9s6="line"9n6mue=L122"> 122 /a>    9 6   9259shm.c#L163" ide=L163" cl9s6l"line"9n6mue=L123"> 123 /a>#end9f6 * OpenVZ, SWsoft IsSHMPUNLOCK In*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L124"> 124 /a>    9 6   9 62f="+code=spinnnnnnn, IS!s" ainer_of" clanshs /a>;> ; 125 /a>}>o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl9s6=6line"9n6mue=L126"> 126 /a>> |= ;> 127 /a> spa9 6las9260   ; 128 /a> spa9 6las92608va" /a>;> 129 /a> spa9 6las9265  |=  |=  1311 spa9 6las93660), &;> 131 /a>stat9c6 |=  132 /a>{>o6paamuspace /a>fp>oap=nsoo attch" classnssrfilude /a> |=  133 /a>    9 6 st93563o6paamuspace /a>">oALshm.c#L168" ide=L168" cl9s6="line"9n6mue=L134"> 134 /a>> 135 /a>    9 6 if9366  136 /a>    9 6   9363  return (s" casenit" class="srefIPSEULTa>), & 137 /a>> |= ), &(cmpc/shm.,cclass="sref">nsbu/aamuspace /a> *bu/=n,lm_ids" class="sefversiona>), & 138 /a>    9 6 re93608 139 /a>}> 140 /a>> 141 /a>stat9c6 142 /a>{> 143 /a>    9 6 o_m_unlocka>), &o_m_unloLTshld:#L158" ide=L158" cl9s6="line"9n6mue=L144"> 144 /a>    9 6 ), &;> 145 /a>}>o6paamuspace /a>">oALshld:#L158" ide=L158" cl9s6="line"9n6mue=L146"> 146 /a>> 147 /a>stat9c6 148 /a>    9 6   94608 149 /a>{> * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L150"> 150 /a>    9 6 st95660 * OpenVZ, SWsoft * Fix 6" addr, alunlate+trscriptor, map 6" , add attach+trscriptor tohlists.*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L151"> 151 /a>> * OpenVZ, SWsoft **pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L152"> 152 /a>    9 6 if9566   * OpenVZ, SWsoft * NOTE! Despite+the /a> ,+this is NOT a direct systems" ll Wsorypoint. The*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L153"> 153 /a>    9 6   95563 * OpenVZ, SWsoft * "raddr"+thing points tohhr="+c f="+c, and+there has tohbe a wrapper around*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L154"> 154 /a>> * OpenVZ, SWsoft * this.*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L155"> 155 /a>    9 6 re9u65  * OpenVZ, SWsoft *n*pc/shm.c#L86" ide=L86" clas9s6="line"9n6mue=L156"> 156 /a>}>;>((raddrref=o.c#L86" ide=L86" clas9s6="line"9n6mue=L157"> 157 /a>> slbac/shs.c#L86" ide=L86" clas9s6="line"9n6mue=L158"> 158 /a>stat9c6 159 /a>{>;> 160 /a>    9 6  161 /a>}> 162 /a>> 163 /a>> 164 /a> spa9 6las9663f="+code=spunsigned long htit" class="srflags /a>), & 165 /a>stat9c6voi9 66  166 /a>{> 167 /a>    9 6 st9660   108 /a>    9 6 st96608(c_ f="+cc/shshm_lock_check" css /a>), &  69 /a>stati9 6int9665 (  70 /a>#endi9>6  71 /a>>  72 /a>void 9a6 hr9759shm.c#L163" ide=L163" cl9=6""line"9n6mue=L73">  73 /a>{>  74 /a>     9 6 (  75 /a>     9 6 o6paamuspace /a>">oALshm.c#L168" ide=L168" cl9=6""line"9n6mue=L76">  76 /a>     9 6 (addrref=s""S_Eainer_of" claulonge_lock_by_ptr /olongc/sh)m_lock_check" clamaddrie iner_of /a>(  77 /a>     9 6 (addrref=si =sh"S_Eainer_of" claef lbaegrea_struct /a> slbac/sh - 1ss))"c#L150" ide=L150" cl9s6="line"9n6mue=L78">  78 /a>     9 6  sflsu/=nsi =sh"a" class="sref"SHMPRNOLDe=L164"> ;  79 /a>     9 6 (addrref=si =sh= ~S_Eainer_of" claef lbaegrea_struct /a> slbac/sh - 1s;ef="+cct"> * OpenVZ, SWsoft Isround dowm *n*pc/shm.c#L86" ide=L86" clas9s6"line" 9a6mue=L80">  80 /a>}>  81 /a>>  82 /a> spao9c6las9866  (addrref=si =sh"~a" class="sref"PAGE_MASKLTa>), &  83 /a> spao9c6las9=683o6paamuspace /a>">oALshm.c#L168" ide=L168" cl9s6""line"9n5mue=L85">  85 /a> spao9c5las9866   86 /a>stati9 5voi9863  return (struct  ; ;  87 /a>{>  88 /a>     9 5 st98638 sflsu/=nsi =sh"a" class="sref"SHMPREMAPLDe=L164"> ;  89 /a>     9 5 o6paamuspace /a>">oALshm.c#L168" ide=L168" cl9s5"line" 9a5mue=L90">  90 /a>>  91 /a>     9 5 if99661="+code=ns"        hids" class="sflags /a>), & ;  92 /a>     9 5   9966    93 /a>     9 5   99603  94 /a>     9 5   9962f="+code=sp, IS_Eainer_of" claef flsegrea_struct /a> sflsu/=nsi =sh"a" class="sref"SHMPRDONLYLDe=L164"> ;  95 /a>     9 5   9962  ;  96 /a>     9 5 } 9963  return (struct ), &  97 /a>     9 5   9960   ;  98 /a>}>  19 /a> spao9c5a ; ;  19 /a> spao10s6=>10s63  return (struct ), &), &), &ado19 /linea7/cf/7645fab08bea74d4b2fede29e26a78c43a1b_3/10s6=>c#L168" ide=L168" cl10s1="line"10s5mue=L91">  91 /a>     10s5m>10s661="+code=ns"        hids" class="sf_msrerea>), & ; ;  92 /a>     10s5m>10s66    93 /a>     10s5m>10s32f="+code=sp, IS_Eainer_of" claef flsegrea_struct /a> sflsu/=nsi =sh"a" class="sref"SHMPEXECLDe=L164"> ;  94 /a>     10s5m>10s62f="+code=spinnnnnnninit" class="srpro+_file /a>;> ;  95 /a>     10s5m>10s62 ), &  96 /a>     10s5m>10s66    97 /a>     10s5m>10s703  98 /a>}>10s608 * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas10s9="line"10s5uue=L19">  19 /a> spao10s5u>10s64  * OpenVZ, SWsoft+cooooooo* WeTaannot rely on+the fs chelo since SYSV IPC does have an*pc/shm.c#L86" ide=L86" clas1016="line"10n6mue=L110"> 110 /a>    10n6m>10n64  * OpenVZ, SWsoft+cooooooo* additional creator id...*pc/shm.c#L86" ide=L86" clas10n1="line"10a6uue=L21">  21 /a> spao10a6u>10n661="oct"> * OpenVZ, SWsoft cooooooo*n*pc/shm.c#L86" ide=L86" clas10n2="line"10n6mue=L112"> 112 /a>}>10n66  ), &), &), &);>*<_href="m.c#L168" ide=L168" cl10n3="line"10n6mue=L113"> 113 /a>>10n563;>), &), &( 114 /a> a h10n6m>10n62f="+code=sp, IS_Eainer_of" claIS_ERRLTa>), &;> 115 /a>>10n66 ), &;> 116 /a>void10n6m>10n63  return (struct o6paamuspace /a>">oALshm.c#L168" ide=L168" cl10n7="line"10n6mue=L117"> 117 /a>{>10n76   118 /a>    10n6m>10n608 119 /a>#if 10n6m>10n963), & 120 /a>    10n6m>10n62f="+code=sp, IS_Eainer_of" claiaLefpeget_ipc_ns /a>);>*), &;>), & 121 /a>#els10n6m>10n661="+code=ns"       gotohp"" class="sref">o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl10n2="line"10n6mue=L122"> 122 /a>    10n6m>10n59shm.c#L163" ide=L163" cl10n3="line"10n6mue=L123"> 123 /a>#end10n6m>10n563;>;>( sflsu/=nss)c#L168" ide=L168" cl1024="line"10n6mue=L124"> 124 /a>    10n6m>10n62f="+code=sp, IS_Eainer_of" claerse_lock_by_ptr /ersc/shs")#L164" ide=L164" cl10n5="line"10n6mue=L125"> 125 /a>}>10n66 o_m_unlocka>), &o_m_unloLTshm.c#L168" ide=L168" cl10n6="line"10n6mue=L126"> 126 /a>>10n56shm.c#L147" ide=L147" cl10n7="line"10n6mue=L127"> 127 /a> spa10n6m>10n763(path60va" /a>;>(f_pathLTshm.c#L168" ide=L168" cl10n8="line"10n6mue=L128"> 128 /a> spa10n6m>10n863(path_geoo/=ns,o=shm_ids" class="spathie iner_of /a>(path60 129 /a> spa10n6m>10n963va" /a>;> 1311 spa10n6m>10n663izude /a> |= ie iner_of /a>(<_lizu_rea>o/=ns" ainer_of" clapathie iner_of /a>(path60), & 131 /a>stat10n6m>10n661="+code=nshtit" class="srsss"m_unlocka>), &;> 132 /a>{>10n59shm.c#L163" ide=L163" cl1033="line"10n6mue=L133"> 133 /a>    10n6m>10n563), & 134 /a>>10n63f="+code=spoo attch" classsfpie iner_of /a>((kzalunlap=ns,cdizeohm_lock_check" clfpie iner_of /a>( 135 /a>    10n6m>10n66 ( 136 /a>    10n6m>10n63  return (struct o_p>o_dWsoryie iner_of /a>(">o_p>o_dWsoryLTshm.c#L168" ide=L168" cl1037="line"10n6mue=L137"> 137 /a>>10n703 138 /a>    10n6m>10n863 |=  |= ), & 139 /a>}>10n64 );ss_filu_hugepagagap=nsoo attch" classnsa" /a>;> 140 /a>>10n64  141 /a>stat10n6m>10n661="+code=ns"       +code=sh hhhhhhh,o=shm_ids" class="s>vs_filu_oefpationsde /a> |=  142 /a>{>10n26  |=  143 /a>    10n6m>10n563o_freude /a> |= o_freuLTshm.c#L168" ide=L168" cl1044="line"10n6mue=L144"> 144 /a>    10n6m>10n64shm.c#L155" ide=L155" cl10n5="line"10n6mue=L145"> 145 /a>}>10n563 |= fpie iner_of /a>( 146 /a>>10n663 |= va" /a>;> 147 /a>stat10n6m>10n763fpie iner_of /a>(ie iner_of /a>(;> 148 /a>    10n6m>10n863fpie iner_of /a>(), &);hrgec_), & 149 /a>{>10n963fpie iner_of /a>( |= va" /a>;> 150 /a>    10n6m>10n663fpie iner_of /a>(), & 151 /a>>10n14shm.c#L155" ide=L155" cl1052="line"10n6mue=L152"> 152 /a>    10n6m>10n66   |=  |= ;>), & 153 /a>    10n6m>10n32f="+code=sp, IS_Eainer_of" claerse_lock_by_ptr /ersc/shs")#L164" ide=L164" cl1054="line"10n6mue=L154"> 154 /a>>10n62f="+code=spinnnnnnngotohp"" class="sref">o_fp>o6paamuspace /a>">o_fp>odde=s)c#L168" ide=L168" cl10n5="line"10n6mue=L155"> 155 /a>    10n6m>10n54shm.c#L155" ide=L155" cl1056="line"10n6mue=L156"> 156 /a>}>10n663), &), &), & 157 /a>>10n72f="+code=sp, IS_Eainer_of" claaddrie iner_of /a>(addrref=si =sh" =sh !s" ainer_of" clans flsegrea_struct /a> sflsu/=nsi =sh"a" class="sref"SHMPREMAPLDe=L164"> ; 158 /a>stat10n6m>10n608 159 /a>{>10n64 ), &), &), &(addrref="+" ainer_of" claaddrie iner_of /a>(addrref= ++coainer_of" cla>izude /a> |=  160 /a>    10n6m>10n661="+code=ns"       +code=shgotohp"" class="srefinvalc>ie iner_of /a>(ALshm.c#L168" ide=L168" cl1061="line"10n6mue=L161"> 161 /a>}>10n661="+code=ns"        ct"> * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas1062="line"10n6mue=L162"> 162 /a>>10n66   * OpenVZ, SWsoft                 * If 6"  segSWsohgoes below stack, make sure+there is some*pc/shm.c#L86" ide=L86" clas10n3="line"10n6mue=L163"> 163 /a>>10n563 * OpenVZ, SWsoft                 * f="+c left for the stack tohgrow (at least 4 pagag).*pc/shm.c#L86" ide=L86" clas1064="line"10n6mue=L164"> 164 /a> spa10n6m>10n63f="oct"> * OpenVZ, SWsoft                 *n*pc/shm.c#L86" ide=L86" clas1065="line"10n6mue=L165"> 165 /a>stat10n6m>10n62 (addrref=sil&lmm_ids" class="scurrWso /a>), &), & |=  166 /a>{>10n63  return (struct (addrref=sig&lmm_ids" class="scurrWso /a>), &), & |= izude /a> |=  ; 167 /a>    10n6m>10n60   108 /a>    10n6m>10n608  69 /a>stati10n6m>10n64   70 /a>#endi10a6m>10a663(ohusaaddrc/shs""m_nattch" classdopmmaprpgofbu/aamuspace /a>dopmmaprpgofbap=nsoo attch" classfilude /a> |= (addrref="+" ainer_of" cla>izude /a> |= ;>), &  71 /a>>10a661="+code=nshm_lock_check" craddrie iner_of /a>(raddrref=s""m_nattch" classohusaaddrie iner_of /a>(ohusaaddrc/shm.c#L168" ide=L168" cl10a2="line"10a6mue=L72">  72 /a>void 10a6m>10a66    73 /a>{>10a32f="+code=sp, IS_Eainer_of" clahS_ERR_INVUELDe=L164"> ;(ohusaaddrc/shss"c#L150" ide=L150" cl1074="line"10n6mue=L74">  74 /a>     10n6m>10a62f="+code=spinnnnnnninit" class="srerse_lock_by_ptr /ersc/shs""(long)m_lock_check" cohusaaddrie iner_of /a>(ohusaaddrc/shm.c#L168" ide=L168" cl10a5="line"10n6mue=L75">  75 /a>     10n6m>10a66   76 /a>     10n6m>10a663), &), &), &  77 /a>     10n6m>10a703  78 /a>     10n6m>10a86 o_fp>o6paamuspace /a>">o_fp>odde=ld:#L158" ide=L158" cl1079="line"10n6mue=L79">  79 /a>     10n6m>10a963o6paamuspace /a>fp>oap=nsoo attch" classfilude /a> |=   80 /a>}>10a603  81 /a>>10a16 o_nattchie iner_of /a>(">o_nattchdde=ld:#L158" ide=L158" cl1082="line"10a6mue=L82">  82 /a> spao10a6m>10a66  ), &), &  83 /a> spao10n6m>10a563;> |= ), &(10a63f="+code=spoo attch" classBUG_ONie iner_of /a>(BUG_ONap=nsoo attch" classIS_ERRLTa>), &;>  85 /a> spao10n5m>10a563va" /a>;>  86 /a>stati10n5m>10a63  return (s, IS_Eainer_of" claef _may_destroyie iner_of /a>(ef _may_destroyap=nsoo attch" classss /a>), &;>  87 /a>{>10a60  ), &;>  88 /a>     10n5m>10a608  89 /a>     10n5m>10a65 ), &;>  90 /a>>10a563), &), &  91 /a>     10a5m>10a14shm.c#L155" ide=L155" cl1092="line"10a5mue=L92">  92 /a>     10a5m>10a26 oie iner_of /a>(">odde=ld:#L158" ide=L158" cl1093="line"10a5mue=L93">  93 /a>     10a5m>10a563  94 /a>     10a5m>10a64shm.c#L155" ide=L155" cl1095="line"10n5mue=L95">  95 /a>     10n5m>10a66 o_m_unlocka>), &o_m_unloLTshld:#L158" ide=L158" cl10a6="line"10n5mue=L96">  96 /a>     10n5m>10a663), &;>  97 /a>     10a5m>10a60  o6paamuspace /a>">oALshm.c#L168" ide=L168" cl1098="line"10a5mue=L98">  98 /a>}>10a608  19 /a> spao10n5u>10a96 o_freude /a> |= o_freuLTshld:#L158" ide=L158" cl11s6="line"11s6="e=L19">  19 /a> spao11s6=>110563 |= (  91 /a>     11s5m>11016 o_p>o_dWsoryie iner_of /a>(">o_p>o_dWsoryLTshld:#L158" ide=L158" cl11s2="line"11s5mue=L92">  92 /a>     11s5m>11066  o6paamuspace /a>path_p>oo/=ns,o=shm_ids" class="spathie iner_of /a>(path60  93 /a>     11s5m>11s32f="+code=spgotohp"" class="sref">o_nattchie iner_of /a>(">o_nattchdde=s)c#L168" ide=L168" cl11s4="line"11s5mue=L94">  94 /a>     11s5m>11s62f="}.c#L168" ide=L168" cl11s5="line"11s5mue=L95">  95 /a>     11s5m>11054shm.c#L155" ide=L155" cl11s6="line"11s5mue=L96">  96 /a>     11s5m>11s66  ;>(  97 /a>     11s5m>11s703  98 /a>}>11s608  19 /a> spao11s5u>11065  110 /a>    11n6m>111603  21 /a> spao11a6u>111661="+code=nshtit" class="srerse_lock_by_ptr /ersc/shs""m_nattch" classdo_hrs"+_file /a>;>( 112 /a>}>11126  113 /a>>111563 114 /a> a h11n6m>11163f="+code=spoo attch" classforce_successful_sys" ll_ooipc/de /a> |=  115 /a>>11n66 (reoALshm.c#L168" ide=L168" cl11n6="line"11n6mue=L116"> 116 /a>void11n6m>11n63  r}.c#L168" ide=L168" cl11n7="line"11n6mue=L117"> 117 /a>{>111703 118 /a>    11n6m>11n608 * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas11n9="line"11n6mue=L119"> 119 /a>#if 11n6m>11164  * OpenVZ, SWsoft+* detach+and+kill segSWsoh, Imarked destroyed.*pc/shm.c#L86" ide=L86" clas1126="line"11n6mue=L120"> 120 /a>    11n6m>112660 * OpenVZ, SWsoft * The work is do19d,o 6" _close.*pc/shm.c#L86" ide=L86" clas1121="line"11n6mue=L121"> 121 /a>#els11n6m>112661="oct"> * OpenVZ, SWsoft *n*pc/shm.c#L86" ide=L86" clas11n2="line"11n6mue=L122"> 122 /a>    11n6m>11226 ( 123 /a>#end11n6m>11n563 124 /a>    11n6m>11n62f="+code=sp" de=file" class="srefmm_" de=frea>), &), &), &), & 125 /a>}>11n66 ), & 126 /a>>112663( 127 /a> spa11n6m>11n763 128 /a> spa11n6m>11n863 129 /a> spa11n6m>11n963);lofffo63 |=  1311 spa11n6m>11n663), &), & 131 /a>stat11n6m>11n661="#endif.c#L86" ide=L86" clas11n2="line"11n6mue=L132"> 132 /a>{>11n59shm.c#L163" ide=L163" cl1133="line"11n6mue=L133"> 133 /a>    11n6m>11332f="+code=sp, IS_Eainer_of" claaddrie iner_of /a>(addrref=si =sh"~a" class="sref"PAGE_MASKLTa>), & 134 /a>>11362f="+code=spinnnnnnnooipc/shtit" class="srreovacie iner_of /a>(reovacref=m.c#L168" ide=L168" cl1135="line"11n6mue=L135"> 135 /a>    11n6m>11354shm.c#L155" ide=L155" cl11n6="line"11n6mue=L136"> 136 /a>    11n6m>113663), &), & 137 /a>>11n703 138 /a>    11n6m>113608 * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas11n9="line"11n6mue=L139"> 139 /a>}>11364  * OpenVZ, SWsoft+cooooooo* This funstrsi tries tohbe smart+and+unmap 6"  segSWsos th"+apc/shm.c#L86" ide=L86" clas1146="line"11n6mue=L140"> 140 /a>>11464  * OpenVZ, SWsoft+cooooooo* were modified by partial munlo or munmap " lls:apc/shm.c#L86" ide=L86" clas1141="line"11n6mue=L141"> 141 /a>stat11n6m>114661="oct"> * OpenVZ, SWsoft cooooooo* - It first determ 14s the sizu of the s"  segSWsohth"+ s"ould be*pc/shm.c#L86" ide=L86" clas1142="line"11n6mue=L142"> 142 /a>{>11466   * OpenVZ, SWsoft         *="+unmapped: It search4s for a vmahth"+ is backed by s"  and+th"+apc/shm.c#L86" ide=L86" clas1143="line"11n6mue=L143"> 143 /a>    11n6m>114563 * OpenVZ, SWsoft         *="+" arted at address 6" addr. It records it's sizu and+then+unmapsapc/shm.c#L86" ide=L86" clas1144="line"11n6mue=L144"> 144 /a>    11n6m>11463f="oct"> * OpenVZ, SWsoft         *="+it.*pc/shm.c#L86" ide=L86" clas11n5="line"11n6mue=L145"> 145 /a>}>11465  * OpenVZ, SWsoft cooooooo* - Then+it+unmaps  ll s"  vmashth"+ s arted at 6" addr and+th"+apc/shm.c#L86" ide=L86" clas1146="line"11n6mue=L146"> 146 /a>>11n663 * OpenVZ, SWsoft         *="+are within the initially determ 14d sizu.*pc/shm.c#L86" ide=L86" clas11n7="line"11n6mue=L147"> 147 /a>stat11n6m>11n763 * OpenVZ, SWsoft         *=Errors from dopmunmap are ignored: the funstrsi only fails if*pc/shm.c#L86" ide=L86" clas11n8="line"11n6mue=L148"> 148 /a>    11n6m>114608 * OpenVZ, SWsoft         *=it's " ll4d with  para> terl or , Iit's " ll4d tohunmap*pc/shm.c#L86" ide=L86" clas11n9="line"11n6mue=L149"> 149 /a>{>11464  * OpenVZ, SWsoft+cooooooo* a part of a vma. Both " lls in this funstrsi are for full vmas,*pc/shm.c#L86" ide=L86" clas1156="line"11n6mue=L150"> 150 /a>    11n6m>11564  * OpenVZ, SWsoft+cooooooo* the para> terl are directly copied from the vmahitself and+alwaysapc/shm.c#L86" ide=L86" clas11n1="line"11n6mue=L151"> 151 /a>>115661="oct"> * OpenVZ, SWsoft cooooooo* valc> -+therefore dopmunmap aannot fail. (famous last words?)apc/shm.c#L86" ide=L86" clas11n2="line"11n6mue=L152"> 152 /a>    11n6m>11566   * OpenVZ, SWsoft         *n*pc/shm.c#L86" ide=L86" clas1153="line"11n6mue=L153"> 153 /a>    11n6m>11n32f="+code=spoct"> * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas1154="line"11n6mue=L154"> 154 /a>>11563f="oct"> * OpenVZ, SWsoft         *=I Iit had been+mremap()'d, the starting address would no+apc/shm.c#L86" ide=L86" clas11n5="line"11n6mue=L155"> 155 /a>    11n6m>11565  * OpenVZ, SWsoft cooooooo* match the usual chelol anyway. So Opeume  ll vma's areapc/shm.c#L86" ide=L86" clas11n6="line"11n6mue=L156"> 156 /a>}>115663 * OpenVZ, SWsoft         *=above the starting address given.*pc/shm.c#L86" ide=L86" clas1157="line"11n6mue=L157"> 157 /a>>115763 * OpenVZ, SWsoft         *n*pc/shm.c#L86" ide=L86" clas1158="line"11n6mue=L158"> 158 /a>stat11n6m>115863 |= (addrref=ss)c#L168" ide=L168" cl11n9="line"11n6mue=L159"> 159 /a>{>11n64  160 /a>    11n6m>11n661="#ifdef_init" class="srCONFIG_MMUALlock_by_ptr /CONFIG_MMU03 161 /a>}>11n661="+code=nswhileIS_Eainer_of" clavmaegrea_struct /avmaef="s))"c#L150" ide=L150" cl1162="line"11n6mue=L162"> 162 /a>>11666  ), &), & 163 /a>>116603 164 /a> spa11n6m>11662f="+code=spinnnnnnnict"> * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas1165="line"11n6mue=L165"> 165 /a>stat11n6m>11665  * OpenVZ, SWsoft cooooooo        *=Chelo if the starting address would match, i.e.Iit's*pc/shm.c#L86" ide=L86" clas1166="line"11n6mue=L166"> 166 /a>{>116663 * OpenVZ, SWsoft         cooooooo* a fragSWsohcreated by mpro+ect() and/or munmap(), or ,+apc/shm.c#L86" ide=L86" clas1167="line"11n6mue=L167"> 167 /a>    11n6m>116763 * OpenVZ, SWsoft         cooooooo* otherwihm),+ s arts at this address with no hassles.*pc/shm.c#L86" ide=L86" clas1168="line"11n6mue=L168"> 108 /a>    11n6m>116608 * OpenVZ, SWsoft                 *n*pc/shm.c#L86" ide=L86" clas1169="line"11n6mue=L69">  69 /a>stati11n6m>11n64 ), &  70 /a>#endi11a6m>117661="+code=ns"       +code=shS_Eainer_of" clavmaegrea_struct /avmaef="m.=shm_nattch" classvm_s art /a>), &(addrref=s/a" class="sref"PAGE_SIZELDe=L164"> ;vm_pgofbef="s))"c#L150" ide=L150" cl1171="line"11a6mue=L71">  71 /a>>11714shm.c#L155" ide=L155" cl11a2="line"11a6mue=L72">  72 /a>void 11a6m>11759shm.c#L163" ide=L163" cl11a3="line"11n6mue=L73">  73 /a>{>117563 |=  |= (f_pathLTshnse" class="srefdWsoryie iner_of /a>(dWsoryc/shm.=shm_nattch" classd_insrerea>), & |=   74 /a>     11n6m>11a62f="+code=spinnnnnnninnnnnnni_lock_check" cdopmunmap_file /a>;>), &(vm_enp61="+-+coainer_of" clavmaegrea_struct /avmaef="m.=shm_nattch" classvm_s art /a>), &  75 /a>     11n6m>11762  * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas1176="line"11n6mue=L76">  76 /a>     11n6m>117663 * OpenVZ, SWsoft         cooooooo        * WeTdiscovered the sizu of the s"  segSWso, so*pc/shm.c#L86" ide=L86" clas1177="line"11n6mue=L77">  77 /a>     11n6m>117763 * OpenVZ, SWsoft         cooooooo        * break out of here and+f ll through tohthe nexfrec/shm.c#L86" ide=L86" clas1178="line"11n6mue=L78">  78 /a>     11n6m>117608 * OpenVZ, SWsoft                         * loophth"+ us4s the sizu informatrsi to s op*pc/shm.c#L86" ide=L86" clas1179="line"11n6mue=L79">  79 /a>     11n6m>11764  * OpenVZ, SWsoft+cooooooo                * searching for matching vma's.*pc/shm.c#L86" ide=L86" clas1186="line"11a6mue=L80">  80 /a>}>11864  * OpenVZ, SWsoft+cooooooo                *n*pc/shm.c#L86" ide=L86" clas1181="line"11a6mue=L81">  81 /a>>118661="+code=ns"       +code=shinit" class="srreovacie iner_of /a>(reovacref=s""0m.c#L168" ide=L168" cl1182="line"11a6mue=L82">  82 /a> spao11a6m>11866  ), &  83 /a> spao11n6m>11856311862f="+code=spinnnnnnn}.c#L168" ide=L168" cl1185="line"11n5mue=L85">  85 /a> spao11n5m>11862 ), &  86 /a>stati11n5m>11866    87 /a>{>118703  88 /a>     11n5m>118608 * OpenVZ, SWsoft I*pc/shm.c#L86" ide=L86" clas11a9="line"11n5mue=L89">  89 /a>     11n5m>11864  * OpenVZ, SWsoft+cooooooo* WeTneed look no furtherhth"n the maximum address a fragSWso*pc/shm.c#L86" ide=L86" clas1196="line"11a5mue=L90">  90 /a>>11964  * OpenVZ, SWsoft+cooooooo* could possibly have landed at. Also cast things tohlofffo to*pc/shm.c#L86" ide=L86" clas1191="line"11a5mue=L91">  91 /a>     11a5m>119661="oct"> * OpenVZ, SWsoft cooooooo* prevWsohoverflows and+make Z, parisons vs. equal-width types.*pc/shm.c#L86" ide=L86" clas1192="line"11a5mue=L92">  92 /a>     11a5m>11966   * OpenVZ, SWsoft         *n*pc/shm.c#L86" ide=L86" clas1193="line"11a5mue=L93">  93 /a>     11a5m>119563 |= (PAGE_ALIGN*p=nsinit" class="sr>izude /a> |=   94 /a>     11a5m>11962f="+code=spwhileIS_Eainer_of" clavmaegrea_struct /avmaef="si =sh" =sh S_Eainer_of" clalofffoet_ipc_ns /a>);lofffo63(vm_enp61="+-+coainer_of" claaddrie iner_of /a>(addrref=ssil&l."a" class="sref"hizude /a> |=   95 /a>     11n5m>11962 ), &  96 /a>     11n5m>11956shm.c#L147" ide=L147" cl1197="line"11a5mue=L97">  97 /a>     11a5m>11960   * OpenVZ, SWsoft I finding a matching vma now does not alterhreovac *n*pc/shm.c#L86" ide=L86" clas1198="line"11a5mue=L98">  98 /a>}>119608), &  19 /a> spao11n5u>11964 ), &(addrref=s/a" class="sref"PAGE_SIZELDe=L164"> ;vm_pgofbef="s.c#L86" ide=L86" clas12s6="line"12s6="e=L19">  19 /a> spao12s6=>120603  91 /a>     12s5m>120661="+code=ns"       +code=shinit" class="srdopmunmap_file /a>;>), &(vm_enp61="+-+coainer_of" clavmaegrea_struct /avmaef="m.=shm_nattch" classvm_s art /a>), &  92 /a>     12s5m>12066  ), &  93 /a>     12s5m>12s32f="+code=sp+cc#L146" ide=L146" cl12s4="line"12s5mue=L94">  94 /a>     12s5m>12064shm.c#L155" ide=L155" cl12s5="line"12s5mue=L95">  95 /a>     12s5m>12054shm# hhmhmct"> * OpenVZ, SWsoft I CONFIG_MMU *n*pc/shm.c#L86" ide=L86" clas12s6="line"12s5mue=L96">  96 /a>     12s5m>120663 * OpenVZ, SWsoft I under NOMMU conditions, the exact address tohbe destroyed must be*pc/shm.c#L86" ide=L86" clas12s7="line"12s5mue=L97">  97 /a>     12s5m>120763 * OpenVZ, SWsoft         *=given *n*pc/shm.c#L86" ide=L86" clas12s8="line"12s5mue=L98">  98 /a>}>120863(reovacref=s""ht-nattch" class="EINVALlock_by_ptr /a>EINVALshm.c#L168" ide=L168" cl12s9="line"12s5uue=L19">  19 /a> spao12s5u>12065 ), &(addrref=si =sh" =sh _Eainer_of" clavmaegrea_struct /avmaef="m.=shm_nattch" classvm_oes /a>), & 110 /a>    12n6m>121661="+code=ns"       init" class="srdopmunmap_file /a>;>), &(vm_enp61="+-+coainer_of" clavmaegrea_struct /avmaef="m.=shm_nattch" classvm_s art /a>), &  21 /a> spao12a6u>121661="+code=ns"       init" class="srreovacie iner_of /a>(reovacref=s""0m.c#L168" ide=L168" cl12n2="line"12n6mue=L112"> 112 /a>}>12126  113 /a>>121603 114 /a> a h12n6m>12163f="#endif.c#L86" ide=L86" clas12n5="line"12n6mue=L115"> 115 /a>>12154shm.c#L155" ide=L155" cl12n6="line"12n6mue=L116"> 116 /a>void12n6m>121663), &), & 117 /a>{>12160   118 /a>    12n6m>12n608 119 /a>#if 12n6m>12164  120 /a>    12n6m>122661="#ifdef_init" class="srCONFIG_PROC_FSie iner_of /a>(CONFIG_PROC_FS4  121 /a>#els12n6m>122661="s atic+,o__init" class="srsysvde=_hrs_pro=_hrow /a>), &ysvde=_hrs_pro=_hrowo/=ns" de=file" class="srefseqrfilude /a> |= ), &61=""+voidshm_nattch" classit /a>), & 122 /a>    12n6m>12226  123 /a>#end12n6m>12232f="+code=sp" de=file" class="srefsasid_kernecie iner_of /a>(sasid_kernecALshshm_nattch" classsehs /a>;>), & 124 /a>    12n6m>12n62f="+code=spunsigned long htit" class="srrss /a>), &;> 125 /a>}>12254shm.c#L155" ide=L155" cl12n6="line"12n6mue=L126"> 126 /a>>122663;> 127 /a> spa12n6m>122703 128 /a> spa12n6m>12n863;> 129 /a> spa12n6m>12n963 * OpenV" dinse>"%10lu"*pc/shm.c#L86" ide=L86" clas1236="line"12n6mue=L130"> 1311 spa12n6m>12n663 131 /a>stat12n6m>12n661="#def 12dinit" class="srSIZE_SPECs /a>;> * OpenV" dinse>"%21lu"*pc/shm.c#L86" ide=L86" clas1232="line"12n6mue=L132"> 132 /a>{>12n59shm#endif.c#L86" ide=L86" clas1233="line"12n6mue=L133"> 133 /a>    12n6m>123603 134 /a>>12362f="+code=spooipc/shtit" class="srleq_pdintbu/aamuspace /a>leq_pdintb*p=nsinit" class="sr> /a>), &61=""cc#L146" ide=L146" cl1235="line"12n6mue=L135"> 135 /a>    12n6m>12362  * OpenV" dinse>"%10d %10d  %4o "*pc/shmdinit" class="srSIZE_SPECs /a>;> * OpenV" dinse>" %5u %5u  "*pc/shm.c#L86" ide=L86" clas1236="line"12n6mue=L136"> 136 /a>    12n6m>12363  return (struct  * OpenV" dinse>"%5lu %5u %5u %5u %5u %10lu %10lu %10lu "*pc/shm.c#L86" ide=L86" clas1237="line"12n6mue=L137"> 137 /a>>12360  ;> * OpenV" dinse>" "*pc/shmdinit" class="srSIZE_SPECs /a>;> * OpenV" dinse>"\n"*pc/shm"cc#L146" ide=L146" cl1238="line"12n6mue=L138"> 138 /a>    12n6m>123608;> 139 /a>}>12364 ;> 140 /a>>124661="+code=ns"       +code=sh"+coainer_of" clarehs /a>;> 141 /a>stat12n6m>124661="+code=ns"       +code=sh"+coainer_of" clarehs /a>;> 142 /a>{>12466  ;> 143 /a>    12n6m>124563;> 144 /a>    12n6m>12462f="+code=spinnnnnnninnnnnnn"+coainer_of" cla>va" /a>;> 145 /a>}>12462 ;> 146 /a>>12463  return (struct ;> 147 /a>stat12n6m>12460  ;> 148 /a>    12n6m>124608;> 149 /a>{>12464 ;> 150 /a>    12n6m>125661="+code=ns"       +code=sh"+coainer_of" clarehs /a>;> 151 /a>>125661="+code=ns"       +code=sh"+coainer_of" clarehs /a>;> 152 /a>    12n6m>12566  ), & ; 153 /a>    12n6m>125563;> ; 154 /a>>12562f="}.c#L168" ide=L168" cl12n5="line"12n6mue=L155"> 155 /a>    12n6m>12559shm#endif.c#L86" ide=L86" clas12n6="line"12n6mue=L156"> 156 /a>}>125663


o/div>


The original LXR software by the c#L86" idhttp://sourceforge.net/projects/lxr">LXR Z, Sunity61="" this exefpiSWsoal versrsi by c#L86" idmailto:lxr@> 1ux.no">lxr@> 1ux.noree=n
o/div>

lxr.> 1ux.no kindly hosted by c#L86" idhttp://www.redpill-> 1pro.no">Redpill L 1pro AS61="" provider of L 1ux consulting and oefpatrsis services since 1995.
o/div>