linux/net/core/netprio_cgroup.c
<<
" 2 /spaon> /formn> a " 2 href="../linux+v3.7.5/net/core/netprio_cgroup.c">" 2 img src="../.static/gfx/right.png" alt=">>">" /spaon>" spao class="lxr_search">" 2 " 2 input type="hidden" name="navtarget" 2 e="">" 2 input type="text" name="search" id="search">" 2 buttiontype="submit">Search /formn> /spaon>" spao class="lxr_prefs"n> a href="+prefs?return=net/core/netprio_cgroup.c"" 2 onclick="return ajax_prefs();">" 2 Prefs> /a>" /spaon>2 /divn>2 form acptio="ajax+*" method="post" onsubmit="return false;">" input type="hidden" name="ajax_lookup" id="ajax_lookup" 2 e="">"2 /formn>"2 div class="headingbottim">2 2 div id="search_results" class="search_results"> n>2 /divn> div id="content">> div id="file_contents"n
   1 /a> spao class="comment">/* /spaon>   2 /a> spao class="comment"> * net/core/netprio_cgroup.c2 
 Priority Control Group /spaon>   3 /a> spao class="comment"> * /spaon>   4 /a> spao class="comment"> *              This program is free software; you cao redistribute it and/or /spaon>   5 /a> spao class="comment"> *              modify it under the terms of the GNU General Public License /spaon>   6 /a> spao class="comment"> *              as published by the Free Software Foundaptio; either verstio /spaon>   7 /a> spao class="comment"> *              2 of the License, or (at your /optio) any later verstio. /spaon>   8 /a> spao class="comment"> * /spaon>   9 /a> spao class="comment"> * Authors:     Neil Hormao <nhormao@tuxdriver.com> /spaon>  n>
 a> spao class="comment"> */ /spaon>  11 /a>>  12 /a>#define  a href="+code=pr_fmt" class="sref">pr_fmt /a>( a href="+code=fmt" class="sref">fmt /a>)  a href="+code=KBUILD_MODNAME" class="sref">KBUILD_MODNAME /a>  spao class="string">": " /spaon  a href="+code=fmt" class="sref">fmt /a>>  13 /a>>  14 /a>#include <linux/module.h /a>>>  15 /a>#include <linux/slab.h /a>>>  16 /a>#include <linux/types.h /a>>>  17 /a>#include <linux/string.h /a>>>  18 /a>#include <linux/errno.h /a>>>  19 /a>#include <linux/skbuff.h /a>>>  20 /a>#include <linux/cgroup.h /a>>>  21 /a>#include <linux/rcupdape.h /a>>>  22 /a>#include <linux/atimic.h /a>>>  23 /a>#include <net/rtnetlink.h /a>>>  24 /a>#include <net/pkt_cls.h /a>>>  25 /a>#include <net/sock.h /a>>>  26 /a>#include <net/netprio_cgroup.h /a>>>  27 /a>>  28 /a>#include <linux/fdtable.h /a>>>  29 /a>>  30 /a>#define  a href="+code=PRIOIDX_SZ" class="sref">PRIOIDX_SZ /a> 128>  31 /a>>  32 /a>static unsigned long  a href="+code=prioidx_map" class="sref">prioidx_map /a>[ a href="+code=PRIOIDX_SZ" class="sref">PRIOIDX_SZ /a>];>  33 /a>static  a href="+code=DEFINE_SPINLOCK" class="sref">DEFINE_SPINLOCK /a>( a href="+code=prioidx_map_lock" class="sref">prioidx_map_lock /a>);>  34 /a>static  a href="+code=atimic_t" class="sref">atimic_t /a>  a href="+code=max_prioidx" class="sref">max_prioidx /a> =  a href="+code=ATOMIC_INIT" class="sref">ATOMIC_INIT /a>(0);>  35 /a>>  36 /a>static  a href="+code=inline" class="sref">inline /a> struct  a href="+code=cgroup_netprio_state" class="sref">cgroup_netprio_state /a> * a href="+code=cgrp_netprio_state" class="sref">cgrp_netprio_state /a>(struct  a href="+code=cgroup" class="sref">cgroup /a> * a href="+code=cgrp" class="sref">cgrp /a>)>  37 /a>{>  38 /a>        return  a href="+code=container_of" class="sref">container_of /a>( a href="+code=cgroup_subsys_state" class="sref">cgroup_subsys_state /a>( a href="+code=cgrp" class="sref">cgrp /a>,  a href="+code=net_prio_subsys_id" class="sref">net_prio_subsys_id /a>),>  39 /a>                            struct  a href="+code=cgroup_netprio_state" class="sref">cgroup_netprio_state /a>,  a href="+code=css" class="sref">css /a>);>  40 /a>}>  41 /a>>  42 /a>static int  a href="+code=get_prioidx" class="sref">get_prioidx /a>( a href="+code=u32" class="sref">u32 /a> * a href="+code=prio" class="sref">prio /a>)>  43 /a>{>  44 /a>        unsigned long  a href="+code=flags" class="sref">flags /a>;>  45 /a>         a href="+code=u32" class="sref">u32 /a>  a href="+code=prioidx" class="sref">prioidx /a>;>  46 /a>>  47 /a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave /a>(& a href="+code=prioidx_map_lock" class="sref">prioidx_map_lock /a>,  a href="+code=flags" class="sref">flags /a>);>  48 /a>         a href="+code=prioidx" class="sref">prioidx /a> =  a href="+code=find_first_zero_bit" class="sref">find_first_zero_bit /a>( a href="+code=prioidx_map" class="sref">prioidx_map /a>, sizeof(unsigned long) *  a href="+code=PRIOIDX_SZ" class="sref">PRIOIDX_SZ /a>);>  49 /a>        if ( a href="+code=prioidx" class="sref">prioidx /a> == sizeof(unsigned long) *  a href="+code=PRIOIDX_SZ" class="sref">PRIOIDX_SZ /a>) {>  50 /a>                 a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore /a>(& a href="+code=prioidx_map_lock" class="sref">prioidx_map_lock /a>,  a href="+code=flags" class="sref">flags /a>);>  51 /a>                return - a href="+code=ENOSPC" class="sref">ENOSPC /a>;>  52 /a>        }>  53 /a>         a href="+code=set_bit" class="sref">set_bit /a>( a href="+code=prioidx" class="sref">prioidx /a>,  a href="+code=prioidx_map" class="sref">prioidx_map /a>);>  54 /a>        if ( a href="+code=atimic_read" class="sref">atimic_read /a>(& a href="+code=max_prioidx" class="sref">max_prioidx /a>) <  a href="+code=prioidx" class="sref">prioidx /a>)>  55 /a>                 a href="+code=atimic_set" class="sref">atimic_set /a>(& a href="+code=max_prioidx" class="sref">max_prioidx /a>,  a href="+code=prioidx" class="sref">prioidx /a>);>  56 /a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore /a>(& a href="+code=prioidx_map_lock" class="sref">prioidx_map_lock /a>,  a href="+code=flags" class="sref">flags /a>);>  57 /a>        * a href="+code=prio" class="sref">prio /a> =  a href="+code=prioidx" class="sref">prioidx /a>;>  58 /a>        return 0;>  59 /a>}>  60 /a>>  61 /a>static void  a href="+code=put_prioidx" class="sref">put_prioidx /a>( a href="+code=u32" class="sref">u32 /a>  a href="+code=idx" class="sref">idx /a>)>  62 /a>{>  63 /a>        unsigned long  a href="+code=flags" class="sref">flags /a>;>  64 /a>>  65 /a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave /a>(& a href="+code=prioidx_map_lock" class="sref">prioidx_map_lock /a>,  a href="+code=flags" class="sref">flags /a>);>  66 /a>         a href="+code=clear_bit" class="sref">clear_bit /a>( a href="+code=idx" class="sref">idx /a>,  a href="+code=prioidx_map" class="sref">prioidx_map /a>);>  67 /a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore /a>(& a href="+code=prioidx_map_lock" class="sref">prioidx_map_lock /a>,  a href="+code=flags" class="sref">flags /a>);>  68 /a>}>  69 /a>>  70 /a>static int  a href="+code=extend_netdev_table" class="sref">extend_netdev_table /a>(struct  a href="+code=net_device" class="sref">net_device /a> * a href="+code=dev" class="sref">dev /a>,  a href="+code=u32" class="sref">u32 /a>  a href="+code=new_len" class="sref">new_len /a>)>  71 /a>{>  72 /a>         a href="+code=size_t" class="sref">size_t /a>  a href="+code=new_size" class="sref">new_size /a> = sizeof(struct  a href="+code=netprio_map" class="sref">netprio_map /a>) +>  73 /a>                           ((sizeof( a href="+code=u32" class="sref">u32 /a>) *  a href="+code=new_len" class="sref">new_len /a>));>  74 /a>        struct  a href="+code=netprio_map" class="sref">netprio_map /a> * a href="+code=new_priomap" class="sref">new_priomap /a> =  a href="+code=kzalloc" class="sref">kzalloc /a>( a href="+code=new_size" class="sref">new_size /a>,  a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL /a>);>  75 /a>        struct  a href="+code=netprio_map" class="sref">netprio_map /a> * a href="+code=old_priomap" class="sref">old_priomap /a>;>  76 /a>>  77 /a>         a href="+code=old_priomap" class="sref">old_priomap /a>  =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+code=priomap" class="sref">priomap /a>);>  78 /a>>  79 /a>        if (! a href="+code=new_priomap" class="sref">new_priomap /a>) {>  80 /a>                 a href="+code=pr_warn" class="sref">pr_warn /a>( spao class="string">"Unable to alloc new priomap!\n" /spaon);>  81 /a>                return - a href="+code=ENOMEM" class="sref">ENOMEM /a>;>  82 /a>        }>  83 /a>>  84 /a>        if ( a href="+code=old_priomap" class="sref">old_priomap /a>)>  85 /a>                 a href="+code=memcpy" class="sref">memcpy /a>( a href="+code=new_priomap" class="sref">new_priomap /a>-> a href="+code=priomap" class="sref">priomap /a>,  a href="+code=old_priomap" class="sref">old_priomap /a>-> a href="+code=priomap" class="sref">priomap /a>,>  86 /a>                        a href="+code=old_priomap" class="sref">old_priomap /a>-> a href="+code=priomap_len" class="sref">priomap_len /a> *>  87 /a>                       sizeof( a href="+code=old_priomap" class="sref">old_priomap /a>-> a href="+code=priomap" class="sref">priomap /a>[0]));>  88 /a>>  89 /a>         a href="+code=new_priomap" class="sref">new_priomap /a>-> a href="+code=priomap_len" class="sref">priomap_len /a> =  a href="+code=new_len" class="sref">new_len /a>;>  90 /a>>  91 /a>         a href="+code=rcu_assign_pointer" class="sref">rcu_assign_pointer /a>( a href="+code=dev" class="sref">dev /a>-> a href="+code=priomap" class="sref">priomap /a>,  a href="+code=new_priomap" class="sref">new_priomap /a>);>  92 /a>        if ( a href="+code=old_priomap" class="sref">old_priomap /a>)>  93 /a>                 a href="+code=kfree_rcu" class="sref">kfree_rcu /a>( a href="+code=old_priomap" class="sref">old_priomap /a>,  a href="+code=rcu" class="sref">rcu /a>);>  94 /a>        return 0;>  95 /a>}>  96 /a>>  97 /a>static int  a href="+code=write_updape_netdev_table" class="sref">write_updape_netdev_table /a>(struct  a href="+code=net_device" class="sref">net_device /a> * a href="+code=dev" class="sref">dev /a>)>  98 /a>{>  99 /a>        int  a href="+code=ret" class="sref">ret /a> = 0;> 100 /a>         a href="+code=u32" class="sref">u32 /a>  a href="+code=max_len" class="sref">max_len /a>;> 101 /a>        struct  a href="+code=netprio_map" class="sref">netprio_map /a> * a href="+code=map" class="sref">map /a>;> 102 /a>> 103 /a>         a href="+code=max_len" class="sref">max_len /a> =  a href="+code=atimic_read" class="sref">atimic_read /a>(& a href="+code=max_prioidx" class="sref">max_prioidx /a>) + 1;> 104 /a>         a href="+code=map" class="sref">map /a> =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+code=priomap" class="sref">priomap /a>);> 105 /a>        if (! a href="+code=map" class="sref">map /a> ||  a href="+code=map" class="sref">map /a>-> a href="+code=priomap_len" class="sref">priomap_len /a> <  a href="+code=max_len" class="sref">max_len /a>)> 106 /a>                 a href="+code=ret" class="sref">ret /a> =  a href="+code=extend_netdev_table" class="sref">extend_netdev_table /a>( a href="+code=dev" class="sref">dev /a>,  a href="+code=max_len" class="sref">max_len /a>);> 107 /a>> 108 /a>        return  a href="+code=ret" class="sref">ret /a>;> 109 /a>}> 110 /a>> 111 /a>static struct  a href="+code=cgroup_subsys_state" class="sref">cgroup_subsys_state /a> * a href="+code=cgrp_create" class="sref">cgrp_create /a>(struct  a href="+code=cgroup" class="sref">cgroup /a> * a href="+code=cgrp" class="sref">cgrp /a>)> 112 /a>{> 113 /a>        struct  a href="+code=cgroup_netprio_state" class="sref">cgroup_netprio_state /a> * a href="+code=cs" class="sref">cs /a>;> 114 /a>        int  a href="+code=ret" class="sref">ret /a> = - a href="+code=EINVAL" class="sref">EINVAL /a>;> 115 /a>> 116 /a>         a href="+code=cs" class="sref">cs /a> =  a href="+code=kzalloc" class="sref">kzalloc /a>(sizeof(* a href="+code=cs" class="sref">cs /a>),  a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL /a>);> 117 /a>        if (! a href="+code=cs" class="sref">cs /a>)> 118 /a>                return  a href="+code=ERR_PTR" class="sref">ERR_PTR /a>(- a href="+code=ENOMEM" class="sref">ENOMEM /a>);> 119 /a>> 120 /a>        if ( a href="+code=cgrp" class="sref">cgrp /a>-> a href="+code=parent" class="sref">parent /a> &&  a href="+code=cgrp_netprio_state" class="sref">cgrp_netprio_state /a>( a href="+code=cgrp" class="sref">cgrp /a>-> a href="+code=parent" class="sref">parent /a>)-> a href="+code=prioidx" class="sref">prioidx /a>)> 121 /a>                goto  a href="+code=out" class="sref">out /a>;> 122 /a>> 123 /a>         a href="+code=ret" class="sref">ret /a> =  a href="+code=get_prioidx" class="sref">get_prioidx /a>(& a href="+code=cs" class="sref">cs /a>-> a href="+code=prioidx" class="sref">prioidx /a>);> 124 /a>        if ( a href="+code=ret" class="sref">ret /a> < 0) {> 125 /a>                 a href="+code=pr_warn" class="sref">pr_warn /a>( spao class="string">"No space in priority index array\n" /spaon);> 126 /a>                goto  a href="+code=out" class="sref">out /a>;> 127 /a>        }> 128 /a>> 129 /a>        return & a href="+code=cs" class="sref">cs /a>-> a href="+code=css" class="sref">css /a>;> 130 /a> a href="+code=out" class="sref">out /a>:> 131 /a>         a href="+code=kfree" class="sref">kfree /a>( a href="+code=cs" class="sref">cs /a>);> 132 /a>        return  a href="+code=ERR_PTR" class="sref">ERR_PTR /a>( a href="+code=ret" class="sref">ret /a>);> 133 /a>}> 134 /a>> 135 /a>static void  a href="+code=cgrp_destroy" class="sref">cgrp_destroy /a>(struct  a href="+code=cgroup" class="sref">cgroup /a> * a href="+code=cgrp" class="sref">cgrp /a>)> 136 /a>{> 137 /a>        struct  a href="+code=cgroup_netprio_state" class="sref">cgroup_netprio_state /a> * a href="+code=cs" class="sref">cs /a>;> 138 /a>        struct  a href="+code=net_device" class="sref">net_device /a> * a href="+code=dev" class="sref">dev /a>;> 139 /a>        struct  a href="+code=netprio_map" class="sref">netprio_map /a> * a href="+code=map" class="sref">map /a>;> 140 /a>>net/pkt_cls.h /a>>> 131 /a="sref">cgroup_netprio_state /a>,  a href=out /a>;> 137AL41" clas1s="line" name="L41">  411 /a>>14 href="net/core/netprio_cgromap" " class="sref">spinmap" " cl /a="t /a>;> 137AL="+code=rprio" class="sref">prio 1/a>)>14ef="net/core/netprio_cgroup.for_eachs="srefass="sref">spinfor_eachs="sreflass="sref">ret /a> =  a inits="sass="sref">spininits="s class="sref">extend_ct  a href="+code=net_deviL124"> 124 /a>        if ( a href="+code43" class1="line" name="L43">  43 1/a>{>1a href="net/coet/core/netprio_cgroup.c#L104" id="L104" class="line" name="L104"> 104 /a>         a href="+code=map" class="sref">map /a> =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+code"+code=fl1ags" class="sref">flags 1/a>;>14ef="net/core/netprio_netprio_cgroup.c#L1c#L104" id="L104" class="l class="sref">cgrp /a>->ref="+code=get_prioidx" class="sref">get_prioidx /a>(& a href="+code=cssref">map /a>-> a hr        if (! a href="+code=map" class="sref">map /a> ||  a href="+code=map" class="group" class="sref">cgroup /a> * a hrefde=prioid1x" class="sref">prioidx 1/a>;>14 href="net/core/netprio_cgro>map /a>-> a hr        if (! a href="+code=map" class="sref">map ce /a>( a href="+code=dev"tic unsigned lon;ref="+code=get_prioidx" class="sref">get_prioidx /a>(& a href="+code=cs]e" name="L99">  99 /a>        int  a href="L46" clas1s="line" name="L46">  461 /a>>14ef="net/core/netprio_cgroup.c#L127" id="L127" class=+code=fla1gs" class="sref">flags /1a>);>1a href="net/core/netprio_cgromap" >  67  a href="+code=map" >  67  /a="t /a>;> 137ALf="+code=lass="sref">PRIOIDX_SZ /1a>);>14 href="net/core/netprio_cgro#L61" id="L61" class="line" name="L61">  61 /a>static voihref="+code=get_prioidx" class="sref">get_prioidx /a>(& a href="+code=cs" class="sref">cs /a>-> a href="+codeDX_SZ" cl1ass="sref">PRIOIDX_SZ /a1>) {>15ef="net/core/netprio_cgroup.c#L131" id="L131" class="line" name="L131"> 131 /a>         a href="+code=kfree" class="sref">kfree /a>( a h+code=fla1gs" class="sref">flags /1a>);>1a hrefnetprio_cgroup.c#L127" id="L127" class=code=ENOS1PC" class="sref">ENOSPC 1/a>;>15ef="net/core/netprio_cgroup.c#L122" id="L12s="line" 1name="L52">  52 /a>     1   }>15 href="net/core/netprio_cgruags" class=L100" ca href/netprio_cgroup.c#ad1" id="L61" class="linec#ad1" id="L 135 /a>static void  a href="+code=cgrp_destroy" class="sref">cgrp_destroy /a>(struct  a href="+code=c,/netprio_cgroup.c#L137" f">  struct  a href="f">  ="sref">cgrp_destroy /f" id="L66" class=ftss="group" class="sref">cgroup /a> * a hrefx_map" cl1ass="sref">prioidx_map /1a>);>1a href124"> 124 /a>        if ( a href="+codede=prioid1x" class="sref">prioidx 1/a>)>1a href="net/conetprio="L73" class="linags" class=L100" ca href)/pkt_cls.h /a>>> 131 /a="sref">cgroup_netprio_state /a>,  a href=out" class="sref">get_prioidx /a>(& a href="+code=cscode=kfree" class="sref">kfree /a>( a h+e=prioid1" class="sref">prioidx /1a>);>1a hrefnetprio_cgroup.c#L127" id="L127" class=c46" clas1gs" class="sref">flags /1a>);>15ef="net/core/netprio_cgroup.c#L107" id="L10de=prioid1x" class="sref">prioidx 1/a>;>1a href="net/core/netprio_cgroup.c#ad1" idap ce /a>( a href=c#ad1" idap  135 /a>static void  a href="+code=cgrp_destroy" class="sref">cgrp_destroy /oate /a>( a href="/oatde=c,/netprio_cgroup.c#L137" f">  struct  a href="f">  ="sref">cgrp_destroy /f" id="L66" class=ftss="sref">old_priomap /a>-> a href="+co1 name="L518">  58 /a>        retur1n 0;>15 href="net/core/netprio_cgrounetprio_cgroup.c#L137" id="L1ap" cbne" name="L137"> 137 /ap" cb="sref">cgrp_destroy /bne" name="L137">bss="group" class="sref">cgroup /a> * a href59" class1="line" name="L59">  59 1/a>}>1a href124"> 124 /a>        if ( a href="+codeL60" clas1s="line" name="L60">  601 /a>>16ef="net/core/netprio_cgroup.c#L101" id="L138" class="line" name="L138"> 138 /a>        struct  a href="+code=net_device" class="sref">net_device /a> * a hrref="+cod1e=idx" class="sref">idx 1/a>)>16 href="net/core/netprio_cgroup.c#L45" id="L45" class="line" name="L45">  45 /a>         a href="+code=net/pkt_cls.h /a>>> 131 /a="sref">cgroup_netoate /a>( a href="/oatde=ct" class="sref">get_prioidx /a>(& a href="+code=cscode=kfree" class="sref">kfree /a>( a h62" class1="line" name="L62">  62 1/a>{>16ef="net/core/netprio_cgroup.up.c#L45" id="L45" class="line" name="L45">  warn/a>(& a href="+warne=cscode=kfree" class="sref">kfree /a>( a h6_map" cl1ags" class="sref">flags 1/a>;>16 href="net/core/netprio_cgroup.c#L74" id="L74" class="line" name="L74">  74 /a>        struct  a href="+code=netprio_map" class="sref">netprio_map /a> * a hrL64" clas1s="line" name="L64">  641 /a>>16ef="net/core/netprio_cgroup.c#L115" id="L11+code=fla1gs" class="sref">flags /1a>);>1a href="net/core/netprio_cgroame=c#ad1 67  a href="+code=mme=c#ad1 67  /a="t /a>;> 137Ax_map" cl1ass="sref">prioidx_map /1a>);>1a href="net/core/netprio_cgrofor_eachs="sref"L93" class="line" for_eachs="sref"L93lass="sref">ret /a> =  a inits="sass="sref">spininits="s class="sref">extend_ct  a href="+code=net_deviL124"> 124 /a>        if ( a href="+code+code=fla1gs" class="sref">flags /1a>);>16ef="net/core/netprio_netprio_cgroup.c#L104" id="L104" class="line" name="L104"> me=/a>         a href="+code=mme=/a>        ">map /a> =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+code68" class1="line" name="L68">  68 1/a>}>16 href="net/core/netprline" name="L45">  warn/a>(& a href="+warne=cslinprio_cgroup.c#L1c#L104" id="L104" class="l class="sref">cgrp /a>->rioidx /a>(& a href="+code=cssref">map /a>-> a hr        if (! a href="+code=map" class="sref">map /a> ||  a href="+code=map" class="g ?>map /a>-> a hr        if (! a href="+code=map" class="sref">map ce /a>( a href="+code=dev"tic unsigned lonrioidx /a>(& a href="+code=cs]e: name="L99">  99 /a>        int  a href="L69" clas1s="line" name="L69">  691 /a>>17 href="net/core/netprio_cgroup.c#L80/bne" name="L137">bss="code=map" class="srefill" class="line" fill /a="sref">cgroup_netbne" name="L137">bss="ss="sref">extend_ct  a href="+code=net_devcode=map" class="sre9">  class="line" na"> ss="ss="sref">extend_">  warn/a>(& a href="+warne=cs class="sref">dev /a>-> a href="+codede=new_le1n" class="sref">new_len 1/a>)>17ef="net/core/netprio_cgroup.c#L127" id="L127" class=71" class1="line" name="L71">  71 1/a>{>1a href="net/core/netprio_cgromme=c#ad1>  67  a href="+code=mme=c#ad1>  67  /a="t /a>;> 137A_map" cla1ss="sref">netprio_map /a1>) +>1a href="net/core/netprio_cgroup.c#L94" id="L94" class="line"1=new_len"1 class="sref">new_len /a1>));>1a hrefnetprio_cgroup.c#L127" id="L127" class=764" clas1lass="sref">GFP_KERNEL /1a>);>17ef="net/core/netprio_cgroup.c#L115" id="L11riomap" c1lass="sref">old_priomap 1/a>;>17 href="net/core/netprio_cgroup.c#L97"f">map ce /a>( a href=c#L97"f">map  135 /a>static void  a href="+code=cgrp_destroy" class="sref">cgrp_destroy /a>(struct  a href="+code=c,/netprio_cgroup.c#L137" f">  struct  a href="f">  ="sref">cgrp_destroy /f" id="L66" class=ftss="sref">old_priomap /a>-> a href="+co17" class="ffref">linux/types.h /a>&g>);>17 href="net/core/netprio_cgro  /oast charef">cgrp_destroy  19 1" class="line" n 19 1"ss="group" class="sref">cgroup /a> * a hrefe=priomap1" class="sref">priomap /1a>);>17 href="net/core/netprio_cgroup.c#L98" id="L1L78" clas1s="line" name="L78">  781 /a>>1a href="net/cocharef">cgrp_destroy net9">  class="line" nnet9"> ss="line" name="L104">knetdode=cgrp_destroy"knetdod /a="sref">cgroup_ne 19 1" class="line" n 19 1"ss="" class="sref">kzalloc /a>(sizeof(* a href="+code=cs" class="sref">cs /a>),  a href="+code=GFP_Komap" cla1ss="sref">new_priomap /a1>) {>1a href="net/conetprio_cgroup.c#L114" id="L114" class="line" name="L114"> 114 /a>        int  a href="+code=ret" class="sref">ret /a> = - a href="+co alloc n1ew priomap!\n" /spa1on);>18ef="net/core/netprio_cgroup.up.c#L45" id="L45" class="line" name="L45">  45 /a>         a href="+code=net/pkt_cls.h /a>>> 131 /a="sref">cgroup_netprio_state /a>,  a href=out" class="sref">get_prioidx /a>(& a href="+code=cscode=kfree" class="sref">kfree /a>( a hcode=ENOM1EM" class="sref">ENOMEM 1/a>;>1a href="net/coore/netprio_cgroup.c#L32" id="L32warn/a>(& a href="+warne=cscode=kfree" class="sref">kfree /a>( a hs="line" 1name="L82">  82 /a>     1   }>183href="net/cocharef">cgrp_destroy ">kfnet/a>(& a href="+nete=cscode=kfree" class="sref">kfree /a>( a hsnew_len"1s="line" name="L83">  831 /a>>18 href="net/core/netprio_cgroup.c#L74" ="L138" class="line" name="L138"> 138 /a>        struct  a href="+code=net_device" class="sref">net_device /a> * a hrriomap" c1lass="sref">old_priomap 1/a>)>1a href="net/core/netprio_cgroup.c#L74" id="L74" class="line" name="L74">  74 /a>        struct  a href="+code=netprio_map" class="sref">netprio_map /a> * a hrde=prioma1p" class="sref">priomap 1/a>,>18 href="net/core/netprio_cgroup.c#L96" id="1p_len" cl1ass="sref">priomap_len /1a> *>18ef="net/core/netprio_cgroup.c#L11net9">  class="line" nnet9"> ss="group" class="sref">cgroup /a> * a hrefiomap" cl1ass="sref">priomap /a>[01]));>18ef="net/core/netprio_cgroup.up.c#L81" id="L81" class="line" name="L81">  81 /a>                return - a href="+1L88" clas1s="line" name="L88">  881 /a>>18ef="net/core/netprio_cgroup.c#L119" id="L11de=new_le1n" class="sref">new_len 1/a>;>19ef="net/core/n 125 /a>    commtate>/*rn /a>(et/core/netprio_cgroup.c#L119" id="L11d alloc n1s="line" name="L90">  901 /a>>1a hrefn 125 /a>    commtate>/netprio_* Minimallyoup.cd validn" class       rn /a>(et/core/netprio_cgroup.c#L119" id="L11dode=ENOM1ass="sref">new_priomap /1a>);>1a hrefn 125 /a>    commtate>/netprio_*/rn /a>(et/core/netprio_cgroup.c#L119" id="L11d="line" 1lass="sref">old_priomap 1/a>)>1a href="net/conetprio_cgroup.c#L1   a> ||  a href="+co   a> ">map /a> =  a href="+c9">  class="line" nnet9"> ss="gsref">3group" class="sref">cgroup /a> * a hrefef="+code1=rcu" class="sref">rcu /1a>);>19 href="net/coet/core/cgroup.c#L126" id="L126_ame=""+c9">  class="line" n126_ame=""+c9">   81 /a>                return - a href="+1 name="L914">  94 /a>        retur1n 0;>19ef="net/core/netprio_cgroup.c#L115" id="L1195" class1="line" name="L95">  95 1/a>}>19 href="net/core/netprio_cgro">kfnet/a>(& a href="+nete=csnet/pkt_cls.h /a>&netnet/a>(& a hrenetnet">map /a> =  a href="+c9">  class="line" nnet9"> ss=", > 125 /a>                 a >pr_warn /a>( spao class="string">"No space in pL96" clas1s="line" name="L96">  961 /a>>19ef="net/core/netprio_cgroup.c#L11">kfnet/a>(& a href="+nete=csgroup" class="sref">cgroup /a> * a hrefeomap" cl1e=dev" class="sref">dev 1/a>)>19ef="net/core/netprio_cgroup.c#L126" id="L126_ame=""+c9">  class="line" n126_ame=""+c9">   81 /a>                return - a href="+1 88" clas1="line" name="L98">  98 1/a>{>19ef="net/core/netprio_cgroup.c#L119" id="L12+code=ret2 class="sref">ret /a> = 2;>max_len /a2;>    commtate>/netprio_*Separ131 the "+c9">  from the >  oci131d f="+warne= /a>(et/core/netprio_cgroup.c#L119" id="L12e2max_len2 ss="sref">new_priomap /2;>    commtate>/netprio_*and advanc1 the f="+net  91 /a>"+cothe f="+warn"valuee= /a>(et/core/netprio_cgroup.c#L119" id="L12e3max_len2 ass="sref">old_priomap 2>>max_prioidx /a>) + 2;>cgrp_destroy ">kfnet/a>(& a href="+nete=csnet/ 125 /a>             #39;\0 #39;rn /a>( <priomap /a>2;>cgrp_destroy ">kfnet/a>(& a href="+nete=cs++ <  95 2)>max_len /a>2;>dev 2>>t the end of the f>  edrn /a>(et/core/netprio_cgroup.c#L119" id="L12e9ax_len"2c"line" name="L98">  98 2;>(et/core/netprio_cgroup.c#L119" id="L12" class="2ine" name="L109"> 109 /a2}> 110 /2>>cgrp_destroy ">kfnet/a>(& a href="+nete=csneet/ 125 /a>             #39;\0 #39;rn /a>(group" class="sref">cgroup /a> * a hre2="+code=c2rp" class="sref">cgrp /a2)>  class="line" n126_ame=""+c9">   81 /a>                return - a href="+2" class="2ine" name="L112"> 112 /a2{>cs /a2;>knettoul" class="line" knettoul">map /a> =  a href=">kfnet/a>(& a href="+nete=cs, 10,o_cgroup.c#L129" id="">  warn/a>(& a href="+warne=cs class="sref">dev /a>-> a href="+cod2ode=EINVA2" class="sref">EINVAL /a2;>dev /a>-> a href="+cod2o6riomap"2line" name="L115"> 115 /2>>  class="line" n126_ame=""+c9">   81 /a>                return - a href="+2"max_len"2ss="sref">GFP_KERNEL /a>2;>cs /a2)> 114 /NODEVss="line" name="L8DEV  81 /a>                return - a href="+2"9ax_len"2 class="sref">ENOMEM /a>2;> 119 /2>>ref"codeby_9">  class="line" nnet"codeby_9"> lass="sref">ret /a> =  a inits="sass="sref">spininits="s class="sref">extend_ct 9">  class="line" nnet9"> ss="g /a>                return - a href="+2e=prioidx2 class="sref">prioidx /a2)>                return - a href="+2e"+code=c2out" class="sref">out /a2;>  class="line" n126_ame=""+c9">   81 /a>                return - a href="+22" class=2line" name="L122"> 122 /2>>prioidx /a>2;>spinmap" " cl /a="t /a>;> 1372=ret" cla2s="sref">ret /a> < 0)2{>cgrp_destroy 14" id="L114" class="line" ne" name="L104">c#L97" id="L97" class="line" name="L97">  97 /a>static int  a href="+cio_cgroup.c#L11net a href="+code=net_devi /a>;> 1372=6riomap"2dex array\n" /spaon2;>dev /a>-> a href="+cod2ef="+code2out" class="sref">out /a2;>                return - a href="+22ref="+co2e="L127"> 127 /a>       2}> 128 /2>> 104 /a>         a href="+code=map" class="sref">map /a> =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+cod2ef="+code2css" class="sref">css /a2;>dev /a>-> a href="+cod2ef="+code2out" class="sref">out /a2:>map ce /a>( a href="+code=dev"tic unsigned lonrioidx /a>(& a href="+code=cs]ee" name="L57">  57 /awarn/a>(& a href="+warne=cscode=kfree" class="sref">kfree /a>( a 2ref="+cod2=cs" class="sref">cs /a>2;>ret /a>2;> 130 /a> a h2" class="2ine" name="L133"> 133 /a2}>  67  a href="+code=map" >  67  /a="t /a>;> 13724" class=2line" name="L134"> 134 /2>>cgrp_destroy nt  pcgroup.c#L130" idnt  pcgf="+cio_cgroup.c#L11net a href="+code=net_devi /a>;> 1372="+code=c2rp" class="sref">cgrp /a2)> 136 /a2{>  class="line" n126_ame=""+c9">   81 class="line" name="L130"> 130 /a> a h2"ref="+co2e=cs" class="sref">cs /a2;> 1ct 9">  class="line" nnet9"> ss="g /a>                return - a href="+2ef="+code2dev" class="sref">dev /a2;>map /a2;> 140 /2>>  412 /a>>24 href="net/core/netprio_cgroup.a>static iid="c#L45" id="L45" >static iid="line"/oast /netpf">cgrp_destroy t a href="+code=" classre/netprio_cgroup.c#L7filine" name="L97">fili 74 /a>        structfiline" name="L97">fili 74 ,oore/netprrio_cgroup.c#L74 class="line" nass=""lass="sref">dev /a>-> a href="+cod2L="+code=2prio" class="sref">prio 2/a>)>24ef="n="net/core/netprio_cgroup.c#L98" id="L243" class2="line" name="L43">  43 2/a>{>2a href="net/coore/netprio_cgroup.crt/a>(& a hrecrtline /a>                return - a href="+2e" class=2ags" class="sref">flags 2/a>;>24ef="net/core/re/netprio_cgroup.c#L7s67 4" id="L114" class67 4" 74 /a>        structs67  a href="+code=s67  /a=net/pkt_cls.h /a>&n67 /from_filine" name="L97">n67 /from_fililine" name="L131"> 1filine" name="L97">fili 74 ,o"sref">ret /a> =  a crt/a>(& a hrecrtlineg /a>                return - a href="+2de=prioid2x" class="sref">prioidx 2/a>;>24ef="net/core/netprio_cgroup.c#L1s67  a href="+code=s67  /a="lass="sref">dev /a>-> a href="+cod2L class="2s="line" name="L46">  462 /a>>24 href="net/core/netprrio_cgroup.c#L1s67  a href="+code=s67  /a=code=map" class="sres  a href="+code=s  /a=code=map" class="sres _" namrioidx /a>(& a hres _" namrioidx  /a=net="L73" class="line" name="L73">  73 /a>   (ore/netprio_c)/pkt_cls.h /a>&t a href="+code=" cla /a>                return - a href="+2dref="+co2gs" class="sref">flags /2a>);>24ef="net/core/netpriorio_cgroup.c#L94" id="L94" class="line"2Lf="+code2lass="sref">PRIOIDX_SZ /2a>);>24ef="net/core/netprio_cgroup.c#L109" id="L102DX_SZ" cl2ass="sref">PRIOIDX_SZ /a2>) {>25ef="net/core/netprio_cgroup.c#L140" id="L12+code=fla2gs" class="sref">flags /2a>);>2a href/netprio_cgroup.c#L1node=ret_attach class="line" naode=ret_attachline"/a>static void  a href="+code=cgrp_destroy" class="sref">cgrp_destroy /a>(struct  a href="+code=c,/netprio_cgroup.c#L137"  137 /tasks4" id="L114" clas  137 /tasks4"="sref">cgrp_destroy ts4" id="L114" clasts4"="sr"lass="sref">dev /a>-> a href="+cod2code=ENOS2PC" class="sref">ENOSPC 2/a>;>25ef="net/core/netprio_cgroup.c#L112" id="L112s="line" 2name="L52">  52 /a>     2   }>25ef="net/core/netprio_cgroup.c#L113"task_netpri id="L114" clastask_netpri="sref">cgrp_destroy  ce /a>( a href=" cla /a>                return - a href="+2x_map" cl2ass="sref">prioidx_map /2a>);>25 href="net/co/netpf">cgrp_destroy t a href="+code=" cla /a>                return - a href="+2x" class=2x" class="sref">prioidx 2/a>)>25ef="net/core/netprio_cgroup.c#L115" id="L12+e=prioid2" class="sref">prioidx /2a>);>25ef="net/core/netprio_cgroup.c 137 /tasks4"_for_each id="L114" clas  137 /tasks4"_for_each">map /a> =  a href="ce /a>( a href=" class="sref">extend_/a>(struct  a href="+code=c,/">cgrp_destroy ts4" id="L114" clasts4"="sr"L124"> 124 /a>        if ( a href="+cod2c46" clas2gs" class="sref">flags /2a>);>25 href="net/core/netprrio_cgroup.c#L1task_ 67  a href="+code=task_ 67 ">map /a> =  a href="ce /a>( a href=" clag /a>                return - a href="+2de=prioid2x" class="sref">prioidx 2/a>;>25ef="net/core/netprio_netprio_cgroup.t a href="+code=" clanet=/netpf (ore/netprio_c)/pkt_cls.h /a>&task_return dx /a>(& a hretask_return dx ">map /a> =  a href="ce /a>( a href=" clag /a>                return - a href="+2df="+code28">  58 /a>        retur2n 0;>25 href="net/core/netpr">ret /a> =  a iter131_f href="+code=maxiter131_f ">map /a> =  a href="ce /a>( a href=" clacode=map" class="srefile1 /a>         a file1de=c,/0,/">cgrp_destroy a>static iid="c#L45" id="L45" >static iid="line,/">cgrp_destroy t a href="+code=" clag /a>                return - a href="+259" class2="line" name="L59">  59 2/a>}>26 href="net/core/netprio_cgroup.c#L80task_>  67  a href="+code=task_>  67 ">map /a> =  a href="ce /a>( a href=" clag /a>                return - a href="+2L60" clas2s="line" name="L60">  602 /a>>26ef="net/core/netprio_cgroup.c#L127" id="L127" class2ref="+cod2e=idx" class="sref">idx 2/a>)>26 hrefnetprio_cgroup.c#L127" id="L127" class2r="line" 2="line" name="L62">  62 2/a>{>26 href="net/core/netprio_cgroup.c#L83" id="26_map" cl2ags" class="sref">flags 2/a>;>26 hrefet/core/netprio_cgroup.c#L111"f">  struct  a href="f">  ="sremap" class="sress_file1 /a>         a ss_file1dev"t]ee"124"> 124 /a>        if ( a href="+cod2L64" clas2s="line" name="L64">  642 /a>>26ef="net/core/124"> 124 /a>        if ( a href="+cod2Le=prioid2gs" class="sref">flags /2a>);>26ef="net/core/netprio_.up.c#L1node=ret_">  class="line" na"> ss=" /a>                retur6oid2g1_tprio 12>( a h6_mef">cgrp_destroy ">kfnet/a>(& a h h6_mef">cgrp_destroy ">kfnet/a>(&am" class="line" name="L139"> 1.>     oo_cgroup.c#L1c  67  lass=L100" ca hre  67  lane" name="L104"> 104 /aid="L61" class="linec#ad1" id="L 135 /a>strp_destroy ">kfnet/a>(& a h h6_mef">id2x" claass="sref">flags /1a>);>26ef="2et/core/netpri}rp_destroy ">kfnet/a>(& a h h6_mef">de28">  5" name="L68">  68 1/a>}>26 hre2="net/core/net124 /a>        if ( a href="+cod2Le=prilas1s="li2e" name="L69">  691 /a>>27 hre2="net/core/netprio_cgrL1node=ret_">  class="line" na"> ss=" /a>                retur6oid2g1_tprif=dev"ti a h6_mef">cgrp_destroy ">kfnet/a>(& a h h6_mef"_le1n" cl2ss="sref">new_len 1/a>)>27ef="27t/core/netprio_rio_cg oo_cgroup.c#L1c  67 /a>( a href=c#ad1" idap"line" name="L104"> 104 /aidap ce /a>( a href=c#ad1" idap  135 /a>strp_destroy ">kfnet/a>(& a h h6_mef"_od2e=idx"" name="L71">  71 1/a>{>2a hre27t/core/netprio_cgroup3v1e   "> 1r6oid2g1_tprio 12>( a ass="sref">PRIOIDXne" ne" name="L104">c#L97" id="L97" classa href=c#ad1" idap  1335 /a>static voidy ">kfnet/a>(& a h h6_mef"_od2e=idx"" name="Lio_map /a1>) +>1a href="2et/co2e/netprio_cgrooy ">kfnet/a>(& a h h6_mef">de28">  s="sref">2ew_len /a1>));>1a hrefne2prio_27etpf">cgrp_de{ }c#L80tmtate>/*rn /a>(et/core/ /a>min froe/netprio_cgroup.c#L119" id="L120" class=2line""sref">GF2_KERNEL /1a>);>17ef="net2core/2etprio}     return - a href="+2L60" clas2s="li"sref">ol2_priomap 1/a>;>17 href="2et/co27/netprio_cgroup.c#L96" id="2" class="2ine" ">linux/t2pes.h /a>&g>);>17 href="2et/co27/netpri#L111" id="L111" class="line" nam  137 /tasks4"_for_eace" nam="sress_file1 /a>   line"/a>se" nam  137 /tasks4"_line"/a>se" nam"L104">      if ( a href="+cod2Le=prilas1s="li2ass="srefpriomap /1a>);>17 href="2et/co27tpri}rp_destrt_">  class="line" na"> ss=" /a>                          retur6oid2g1_tprif=dev"tiline"/a>">cgrp_destroy ">kfnet/a>(& a h h6_mef"_le1n" cl2" name="LL78">  781 /a>>1a href="2et/co2haref">cgrp_det_">  class="lincclass="sref">cgroup_s_state /a            a>(struct  a href=" class="sref">cgroup_subsys_state /ay ">kfnet/a>(& a h h6_mef"_le1n" clref">new_2riomap /a1>) {>1a href="2et/co2etprio_cgroup.t_">  class="lin"line" name="L135"> 13static void           a>(struct  a href=""line" name="L135"> 135 /a>static voidy ">kfnet/a>(& a h h6_mef"_le1n" clrss="sref"uot; /spa1on);>18ef="net2core/2etprio_cgroup.t_">  class="linine" naode=ret_attachtatic void            a>(struct  a h class="line" naode=ret_attachline"/a>static voidy ">kfnet/a>(& a h h6_mef"_le1n" clr" name="L">ENOMEM 1/a>;>1a href="2et/co2re/netprio_cgrt_">  class="linct  a hixiter131_f ">mapct  a hix/netprio_c   a>(struct  a h class="lct  a hixiter131_f ">map class="lct  a hixvoidy ">kfnet/a>(& a h h6_mef"_le1n" clr" name="L /a>     1   }>183href="2et/co2haref">cgrp_det_">  class="linbase_ classm  137 /tasks4"_base_ classmref">cg>&n67 /from_filine     a ss_file1dev"t]ee"124"> 124 y ">kfnet/a>(& a h h6_mef"_le1n" clr="sref">2L83">  831 /a>>18 href="2et/co2e/netprio_cgrot_">  class="linmodu">fili 74 ,o"srefmodu">void            a>(struct  a hTHIS_MODULEfili 74 ,o"srefTHIS_MODULE124 y ">kfnet/a>(& a h h6_mef"_le1n" clrsref">GF2_priomap 1/a>)>1a href="2et/co28tprio_cgroup.c#L115" id="L12+e=prioid2" claass="sref2>priomap 1/a>,>18 href="2et/co28tprio_cgroup.cmtate>/*rn /a>(et/core/netprio_cgroup.c#L119" id="L12e8ax_len"2c=devsref">pri2map_len /1a> *>18ef="net2core/2etpriommtate>/netprio_* in       , and  class=" has artificial limit ona>(etnumbern /a_len"2svalinetprio_cgroup.c#L119" id="L12e8ax_len"2c=devsass="srefmap /a>[01]));>18ef="net2core/28   commtate>/netprio_* If the f="+net disass=ws  cstpri makpri it impossible9;reco-mount it with o>(ernetprio_cgroup.c#L119" id="L12e8ax_len"2c=devs" name="LL88">  881 /a>>18ef="net2core/28   commtate>/netprio_* in       , and hierarchical ct  a tems.  Remov91 /a>artificially s=w PRIOIDX_SZnetprio_cgroup.c#L119" id="L12e8ax_len"2c=devass="sref2>new_len 1/a>;>19ef="net2core/29   commtate>/netprio_*/rn /a>(et/core limit alidproperly  cstcgrpfigurationasuch1 /adestildren foss=wnetprio_cgroup.c#L119" id="L12e8ax_len"2c=devass="sref"L90">  901 /a>>1a hrefn 225 /a2    commtate>/netprio_* Minimallyoup.cd /air ss="srsup" ccgrpfigurations by default alidaf thss=wed9;rnetprio_cgroup.c#L119" id="L12e8ax_len"2c=deva" name="Lpriomap /1a>);>1a hrefn 225 /a2    commtate>/netprio_*/rn /a>(et/core ov9rride alidremov91 /a>foss=wpri.netprio_cgroup.c#L119" id="L12e8ax_len"2c=deva" name="L_priomap 1/a>)>1a href="2et/co29   commtate>/netprio_*/rn /a>(et/core/netprio_cgroup.c#L119" id="L12" class="2ref"> class="s2ef">rcu /1a>);>19 href="2et/co29/netprio_cgrot_">  class="linbroken_hierarch name="L135"> 13broken_hierarch "L104">c#L97" id="L97"i#L>fili 74 ,o"srefi#L>124 y ">kfnet/a>(& a h h6_mef"_le1n" cl94 /a>   2    retur1n 0;>19ef="net2core/29tprio}     return - a href="+2L60" clas2s="lie" name="295">  95 1/a>}>19 href="2et/co29/netprio_cgroup.c#L96" id="2" class="2ine" ne" name=2L96">  961 /a>>19ef="net2core/297netprio_cgroup.a>static iid="cd="2" cl      _evf="+code=cgrp" clad="2" cl      _evf="void  a href="+code=cgrp_denotifier_bode=task_>  67 ">manotifier_bode=stroy  ce /a>( a hrefunusexiter131_f ">mapunusex124 y ">kfnet/a>(& a h h6_mef"_le1n" cl9ass="srefref">dev 1/a>)>19ef="net2core/2etprio_cgroup.c#L126"                 oup.c#L32" id="L32warn/a>(&amevf="+code=cgrp" claevf="void,estroy t a href="+codepref="+nete=cs, 10,ass="sref">cgroup /a> * a hrefeomap" cl1e=de2e" name="298">  98 1/a>{>19ef="net2core/2etprio      if ( a href="+cod2Le=prilas1s="l3s="sref">3et /a> = 2;> 138 /a>        struct  a href="+code=net_device" class="sre  57 /awarn/a>(&ref="+nete=cs, 10,ass="s     return - a href="+2L60" clas2s="l3s="sref">3ax_len /a2;>  74 /a>        struct  a href="+codeolxiter131_f ">mapolxs="s     return - a href="+2L60" clas2s="l3s2"sref">3ariomap /1a>);>1a hrefn 325 /a30tprio_cgroup.c#L122" id="L12f="+code=2et" 3"sref">ol3_priomap 2>>) + 2;>cgrpmmtate>/netprio_*/rn /a>(et/core Nofrom is is callL32with  /a>;>19ef="net3core/3>cgrp_mmtate>/netprio_*/rn /a>(et/core protectionaonaour rcu+war.c#*/rnsnetprio_cgroup.c#L119" id="L12e8ax_len"2c=de3m6x_prioi3x5">  95 1/a>}>19 href="3et/co3e/netpmmtate>/netprio_*/rn /a>(et/core/netprio_cgroup.c#L119" id="L12" class="2ref"3="sref">m3x_len /a>2;>dev 2>>( a hrefevf="+code=cgrp" claevf="void        if ( a href="+cod2c46" clas2gs" 3e" name="398">  98 2;>cgrp_desase" id="L138" clasNETDEV_UNREGISTEe" name="L132"> NETDEV_UNREGISTEeref"ame="L130"> 130 /a> a h2"ref="+co2e=cs3name="L103"> 109 /a2}>mapolxs="s4"> 104 /a>         a href="+code=map" class="sref">map /a> =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+cod2ef="+code2css"3 name="L130"> 110 /2>> RCU_INIT_POINTEehref="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dy t a href="+code >t " name="L132"> N>t f">dev /a>-> a href="+cod2ef="+code2css"3 2"sref">3">cgrp /a2)>mapolxs="sref">cgroup /a> * a hrefeomap" cl1e=de3name="L113"> 112 /a2{>mapolxs="sy t a href="+codee" for_eachs="srefe" hrefev /a>-> a href="+cod2ef="+code2css"3 ax_prioi3ef">cs /a2;> 115 /2>>GFP_3ERNEL /a>2;>cs /a2)>3NOMEM /a>2;>  struct  anotifier_bode=task_>  67 ">manotifier_bode=stroya>static iid="cd="2" cl      _notifier+code=cgrp" clad="2" cl      _notifier"L104">      if ( a href="+cod2Le=prilas1s="l3 name="L139"> 119 /2>>  class="linnotifier_calltask_>  67 ">manotifier_calls="s4"> 104 /a>       d="2" cl      _evf="+code=cgrp" clad="2" cl      _evf="void     if ( a href="+cod2Le=prilas1s="l3 name="L13rioidx /a2)>out /a2;> 122 /2>>static iid="c"sreffor_eacn="L45" >static iid="l"sreffor_eacn="L45"href=stroref">cgroup /a> * a hrefeomap" cl1e=de3="sref">p3ioidx /a>2;>ret /3> < 0)2{>      return - a href="+2L60" clas2s="l3cname="L13t; /spaon2;>out /a2;>c#L97" id="L97"for_eacloadne" nam  137 /tasks4"_for_eacloadne" namhref==  a crt/a>(& a line"/a>se" nam  137 /tasks4"_line"/a>se" nam"L10ev /a>-> a href="+cod2ef="+code2css"327"> 127 3a>       2}>cgroup /a> * a hrefeomap" cl1e=de3=="sref">38"> 128 /2>>ret /a> =  a id="L126_" nanet a hrefiter131_f ">mapou14">      return - a href="+2L60" clas2s="l3class="sr3f">css /a2;>out /a2:>(& a lin2" cl      _notifier+code=cgrp" clad="2" cl      _notifier"L10ev /a>-> a href="+cod2ef="+code2css"3class="sr3f">cs /a>2;>ret /a>2;>mapou14"> ame="L130"> 130 /a> a h2"ref="+co2e=cs3name="L133"> 133 /a2}> 134 /2>>cgrp /a2)> 136 /a2{>static iid="cexreffor_eacn="L45" >static iid="lexreffor_eacn="L45"href=stroref">cgroup /a> * a hrefeomap" cl1e=de3 class="s3ef">cs /a2;>dev /a2;>  74 /a>        struct  a href="+codeolxiter131_f ">mapolxs="s     return - a href="+2L60" clas2s="l3class="sr3f">map /a2;> 138 /a>        struct  a href="+code=net_device" class="sre     return - a href="+2L60" clas2s="l3class="sr30"> 140 /2>>  412 /a>>24 href="3et/co34/netprio_cgroup.c#L45" id="L4nregister_ncio_c   _notifier+code=cgrp" cla4nregister_ncio_c   _notifierhref==  a crt/a>(& a lin2" cl      _notifier+code=cgrp" clad="2" cl      _notifier"L10ev /a>-> a href="+cod2ef="+code2css"3 class="s3ef">prio 2/a>)>24ef="n="3et/co34/netprio_cgroup.c#L83" id="26_map" cl2ags"3e" name="343">  43 2/a>{>2a href="3et/co3re/netprio_cgrc#L97" id="L97"for_eac =  adne" nam  137 /tasks4"_for_eac =  adne" namhref==  a crt/a>(& a line"/a>se" nam  137 /tasks4"_line"/a>se" nam"L10ev /a>-> a href="+cod2ef="+code2css"3class="sr3f">flags 2/a>;>24ef="net3core/34tprio_cgroup.c#L115" id="L12+e=prioid2" cl3ass="sref3>prioidx 2/a>;>24ef="net3core/34tprio_cgroup.c 137 /tasks4"_ref">spinmap" " cl /a="t /a>;> 1372=ret" cla2s="s3ne" name=3L46">  462 /a>>24 href="3et/co34/netprio_cgrofor_eachs="sref"L93" class="limap" " cl /a="t"L93" class="lihref==  a crt/a>(& a ef">spininits="s class="sref">extend_ct  a href="+code=net_deviL124"> 124 /a>        if ( a href="+code+code=fla1gs" 3lass="sre3">flags /2a>);>24ef="net3core/34tprio_netprio_cgroup.t a href="+codeolxiter131_f ">mapolxs="s4"> 104 /a>         a href="+code=map" class="sref">map /a> =  a href="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dev /a>-> a href="+cod2ef="+code2css"3"sref">PR3OIDX_SZ /2a>);>24ef="net3core/34/netpr">ret /a> =  a iter131_f href=RCU_INIT_POINTEe" name="L132"> RCU_INIT_POINTEehref="+code=rtnl_dereference" class="sref">rtnl_dereference /a>( a href="+code=dev" class="sref">dy t a href="+code >t " name="L132"> N>t f">dev /a>-> a href="+cod2ef="+code2css"3sref">PRI3IDX_SZ /a2>) {>25ef="net3core/35/netprio_cgroup.c#L80c#L1s67  a href="+colxiter131_f ">mapolxs="sref">cgroup /a> * a hrefeomap" cl1e=de3lass="sre3">flags /2a>);>2a href/n3tprio35tprio_rio_cgroup.c#L1a> =  a iter131_f href=="L13ne" for_eachs="sref="L13ne" href="+code=rtnl_derolxiter131_f ">mapolxs="sy t a href="+codee" for_eachs="srefe" hrefev /a>-> a href="+cod2ef="+code2css"3lass="sre3">ENOSPC 2/a>;>25ef="net3core/35/netprio_cgroc#L127" id="L127" class2r="line" 2="li3"L52">  53 /a>     2   }>25ef="net3core/35tprio_cgroup.up.c#L45" id="Lref="+code=map" >  67  /a="t /a>;> 13724" class=2line3sref">pri3idx_map /2a>);>25 href="3et/co35roup.c#L127" id="L127" class=764" clas1lass3ass="sref3>prioidx 2/a>)>25ef="net3core/3etprio_cgroup.c#L115" id="L12+e=prioid2" cl3ss="sref"3prioidx /2a>);>25ef="net3core/3etprioup.c#L45" id="Lmodu">_"sre+code=cgrp" clamodu">_"srehref="+code=rtnl_der"sreffor_eacn="L45" >static iid="l"sreffor_eacn="L45"href"net/c0b:ame="L137"> 13724" class=2line3se" name=3">flags /2a>);>25 href="3et/co35id="L126_ame=""+c9">modu">_exre+code=cgrp" clamodu">_exrehref="+code=rtnl_derexreffor_eacn="L45" >static iid="lexreffor_eacn="L45"href"net/c0b:ame="L137"> 13724" class=2line3sass="sre3>prioidx 2/a>;>25ef="net3core/3etprio"+code=rtnl_derMODULE_LICENSEfili 74 ,o"srefMODULE_LICENSEhref=" retur6oid2g1_tprif=dev"tiGPL v2pao class="string">"No space in pL96" clas1s="l358 /a>   3    retur2n 0;>25 href="3et/co3e/netp


The original LXR softwaf tby1 /a>g">"http://source"L9ge.No sprojects/lxr">LXR io_*unee" cla,om is experi*/rnal versionaby1g">"mailto:lxr@ 0;ux.no">lxr@ 0;ux.no cla.
lxr. 0;ux.no kindly hos/a>(by1g">"http://www.redpill- 0;pro.no">Redpill L0;pro AS cla,oprovidern /aL0;uxcgrp_ultpri alidoperations ser s si 911995.