linux/kernel/cred.c
<<
>>
Prefs
   1/* Task credentials management - see Documentation/security/credentials.txt
   2 *
   3 * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved.
   4 * Written by David Howells (dhowells@redhat.com)
   5 *
   6 * This program is free software; you can redistribute it and/or
   7 * modify it under the terms of the GNU General Public Licence
   8 * as published by the Free Software Foundation; either version
   9 * 2 of the Licence, or (at your option) any later version.
  10 */
  11#include <linux/export.h>
  12#include <linux/cred.h>
  13#include <linux/slab.h>
  14#include <linux/sched.h>
  15#include <linux/key.h>
  16#include <linux/keyctl.h>
  17#include <linux/init_task.h>
  18#include <linux/security.h>
  19#include <linux/binfmts.h>
  20#include <linux/cn_proc.h>
  21
  22#if 0
  23#define kdebug(FMT, ...) \
  24        printk("[%-5.5s%5u] "FMT"\n", current->comm, current->pid ,##__VA_ARGS__)
  25#else
  26#define kdebug(FMT, ...) \
  27        no_printk("[%-5.5s%5u] "FMT"\n", current->comm, current->pid ,##__VA_ARGS__)
  28#endif
  29
  30static struct kmem_cache *cred_jar;
  31
  32/*
  33 * The common credentials for the initial task's thread group
  34 */
  35#ifdef CONFIG_KEYS
  36static struct thread_group_cred init_tgcred = {
  37        .usage  = ATOMIC_INIT(2),
  38        .tgid   = 0,
  39        .lock   = __SPIN_LOCK_UNLOCKED(init_cred.tgcred.lock),
  40};
  41#endif
  42
  43/*
  44 * The initial credentials for the initial task
  45 */
  46struct cred init_cred = {
  47        .usage                  = ATOMIC_INIT(4),
  48#ifdef CONFIG_DEBUG_CREDENTIALS
  49        .subscribers            = ATOMIC_INIT(2),
  50        .magic                  = CRED_MAGIC,
  51#endif
  52        .uid                    = GLOBAL_ROOT_UID,
  53        .gid                    = GLOBAL_ROOT_GID,
  54        .suid                   = GLOBAL_ROOT_UID,
  55        .sgid                   = GLOBAL_ROOT_GID,
  56        .euid                   = GLOBAL_ROOT_UID,
  57        .egid                   = GLOBAL_ROOT_GID,
  58        .fsuid                  = GLOBAL_ROOT_UID,
  59        .fsgid                  = GLOBAL_ROOT_GID,
  60        .securebits             = SECUREBITS_DEFAULT,
  61        .cap_inheritable        = CAP_EMPTY_SET,
  62        .cap_permitted          = CAP_FULL_SET,
  63        .cap_effective          = CAP_FULL_SET,
  64        .cap_bset               = CAP_FULL_SET,
  65        .user                   = INIT_USER,
  66        .user_ns                = &init_user_ns,
  67        .group_info             = &init_groups,
  68#ifdef CONFIG_KEYS
  69        .tgcred                 = &init_tgcred,
  70#endif
  71};
  72
  73static inline void set_cred_subscribers(struct cred *cred, int n)
  74{
  75#ifdef CONFIG_DEBUG_CREDENTIALS
  76        atomic_set(&cred->subscribers, n);
  77#endif
  78}
  79
  80static inline int read_cred_subscribers(const struct cred *cred)
  81{
  82#ifdef CONFIG_DEBUG_CREDENTIALS
  83        return atomic_read(&cred->subscribers);
  84#else
  85        return 0;
  86#endif
  87}
  88
  89static inline void alter_cred_subscribers(const struct cred *_cred, int n)
  90{
  91#ifdef CONFIG_DEBUG_CREDENTIALS
  92        struct cred *cred = (struct cred *) _cred;
  93
  94        atomic_add(n, &cred->subscribers);
  95#endif
  96}
  97
  98/*
  99 * Dispose of the shared task group credentials
 100 */
 101#ifdef CONFIG_KEYS
 102static void release_tgcred_rcu(struct rcu_head *rcu)
 103{
 104        struct thread_group_cred *tgcred =
 105                container_of(rcu, struct thread_group_cred, rcu);
 106
 107        BUG_ON(atomic_read(&tgcred->usage) != 0);
 108
 109        key_put(tgcred->session_keyring);
 110        key_put(tgcred->process_keyring);
 111        kfree(tgcred);
 112}
 113#endif
 114
 115/*
 116 * Release a set of thread group credentials.
 117 */
 118static void release_tgcred(struct cred *cred)
 119{
 120#ifdef CONFIG_KEYS
 121        struct thread_group_cred *tgcred = cred->tgcred;
 122
 123        if (atomic_dec_and_test(&tgcred->usage))
 124                call_rcu(&tgcred->rcu, release_tgcred_rcu);
 125#endif
 126}
 127
 128/*
 129 * The RCU callback to actually dispose of a set of credentials
 130 */
 131static void put_cred_rcu(struct rcu_head *rcu)
 132{
 133        struct cred *cred = container_of(rcu, struct cred, rcu);
 134
 135        kdebug("put_cred_rcu(%p)", cred);
 136
 137#ifdef CONFIG_DEBUG_CREDENTIALS
 138        if (cred->magic != CRED_MAGIC_DEAD ||
 139            atomic_read(&cred->usage) != 0 ||
 140            read_cred_subscribers(cred) != 0)
 141                panic("CRED: put_cred_rcu() sees %p with"
 142                      " mag %x, put %p, usage %d, subscr %d\n",
 143                      cred, cred->magic, cred->put_addr,
 144                      atomic_read(&cred->usage),
 145                      read_cred_subscribers(cred));
 146#else
 147        if (atomic_read(&cred->usage) != 0)
 148                panic("CRED: put_cred_rcu() sees %p with usage %dlass="sref">CAP_FULL_SET,
  49  kernel/cred.c#L69" id="L69" classl/cred.c#L148" id="L148" red.c#L148" id=48" id="L148" red    .<"L13e=init_groups" class="sref su1bscri15                = &ma15class="sref">kmem_cache *<1ode=CRED_1MAGIC" class="sref">CRED1_MAGI1,
>148" icess_keyring" class" a>>148" icessc#L145" id="L145" class="line" name="L145"> 145uid1     1               href="+code=session_keyring" class="sref">session_keyring); classl/cred.c#L148" id="L148" red.c#L148" id=4G_KEYS 110        G_KEYS  145id" class="sref">gid1     1               href="+code=session_keyring" class="sref">session_keyring); classl/cred.c#L148" id="L148" red.c#L148" id=4requestusage),
atomiid" class="sref">suid    15a>);
 117 */
 145sgid    1              FIG_DEBUG_CREDENTIALS" class="sref">CONFIG_DEBUG_CREDENTIALS
<"+code=init_user_ns" class="sref">init_=atomic_read" class="sref">"+code=eu1id" class="sref">euid    1              cred->init_=t_groups" class="sref egid    1              ed.c#L148" id=4cess_LOBAL_ROOT_GID" claess_LOBession_keyring); classl/cred.c#L148" id="L148" red.c#L148" id=4"+code=CAP_FULL_SET" class==t_groups" class="sref fsuid   15 0);
); classl/cred.c#L148" id="L148" red.c#L148" id=4"+cof="+code=INIT_USER" class="sr=t_groups" class="sref fsgid   16ed-> 135        securebits    1      f="kernel/cred.c#L125" id="cap_inher1itable" class="sref">cap1_inhe16ed" class="sref">cred->c1ap_pe16#endif
c1ap_ef16.c#L43" id="L43" class="line" __c#L148"  - Destroy*
c1ap_bs16 *  @9" c:e="L1record nel/cred.c#L129" id="L129" class=f5" id="L155" class="line" name="L15    165" id="L115" class="line" namnel/cred.c#L129" id="L129" class=f+code=eu1_ns" class="sref">user_n1s16s="comment"> * This program isDestroy*
grou1p_inf16ass="comment"> * modify it un actually dispose of a set of crednel/cred.1c#L68" id="L68" class="l1ine" 1ame="Lclass="line" name="L__c#L148" > 135      __c#L148" /span>
 135         118static void tgcr1ed_cr1e=init_tg1cred" class="sref">init_1tgcre17ed-> 134
 135          7017CAP_FULL_SET,
  49  kernel/cred.c#L69" id="L69" classl/cred.c#L148" id="L148" red.c#L148" id=48" id="L148" red    .<"L13e=in        " mag %x>usage),
 145                      cred1 *cred, i1nt  106
 147        if (  75#i1fdef 176>);
 136
cred-> 106usage) != 0 ||
 a>                      n17             ed.c#L148" id=4cred.c#L147" id="L147" class="line" name="L147"a href="kernel/cred.c#L138" id"L138" class="line" name="L138"> 138        if (  717 0);
cred-&g"sref">tgid   = builtin_="kernedusage= builtin_="kerned a>                      (const struct 1-> 106 135        "[%-5.5s%5u] " 135        ,
 106 135        "[%-5.5s%5u] " 135      ) !l148"  href="+code=kdebug" class="sref  82#i1fdef 18ode=cred" class="sref">cred1(&usage))
                 130 */subsc1riber1);f="kernel/cred.c#L125" id="s="line" 1name="L84">  84#else1
 106 135      __c#L148" /spaf="+code=kdebug" class="sref  85      1  ret18dif
  818/a>}
/*a href="ker whensoftexLOBAL7" id="L127" class="line" name=ode=cred"1 class="sref">cred *1 * The RCU callback to actually dispose of a set of creded, i1nt nusageexLO148" "/span>
/*_>
        G>/*_>
 118ts">__SPIN_LOCK_UNtsk="+code=release_tgcred" class="lass="lin1e" name="L91">  91#i1fdef 19cu_head" class="sref">rcu_headcred = (struct  132{
1ref="+code=_cred" class=1"sref19+code=cred" class="sref">credn,1 &);
 134

/span>
{="kerne="kern} id="L135" class="line" name="Lts">__SPIN_LOCK_UNtsk="+ccurrent__SPIN_LOCK_UNtsk="+c 135      ) !l148"  hress="line" name="Lts">__SPIN_LOCK_UNtsk="+c 135        subscr1ibers19             string"">CAP_FULL_SET,
  49  kernel/cred.c#L69" id="L69"ts">__SPIN_LOCK_UNtsk="+c 135          919             cred 106usage) != 0 ||
__SPIN_LOCK_UNtsk="+c 135                              tgcred->  97
  92        struct __SPIN_LOCK_UNtsk="+c 135      ) !l148"  href="kernel/cred.c#L19" id="L119" class=="line" name="L19">  19->__SPIN_LOCK_UNtsk="+c 135      ) !l148"  hre"sref">tgid   NULL>
usagevalidate148" "n>
 145 ef="+code=curre135"> 135         135      c#L148" /span5" id="L145" class="line" name="L145"> 145rcu20+code=cred" class="sref">cred<2 );
  92        struct __SPIN_LOCK_UNtsk="+c__SPIN_LOCK_UNtsk="+ctgid   NULL> f="+code=rcu" class="sre2">rcu2/a>);
usagevalidate148" "n>
 145
 ef="+code=curre135"> 135        usage2/a>) 2= 0);
 135      c#L148" /span5" id="L145" class="line" name="L145"> 145tg2red(tg21clude <        ;
t2cred<21.c#L32" id="L32" class="line" get_G>/*_ne"  - Get another/">/*objAP_FUL 112}21.c#L43" id="L43" class="line" @">/*:e="L1an clto querynel/cred.c#L129" id="L129" class2L 1232endif
 124
/*
<   9m so   at   9y can " class="line" name="L112"> 112 * R away.  Achref>
< /*a href="ker dirAP_ly is not >CAP_EMPTa href="kernel/cred.c#L9" id="L9"2ntials.
 * modify it un href="kernel/cred.c#L9" id="L9"2ne=pid" clase_tgcred(struct 
< < href="kernel/cred.c#L9" id="L9"2 * * The RCU callback toamef on an clor/by hold>
< an clist_LOCKlto prevbacsoftfrom be>
< ulasskPTa href="kernel/cred.c#L9" id="L9"2cred.c#L120" id="L120" class="line2 name2"L120""> * The RCU callback to actually dispose of a set of cre2lass="sre2">tgcred = static inline void /*_ne" ine" class="sreget_G>/*_ne" /span>
/*_>
        G>/*_>
 118tas">__SPIN_LOCK_UNtask="+code=release_tgcred" class=2a href="+2ode=tgcred" class="sref"2tgcre22cu_head" class="sref">rcu_head<2dec_and_t2st(&  80static inline int rc2, _groups" class="sref  12sref">release_tgcred_rcu2/a>);22 href="+code=CONFIG_DEBUG_CRs="l) != ref">__SPIN_LOCK_UNs="l) != ref"/span 122#2ndif
 1222             doid="L46" class="line" name=2"L127"> 127
"CRED: put_ef="+code=currea href="kernel/cred.c#L133""sref">tgid   __G>/*_ne" ine" class="sre__G>/*_ne" /span/cred.c#L140" idtas">__SPIN_LOCK_UNtask="+co 129cred 145->inc_not_zerit_user_ns" clas 49inc_not_zerirnel/cred.(id="L92" class="line" name="L92">  92        stru5" id="L145" class="line" name="L145"> 145<48" red.c#L148" id=48" id="L148" red    .<"L13e=init_groups" class="sref put_cre2_rcu(struct cred->2a> *rcu23              href="+code=ses="l) != ulaef">__SPIN_LOCK_UNs="l) != ulaef"/spanrcu, struct <2 href23d" class="sreCONFIG_DEBUG_CREDENTIAref="+code=read_cred_subscrt_groups" class="sref , rcu23/a>);f="kernel/cred.c#L125" id=2">kdebug<2a>(2quot;2ut_cred_rcu(%p)" *#L127" id="L127" class="line" name2ss="line"2name="L137"> 137#ifd2f  * modify it un Alaefate blank>a href="kerel/cch   at   9>a href="ker can be fireed in at < href="kernel/cred.c#L9" id="L9"2>m238" id="L128" class="line" namelater dateine" out ri clof ENOMEMa href="kernel/cred.c#L9" id="L9"2omic_read2/a>(& * The RCU callback to actually dispose of a set of cre2="+code=r2ad_cred_subscribers" cla2s="sr24" id="La>static inline int pa2icrcu_head<2a>       2               132{
, cred<2ref">atom2c_read(&);
tgid   s name="L2izalaefid="L134" class= name="L2izalaef/span5" id="L145" class=el/cred.c#L30" id="L30" class="ss="line" name="LGFP_KERNEL>cred2/a>))24             credCONFIG_DEBUG_CREDENTIANULL>tgcred->panic(a href="kernel/cred.c#L119" id="L119" class="line" name="L119"> 119{
su2bscri25ed->thread_group_credtgid   szalaefid="L134" class=zalaef/spansizeof(132"> 132{
thread_group_credma251            FIG_!5" id="L145" clnew32" class="linenewbscrhread_group_cred" class="sref">thread_group_credCRED2_MAGI25ef">tgid   s name="L2icess_keyring" classs name="L2icessession_keyring); clael/cred.c#L30" id="L30" class="ss="line" name="Lnew32" class="linenewbscrot_groups" class="sref        2id" class="sref">uid2     25g">" mag %x>CONFIG_DEBUG_CREDENTIANULL>gid2     2              f="kernel/cred.c#L125" id=2eef">atom2id" class="sref">suid    25a>);
CONFIG_DEBUG_CREDENTIALS
thread_group_credsgid    25f="kernel/cred.c#L85" id="L85" class2"+code=eu2id" class="sref">euid    25dif
egid    2              ed.c#L148" id=4EDENTIALS" class="sref">CONFIG_DEBUG_CREDENTIALS
fsuid   25ing">a href="kernel/cred.c#L119" iid="L136" class="line" name="L136"> 136
fsgid   26ed->securebits    2      rnel/cred.c#L85" id="L85" class2cap_inher2itable" class="sref">cap2_inhe26ed" class="sref">cred->2ode=cap_p2ermitted" class="sref">c2ap_pe26/a>;
>148" ialaef_blankinline" class="" a>>148" ialaef_blankession_keyring);new32" class="linenewbscrss="line" name="LGFP_KERNEL>c2ap_ef26class="sref">credgotos="line" name="Lerrocred.c#L30" id="erroc href="kernel/cred.c#L19" id="Leef">atom2cap_bset" class="sref">c2ap_bs26/a>, _groups" class="sref user_n2s26dif
grou2p_inf26ass="c"line" name="Lerrocred.c#L30" id="erroc hre:a href="kernel/cred.c#L122o" class=2c#L68" id="L68" class="l2ine" 26 0);
usageaborO148" "ession_keyring);new32" class="linenewbscrtgcr2edinit_2tgcre27     f="kernel/cred.c#L125" id=2 id="L70"2 class="line" name="L70"2>  7027ed" class="sref">cred->2 de=cap_p2="L71" class="line" name2="L7127#endif
cred2 *
atom2nt   75#i2fdef 275" id="L115" class="line" namePrepare a new/span>
/*a hrrnel/cred.c#L129" id="L129" class2ass="sref2">cred-> * R shouldnn27ass="comment"> * modify it un prepare a new/copy, which t"L1"sreer/thensmol/cies and/thensodifits bynel/cred.c#L129" id="L129" class2+el/cred.2" class="line" name="L772">  7278" id="L128" class="line" name"sre>
< odifit148" "c)a href="kernel/cred.c#L9" id="L9"2.c#L78" i2d="L78" class="line" nam2e="L728mment"> * The RCU callback to href="kernel/cred.c#L9" id="L9"2.=init_tg2ribers(const struct 2 * The RCU callback toePreparation involves mak>
<   98objAP_FUL;
  82#i2fdef 28.c#L32" id="L32" class="line" RONFIGs a pointer to>  98new/c hrr-to-be "kesuchrefful, NULL otherwise. href="kernel/cred.c#L9" id="L9"2.code=cre2(&atom2bers" class="sref">subsc2riber28 *  Csre odifit148" "c)lor/aborO148" "c)lto>cle128up. href="kernel/cred.c#L9" id="L9"2.5" id="L2name="L84">  84#else2
  85      2  ret28dif
 132{
  828/a>}
d="L46" class="line" name=2.c#L87" i2d="L87" class="line" nam2e="L828 0);

/*_>
        G>/*_>
 118tas">__SPIN_LOCK_UNtask="+c id="L133" class="lring">"[%-5.5s%5u] f="kernel/cred.c#L19" id="Lode=cred"2 class="sref">cred *2  80static inline int  120#ifdef inline int   91#i2fdef 29ed" class="sref">cred->2ss="sref"2>cred = (struct 2ref="+code=_cred" class=2"sref29+code=cred" class="sref">cred<2f">n,2 &);
tgid   s name="L2ialaefid="L134" class= name="L2ialaef/span5" id="L145" class=el/cred.c#L30" id="L30" class="ss="line" name="LGFP_KERNEL>subscr2ibers29             FIG_!5" id="L145" clnew32" class="linenewbscrode=release_tgcred" class=2" id="L952" class="line" name="L952">  929             credtgcred->  97
 134
  193/a hr30ed->tgid   tas">__SPIN_LOCK_UNtask="+c);new32" class="linenewbscrss="line" name="Lol=inline" class="ol=5u] , sizeof(>#ifdef innit_groups" class="sref credrcu30              href="+code=seEDENTIALS" class="sref">CONFIG_DEBUG_CREDENTIALS
);
);new32" class="linenewbscrss> a>                      init_=t_groups" class="sref 3f="+code=rcu" class="sre3">rcu3/a>);
);new32" class="linenewbscrhread_group_cred" cl"+code=CAP_FULL_SET" class==t_groups" class="sref 3(&);new32" class="linenewbscrhread_group_cred" cl"+cof="+code=INIT_USER" class="sr=t_groups" class="sref usage3/a>) 3= 0);
_groups" class="sref (tg31a>)
 119{
tg31ed->Coey_gS"ession_keyring);new32" class="linenewbscrhread_group_cred" clG_KEYS 110        G_KEYS  145        ,
Coey_gS"ession_keyring);new32" class="linenewbscrhread_group_cred" clrequestusage),
t3cred<31              href="+code=se 49inc class="sref">CONFIG_DincG_CREDENTIALS
thread_group_cred 113}31.c#L4rnel/cred.c#L85" id="L85" class3L 13331/a>, _groups" class="sref  134
, _groups" class="sref 3" class="line" name="L113"> 1131a>);
>inline" class="" a>>5u] "sref">tgid   NULL>(struct >1prepare148" "32" class="line" a>>1prepare148" "ession_keyring);new32" class="linenewbscrss="line" name="Lol=inline" class="ol=5u] , ="line" name="LGFP_KERNEL>read_cred_subscribegotos="line" name="Lerrocred.c#L30" id="erroc href="kernel/cred.c#L19" id="3lass="sre3">tgcred = usagevalidate148" "n>
cred<3->rc3, c"line" name="Lerrocred.c#L30" id="erroc hre:a href="kernel/cred.c#L123-L114"> 13sref">release_tgcred_rcu3/a>);32 href="+code=CONFIG_DEBUG_CRaborO148" "sref">usageaborO148" "ession_keyring);new32" class="linenewbscr 123#327            CONFIG_DEBUG_CREDENTIANULL> 1232     f="kernel/cred.c#L125" id=3"L127"> 137
DEBUG_CREDENTIAEXPORT_SYMBOL> 106 129 * The RCU callback #L127" id="L127" class="line" name3">put_cre3_rcu(struct ;
;
execve()127" id="L127" class="line" name3" href="+3f="+code=rcu" class="sre3">rcu33.c#L32" id="L32" class="line" -e="L1"sreer/must hold hreadref="guard_mutex127" id="L127" class="line" name3"ec_and_t3"sref">rcu, struct <3 href33.c#L43" id="L43" class="line" actually dispose of a set of cre3a>, rcu33/a>);kernel/cred.c#L132" id="L132" class="line" name="L132"> 132{
kdebug<3a>(3quot;3ut_cred="L46" class="line" name=3, thread_grou_KEYS 118tss="sref">thread_group_credtgid   NULL> 137#ifd3f 
 132{
m33 0);
_groups" class="sref (&)
 119{
thread_group_credtgid   smalaefid="L134" class= alaef/spansizeof(132"> 132{
thread_group_credpa3ic,
thread_group_cred" mag %x>CONFIG_DEBUG_CREDENTIANULL>, atom3c_read(&, _groups" class="sref tgid   prepare148" "32" class="lineprepare148" "/spancred3/a>))3
(&cred->);ass="sref">thread_group_credpanic("CRED: put_CONFIG_DEBUG_CREDENTIAnew32" class="linenewbscrt_groups" class="sref su3bscri35ed->ma35class="sref">kmem_cache *<3ode=CRED_3MAGIC" class="sref">CRED3_MAGI35 119{
uid3     3               > * The RCU callback #L8newly
exec/*s don e" actually dispose of a set of cre3es="sref"3id" class="sref">gid3     3               href="+code=session_keyring" class="sref">session_keyring);new32" class="linenewbscrhread_group_cred" clG_KEYS 110        G_KEYS  145atom3id" class="sref">suid    35a>);
 110        G_KEYS  145"sref">tgid   NULL>sgid    35t_cred_rcu(%p)"euid    3               > * The RCU callback #L8t;egid    35ass="comment"> * modify it uuuuuuuuuR share " actually dispose of a set of cre3egt;fsuid   35 0);
);ass="sref">thread_group_credthread_group_cred#ifdef thread_grou_KEYSfsgid   36edsecurebits    36ed->CONFIG_DEBUG_CREDENTIALS
thread_group_credcap3_inhe36/a>,
Cspin ref"_ini"G_CREDENTIALS
thread_group_cred__SPIN_LOCK_UNaef"/spac3ap_pe36ode=cred" class="sref">credc3ap_ef36class="sref"> > * The RCU callback #L8inherit   9>sref>on L110"> ; new/pa href L110"> e" actually dispose of a set of cre3eef">atom3cap_bset" class="sref">c3ap_bs36a>);
Coey_gS"ession_keyring);ass="sref">thread_group_credon 110        sref>on /spathread_group_cred 110          145"sref">tgid   NULL>user_n3s36dif
grou3p_inf36             ed.c#L148" id=4ment"> _tss="sref">thread_groment"> _tss="session_keyring);new32" class="linenewbscrthread_group_credtgid   ass="sref">thread_group_credtgcr3edinit_3tgcre37class="sref">kmem_cache *<3 id="L70"3 class="line" name="L70"3>  7037cred3 *cred<3+ef">atom3nt   75#i3fdef 375" id="L115" class="line" nameCopy9c href="ker for   98new/pa href t;cred-> * R127" id="L127" class="line" name3ade=group3href="+code=n" class="sr3ef">n37ass="comment"> * modify it un We share if wL1"sn, but under somL1"ircumstanhre wL1havelto generateia new127" id="L127" class="line" name3a" class=3" class="line" name="L773">  7378" id="L128" class="line" nameEBU. href="kernel/cred.c#L9" id="L9"3.c#L78" i3d="L78" class="line" nam3e="L738mment"> * The RCU callback to href="kernel/cred.c#L9" id="L9"3.=init_tg3ribers(const struct 3 * The RCU callback toeT 98new/pa href gS"s t"L1"s%lpa hrefsubjAP_FUL;
  82#i3fdef 38.c#L32" id="L32" class="line" actually dispose of a set of cre3.code=cre3(&/*_>
        G>/*_>
 118p110        <3e=i, unsigned/lo> eef="kernel/cred=lo>e_flag"32" class="line=lo>e_flag"datom3bers" class="sref">subsc3riber38  84#else3
);
 119{
  85      3  ret387            >
thread_grou_KEYS 118tss="sref">thread_group_cred  838ass="rnel/cred.c#L85" id="L85" class3.c#L87" i3d="L87" class="line" nam3e="L838 0);

thread_gros="s hre name="L118"> 118new32" class="linenewbscrt_groups" class="sref cred *3Cre;5u] f="kernel/cred.c#L19" id="3o=init_tg3nt kmem_cache *<3lass="lin3e" name="L91">  91#i3fdef 39/a>,
kmem_cache *<3lde=cap_p3>cred = (struct  119{
3ref="+code=_cred" class=3"sref39class="sref">cred!5" id="L145" clp110        <3e=i 135         110        G_KEYS  145"DENTIDENTI 119{
atom3 &);
rnel/cred.c#L85" id="L85" class3=subscrib3ers" class="sref">subscr3ibers39             string"eef="kernel/cred=lo>e_flag"32" class="line=lo>e_flag"d 119{
  939             credoid="L46" class="line" name=3.c#L96" i3d="L96" class="line" nam3e="L939class="sref">cred-> 135      ) !l148"  hre"sref">tgid   geL148" > 135      geL148" ession_keyring);p110        <3e=i 135          97
"CRED: put_ef="+code=curregeL148" > 135      geL148" ession_keyring);p110        <3e=i 135          194/a hr40ass="sref">cred
 ef="+code=currep110        <3e=i 135        read_cred_subscribe"kernel/cred.c#L134" id="L134" class="line" name="L134"> 134
  91#i4 name40red-> 135          49  kernel/cred.c#L69" id="L69"p110        <3e=i 135        " mag %x>red->usage) != 0 ||
        <3e=i 135        rcu40class="sref">cred href="+code=prEDENTIAinc class="sref">CONFIG_DincG_CREDENTIALS
        <3e=i 135        );
subscr4cred"40 href="+code=f="kernel/cred.c#L125" id=41e="L26">4f="+code=rcu" class="sre4">rcu40dif
tgid   prepare148" "32" class="lineprepare148" "/spanusage4/a>) 4= 0);
(tg41ass="sref">credtg41clude <        ,
e_flag"32" class="line=lo>e_flag"dt4cred<41g">" mag %x>ef="kernel/credrS" class="sref">Cre;5u]  id="L133" class="l;);new32" class="linenewbscr 114}41class="sref">credFIG_ef="kernel/credrS" class="sref">Cre;5u]  <de=atomic_read" class="sref"4L 14341a>);
4" class="line" name="L114"> 1141dif
 119{
(struct  s>FIG  9ir parent alKEYSynel/cred.c#L129" id="L129" class4 * * The RCU callback ttttttttt* hYS o>ee" actually dispose of a set of cre4cred.c#L140" id="L120" class="line4 name421            FIG_"kernel/cred.c#new32" class="linenewbscrhread_group_cred" cla_KEYS 110        G_KEYS  145oid="L46" class="line" name=4lass="sre4">tgcred = ef">tgid   ssion_keyring" class="sref">session_keyring);new32" class="linenewbscrhread_group_cred" clG_KEYS 110        G_KEYS  145" mag %x>ef="kernel/crednew32" class="linenewbscrhread_group_cred" clG_KEYS 110        G_KEYS  145"sref">tgid   NULL>credFIG_ef="kernel/cred=lo>e_flag"32" class="line=lo>e_flag"d=atomic_read" class="sref"4->rc42a>);
 _to148" > 135      install_G_KEYS _to148" ession_keyring);new32" class="linenewbscr 14sref">release_tgcred_rcu4/a>);42 href="+code=f="kernel/cred.c#L125" id=4L125" cla4s="line" name="L125"> 124#4ndif
 1242             "> * The RCU callback #L8we share t"L1pa href and/sref>on L110"> s between sre ahe 147
 129 * The RCU callback ttttttttt* bite" actually dispose of a set of cre4entials
e_flag"32" class="line=lo>e_flag"d=oid="L46" class="line" name=4">put_cre4_rcu(struct ef">tgid   ass="sref">thread_group_credtgid   smalaefid="L134" class= alaef/spansizeof(132"> 132{
thread_group_credrcu43g">" mag %x>FIG_!5" id="L145" class="sref">thread_group_credrcu, struct <4 href43class="sref">credstring">ef">tgid   rS" class="sref">Cre;5u]  id-5" id="L145" clENOMEM32" class="lineENOMEM5u] f="kernel/cred.c#L19" id="4a>, rcu43a>);
kdebug<4a>(4quot;43             string"ef="kernel/cred.c#L125" id=4, ef">tgid   EDENTIALS" class="sref">CONFIG_DEBUG_CREDENTIALS
thread_group_cred 137#ifd4f cred->Cspin ref"_ini"G_CREDENTIALS
thread_group_cred__SPIN_LOCK_UNaef"/spam43ing">"CRED: put_ef="+code=curretss="sref">thread_group_cred 110          145"sref">tgid   NULL>credthread_group_credon 110        sref>on /spa"sref">tgid   sey_gS" class="sref">Coey_gS"ession_keyring);new32" class="linenewbscrhread_group_cred" clGss="sref">thread_group_credon 110        sref>on /spapa4icef">tgid   ment"> _tss="sref">thread_groment"> _tss="session_keyring);new32" class="linenewbscr" mag %x>n_keyring);new32" class="linenewbscrhread_group_cred" clGss="sref">thread_group_credtgid   ass="sref">thread_group_cred, atom4c_read(&);
rnel/cred.c#L85" id="L85" class4href="+co4e=read_cred_subscribers"4class44t_cred_rcu(%p)"cred4/a>))4
CONFIG_DincG_CREDENTIALS
        <3e=i 135        tgid   p110        <3e=i 135      ) !l148"  hre"sref">tgid   geL148" > 135      geL148" ession_keyring);new32" class="linenewbscrpanic( ef="+code=currenew32" class="linenewbscrss2su4bscri45ed->usagevalidate148" "n>
ma451            CONFIG_0t_groups" class="sref CRED4_MAGI45ed" class="sref">cred->4.>       4id" class="sref">uid4     4      ="line" name="Lerrocon_keyring" class="errocon_k5u] :a href="kernel/cred.c#L124es="sref"4id" class="sref">gid4     4               href="+code=sen_k148" > 135      n_k148" n>
atom4id" class="sref">suid    45a>);
Cre;5u] f="kernel/cred.c#L19" id="4eref="+co4id" class="sref">sgid    45t_cref="kernel/cred.c#L125" id=4"+code=eu4id" class="sref">euid    45dif
egid    45ass="comment"> * modify it crL127" id="L127" class="line" name4egt;fsuid   458" id="L128" class="line" name"difit148" " - Install8new/c href="ker"upon t"L1"s%ltask="7" id="L127" class="line" name4+code=fsg4id" class="sref">fsgid   46mment"> * The RCU callback to @new:e="L1" href="ker"to"be  RCigned="7" id="L127" class="line" name4+securebits    46L120""> * The RCU callback to="7" id="L127" class="line" name4+de=CRED_4itable" class="sref">cap4_inhe46d_jar;
  98"s%ltask, us"> eRCU to>replace="7" id="L127" class="line" name4+>       4ermitted" class="sref">c4ap_pe46.c#L32" id="L32" class="line"   98oldeEBU.  Both>  98objAP_FULsubjAP_FULc4ap_ef46.c#L43" id="L43" class="line" updated.  Thir function may not"be "sreed>FIG  9>subjAP_FULatom4cap_bset" class="sref">c4ap_bs46 *  in >;
overridref state. href="kernel/cred.c#L9" id="L9"4cref="+co455" class="line" name="L45    465" id="L115" class="line" nam href="kernel/cred.c#L9" id="L9"4c+code=eu4_ns" class="sref">user_n4s46/a> * R Thir function ea"s t"L1"sreerl/ce#37ce to>  98new/c href="ker. href="kernel/cred.c#L9" id="L9"4ctomic_re4_info" class="sref">grou4p_inf46ass="comment"> * modify it un href="kernel/cred.c#L9" id="L9"4cgt;  uslalaew"> eahir function to"be tail-"sreed>at   9>nel href="kernel/cred.c#L9" id="L9"4="+code=t4gcred" class="sref">tgcr4ed * The RCU callback to of, say, sysDEBUgidc)a href="kernel/cred.c#L9" id="L9"4e=init_tg4cred" class="sref">init_4tgcre47L120""> * The RCU callback to actually dispose of a set of cre4 id="L70"4 class="line" name="L70"4>  7047 135       oifit148" "/spans
thread_gros="s hre name="L118"> 118new32" class="linenewbscr=atomic_read" class="sref"4 de=cap_p4="L71" class="line" name4="L7147#d="L46" class="line" name=4+code=cre4d" class="sref">cred4 *
/*_>
        G>/*_>
 118tas">__SPIN_LOCK_UNtask="+c id="L133" class="lring">"[%-5.5s%5u] f="kernel/cred.c#L19" id="4+ef">atom4nt   80static inline int tgid   tas">__SPIN_LOCK_UNtask="+c 135      ) !l148"  href="kernel/cred.c#L19" id="4+ref="+co4e" name="L75">  75#i4fdef 47t_cred_rcu(%p)"cred-> 134
n_keyring);new32" class="linenewbscr        n47class="sref">cred  49  kernel/cred.c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8" id="L148" red    .<"L13e=in          747ing">"CRED: putef="+code=curre) !ode=usage" class="sref">usage) != 0 ||
__SPIN_LOCK_UNtask="+ctgid   ol=inline" class="ol=5u]   82#i4fdef 48              href="+code=seBUG_ON32" class="lineBUG_ONrnel/cred.c#L140" id) !ode=usage" class="sref">usage) != 0 ||
usagevalidate148" "n>
atom4bers" class="sref">subsc4riber48a>);
usagevalidate148" "n>
  84#else4
);
  85      4  ret48  49  kernel/cred.c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8" id="L148" red    .<"L13e=in <d1  848ss="sref">tgcred-> 135      geL148" ession_keyring);new32" class="linenewbscr * The RCU callback #L8we will cred *4 120 * The RCU callback #L8dumpability changesto actually dispose of a set of cre4oid="L70"4e" name="L91">  91#i4fdef 49/a>,

cred = (struct " mag !5" id="L145" clgid_eq="L148" red    gid_eqn>
cred!5" id="L145" cluid_eq="L148" red    .id_eqn>
atom4 &);

subscr4ibers49             stri!5" id="L145" clcap_isCcap_is);new32" class="linenewbscr  949             credref=FIG_cred.c#L140" idtas">__SPIN_LOCK_UNtask="+ccred__SPIN_LOCK_UNtask="+c  97
"CRED: put_ef="+code=curretas">__SPIN_LOCK_UNtask="+c  195/a hr50ass="sref">credread_cred_sf="kernel/cred.c#L125" id=5129" clas5=" name="L91">  91#i5 name50ed" class="sref">cred->5c1" id="L5_rcu(struct " mag"> * The RCU callback #L8" cla ahe e" actually dispose of a set of cre514" id="L5_ef="+code=_cred" class=5">rcu50class="sref">FIG_!5" id="L145" cluid_eq="L148" red    .id_eqn>
);
__SPIN_LOCK_UNtask="+csubscr5cred"50 href="+code=FIG_!5" id="L145" clgid_eq="L148" red    gid_eqn>
rcu50             credng">ef">tgid   Ley_fsgOB_changeBAL_ROOT_GID" clLey_fsgOB_changeBrnel/cred.c#L140" idtas">__SPIN_LOCK_UNtask="+ctgcred->usage5/a>) 50 0);
(tg51mment"> * The RCU callback ttttttttt* RLIMIT_NPROC lifits on " clhreadpr hrefe"1havelalKEYSy been checked="7" id="L127" class="line" name5>(tg51L120""> * The RCU callback ttttttttt* ineEBUmL+coc)a href="kernel/cred.c#L9" id="L9"5me="L111"5 111        ;
t5cred<51              href="+code=sea
 ef="+code=currenew32" class="linenewbscrss2 115}51class="sref">FIG_c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8"code=CAP_FULL_SET" class= !sref">tgid   ol=inline" class="ol=5u] hread_group_cred" cl8"code=CAP_FULL_SET" class==atomic_read" class="sref"5L 15351a>);
CONFIG_DincG_CREDENTIALS
usage)cu_aRCign_pointerrnel/cred.c#L140" idtas">__SPIN_LOCK_UNtask="+c 135      ) !l148"  hress="line" name="Lnew32" class="linenewbscr 1151usage)cu_aRCign_pointerrnel/cred.c#L140" idtas">__SPIN_LOCK_UNtask="+c 135      48"  hress="line" name="Lnew32" class="linenewbscrFIG_c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8"code=CAP_FULL_SET" class= !sref">tgid   ol=inline" class="ol=5u] hread_group_cred" cl8"code=CAP_FULL_SET" class==atomic_read" class="sref"5Le=pid" c5ase_tgcred(struct "CRED: put_ef="+code=curreONFIG_Ddec class="sref">CONFIG_DdecG_CREDENTIALS
 ef="+code=curreol=inline" class="ol=5u] , -2tgcred =  * The RCU callback #L8send notificationsto actually dispose of a set of cre5a href="+5ode=tgcred" class="sref"5tgcre52g">" magFIG_!5" id="L145" cluid_eq="L148" red    .id_eqn>
(&cred!5" id="L145" cluid_eq="L148" red    .id_eqn>
rc52a>);

release_tgcred_rcu5/a>);52             stri!5" id="L145" cluid_eq="L148" red    .id_eqn>
 125#52             credng">ef">tgid   pr h_OB_connectoode=CAP_FULL_SETpr h_OB_connectoornel/cred.c#L140" idtas">__SPIN_LOCK_UNtask="+css="line" name="LPROC_EVENT_UID119" class="linPROC_EVENT_UID hre 1252ss="sref">tgcred-> 157

 129cred

read_cred_subsc!5" id="L145" clgid_eq="L148" red    gid_eqn>

rcu53g">" mag %x>ef">tgid   pr h_OB_connectoode=CAP_FULL_SETpr h_OB_connectoornel/cred.c#L140" idtas">__SPIN_LOCK_UNtask="+css="line" name="LPROC_EVENT_GID119" class="linPROC_EVENT_GID hrercu, struct <5 href53class_groups" class="sref rcu53a>);
    98oldeobjo actually dispose of a set of cre5">kdebug<5a>(5quot;53 href="+code=CONFIG_DEBUG_CRn_k148" > 135      n_k148" n>
 135      n_k148" n>
 137#ifd5f CONFIG_0t_groups" class="sref m53ing">f="kernel/cred.c#L125" id=5omic_read5/a>(& 135       oifit148" "/spapa5ic;

,  eao"be  pplied="7" id="L127" class="line" name5ref">atom5c_read(& * ="7" id="L127" class="line" name5r>kdebug<5e=read_cred_subscribers"5class545" id="L115" class="line" nameDiscard a/span>
  8a>stion and/unaef" t"L="7" id="L127" class="line" name5r cred5/a>))54/a> * R "s%ltaska href="kernel/cred.c#L9" id="L9"5atomic_re5d(& * modify it un actually dispose of a set of cre5hgt;panic(
thread_gros="s hre name="L118"> 118new32" class="linenewbscr=atomic_read" class="sref"5ef="kerne5cribers" class="sref">su5bscri55edma55ed-> 134
n_keyring);new32" class="linenewbscr        CRED5_MAGI55  49  kernel/cred.c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8" id="L148" red    .<"L13e=in        uid5     55g">" mag %xef="+code=curre) !ode=usage" class="sref">usage) != 0 ||
gid5     55class_groups" class="sref atom5id" class="sref">suid    55a>);
a href="kernel/cred.c#L119" iDEBUG_CREDENTIALL119" class="line" nameDEBUG_CREDENTIALLdsgid    55 href="+code=CONFIG_DEBUG_CRBUG_ON32" class="lineBUG_ONrnel/cred.c#L140" id) !ode=usage" class="sref">usage) != 0 ||
euid    55dif
<egid    55             ed.c#L148" id=4BUG_ON32" class="lineBUG_ONrnel/cred.c#L140" idEDENTIA href="kern="L49">  49  kernel/cred.c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8" id="L148" red    .<"L13e=in <d1fsuid   55 0);
 135      n_k148" n>
fsgid   56mmentf="kernel/cred.c#L125" id=5+securebits    56L120""" id="L145" clEXPORT_SYMBOL>
<cap5_inhe56ed" class="sref">cred->5+>       5ermitted" class="sref">c5ap_pe56.c#L32" id="L32" class="lincrL127" id="L127" class="line" name5+s="sref"5ffective" class="sref">c5ap_ef56.c#L43" id="L43" class="line" override148" " - Override t"L1"s%lpr hrefsubjAP_FULatom5cap_bset" class="sref">c5ap_bs56 *  @new:e="L1" href="ker"to"be  RCigned="7" id="L127" class="line" name5cref="+co555" class="line" name="L55    565" id="L115" class="line" nam href="kernel/cred.c#L9" id="L9"5c+code=eu5_ns" class="sref">user_n5s56/a> * R Install8a span>
subjAP_FULgrou5p_inf56ass="comment"> * modify it unlpr href,>CONFIG"> eah98oldeEBU for later>COverf>ona href="kernel/cred.c#L9" id="L9"5cgt;tgcr5ed  80static inline int 
  80static inline int init_5tgcre57L120"d="L46" class="line" name=5 id="L70"5 class="line" name="L70"5>  7057  80static inline int tgid   lring">"[%-5.5s%5u]  135      48"  hret_groups" class="sref cred5 * 134
n_keyring);new32" class="linenewbscr        atom5nt   49  kernel/cred.c#L69" id="L69"new32" class="linenewbscrhread_group_cred" cl8" id="L148" red    .<"L13e=in          75#i5fdef 57             string"ef="+code=curre) !ode=usage" class="sref">usage) != 0 ||
cred->n57             ed.c#L148" id=4validate148" "sref">usagevalidate148" "n>
  757 0);
usagevalidate148" "n>
 135      geL148" ession_keyring);new32" class="linenewbscr ef="+code=currenew32" class="linenewbscrss1->usage)cu_aRCign_pointerrnel/cred.c#L140" idlring">"[%-5.5s%5u]  135      48"  hress="line" name="Lnew32" class="linenewbscr  82#i5fdef 58              href="+code=sea
 ef="+code=curreol=inline" class="ol=5u] , -1atom5bers" class="sref">subsc5riber58a>);
 134
n_keyring);ol=inline" class="ol=5u] ,_groups" class="sref   84#else5
  49  kernel/cred.c#L69" id="L69"ol=inline" class="ol=5u] hread_group_cred" cl8" id="L148" red    .<"L13e=in          85      5  ret58             credng"ef="+code=curre) !ode=usage" class="sref">usage) != 0 ||
  858class="sref">CONFIG_cred.c#L140" idol=inline" class="ol=5u] t_groups" class="sref f="kernel/cred.c#L125" id=5ode=cred"5 class="sref">cred *5
<  91#i5fdef 59d_jar;
cred = (struct atom5 & * ="7" id="L127" class="line" name5o5" id="L5ers" class="sref">subscr5ibers595" id="L115" class="line" nameROvert a
subjAP_FUL;
oldeEBU,="7" id="L127" class="line" name5oss="sref5" class="line" name="L955">  959/a> * R discard"> eah98override>seta href="kernel/cred.c#L9" id="L9"5.c#L96" i5d="L96" class="line" nam5e="L959ass="comment"> * modify it un actually dispose of a set of cre5name="L975">  97
usage) vert148" "n>
  80static inline int   196/a hr60edread_cred_s">  80static inline int tgid   lring">"[%-5.5s%5u]  135      48"  hret_groups" class="sref   91#i6 name60ed" class="sref">cred->6c1" id="L6_rcu(struct  134
n_keyring);ol=inline" class="ol=5u] ,_groups" class="sref rcu60class="sref">string"ef="+code=curreEDENTIA href="kern="L49">  49  kernel/cred.c#L69" id="L69"ol=inline" class="ol=5u] hread_group_cred" cl8" id="L148" red    .<"L13e=in        );
usage) != 0 ||
subscr6cred"60t_cred_rcu(%p)"rcu60usagevalidate148" "n>
usagevalidate148" "n>
) 60 0);
 ef="+code=curreol=inline" class="ol=5u] , 1tg61ed->usage)cu_aRCign_pointerrnel/cred.c#L140" idlring">"[%-5.5s%5u]  135      48"  hress="line" name="Lol=inline" class="ol=5u] tg61ed-> ef="+code=curreoverrideinline" class="override5u] , -1        -> 135      n_k148" n>
t6cred<61     f="kernel/cred.c#L125" id=6h4" id="L6s="line" name="L112"> 116}61class5" id="L145" clEXPORT_SYMBOL>usage) vert148" "n>
< 16361a>);
_groups" class="sref 7" id="L6" class="line" name="L116"> 1161/a> * R ini""kei>    98a href="ker"stuff="7" id="L127" class="line" name6>8" id="L6pan>
 * modify it un actually dispose of a set of cre6Le=pid" c6ase_tgcred(struct C__ini"G_CRatic Code=_ini"n>
 120 * The RCU callback #L8alaecate8a slab inewhich8we caf stor98a href="ker"n actually dispose of a set of cre6lass="sre6">tgcred = usageode=_jar5u] "sref">tgid   kmem_cache148"ateid="L134" class=mem_cache148"ate" name="L134"> 134
sizeofas
thread_gros="s hren        " mag %x>>>>>>>>>>>>>>>>>>>>>>0ss="line" name="LSLAB_HWCACHE_ALIGN32" class="lineSLAB_HWCACHE_ALIGN">&q|="line" name="LSLAB_PANIC32" class="lineSLAB_PANIC hress="line" name="LNULL>rc62a>);
_groups" class="sref release_tgcred_rcu6/a>);625" id="L115" class="line" n/  ="7" id="L127" class="line" name6L125" cla6s="line" name="L125"> 126#62/a> * R prepare_ass="l148"  - Prepare a/span>
 1262ass="comment"> * modify it unl@daemon: A " clommce daemon"to"be " cd asia "lie#37ce="7" id="L127" class="line" name6 e=pid" c67
 129 * The RCU callback to Prepare a/span>

 * The RCU callback to8override>altaskown8a href="ker"so that work caf be done"on behalfn>
subjAP_FULrcu63.c#L32" id="L32" class="line" href="kernel/cred.c#L9" id="L9"6"ec_and_t6"sref">rcu, struct <6 href63.c#L43" id="L43" class="line" @daemon"ir " cd tolpr vide>alb">  for   98se5s&ity record, but caf be NULLa href="kernel/cred.c#L9" id="L9"6">rcu63 *  If @daemon"ir supplied,   9n"  98se5s&ity data will be derFULd from that; href="kernel/cred.c#L9" id="L9"6"6" id="L6a>(6quot;635" id="L115" class="line" nameo  9rwi>    9y * R href="kernel/cred.c#L9" id="L9"6,8" id="L6name="L137"> 137#ifd6f  * modify it unlT"L1"sreer may change   9sLm638" id="L128" class="line" nam="7" id="L127" class="line" name6omic_read6/a>(& * The RCU callback to RONFIGs   98new/c href="ker or NULL=FIGouan>
 * The RCU callback to="7" id="L127" class="line" name6href="+co6e=panic" class="sref">pa6ic;
 e5s%, inline int  135      nrepare_ass="l148" " nam>
/*_>
        G>/*_>
 118daemon110        daemon5u] atom6c_read(&kdebug<6e=read_cred_subscribers"6class645" ida href="kernel/cred.c#L119" iKEYL119" class="line" nameKEYL>);
_groups" class="sref cred6/a>))64e6> * modif6 it un actually dispose 6f a s64ef usage) vert148" "n>
  80static 
  80static  135      c#tIid="L127" class="a hrm2wIGouan>
<5bscri55edtgcred 135       href="+code=prode=_jarsref">line6/a>ode=_jar5u] "sref">tgidline6cu_aRCign_pointersref> =  157
inline int kdebug<6e=read_cred_subscribers"6class645" ida href="kernel/cred.c#L119" iKEYL119" cass="line6ewbscr= !sr0ode=_jar5u] "sline6cu_aRe="L134!= oups,ed.c#L119" iKEYL119"lassf="kernel/cred.)ne" name="LSLAB_PGFPef=RNEC32" class="lineGFPef=RNEC_PANIC hress="line" name="LNULL>L R "s$ 55dif
<(str"sref">tgidfreode=_jar5u] "sref">tgidfre =  135      48"  hress="line" name="Lne632" class6"linenewbscrfsgid<65a>   56mmentf="kernel/c6ed.c#66ef 
<e6="sref">c6p5_inhe56ed" class="sref6>cred66ef cred5 * int 
/*_>
        G>/*_>
 118daemon11 class="l6ne" nam href="kernel/cre6.c#L966="sref"5L125" cla5s="line" name="L12ef="+code=inline" class="sref">inline id
< iKEYL119"lassf="ked
< iKEcu_aRCign_pointersrea h110        G>/*_>
ona href="kernel/cre6.c#L966="sref"5Le=pid" c5ase_tgcred(stref="+code=inline" class="sref">inline id(rcu60usagevalidate148" "n>
init65tgcre57L120"d="L46" cla6s="li67ef  1356     48"  hret_groups" c6ass="67ode=pan5o hrestatic  135      srestatic strin4ibers49          ">strin4ibcu_aRde=curreEDENTIA href="kern="L49">  49  kernel/cred.c#L69" id="L69"new32" class="linenewbscme="L89"> ef="+code=curreol=inlw32" clas6="linenewbscr        cred.c#L69" id=stg61ed->tg61code=prvalidate148"  id="L89" class="line" namernel/cred.c#L140" idnew32" c6L148" red6   .<"L13e=in        tgid   ol=inline" class="ol=5uel/cred.c#L140" idnew32" c6Lclass="l6linenewbscr=tg5_n1ed->tg5_n1code=prvalidate148"  id="L89" class="line" naclass= !sref">tgid  _n1ed->tg5_n1codeuel/cred.c#L140" idnew32" c6L R "s$"5+code57dif
->tgid->strin4ibcu_aRde=curreEDENTIA href9" iKEYL119"lassf="kernel/cred.rnel/cred.c#L69" id="L69"new32" class="linenewbscme="L89"> ef="+code=curreol=inl class="l6nenewbscrss1Cspin_>


inlinsref"_uot; mass="sref">inline iANIC32" class="lineSLAB_PANC hress="line" name="LNULL>ne" class6"ol=5u] , -1inlsef"ion_uot; mass="sref">inline iANIC32" class="lineSLAB_PANC hress="line" name="LNULL>n32" clas6e5d" cl58class_groups" c6ass="6ref atom5bers" clas id="L89" class="line" naclass= !sref">tgidtgidinline iANIC32" class="lineSLAB_PANC hress="line" name="LNULL>nclass="l6   .<"L13e=in        tgidinl9hprepauot; mass="sref">inline iANIC32" class="lineSLAB_PANC hress="line" name="LNULL>n R "s$ss="ol=5u] <tgidinljitauot; mass="sref">inline if="_REQf="_DEFL_THREADef="RINGlass="sref">inlf="_REQf="_DEFL_THREADef="RING_PANC hress="line" name="LNULL>n    .<"L6lass="ol=5u] t_groups" c6ass="6ref e6"line" na65e="L858ing">f="kernel/c6ed.c#69 of cre4ode=cred"4 class="sref6ss="overr6de148" "n>
<tgcred 135      rnel/cred.c#L69" id=se="commlass="sref">inlse="commss="sref">inline iANIC32" class="lineSLAB_PANC hress="line" name="LNULL> href="ke6nel/crL127" id="L127" cl6ss="l6ne" na h5e e6"e" class6verride127" id="L127" cl6ss="l69ef  ="L956">rcu60static  118daemon11er"to"be 6estored="7" id="L127" cl6ss="l69="sref"5L" mag %err">_PANC hress="line" name="LNULL> inline" 6nt"> * ="7" id="L127" cl6ss="l69ef ;
6ldeEBU,="7" id="L127" cl6ss="l69ef  135      n_k148" n>
seta href="kernel/cre6.c#L969ef  135      c#tIid="L127" class="a hrm7=inline" 7lass="ol=5u]   176/a hr60ed" mag %err">_PAN:re4ode=cred"4 class="sref7"219">  1765ss="s59clude <        -> 135      n_k148" n>
 116}61class5" id="L145" clEXPORT_SYMBef="+code=inline" class="sref">inline int 
cred-&7inline" c7ass="ol=5u] );625" id="L115"7e" class=7override5u]  an c6ass="63mment"> e_tgcred_rcu6/a>);625" id="L115"7ine" clas7="ol=5u] , 1(&c5ap_bs56);625" id="L115"7iL19">  17ass="ol=5u] 
  17ride5u] , -1);625" id="L115"7i  917override5u] cred = S"L11claLSMass="commeID0"> an c6ass="63mment">  callback1clasa href="kcutgcred_rcu6/a>);625" id="L115"7iinline" 76cred<61     f="kernel/c7ed.c#71id="L9"6"ec_and_t6"sref">rcu  ct <6 h not"CONFIG_hold"> e5s%) v7rt148" "n>
<716361a>);
_groups" c7ass="7ref ->
  80static  135      ne" name="LSLAB_Pu>
 118daemon17 class="l7ne" n/ ="7" id="L127" cl7ss="l7ne" naclaap_perfitthref="kernel/7a href="k7r"stuff="7" id="L127" cl7ss="l71ef rcu60static 
 * modif7 it un actually dispose 7f a s71ef Code=7ini"n>
cred *5
  91#i5fdef 59d_jar;
<7ef">threa7_gros="s hren        cred = s an c6ass="63mment"> e_tgcred_rcu6/a>);625" id="L115"7, );625" id="L115"7 href="+c76e=tgc62classf="kernel/c7ed.c#72e" name5+ef">atom5cap_bset" class=ctx" clasLSMass="commernel/toc#> e5s%rc62a>);
_groups" c7ass="7ref relclcutgcred_rcu6/a>);625" id="L115"7class="li7e" n/  ="7" id="L127" cl7ss="l7ne" name6L125" cla6s="line" namS"L11claLSMass="commeID0"> an c6ass="63mment">  callback1clasa href="kcutgcred_rcu6/a>);625" id="L115"7 a ass="l7sprvice="7" id="L127" cl7ss="l7ne" name6 8" id="L6" class="linss="commeit148" " -mme wspan"ecref="naf="ke c6ass="63mment">  ct <6 h Prepkcutgcred_rcu6/a>);625" id="L115"7  * modif7ie#37ce="7" id="L127" cl7ss="l7ne" name6 e=pid" c67
 de=prL43" modify ss="commernel/toc#>);625" id="L115"7 class="l7ne" nam="7" id="L127" cl7ss="l7ne" name6"line" na6e="L129"> 12e=serineted0by11claLSM not"CONFIG_hold"> e5s%
->
  80static  135      neode=sechar0static  118daemon17bjAP_FUL<7ontexta href="kernel/cre7.c#L97 id="Lclaap_perfitthref="kernel/7L32" clas7="line" href="kernel/cre7.c#L973ef 

inline ise="comm_se=ctx_to_se==seol=inline" clase="comm_se=ctx_to_se==s"L145" clEXPORT_SYMB="=ctxeol=inline" clase=ctx"L14me/a>static         G>/strle0"L145" clEXPORT_SYMB="=ctxeol=inline" clase=ctx"L14), de=curreEDENTIA hrefse==seol=inline" clase==s h hr48" n>
 * R href="kernel/cre7.c#L973ef 8" id="Lhref5"+code=creribers49          ribcu_asread_0re name="L118"> 118daemon17wards=FIG7esiid=" href="kernel/cre7.c#L973="sref"5Le=pid" c5aseroup5" class="line" naribers49          ribcu_a48" n>
->static 
cred *5
    7   daemon5u] atom5c_read  91#i5fdef 59d_jar;
<7p;kdebug<5e=read_cred_s an c6ass="63mment"> e_tgcred_rcu6/a>);625" id="L115"7lass="lin7" nameKEYL>);
_groups" c7ass="7ne" name5r );625" id="L115"7* R "s%ltaska href="kernel/cre7.c#L97 id="L9"5atomic_re5d(& @inSYMef="+cinSYMc#><>pa6116"> nel/toc supe_tgcred_rcu6/a>);625" id="L115"7*ards=FIG7 it un actually dispose 7f a s74id="L9"6,e=pid" c6f="+code=magic" class="s6ef">m638" id="L1287w32" clas7="linenewbscr=atomic_rea7" cla75e" name6"line" na6e="L129"> 12Ca 63ass="aLSMafile  iK eionernel/toc"> an c6ass="63mment"> mment">1clasic_gic" class="s6ef">m638" id="L1287wIGouan>
75bscri55ed
SYM, callback1cla6red">SYMs ha"kcutgcred_rcu6/a>);625" id="L115"7w32" clas7="linenewbscr        SYM not"CONFIG_hold"> e5s%->
  80static  135      nehref6=cred" class="sre">SYMrre48" > 135SYM>  80static SYMrre48" > 135SYM>  8re name="L118"> 118daemon17L    7>5     55class_groups" c7ass="75 of cre6ref">atom6c_read(&a7ameDEBUG_7REDENTIALLd 135      rnel/cred.c#L69" id=fs="Lol=inline" clasfs="Lcu_asref">inline i">SYMrre48" > 135SYM>  8rnel/cred.c#L69" id=ia="Lol=inline" clasia="Lcode48" n>
 135      rnel/cred.c#L69" id=fsg"Lol=inline" clasfsg"Lcu_asref">inline i">SYMrre48" > 135SYM>  8rnel/cred.c#L69" id=iag"Lol=inline" clasiag"Lcode48" n>
static SYMrre48" > 135SYM>  8r48" n>
cred *5
fsgid<75a>   56mmentf="kernel/c7ed.c#76ef 
<) vert148" "n>
usage) vert148" "n>
  80static ) vert148" "n>
  8re name="L118"> 118daemon173    7ef="ker127" id="L127" cl7ss="l76 of cre6ref">atom6c_read(&a7er"to"be 7RCigned="7" id="L127" cl7ss="l76ef /*_>
) vert148" "n>
  8rnel/cred.c#L69" id=magi6/a>ode=_jar5u] magi6f inline iCRED_MAGlineSLAB_HWCACHE_CRED_MAGli>  8re name="L118"> 118daemon173ss="line7ne" nam href="kernel/cre7.c#L976="sref"5L125" cla5s="roup5" class="line" naOveMrre48" > 135
ona href="kernel/cre7.c#L976="sref"5Le=pi h6h6" id="L64
         *="63mrnel/ss="comme==The RCU cs<="comm_"63mdline6_blank() o"e_tgcred_rcu6/a>);625" id="L115"7w32" clas7="linenewbscr=atomic_rea7" cla77e" name6"red.c#L16pan>
 ="L95() roup5" modn err"> not"CONFIG_hold"> e5s%init75tgcre57L120"d="L46" cla7s="li77e" name6"ass="sre6_rcu(s        *    1" clEXPORT_SYMB="retux_is_enabl/a>) vert148" "n>="retux_is_enabl/a"L145) de=cude=cu148" "sref">usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss=") claap_perfitthref="kernel/7"line" na7e5="L7157#_groups" c7ass="7ref  1(unf="+ molong)148" "sref">usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss="sread_cred.c#L69" id=PAGE_SIZElass="sref">inlPAGE_SIZE>  8re name="L118"> 118daemon17w32" clas7="linenewbscr        atom5nt" cla5s="roup5" class="line" naOveMrre48" > 135
 1(*1" clEXPORT_SYMBu>
usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss="sre=cu10xffffff00)e==8" n>
inlPOISON_FREEss="sreadread_24 |_cred.c#L69" id=POISON_FREElass="sref">inlPOISON_FREEss="sreadread_16 |_cred.c#L69" id=POISON_FREElass="sref">inlPOISON_FREEss="sreadread_8)re name="L118"> 118daemon17w R "s%"5+code57dif
 135
e732" class7"linenewbscr 135
cred *5) vert148" "n>

atom5c_readkdebug<5e=read_cred_dump in     ="63mment"> e_tgcred_rcu6/a>);625" id="L115"7nclass="l7   .<"L13e=in        usage) vert148" "n>
  80static ) vert148" "n>
  8neode=sechar0static   8n clas6="str64.c#L32" id="7nards=FIG7lass="ol=5u] t_groups" c7ass="78="sref"5Le=pid" c5aseeeeeeeeeeeeeeeeode=seCOvert148" "sref">usag    nrepare_ass="l148" " nam>
/*_>
  8re name="L118"> 118daemon17"line" na75e="L858ing">f="kernel/c7ed.c#79 of cre6 *
< :" namep" names names names\n/a>
  8n148" "sref">usage) vert148" "n>
  8oe6 *usage) vert148" "n>
  80==Tde=curreEDENTIA href"G_Ca iKEYL119"lassf="ke"G_Ca iKE h h ?r5   href="+code=prL134" id=["G_C]/a>

usage) vert148" "n>
  80==Tel/cred">/*_>
  8class= !sref">tgidinlf=aine" c h h ?r5   href="+code=prL134" id=[f=ai]/a>

usage) vert148" "n>
  80==Tel/cred">/*_>
  8class= !sref">tgid) vert148" "n>
  80?r5   href="+code=prL134" id=[eff]/a>


 * ="7" id="L127" cl7ss="l79ef 
/*_>
) vert148" "n>
  8rnel/cred.c#L69" id=magi6/a>ode=_jar5u] magi6f usage) vert148" "n>
  8rnel/cred.c#L69" id== hraddrYL119"lassf="kep hraddr"L14r48" n>
seta href="kernel/cre7.c#L979ef 
rcu60class="sref">string"ef="+code=curreEDENTIA hrefe) vert148" "n>
  8rnel/cred.c#L69" id="L69"ol=inline" class="ol=5u] hread_group_cred" cl8" id=8=inline" 8lass="ol=5u] tgid);
e) vert148" "n>
  8f="kernel/cred.c#L140" idol=8"L19">  186/a hr60ed
  1865ss="s59clude <) vert148" "n>fsup_ku6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=="Lol=inline" clas="Lcode hread_group_cred" cl8" id=8=319">  186el/crL127" id="L127" cl8>cred80ode=pan6a href="+6od class="line" nafsup_ku6L_mung/a>) vert148" "n>fsup_ku6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=e="Lol=inline" clase="Lcode hread_group_cred" cl8" id=8=419">  186erride127" id="L127" cl8ass="80ef ) vert148" "n>fsup_ku6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=s="Lol=inline" class="Lcode hread_group_cred" cl8" id=8=519">  186stored="7" id="L127" cl8ref="80ode=pan5+ef">atom5nt"class="line" nafsup_ku6L_mung/a>) vert148" "n>fsup_ku6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=fs="Lol=inline" clasfs="Lcu_af="kernel/cred.c#L140" idol=8"619">  186t"> * ="7" id="L127" cl8ass="80ef 
  186deEBU,="7" id="L127" cl8p)&qu80="sref"5L125" cla5s="line" name="L12fsup_kg6L_mung/a>) vert148" "n>fsup_kg6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=g"Lol=inline" clasg"Lcode hread_group_cred" cl8" id=8=819">  186e>seta href="kernel/cre8ass="80d.c#L125ade=gatom5nt"line" name="L12fsup_kg6L_mung/a>) vert148" "n>fsup_kg6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=eg"Lol=inline" claseg"Lcode hread_group_cred" cl8" id=8=919">  186it un actually dispose 8ass="80="sref"5Le=pid" c5ase_tgcred(strfsup_kg6L_mung/a>) vert148" "n>fsup_kg6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=sg"Lol=inline" classg"Lcode hread_group_cred" cl8" id=8ine" clas8="ol=5u] , 1(strfsup_kg6L_mung/a>) vert148" "n>fsup_kg6L_mung/a="+code=curreEDENTIA href"G_Caa>  _n1ed->  _n1f usage) vert148" "n>
  8rnel/cred.c#L69" id=fsg"Lol=inline" clasfsg"Lcu_af="kernel/cred.c#L140" idol=8iL19">  18ass="ol=5u]   18ride5u] , -1   rintaYL119"lassf="keprinta"L145" clEXPORT_SYMBf=RN_ERRYL119"lassf="kef=RN_ERRof cr5   href="+code=prL134" id=CRED:"classss="commeit1 namep\n/a>
usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss=")"kernel/cred.c#L140" idol=8i319">  18override5u]  1(unf="+ molong)148" "sref">usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss="srel/=Tel/cred">/*_>
inlPAGE_SIZE>  8 de=cude=cukernel/cred.c#L140" idol=8i419">  186cred<61     f="kernel/c8ed.c#81ef usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss="sre=cu10xffffff00)e!=8" n>
) v8rt148" "n>
<atom51" clEXPORT_SYMBPOISON_FREElass="sref">inlPOISON_FREEss="sreadread_24 |_cred.c#L69" id=POISON_FREElass="sref">inlPOISON_FREEss="sreadread_16 |_cred.c#L69" id=POISON_FREElass="sref">inlPOISON_FREEss="sreadread_8)rre name="L118"> 118daemon18e="L113">816361a>);
_groups" c8ass="81ode=pan5+ref="+co5e"e111"6 111   rintaYL119"lassf="keprinta"L145" clEXPORT_SYMBf=RN_ERRYL119"lassf="kef=RN_ERRof cr5   href="+code=prL134" id=CRED:"classss="comme{ namex,  namex}\n/a>

usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss=")[0]oe6 *  18r"stuff="7" id="L127" cl8ss="l81d.c#L125ade=gatom5nt" cla5s=(1cred.c#L69" id==>
usage) vert148" "n>
  8rnel/cred.c#L69" id=se="commlass="sref">inlse="commss=")[1])"kernel/cred.c#L140" idol=8i919">  18 it un actually dispose 8f a s81ef e8ef">Code=8ini"n>
threa8_gros="s hren        cred = report <6 cwn8in     ="63mment"> e_tgcred_rcu6/a>);625" id="L115"8,    usage) vert148" "n>
  80static ) vert148" "n>
  8neode=sechar0static   8neunf="+ mot_tg5riberslsf="k=inline" claslsf=>  8re name="L118"> 118daemon18" class="8r6f">rc62a>);
_groups" c8ass="8ref  \n/a>

usagfileol=inline" clasfile>  8net_tg5riberslsf="k=inline" claslsf=>  8r"kernel/cred.c#L140" idol=8 919">  18ie#37ce="7" id="L127" cl8ss="l829f static ) vert148" "n>
  8ne5   href="+code=prL134" id=Spe==fied/a>
usageurrc
urrc  8r"kernel/cred.c#L140" idol=8 class="l8ne" nam="7" id="L127" cl8ss="l830f inlBUG"L145r"kernel/cred.c#L140" idol=8 ass="sre8" cd to="7" id="L127" cl8ss="l8ne" na h5." class=5d="L87" class8on behalf8>
cred *5threa8ontexta href="kernel/cre8.c#L983ef L9  atom5cap_bset" clcheck116"> 63mment">  o> aninsref"  kdebug<5e=read_cred   usag    nrepare_ass="l148" " nam>
/*_>
  8oe6 * * R href="kernel/cre8.c#L983d.c#L125ade=gatom5nt" cla5s="""""""ode=sechar0static   8neunf="+ mot_tg5riberslsf="k=inline" claslsf=>  8re name="L118"> 118daemon18wards=FIG8esiid=" href="kernel/cre8.c#L983="srere6 * 1" clEXPORT_SYMBtsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  80==Tel/cred">/*_>
  8class= !sref">tgidinlf=aine" c h h) claap_perfitthref="kernel/8FIGouan>
8memory" href="kernel/cre8.c#L984ef  1" clEXPORT_SYMBunlikelmlass="sref">inlunlikelm"L145" clEXPORT_SYMBf=a=cre6class60a>);
tsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  8Ihread_2 ||laap_perfitthref="kernel/8Fn behalf8back to="7" id="L127" cl8ss="l84 of cre6lass=h5.=ini              = !sref">tgid) vert148" "n>
tsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  8Irre name="L118"> 118daemon18e=_replac8_mutex" href="kernel/cre8.c#L984ode=pan6a href="+6od         gotoe" name="LSLAB_Pin     e" nam6ed" c60       in     e" nam"L14"kernel/cred.c#L140" idol=8e32" clas8"line" actually dispose 8f a s84ef atom5nt""> 1" clEXPORT_SYMBunlikelmlass="sref">inlunlikelm"L145" clEXPORT_SYMBf=a=cre6class60a>);
tsaYL119"lassf="ketsa>  8class= !sref">tgidinlf=aine" c h h) read_1 ||laap_perfitthref="kernel/8F class="86+code64tgid);
tsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  8Ihread_1 ||laap_perfitthref="kernel/8Fies and/8" nameKEYL>);
_groups" c8ass="84="sref"5L125" cla5s="""""n5o      = !sref">tgid) vert148" "n>
tsaYL119"lassf="ketsa>  8class= !sref">tgidinlf=aine" c h h) ||laap_perfitthref="kernel/8Fs="comme8;ltaska href="kernel/cre8.c#L984d.c#L125ade=gatom5nt" cla5s=""""""= !sref">tgid) vert148" "n>
tsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  8Irre name="L118"> 118daemon18eards=FIG8 it un actually dispose 8f a s84="sref"5Le=pid" c5aseeeeeeeeegotoe" name="LSLAB_Pin     e" nam6ed" c60       in     e" nam"L14"kernel/cred.c#L140" idol=8w32" clas8="linenewbscr=atomic_rea8" cla850f 
85bscri55ed \n/a>
    8>5     55class_groups" c8ass="85ef atom5bers" clasprintaYL119"lassf="keprinta"L145" clEXPORT_SYMBf=RN_ERRYL119"lassf="kef=RN_ERRof cr5   href="+code=prL134" id=CRED:"At" names: nameu\n/a>
usagfileol=inline" clasfile>  8net_tg5riberslsf="k=inline" claslsf=>  8r"kernel/cred.c#L140" idol=8L class="8REDENTIALLdstatic tgidinlf=aine" c h hne5   href="+code=prL134" id=R=ai/a>
usagtsaYL119"lassf="ketsa>  8r"kernel/cred.c#L140" idol=8Ls="comme8 55dif
<  8class= !sref">tgid) vert148" "n>
  80!ref">inline itsaYL119"lassf="ketsa>  8class= !sref">tgidinlf=aine" c h h)kernel/cred.c#L140" idol=8Lards=FIG83e=in <d1(strdump_in     e" nam6ed" c60       dump_in     e" nam"L145/a>static tgid) vert148" "n>
  8ne5   href="+code=prL134" id=Effref="k/a>
usagtsaYL119"lassf="ketsa>  8r"kernel/cred.c#L140" idol=832" class8"linenewbscr
85a>   56mmentf="kernel/c8ed.c#86ef 

<  BUGlass="sref">inlBUG"L145r"kernel/cred.c#L140" idol=8i148" red8p5_inhe56ed" class="sref8>cred86ef cred *5    8ef="ker127" id="L127" cl8ss="l86 of ckernel/cred.c#L140" idol=8i class="8RCigned="7" id="L127" cl8ss="l86e" name5r>kdebug<5e=read_crL9  (&   usag    nrepare_ass="l148" " nam>
/*_>
  8)kernel/cred.c#L140" idol=8class="li8e" nam actually dispose 8f a s87 of cre6 *kdebugYL119"lassf="kekdebug"L145"   href="+code=prL134" id=      ed.c#L14_for_do_exit( namepLname=p{name="Lname="})/a>
init85tgcre57L120"d="L46" cla8s="li87 of cre6lass=h5.=init_tg5riberstsaYL119"lassf="ketsa>  8class= !sref">tgidinlf=aine" c h hne5a>static tgid) vert148" "n>
  8ne6 *tgidrcu60class="sref">string"ef="+code=curreEDENTIA hreftsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  8rnel/cred.c#L69" id="L69"ol=inline" class="ol=5u] hread_group_cred" cl8" id=8"line" na8e5="L7157#_groups" c8ass="8ref tgid);
tsaYL119"lassf="ketsa>  8class= !sref">tgid) vert148" "n>
  8Ir"kernel/cred.c#L140" idol=8w32" clas8="linenewbscr        /*_>
  8o="+co5id" class=__FILE__6ed" c60       __FILE__>  8o="+co5id" class=__LINE__6ed" c60       __LINE__"L14r"kernel/cred.c#L140" idol=8Lss="line8linenewbscr=
="+coriginai=LXR software0by11claclas6="sthttp://sourceforge.net/prohrefs/lxr">LXR 4
lxr@retux.noss=".
lxr.retux.no kindly hosted0by1clas6="sthttp://www.2" pill-retpro.no">R" pill Letpro ASss=",1providercwn8Letux"ode=ultprL4and oper nions serviref since 1995.