linux/kernel/trace/trace_probe.c
<<
>>
Prefs
   1/*
   2 * Common code for probe-based Dynamic events.
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 *
   8 * This program is distributed in the hope that it will be useful,
   9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11 * GNU General Public License for more details.
  12 *
  13 * You should have received a copy of the GNU General Public License
  14 * along with this program; if not, write to the Free Software
  15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  16 *
  17 * This code was copied from kernel/trace/trace_kprobe.c written by
  18 * Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
  19 *
  20 * Updates to make this generic:
  21 * Copyright (C) IBM Corporation, 2010-2011
  22 * Author:     Srikar Dronamraju
  23 */
  24
  25#include "trace_probe.h"
  26
  27const char *reserved_field_names[] = {
  28        "common_type",
  29        "common_flags",
  30        "common_preempt_count",
  31        "common_pid",
  32        "common_tgid",
  33        FIELD_STRING_IP,
  34        FIELD_STRING_RETIP,
  35        FIELD_STRING_FUNC,
  36};
  37
  38/* Printing function type */
  39#define PRINT_TYPE_FUNC_NAME(type)      print_type_##type
  40#define PRINT_TYPE_FMT_NAME(type)       print_type_format_##type
  41
  42/* Printing  in basic type function template */
  43#define DEFINE_BASIC_PRINT_TYPE_FUNC(type, fmt, cast)                   \
  44static __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s,    \
  45                                                const char *name,       \
  46                                                void *data, void *ent)\
  47{                                                                       \
  48        return trace_seq_printf(s, " %s=" fmt, name, (cast)*(type *)data);\
  49}                                                                       \
  50static const char PRINT_TYPE_FMT_NAME(type)[] = fmt;
  51
  52DEFINE_BASIC_PRINT_TYPE_FUNC(u8, "%x", unsigned int)
  53DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "%x", unsigned int)
  54DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "%lx", unsigned long)
  55DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "%llx", unsigned long long)
  56DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", int)
  57DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d", int)
  58DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%ld", long)
  59DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%lld", long long)
  60
  61static inline void *get_rloc_data(u32 *dl)
  62{
  63        return (u8 *)dl + get_rloc_offs(*dl);
  64}
  65
  66/* For data_loc conversion */
  67static inline void *get_loc_data(u32 *dl, void *ent)
  68{
  69        return (u8 *)ent + get_rloc_offs(*dl);
  70}
  71
  72/* For defining macros, define string/string_size types */
  73typedef u32 string;
  74typedef u32 string_size;
  75
  76/* Print type function for string type */
  77static __kprobes int PRINT_TYPE_FUNC_NAME(string)(struct trace_seq *s,
  78                                                  const char *name,
  79                                                  void *data, void *ent)
  80{
  81        int len = *(u32 *)data >> 16;
  82
  83        if (!len)
  84                return trace_seq_printf(s, " %s=(fault)", name);
  85        else
  86                return trace_seq_printf(s, " %s=\"%s\"", name,
  87                                        (const char *)get_loc_data(data, ent));
  88}
  89
  90static const char PRINT_TYPE_FMT_NAME(string)[] = "\\\"%s\\\"";
  91
  92#define FETCH_FUNC_NAME(method, type)   fetch_##method##_##type
  93/*
  94 * Define macro for basic types - we don't need to define s* types, because
  95 * we have to care only about bitwidth at recording time.
  96 */
  97#define DEFINE_BASIC_FETCH_FUNCS(method) \
  98DEFINE_FETCH_##method(u8)               \
  99DEFINE_FETCH_##method(u16)              \
 100DEFINE_FETCH_##method(u32)              \
 101DEFINE_FETCH_##method(u64)
 102
 103#define CHECK_FETCH_FUNCS(method, fn)                   \
 104        (((FETCH_FUNC_NAME(method, u8) == fn) ||        \
 105          (FETCH_FUNC_NAME(method, u16) == fn) ||       \
 106          (FETCH_FUNC_NAME(method, u32) == fn) ||       \
 107          (FETCH_FUNC_NAME(method, u64) == fn) ||       \
 108          (FETCH_FUNC_NAME(method, string) == fn) ||    \
 109          (FETCH_FUNC_NAME(method, string_size) == fn)) \
 110         && (fn != NULL))
 111
 112/* Data fetch function templates */
 113#define DEFINE_FETCH_reg(type)                                          \
 114static __kprobes void FETCH_FUNC_NAME(reg, type)(struct pt_regs *regs,  \
 115                                        void *offset, void *dest)       \
 116{                                                                       \
 117        *(type *)dest = (type)regs_get_register(regs,                   \
 118                                (unsigned int)((unsigned long)offset)); \
 119}
 120DEFINE_BASIC_FETCH_FUNCS(reg)
 121/* No string on the register */
 122#define fetch_reg_string        NULL
 123#define fetch_reg_string_size   NULL
 124
 125#define DEFINE_FETCH_stack(type)                                        \
 126static __kprobes void FETCH_FUNC_NAME(stack, type)(struct pt_regs *regs,\
 127                                          void *offset, void *dest)     \
 128{                                                                       \
 129        *(type *)dest = (type)regs_get_kernel_stack_nth(regs,           \
 130                                (unsigned int)((unsigned long)offset)); \
 131}
 132DEFINE_BASIC_FETCH_FUNCS(stack)
 133/* No string on the stack entry */
 134#define fetch_stack_string      NULL
 135#define fetch_stack_string_size NULL
 136
 137#define DEFINE_FETCH_retval(type)                                       \
 138static __kprobes void FETCH_FUNC_NAME(retval, type)(struct pt_regs *regs,\
 139                                          void *dummy, void *dest)      \
 140{                                                                       \
 141        *(type *)dest = (type)regs_return_value(regs);                  \
 142}
 143DEFINE_BASIC_FETCH_FUNCS(retval)
 144/* No string on the retval */
 145#define fetch_retval_string             NULL
 146#define fetch_retval_string_size        NULL
 147
 148#define DEFINE_FETCH_memory(type)                                       \
 149static __kprobes void FETCH_FUNC_NAME(memory, type)(struct pt_regs *regs,\
 150                                          void *addr, void *dest)       \
 151{                                                                       \
 152        type retval;                                                    \
 153        if (probe_kernel_address(addr, retval))                         \
 154                *(type *)dest = 0;                                      \
 155        else                                                            \
 156                *(type *)dest = retval;                                 \
 157}
 158DEFINE_BASIC_FETCH_FUNCS(memory)
 159/*
 160 * Fetch a null-terminated string. Caller MUST set *(u32 *)dest with max
 161 * length and relative data location.
 162 */
 163static __kprobes void FETCH_FUNC_NAME(memory, string)(struct pt_regs *regs,
 164                                                      void *addr, void *dest)
 165{
 166        long ret;
 167        int maxlen = get_rloc_len(*(u32 *)dest);
 168        u8 *dst = get_rloc_data(dest);
 169        u8 *src = addr;
 170        mm_segment_t old_fs = get_fs();
 171
 172        if (!maxlen)
 173                return;
 174
 175        /*
 176         * Try to get string again, since the string can be changed while
 177         * probing.
 178         */
 179        set_fs(KERNEL_DS);
 180        pagefault_disable();
 181
 182        do
 183                ret = __copy_from_user_inatomic(dst++, src++, 1);
 184        while (dst[-1] && ret == 0 && src - (u8 *)addr < maxlen);
 185
 186        dst[-1] = '\0';
 187        pagefault_enable();
 188        set_fs(old_fs);
 189
 190        if (ret < 0) {  /* Failed to fetch string */
 191                ((u8 *)get_rloc_data(dest))[0] = '\0';
 192                *(u32 *)dest = make_data_rloc(0, get_rloc_offs(*(u32 *)dest));
 193        } else {
 194                *(u32 *)dest = make_data_rloc(src - (u8 *)addr,
 195                                              get_rloc_offs(*(u32 *)dest));
 196        }
 197}
 198
 199/* Return the length of string -- including null terminal byte */
 200static __kprobes void FETCH_FUNC_NAME(memory, string_size)(struct pt_regs *regs,
 201                                                        void *addr, void *dest)
 202{
 203        mm_segment_t old_fs;
 204        int ret, len = 0;
 205        u8 c;
 206
 207        old_fs = get_fs();
 208        set_fs(KERNEL_DS);
 209        pagefault_disable();
 210
 211        do {
 212                ret = __copy_from_user_inatomic(&c, (u8 *)addr + len, 1);
 213                len++;
 214        } while (c && ret == 0 && len < MAX_STRING_SIZE);
 215
 216        pagefault_enable();
 217        set_fs(old_fs);
 218
 219        if (ret < 0)    /* Failed to check the length */
 220                *(u32 *)dest = 0;
 221        else
 222                *(u32 *)dest = len;
 223}
 224
 225/* Memory fetching by symbol */
 226struct symbol_cache {
 227        char            *symbol;
 228        long            offset;
 229        unsigned long   addr;
 230};
 231
 232static unsigned long update_symbol_cache(struct symbol_cache *sc)
 233{
 234        sc->addr = (unsigned long)kallsyms_lookup_name(sc->symbol);
 235
 236        if (sc->addr)
 237                sc->addr += sc->offset;
 238
 239        return sc->addr;
 240}
 241
 242static void free_symbol_cache(struct symbol_cache *sc)
 243{
 244        kfree(sc->symbol);
 245        kfree(sc);
 246}
 247
 248static struct symbol_cache *alloc_symbol_cache(const char *sym, long offset)
 249{
 250        struct symbol_cache *sc;
 251
 252        if (!sym || strlen(sym) == 0)
 253                return NULL;
 254
 255        sc = kzalloc(sizeof(struct symbol_cache), GFP_KERNEL);
 256        if (!sc)
 257                return NULL;
 258
 259        sc->symbol = kstrdup(sym, GFP_KERNEL);
 260        if (!sc->symbol) {
 261                kfree(sc);
 262                return NULL;
 263        }
 264        sc->offset = offset;
 265        update_symbol_cache(sc);
 266
 267        return sc;
 268}
 269
 270#define DEFINE_FETCH_symbol(type)                                       \
 271static __kprobes void FETCH_FUNC_NAME(symbol, type)(struct pt_regs *regs,\
 272                                          void *data, void *dest)       \
 273{                                                                       \
 274        struct symbol_cache *sc = data;                                 \
 275        if (sc->addr)                                                   \
 276                fetch_memory_##type(regs, (void *)sc->addr, dest);      \
 277        else                                                            \
 278                *(type *)dest = 0;                                      \
 279}
 280DEFINE_BASIC_FETCH_FUNCS(symbol)
 281DEFINE_FETCH_symbol(string)
 282DEFINE_FETCH_symbol(string_size)
 283
 284/* Dereference memory access function */
 285struct deref_fetch_param {
 286        struct fetch_param      orig;
 287        long                    offset;
 288};
 289
 290#define DEFINE_FETCH_deref(type)                                        \
 291static __kprobes void FETCH_FUNC_NAME(deref, type)(struct pt_regs *regs,\
 292                                            void *data, void *dest)     \
 293{                                                                       \
 294        struct deref_fetch_param *dprm = data;                          \
 295        unsigned long addr;                                             \
 296        call_fetch(&dprm->orig, regs, &addr);                           \
 297        if (addr) {                                                     \
 298                addr += dprm->offset;                                   \
 299                fetch_memory_##type(regs, (void *)addr, dest);          \
 300        } else                                                          \
 301                *(type *)dest = 0;                                      \
 302}
 303DEFINE_BASIC_FETCH_FUNCS(deref)
 304DEFINE_FETCH_deref(string)
 305DEFINE_FETCH_deref(string_size)
 306
 307static __kprobes void update_deref_fetch_param(struct deref_fetch_param *data)
 308{
 309        if (CHECK_FETCH_FUNCS(deref, data->orig.fn))
 310                update_deref_fetch_param(data->orig.data);
 311        else if (CHECK_FETCH_FUNCS(symbol, data->orig.fn))
 312                update_symbol_cache(data->orig.data);
 313}
 314
 315static __kprobes void free_deref_fetch_param(struct deref_fetch_param *data)
 316{
 317        if (CHECK_FETCH_FUNCS(deref, data->orig.fn))
 318                free_deref_fetch_param(data->orig.data);
 319        else if (CHECK_FETCH_FUNCS(symbol, data->orig.fn))
 320                free_symbol_cache(data->orig.data);
 321        kfree(data);
 322}
 323
 324/* Bitfield fetch function */
 325struct bitfield_fetch_param {
 326        struct fetch_param      orig;
 327        unsigned char           hi_shift;
 328        unsigned char           low_shift;
 329};
 330
 331#define DEFINE_FETCH_bitfield(type)                                     \
 332static __kprobes void FETCH_FUNC_NAME(bitfield, type)(struct pt_regs *regs,\
 333                                            void *data, void *dest)     \
 334{                                                                       \
 335        struct bitfield_fetch_param *bprm = data;                       \
 336        type buf = 0;                                                   \
 337        call_fetch(&bprm->orig, regs, &buf);                            \
 338        if (buf) {                                                      \
 339                buf <<= bprm->hi_shift;                                 \
 340                buf >>= bprm->low_shift;                                \
 341        }                                                               \
 342        *(type *)dest = buf;                                            \
 343}
 344
 345DEFINE_BASIC_FETCH_FUNCS(bitfield)
 346#define s="sref">dest = <5n14c6= 222                *(7" clace/t1="+cot  345type)                                     \
3
free_deref_fetch_param(struct 3ymbol_be.c#L325" id="L325" class="line" name="ef">scs3rlen 253   3     35obe.c#L323" id="L323" class#L346" id* id=te="L323"> 323 343;
symbol_cache3/a>),3 316{
 317        if (CHECK_FETCH_FUNCS(deref,  253        if (!fn))
 310                update_deref_fetch_param(datass="line3 name="L257"> 257   3     35uf" class="sr href="+code=data" class="sref">data);
 319        else if (CHECK_FETCH_FUNCS(symboldata"L1e_pro3;
fn))
 312                update_symbol_cache(data href="+3ode=sym" class="sref">sy3,36>sc->sc<36mbol_cache *type)                                     \
 262   3     36be.c#L302" id="L302"nel/t                   \
free_deref_fetch_param(struct off3et = u3date_3ymbol_#L323" id="L323" class#L346" id* Donhref=t219" class=l/trace/ itself, becauselasis must belasssc3;
 323    #L224" id="L224" class#L346" id*
sc3
 308{
 309        if (CHECK_FETCH_FUNCS(dmboldat"> 268orig.fn))
 318                free_deref_fetch_param(datCH_symbol3/a>(orig.data);
 311        else if (CHECK_FETCH_FUNCS(dmboldat"        3="+code=pt_regs" class="3ref">3t_regs *fn))
 320                free_symbol_cache(datref="+cod3=data" class="sref">data3/a>, 37be.c#L322" id="L322" class="line" name="L322ne" name=3L273"> 273{         3     373" id="L263" class="line" nata" class="sref">data);
 321ass="sref3>sc = ->strint; 277        el3e    3       222               __DEFAULTace/traTYPd="L332" class="__DEFAULTace/traTYPd);
sc3)de 222               _DEFAULTace/traTYPd="L332" class="_DEFAULTace/traTYPd);
DEFINE_BASIC_3ETCH_38obe.c#L330" id="L330" class="liAULTace/traTYPdret"="L332" class="DEFAULTace/traTYPdret");
<>               _DEFINE_F3TCH_s3mbolDEFINE_FETCH_symbo3(3a href#L330" id="L330" class=ASSIGNace/trace_p="L332" class="ASSIGNace/trace_p);
        else 1" class="line" name="L331"> /a> *)g_size        else ce/traMTD      \
 332static         else 1" class="line" name="L331">a> *)gss="sref3me="L284"> 284->3name="L283"> 285struct ( 332static         else f1" class="line" namfe="L331"        else ne" name="L332">7" c="+code=s        else 34" s="line" name="L4" 331"        else nfmt1" class="line" namnfmt1" c331"> /a> *)g;f3tch_p3ram      <{mbol_cache" clas  ge" name=3 287        long    3     38sref">origmbol_cache" clasid="L305" class="lin+code=sy342" class="line" e" name="L332">7" c="+code=s *)g">sc3origmbol_cache" clasis_34" clame="L332">7" cis_34" clde=sy342" class="line"34" s="line" name="L4" 331" *)> 2883;
origmbol_cache" clasphretrace_probe.c#L3phretde=sy342" class="line"PRINTaTYPdr#L332" id="L332" class="PRINTaTYPdr#L332" id2"> 332static  *)>H_symbol3a>(origmbol_cache" clasfmtlass="line" namfmtde=sy342" class="line"PRINTaTYPdr#MT2" id="L332" class="PRINTaTYPdr#MT2" id2"> 332static  *)>        3="+code=pt_regs" class="3ref">3t_regs * *)>ef="+cod3de=data" class="sref">da3a393regs * *)>_size 293{         3     39FUNCS(        else f1" class="line" namfe="L331") *)>ss="sref3sref">dprm =         else f1" class="line" namfe="L331") *)>ame="L283 href="+code=addr" class3"sref3>addr<(        else f1" class="line" namfe="L331") *)>;, &        else f1" class="line" namfe="L331") *)>e" name=3de=addr" class="sref">ad3r3 {    #L344" id="L344ASSIGNace/trace_p="L332" class="ASSIGNace/trace_p);
 311        else f1" class="line" namfe="L331") *)>">sc3> 309      f1" class="line" namfe="L331") *)ad4r40be.c#L279" id="L279"ASSIGNace/trace_p="L332" class="ASSIGNace/trace_p);
__kprobes vf1" class="line" namfe="L331") *);                                \
 *) *->DEFINE_BASI4_FETC4_FUNCS#L330" id="L330" class=ASSIGNace/traTYPd="L332" class="ASSIGNace/traTYPd2"> 332static         else f1" class="line" namfe="L331"        else 34" s="line" name="L4" 331"> 331#define  *)dprm =  =  3#pe="L        else p1" class="line" nampe="L331"        else f1" class="line" namfe="L331" vf1" class="line" namfe="L331")a> *)DEFINE_FETCH_dere4(4a href="+code=string_size" class="sref">stri4g_size = stri4g8sizead4f_fet40      222               ce/traTYPdret"SIZd="L332" class="line" TYPdret"SIZd = stri4g9size->4typebitfield_fet1" class="line" namfd_fet1" c);
<>               fd_fet1" c_tabl lass="line" namfd_fet1" c_tabl );
<[]L34be.c#L325" id="L325" class="line" name=4>data4>]L342" class="line"__ASSIGNace/traTYPd="L332" class="__ASSIGNace/traTYPd2"> 33L323" id="L3itfield>"itfiel" vud(]L342" class="line"__ASSIGNace/traTYPd="L332" class="__ASSIGNace/traTYPd2"> 33L323" id="L3itfield>"itfiel="+co"(der4f_fet41a>)                                          2" class="line"3L304" id="L305" class="line" name="L305" vud(orig 332static (static (orig. 332static )  )  data4>orig 332static ((->4orig. 332static data4 href="+code=kfree" clas4="sre422>orig. 332static (static (        4
 332static )  )  H_FUNCS"4}
 332static ((5_FUNCS"4s="line" name="L324"> 324<42t =  332static f" class4struct low_4"+code=fe4ch_param" class="sref">f4tch_p4ramlow_4"8size        unsigned cha4     4     bitfield_fet1" class="line" namfd_fet1" c);
<>5" id="L335" clafin/trace_p1" class="line" namfin/trace_p1" c2"> 3constashift5" id="L335" cla1" class="line" name="L331">a> *) 328<4a>        unsigned char 4     4   ;4origbitfieiame="L332">7" ciref"ref="+code=low_shift" class="sref">low_4> 3294;
orig.a> *)4t_regs *low_4>H_FUNCS"4de=data" class="sref">da4a43be.c#L343" id="L343" class="line" name="L344ne" name=4L334"> 334{         4     4              #L323" id="L323" class=" Special3case:=l/trace/ *
bprm = b4f43/a>        if (!data;              b                bs);
low_4>8sizeregs, &bu4)4{                                    1" class="line" name="L331"L342" class="line"itfcha href="+code=feitfcha2"> 332static low_4prm-&4t;hi_shift;="+c!" id="L335" cla1" class="line" name="L331">a> *)-&g4;hi_shift;;;;;;;;;gotoss="sref">bitfielaiss="line" name="lais);
low_4ne" name=4L341"> 341        } 4     44bol 4 low_4nH_FUNCS"4
 332static da4"> 343hi_shift;;;;;;;;;gotoss="sref">bitfielaiss="line" name="lais);
low_4nprm" cla4"sref">DEFINE_BASIC_FETC4_FUNC44 href="+code=string_size" class="sref">stri4ring" cla4s="sref">s="sref">dest = <44/a>        if (!;
orig.bitfielin/trace_p1" class="line" namfin/trace_p1" c2"> 33L323" id="L3itfield>"l8"low_4ffset4
hi_shift;case 16:e.c#L325" id="L325" class="line" name=4 href="+c4de=symbol_cache" class="4ref">451"sref">hi_shift;;;;;;;;;returnss="sref">bitfielin/trace_p1" class="line" namfin/trace_p1" c2"> 33L323" id="L3itfield>"l16"low_4fe" name=4;
 4="+code=strlen" class="s4ef">s45_regs *bitfielin/trace_p1" class="line" namfin/trace_p1" c2"> 33L323" id="L3itfield>"ls="low_4fH_FUNCS"4 name="L253"> 253   4     454                    case 64:e.c#L325" id="L325" class="line" name=4 > 343hi_shift;;;;;;;;;returnss="sref">bitfielin/trace_p1" class="line" namfin/trace_p1" c2"> 33L323" id="L3itfield>"l64"low_4fprm" cla4lass="sref">symbol_cache4/a>),45a>)                  dn="ker:e.c#L325" id="L325" class="line" name=4 ing" cla4" class="line" name="L254"> 254        if (!bitfielaiss="line" name="lais);
low_4ass="line4 name="L257"> 257   4     45sref">orig.->sy4,46e.c#L329" id="L329" class="line" name="L3294if (!sc<461"sref">hi_shfor3a href="kernel/tiame="L332">7" ciref"" id=" href="kernel/tiame="L332">7" ciref""erneref="+code=offseARRAY_SIZd="L332" class="ARRAY_SIZd2"> 332static 7" ciref"++lda4         4   * 332static 7" ciref"]mbol_cache" clas  da4 est 4 name="L262"> 262   4     46_regs *7" ciref"]ref="+code=low_shift" class="sref">low_4>;
off46obe.c#L344" id="L344laiss="line" name="lais);
<:e.c#L325" id="L325" class="line" name=4pdate_sym4ol_cache" class="sref">u4date_46a>)          returnss="sref">bitfieref"L2352_kprss="s="L345" cref="+code=low_shift" class="sref">low_4>ing" cla4;
sc4
 323data*
 268 314
 314rd_fetLtack_addresn2"> 3_NAME" class="sref">FETCH_FUNC_NAME(bitfield, (hi_shift;;;;;;;;;;;;;;;;;;;;;;;;;d="L333" class="line" ummcss="line" name= ummc331", d="L333" class="line" name="L333"> 333       ="kernel/trace/trace_probe.c#L324" id=4"        4="+code=pt_regs" class="4ref">4t_regsbe.c#L325" id="L325" class="line" name=4ref="+cod4=data" class="sref">data4/a>, 47_regs *data*href="kernel/trace/trace_probe.c#L342" id="L342" class="line"id="L3tLtack_pointea href="+code=feid="L3tLtack_pointea2"> 332static bitfield, low_4ne" name=4L273"> 273{         4     473" ida>->sc = ->4t; 3_tlass="line" namfd_fet"> 3_tid="Lid="L314" classgettrace_p255"_"> 323 323 3constam" class="sref">bitfield_fet1" class="line" namfd_fet1" c);
<>5" id="L335" cla1" class="line" name="L331",t;4ting" cla4"+code=addr" class="sref4>addr47/a>        if (! 3_tlass="line" namfd_fet"> 3_tid="Lid="L314" class=fre_mbol" class="ssre=fre_mb     ="kernel/trace/trace_probe.c#L324" id=4"ss="line4L277"> 277        el4e    4      be.c#L325" id="L325" class="line" name=4r">sc4)bitfieiame="L332">7" ciref"ref="+code=low_shift" class="sref">low_4         4
DEFINE_BASIC_4ETCH_481"sref">hi_sh="+code=data" class1" class="line" name="L331"L!=s;] ="kernel/trace/trace_probe.c#L324" id=4         4l" class="sref">DEFINE_F4TCH_s48_regs *bitfieref"L2352_kprss="s="L345" crrrrriL323" id="L323" class=" Only itfiel3    dneeds/255"3"> 323
DEFINE_FETCH_symbo4(48be.c#L322" id="L322" class="line" name="L324g_size7" ciref"" id=" href="kernel/tiame="L332">7" ciref""erneref="+code=offsece/traMTD END="L332" class="ce/traMTD END5" crr href="kernel/tiame="L332">7" ciref"++lda4gss="sref4me="L284"> 284hi_shift;="+code=data" class1" class="line" name="L331"> 320           f                    href="ke[ href="kernel/tiame="L332">7" ciref"] == 3d="L314" class=fre_mbol" class="ssre=fre_mb     ="kernel/trace/trace_probe.c#L324" id=4name="L284"> 285struct )                          returnss="sref">bitfield_fet1" c_tabl lass="line" namfd_fet1" c_tabl );
<[ href="kernel/tce/traTYPdret"SIZd="L332" class="line" TYPdret"SIZd]mbol_cache" clasf                    href="ke[ href="kernel/tiame="L332">7" ciref"]ref="+code=low_shift" class="sref">low_4g;f4tch_p48amlow_4ge" name=4 287        long    4     48sref">orig7" cWARN_ON2"> 31gt;sc4origbitfieref"L2352_kprss="s="L345" cref="+code=low_shift" class="sref">low_4>H_symbol4a>(->49bolef="+cod4de=data" class="sref">da4a49len and offset.a>
_size 293{         4     49FUNCS=nass="sref">bitfieobe.cL324"_splittrace/troffsetlass="line" namebe.cL324"_splittrace/troffset2"> 3chift5" id="L335" clas class="line" name="L311"> 311data*3d="L314" class=ffsetlass="line" namoffset2">  ="kernel/trace/trace_probe.c#L324" id=4>ss="sref4sref">dprm = ame="L284 href="+code=addr" class4"sref49a>)          shift5" id="L335" cla1mp href="+code=fetmp2"> ref="+code=low_shift" class="sref">low_4>;, &bitfieretlass="line" namret2"> ref="+code=low_shift" class="sref">low_4>e" name=4de=addr" class="sref">ad4r49ernel/trace/trace_probe.="L33_FE="line" nam4>">sc4>  ="kernel/trace/trace_probe.c#L324" id=5 href="+c5de=addr" class="sref">ad5r50="sref">hi_shift;returns-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_5 1ref="+c5d>( *orig. L342" class="line"itfcha href="+code=feitfcha2"> 332static  311low_5         5
 o4be.c#L325" id="L325" class="line" name=5CH_FUNCS"5class="sref">DEFINE_BASI5_FETC504                    #L323" id="L323" class=" skip ef"> becauselLtfict_a htol doesnhref=t2acceptr&ref=+&ref=a>
dprm = hi_shift;s="sref">bitfieretlass="line" namret2"> L342" class="line"itfict_a htouss="line" name="Ltfict_a htous2"> 332static  L+/1, 0, 3              =ffsetlass="line" namoffset2">  ref="+code=low_shift" class="sref">low_5 6_FUNCS"5chref="+code=addr" class5(50a>)                  ="L3 href="+code=daretlass="line" namret2">  ="kernel/trace/trace_probe.c#L324" id=5 7_FUNCS"5cegs, &bitfieretlass="line" namret2"> ref="+code=low_shift" class="sref">low_5g8sizead5f_fet50ernel/trace/trace_probe.="L33_FE="line" nam5g9size  = 3L323" id="L3itfield>&ref=\0&ref=low_5>data5>hi_sh}a hreef="+code=low_shift" class="sref">low_5>1ref="+c5hi_shift;*3d="L314" class=ffsetlass="line" namoffset2"> " id=ef="+code=low_shift" class="sref">low_5>2ref="+c5>low_5>H_FUNCS"5
->5af" class5_param" class="sref">der5f_fet51/a>(low_5a8sizebitfiepars"sref">_varsC_NAME(_vars2"> 3chift5" id="L335" claar" id="L304" clasar" 311bitfield_fet1" class="line" namfd_fet1" c);
<>5" id="L335" cla1 href="+code=fet331",t;5a9sizebitfield_fet))
 309      boass="line" name="boasid="Lid="L314" classis_returname="L332">7" cis_return2">  ="kernel/trace/trace_probe.c#L324" id=5>data5>->5orig.bitfieretlass="line" namret2"> " id=ef="+code=low_shift" class="sref">low_5>data5 href="+code=kfree" clas5="sre522>orig.data;              ))
low_5>        5
 332static 5_FUNCS"5s="line" name="L324"> 325<525"sref">hi_shift;="+code=data" classis_returname="L332">7" cis_return2">  ="kernel/trace/trace_probe.c#L324" id=5>f" class5struct  320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD retvass="line" name="ce/traMTD retvasref"]ref="+code=low_shift" class="sref">low_5"+code=fe5ch_param" class="sref">f5tch_p52/a>        if (!low_5"8size        unsigned cha5     52sref">orig. " i-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_528"> 328<5a>        unsigned char 5     52             aa href="+code=data" classitfncmp href="+code=feitfncmp2"> 332static ;5hi_shift;="+c32static ->5;
hi_shift;;;;;;;;;="+code=data" classitfcmp href="+code=feitfcmp2"> 332static  320              309      "liAULTace/traTYPdret"="L332" class="DEFAULTace/traTYPdret");
<) == 0lda5CH_bitfie5d( * 320           fbol" class="ssref">dmbL342" class="line"rd_fetLtack_addresname="L314"> 314rd_fetLtack_addresn2"> ref="+code=low_shift" class="sref">low_5ct 5t_regs *low_5>H_FUNCS"5de=data" class="sref">da5a534                                    " id="L335" claretlass="line" namret2"> " i-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_5ne" name=5L334"> 334{         5     535"sref">hi_shift;aa href="+code=data" classisdigitlass="line" namisdigit2"> 332static bprm =  L342" class="line"itfict_a htouss="line" name="Ltfict_a htous2"> 332static low_5b5f53/a>        if (!  ||>;              ))
da5C8sizeregs, &orig. " i-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_5n8"> 328<5ode=buf" class="sref">bu5)5{                              hrefbe.c#L325" id="L325" class="line" name=5prm-&5t;hi_shift;                " id="L335" cla9" class="line" ="L30> 320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD stacks="line" name="ce/traMTD stackref"]ref="+code=low_shift" class="sref">low_5rm-&g5;hi_shift;;;;;;;;;        " id="L335" cla9" class="line" ="L30> 320           race/trace_probe.c#L321" idL34(d="L33href="kernel/tra))
low_5ne" name=5L341"> 341        } 5     54_regs *low_5nH_FUNCS"5
 " i-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_5"> 343hi_sh}a hreef="+code=low_shift" class="sref">low_5nf" class5"sref">DEFINE_BASIC_FETC5_FUNC54a>)                  " id="L335" claretlass="line" namret2"> " i-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_5"a href="5s="sref">s="sref">dest = <54amlow_5 ;
origbitfieretlass="line" namret2"> ref="+code=low_shift" class="sref">low_5  href="+5="+code=sym" class="sref5>sym<54     a>->551"sre#L323" id="L323" class=" Recursive ar"u cla rars"ra>
bitfiepars"sref">_ar" id="L304" claspars"sref">_ar"2"> 3chift5" id="L335" claar" id="L304" clasar" 311bitfield_fet1" class="line" namfd_fet1" c);
<>5" id="L335" cla1 href="+code=fet331",t;5 est 5="+code=strlen" class="s5ef">s55_regs *bitfield_fet))
 309      boass="line" name="boasid="Lid="L314" classis_returname="L332">7" cis_return2"> 9"> 309      boass="line" name="boasid="Lid="L314" classis_a>
7" cis_a>
da5fH_FUNCS"5 name="L253"> 253   5     554    be.c#L325" id="L325" class="line" name=5 > 343hi_shsref">data;              ))
low_5fprm" cla5lass="sref">symbol_cache5/a>),55a>)          a;              =ffsetlass="line" namoffset2"> =ef="+code=low_shift" class="sref">low_5fa href="5" class="line" name="L255"> 255        ifshift5" id="L335" cla1mp href="+code=fetmp2"> ref="+code=low_shift" class="sref">low_5ass="line5 name="L257"> 257   5     55sref">origbitfieretlass="line" namret2"> ref="+code=low_shift" class="sref">low_5a"L1e_pro5;
sy5,56sref">orig " id=ef="+code=low_shift" class="sref">low_5if (!sc<56mbol_cache *_evclas supporas only reg ar"u clasd*
 5 name="L262"> 262   5     563e.c#L308" id="L3!" id="L335" clais_a>
7" cis_a>
 ref="+code=low_shift" class="sref">low_5;off56a>->5pdate_sym5ol_cache" class="sref">u5date_56a>)          swiL323a href="kernel/tar" id="L304" clasar" 311[0]l4be.c#L325" id="L325" class="line" name=5>ing" cla5;
orig. L342" class="line"pars"sref">_varsC_NAME(_vars2"> 332static  309      1 href="+code=fet331", " id="L335" cla9" class="line" ="L30, " id="L335" clais_returname="L332">7" cis_return2">  ref="+code=low_shift" class="sref">low_5;"L1e_pro5
low_5"> 268(hi_shsase 3L323" id="L3itfield>&ref=&re7;&ref=
57_regs * L342" class="line"  332static low_5ref="+cod5=data" class="sref">data5/a>, 57_regs *   320= 0l4be.c#L325" id="L325" class="line" name=5ne" name=5L273"> 273{         5     574                            " id="L335" cla9" class="line" ="L30> 320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD regs="line" name="ce/traMTD regref"]ref="+code=low_shift" class="sref">low_5ass="sref5>sc = hi_shift;;;;;;;;;" id="L335" cla9" class="line" ="L30> 320           race/trace_probe.c#L321" idL34(d="L33hlL234" class="ls="sref">bitfieretlass="line" namret2"> ref="+code=low_shift" class="sref">low_5t; L34d=ef="+code=low_shift" class="sref">low_5ting" cla5"+code=addr" class="sref5>addr57/a>        if (!-> 277        el5e    57sref">orig.low_5""L1e_pro5)hi_shsase 3L323" id="L3itfield>&ref=@&ref= >
DEFINE_BASIC_5ETCH_581"sref">hi_shift;="+code=data" classisdigitlass="line" namisdigit2"> 332static DEFINE_F5TCH_s58_regs * L342" class="line"itfict_a htouss="line" name="Ltfict_a htous2"> 332static low_5 ef="+cod5sref">DEFINE_FETCH_symbo5(58_regs *  ="kernel/trace/trace_probe.c#L324" id=5g_sizelow_5gss="sref5me="L284"> 284->5name="L285"> 285struct )                          " id="L335" cla9" class="line" ="L30> 320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD memorys="line" name="ce/traMTD memoryref"]ref="+code=low_shift" class="sref">low_5g;f5tch_p58/a>        if (! 320           race/trace_probe.c#L321" idL34(d="L33href="kernel/tra))
low_5ge" name=5 287        long    5     58sref">orig.sc5 L342" class="line"ss="lL324"_splittrace/troffsetlass="line" namebe.cL324"_splittrace/troffset2"> 332static   ref="+code=low_shift" class="sref">low_5> 2885;
hi_shift;        ="L3 href="+code=daretlass="line" namret2">  ="kernel/trace/trace_probe.c#L324" id=5>H_symbol5a>(hi_shift;;;;;;;;;        breakref="+code=low_shift" class="sref">low_5>        5="+code=pt_regs" class="5ref">59bolef="+cod5de=data" class="sref">da5a59_regs * 320           race/trace_probe.c#L321" idL3432static 7" calloctrace/trcach 2"> 332static  309      =ffsetlass="line" namoffset2">  ref="+code=low_shift" class="sref">low_5>_size 293{         5     594                            ="L3 href="+code=da9" class="line" ="L30> 320           race/trace_probe.c#L321" id ="kernel/trace/trace_probe.c#L324" id=5>ss="sref5sref">dprm = hi_shift;;;;;;;;; (! 320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD s class="line" name="ce/traMTD s clasref"]ref="+code=low_shift" class="sref">low_5>ame="L285 href="+code=addr" class5"sref59a>)                  a>->        if (!low_5>e" name=5de=addr" class="sref">ad5r59ernel/trace/trace_probe.="L33_FE="line" nam5>">sc5>ad6r60="sref">hi_shift;32static hi_shsase 3L323" id="L3itfield>&ref=-&ref= * L342" class="line"itfcha href="+code=feitfcha2"> 332static low_6         6
 oef="+code=low_shift" class="sref">low_6 4       6
293"> 293{         6_FETC604                     (!low_6 5_FUNCS"6cref">dprm = ->6 6_FUNCS"6chref="+code=addr" class6(60a>)                  5" id="L335" cla1mp href="+code=fetmp2">  = 3L323" id="L3itfield>&ref=\0&ref=low_6 7_FUNCS"6cegs, & L342" class="line"itfict_a htoss="line" name="Ltfict_a htos2"> 332static   ref="+code=low_shift" class="sref">low_6g8sizead6f_fet60ernel/trace/trace_probe.="L33_FE="line" nam6g9size  ="kernel/trace/trace_probe.c#L324" id=6>data6>hi_shift;        breakref="+code=low_shift" class="sref">low_6>1ref="+c6 * L+/1ref="+code=low_shift" class="sref">low_6>        6 L342" class="line"itffcha href="+code=feitffcha2"> 332static low_6>H_FUNCS"6
hi_shift;="+code=data" class1mp href="+code=fetmp2"> o4be.c#L325" id="L325" class="line" name=6af" class6_param" class="sref">der6f_fet61a>)                          m" class="sref">bitfiedee/t_ld_fet))
low_6a_sizebitfield_fet1" class="line" namfd_fet1" c);
<>        5" id="L335" clat2 href="+code=fet2c#L3=ef="+code=low_shift" class="sref">low_6a8size 33" class="line"ref"L2352_kprss="s="L345" c)ref="+code=low_shift" class="sref">low_6>data6>hi_shift;        5" id="L335" cla1mp href="+code=fetmp2">  = 3L323" id="L3itfield>&ref=\0&ref=low_6>->6hi_shift;;;;;;;;;" id="L335" cladpra href="kernel/tdprac#L3L342" class="line"izalloc href="kernel/tizalloc2"> 3255" clm" class="sref">bitfiedee/t_ld_fet))
 309      GFP_KERNE"L2352_kprss="s=GFP_KERNE"5" c)ref="+code=low_shift" class="sref">low_6>2ref="+c6 href="+code=kfree" clas6="sre62bol        6
H_FUNCS"6}
low_6>5_FUNCS"6s="line" name="L324"> 326<62a>->6>f" class6struct  " i           =ffsetlass="line" namoffset2"> =ef="+code=low_shift" class="sref">low_6>_sizef6tch_p62/a>        if (! L342" class="line"pars"sref">_ar" id="L304" claspars"sref">_ar"2"> 332static 7" cis_return2"> 9ef="+code=low_shift" class="sref">low_6>8size        unsigned cha6     62sref">orig.
7" cis_a>
low_6>9size        unsigned char 6     62                             ="L3 href="+code=daretlass="line" namret2">  ="kernel/trace/trace_probe.c#L324" id=6hift;6hi_shift;                3 id="L335" clakfre ame="L332">7" ckfre 2"> 332static low_6h->6;
hi_shift;;;;;;;;; hrefbe.c#L325" id="L325" class="line" name=6CH_bitfie6d( * 320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD dee/ts="line" name="ce/traMTD dee/tref"]ref="+code=low_shift" class="sref">low_6ct 6t_regs * 320           race/trace_probe.c#L321" idL34(d="L33href="kernel/tradpra href="kernel/tdprac#L3=ef="+code=low_shift" class="sref">low_6>H_FUNCS"6de=data" class="sref">da6a634                            a>-> 334{         6     635"sref">hi_shift;a>->bprm = low_6b6f63/a>        ifa>->orig    320           fbol" class="ssref">dmb) {   #L323" id="L323" class=" Pars"d, but do not fin/  href methoda>
 328<6ode=buf" class="sref">bu6)6{                     2" class="line"pr_info id="L304" claspr_info2"> 33L323" id="L3itfield>"&re7;s3    dhas no correspondiel3 href method.\n" 320             low_6prm-&6t;hi_shift;" id="L335" claretlass="line" namret2"> L34-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_6rm-&g6;hi_sha>-> 341        } 6     64bol 6  ref="+code=low_shift" class="sref">low_6rH_FUNCS"6
-> 3436nf" class6"sref">DEFINE_BASIC_FETC6_FUNC64/a>( 332static s="sref">dest = <64amlow_6 ;
 323
bitfie__pars"sbitfieldsref">_ar" id="L304" clas__pars"sbitfieldsref">_ar"2"> 3constashift5" id="L335" clab9" class="line" bf2"> 9ef="+code=low_shift" class="sref">low_6ffset6
hi_shift;                      constam" class="sref">bitfield_fet1" class="line" namfd_fet1" c);
<>5" id="L335" cla1 href="+code=fet331",t;6 href="+c6de=symbol_cache" class="6ref">651"sref">hi_shift;;;;;;;;;;;;;;;;;;;;;;;m" class="sref">bitfield_fet))
 6="+code=strlen" class="s6ef">s65_regs *bitfiebitfieldsld_fet))
low_6fH_FUNCS"6 name="L253"> 253   6     654            sref">data;              bw href="kernel/tbw 311low_6f> 343hi_shshift5" id="L335" cla1aiss="line" name="1aisc#L3=ef="+code=low_shift" class="sref">low_6ff" class6lass="sref">symbol_cache6/a>),65a>)  ef="+code=low_shift" class="sref">low_6fa href="6" class="line" name="L256"> 256        if="L35" id="L335" clab9" class="line" bf2"> L!=s3L323" id="L3itfield>&ref=b&ref= 257   6     65sref">orig.low_6a"L1e_pro6;
sy6,66sref">orig 3255" cl5" id="L335" clabpra href="kernel/tbprac#L3)9"> 309      GFP_KERNE"L2352_kprss="s=GFP_KERNE"5" c)ref="+code=low_shift" class="sref">low_6if (!sc<661"sref">hi_sh="+c!" id="L335" clabpra href="kernel/tbprac#L3)ef="+code=low_shift" class="sref">low_6ie" name=6   *low_6 est 6 name="L262"> 262   6     66be.c#L322" id="L322" class="line" name="L326 H_FUNCS"6="kernel/trace/trace_pro6e.c#L664            " id="L335" clabpra href="kernel/tbprac#L3> 320           =ri" id="L304" clas=ri" 311L345" id="L335" cla9" class="line" ="L30=ef="+code=low_shift" class="sref">low_6 > 343off665            " id="L335" cla9" class="line" ="L30> 320           fbol" class="ssref">dmbL342" class="line"1 href="+code=fet331"> 320           f                    href="ke[ href="kernel/tce/traMTD bitfields="line" name="ce/traMTD bitfieldref"]ref="+code=low_shift" class="sref">low_6pdate_sym6ol_cache" class="sref">u6date_66a>)          " id="L335" cla9" class="line" ="L30> 320           race/trace_probe.c#L321" idL34(d="L33href="kernel/trabpra href="kernel/tbprac#L3=ef="+code=low_shift" class="sref">low_6>ing" cla6;
 332static  L+ 1, ;
5" id="L335" cla1aiss="line" name="1aisc#L3L!=s3L323" id="L3itfield>&ref=@&ref= 268hi_shift;returns-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_6"f (!( *672>orig. L342" class="line"1aiss="line" name="1aisc#L3L+/1ref="+code=low_shift" class="sref">low_6ref="+cod6=data" class="sref">data6/a>, 67_regs * 332static  , ;low_6rH_FUNCS"6L273"> 273{         6     67be.c#L343" id="L343" class="line" name="L346ass="sref6>sc = hi_sh="+code=data" class1aiss="line" name="1aisc#L3L=342" class="line"b9" class="line" bf2"> L||>5" id="L335" cla1aiss="line" name="1aisc#L3L!=s3L323" id="L3itfield>&ref=/&ref= ref="+code=low_shift" class="sref">low_6"ing" cla6"+code=addr" class="sref6>addr67amlow_6"ss="line6L277"> 277        el6e    67sref">orig 332static  320           255"s="line" name="Liza>-&g  -L3;              bw href="kernel/tbw 311L+a3 id="L335" clabo id="L304" clasboc#L3);ef="+code=low_shift" class="sref">low_6r"L1e_pro6)origlow_6         6
DEFINE_BASIC_6ETCH_681"sref">hi_shreturns332static  332static  320           255"s="line" name="Liza>-&g  <L3;              bw href="kernel/tbw 311L+a3 id="L335" clabo id="L304" clasboc#L3)) ?s-" id="L335" claEINVA"L2352_kprss="s=EINVA"2">  :sd=ef="+code=low_shift" class="sref">low_6         6l" class="sref">DEFINE_F6TCH_s68_regsa>->DEFINE_FETCH_symbo6(68be.c#L322" id="L322" class="line" name="L326g_size
 284-&g=nass="sref">bitfieobe.cref">_pars"sref">_ar" id="L304" clasobe.cref">_pars"sref">_ar"2"> 3chift5" id="L335" claar" id="L304" clasar" 311           2Liza_1 href="+code=fe2Liza_1c#L335" id="L335" cla255"s="line" name="Liza>-&g,t;6name="L286"> 285struct )                  m" class="sref">bitfieref">_ar" id="L304" claspef">_ar"2"> 35" id="L335" clapar" id="L304" claspar" 311           boass="line" name="boasid="Lid="L314" classis_returname="L332">7" cis_return2"> 9"> 309      boass="line" name="boasid="Lid="L314" classis_a>
7" cis_a>
da6g;f6tch_p68/a>  be.c#L325" id="L325" class="line" name=6ge" name=6 287        long    6     68sref">origlow_6 "L1e_pro6bitfieretlass="line" namret2"> ref="+code=low_shift" class="sref">low_6> 2886;
hi_sh="+c" id="L335" cla2trlens="line" name="Ltrlen2"> 332static         6="+code=pt_regs" class="6ref">69_regs * 33L323" id="L3itfield>"Ar"u cla is/tootalow_6>ef="+cod6de=data" class="sref">da6a69_regs * ref="+code=low_shift" class="sref">low_6>_size 293{         6     694            a>->dprm =  320           23"  id="L304" clas23" c#L3L342" class="line"iitfdup href="+code=feiitfdup2"> 332static  309      GFP_KERNE"L2352_kprss="s=GFP_KERNE"5" c)ref="+code=low_shift" class="sref">low_6>ame="L286 href="+code=addr" class6"sref69a>)          ="+c!" id="L335" clapar" id="L304" claspar" 311> 320           23"  id="L304" clas23" c#L3) be.c#L325" id="L325" class="line" name=6>;, & 33L323" id="L3itfield>"Failed/to allocate memory for 23" and &ref=&re7;s&ref=.\n"low_6>e" name=6de=addr" class="sref">ad6r69sref">orig.low_6>">sc6>->ad7r70sref">orig 332static  320           23"  id="L304" clas23" c#L3&ref=:&ref=low_7 1ref="+c7d>(hi_sh="+c" id="L335" cla1 href="+code=fet331") be.c#L325" id="L325" class="line" name=7 2ref="+c7d"+code=pt_regs" class="7ss="s70_regs * 320           23"  id="L304" clas23" c#L3] = 3L323" id="L3itfield>&ref=\0&ref=low_7         7
low_7 4       7
293"> 293{         7_FETC704            a>->dprm =  320           1" class="line" nam1" c);
<>342" class="line"rin/trace_p1" class="line" namfin/trace_p1" c2"> 33" class="line"1 href="+code=fet331")ref="+code=low_shift" class="sref">low_7 6_FUNCS"7chref="+code=addr" class7(70a>)          ="+c!" id="L335" clapar" id="L304" claspar" 311> 320           1" class="line" nam1" c);
<) be.c#L325" id="L325" class="line" name=7 7_FUNCS"7cegs, & 33L323" id="L3itfield>"Unsupporaed3    : &re7;s\n"low_7 8_FUNCS"7ce=addr" class="sref">ad7f_fet70sref">orig. ref="+code=low_shift" class="sref">low_7g9size->orig 320           =ffsetlass="line" namoffset2"> " i5" id="L335" cla255"s="line" name="Liza>-&gref="+code=low_shift" class="sref">low_7>1ref="+c7hi_sh5" id="L335" cla255"s="line" name="Liza>-&g +342" class="line"par" id="L304" claspar" 311> 320           1" class="line" nam1" c);
<> 320           255"s="line" name="Liza>-&gref="+code=low_shift" class="sref">low_7>2ref="+c7>orig. L342" class="line"pars"sref">_ar" id="L304" claspars"sref">_ar"2"> 332static  320           1" class="line" nam1" c);
 320           f                    href="ke7" cis_return2"> 9 3 id="L335" clais_a>
7" cis_a>
low_7>        7 L 320= 0p;hi_shift; href="+code=daretlass="line" namret2"> L342" class="line"__pars"sbitfieldsref">_ar" id="L304" clas__pars"sbitfieldsref">_ar"2"> 3d="L330" class=1 href="+code=fet331" 320           1" class="line" nam1" c);
 320           f                    href="kel=ef="+code=low_shift" class="sref">low_7>6_FUNCS"7_param" class="sref">der7f_fet71a>)  ef="+code=low_shift" class="sref">low_7a_size   320= 0l4be.c#L325" id="L325" class="line" name=7a8sizeorig. 320           f    _255"s="line" name="f    _255" 311.           fbol" class="ssref">dmbL342" class="line"get_f    _255"_"> 323 323 332static  320           1" class="line" nam1" c);
 320           f                    href="ke.           fbol" class="ssref">dmbl=ef="+code=low_shift" class="sref">low_7>data7>hi_shift;" id="L335" cla))
" id="L304" claspar" 311> 320           f    _255"s="line" name="f    _255" 311.           race/trace_probe.c#L321" idL3432static  320           f                    href="ke.           race/trace_probe.c#L321" id=ef="+code=low_shift" class="sref">low_7>1ref="+c7hi_sha>->        7
 ref="+code=low_shift" class="sref">low_7>H_FUNCS"7}
-> 327<72a>->7>f" class7struct 
_sizef7tch_p72/a>  =nass="sref">bitfieobe.cref">_conflict_fields  _conflict_fields   3constashift5" id="L335" cla  8size        unsigned cha7     72sref">orig.bitfieref">_ar" id="L304" claspef">_ar"2"> 35" id="L335" claar"sC_NAME(bitfienar" id="L304" clasnar" 311)e.c#L325" id="L325" class="line" name=7>9size        unsigned char 7     72     be.c#L325" id="L325" class="line" name=7hift;7hi_sh=nass="sref">bitfieiame="L332">7" ci2"> ref="+code=low_shift" class="sref">low_7h->7;
 *7" ci2"> L34d=ss="sref">bitfieiame="L332">7" ci2">  <Ls="sref">bitfieARRAY_SIZEame="L332">7" cARRAY_SIZE2"> 332static (dmbl=ss="sref">bitfieiame="L332">7" ci2"> ++)e.c#L325" id="L325" class="line" name=7ct 7t_regs * 332static (dmb[d="L330" class=iame="L332">7" ci2"> ]-&g L3= 0)e.c#L325" id="L325" class="line" name=7cH_FUNCS"7de=data" class="sref">da7a734                            returns1ref="+code=low_shift" class="sref">low_7ne" name=7L334"> 334{         7     73a>->7nf" class7s="sref">bprm = 7" ci2"> L34d=ss="sref">bitfieiame="L332">7" ci2">  <Ls="sref">bitfienar" id="L304" clasnar" 311=ss="sref">bitfieiame="L332">7" ci2"> ++)e.c#L325" id="L325" class="line" name=7c_sizeb7f73/a>        if (! 332static (7" ci2"> ].             regs, &orig.low_7n9sizebu7)73e.c#L288" id="L288" class="line" name="L2887prm-&7t;hi_shreturnsd=ef="+code=low_shift" class="sref">low_7rm-&g7;-> 341        } 7     74bol 7 bitfieobe.cref">_upL32>_ar" id="L304" clasobe.cref">_upL32>_ar"2"> 3m" class="sref">bitfieref">_ar" id="L304" claspef">_ar"2"> 35" id="L335" claar" id="L304" clasar" 311)e.c#L325" id="L325" class="line" name=7rH_FUNCS"7
 343hi_sh="+code=data" classCHECK_ce/traFUNCSlass="line" namCHECK_ce/traFUNCS2"> 332static  320           f                    href="ke.           fbol" class="ssref">dmbl)e.c#L325" id="L325" class="line" name=7rf" class7"sref">DEFINE_BASIC_FETC7_FUNC74a>)                             upL32>_bitfieldsld_fet))
 332static  320           f                    href="ke.           race/trace_probe.c#L321" idl=ef="+code=low_shift" class="sref">low_7"a href="7s="sref">s="sref">dest = <74/a>        if href="+code=data" classCHECK_ce/traFUNCSlass="line" namCHECK_ce/traFUNCS2"> 332static  320           f                    href="ke.           fbol" class="ssref">dmbl)e.c#L325" id="L325" class="line" name=7r8size;
orig._dee/t_ld_fet))
 332static  320           f                    href="ke.           race/trace_probe.c#L321" idl=ef="+code=low_shift" class="sref">low_7"9size 332static  320           f                    href="ke.           fbol" class="ssref">dmbl)e.c#L325" id="L325" class="line" name=7ffset7
hi_shift;" id="L335" claupL32>_race/trcach ame="L332">7" cupL32>_race/trcach 2"> 332static  320           f                    href="ke.           race/trace_probe.c#L321" idl=ef="+code=low_shift" class="sref">low_7 href="+c7de=symbol_cache" class="7ref">751"srea>-> 7="+code=strlen" class="s7ef">s753regsd="L3s="sref">bitfieobe.cref">_fre sref">_ar" id="L304" clasobe.cref">_fre sref">_ar"2"> 3m" class="sref">bitfieref">_ar" id="L304" claspef">_ar"2"> 35" id="L335" claar" id="L304" clasar" 311)e.c#L325" id="L325" class="line" name=7fH_FUNCS"7 name="L253"> 253   7     753" idbe.c#L325" id="L325" class="line" name=7f> 343hi_sh="+code=data" classCHECK_ce/traFUNCSlass="line" namCHECK_ce/traFUNCS2"> 332static  320           f                    href="ke.           fbol" class="ssref">dmbl)e.c#L325" id="L325" class="line" name=7ff" class7lass="sref">symbol_cache7/a>),75a>)                             fre sbitfieldsld_fet))
 332static  320           f                    href="ke.           race/trace_probe.c#L321" idl=ef="+code=low_shift" class="sref">low_7 a href="7" class="line" name="L257"> 2575/a>        if href="+code=data" classCHECK_ce/traFUNCSlass="line" namCHECK_ce/traFUNCS2"> 332static  320           f                    href="ke.           fbol" class="ssref">dmbl)e.c#L325" id="L325" class="line" name=7f8size 257   7     75sref">orig.           fre sdee/t_ld_fet))
 332static  320           f                    href="ke.           race/trace_probe.c#L321" idl=ef="+code=low_shift" class="sref">low_7 9size 332static  320           f                    href="ke.           fbol" class="ssref">dmbl)e.c#L325" id="L325" class="line" name=7a href="+7ode=sym" class="sref">sy7,76="sref">hi_shift;" id="L335" clafre srace/trcach ame="L332">7" cfre srace/trcach 2"> 332static  320           f                    href="ke.           race/trace_probe.c#L321" idl=ef="+code=low_shift" class="sref">low_7if (!sc<76mbol_cache *orig.7" ckfre 2"> 332static  320             low_7iest 7 name="L262"> 262   7     76_regs *7" ckfre 2"> 332static  320           23"  id="L304" clas23" c#L3)=ef="+code=low_shift" class="sref">low_7iH_FUNCS"7="kernel/trace/trace_pro7e.c#L763" ida>->off76a>->7pdate_sym7ol_cache" class="sref">u7date_76a>)  =nass="sref">bitfieobe.cref">_co" and id="L304" clasobe.cref">_co" and2"> 3constashift5" id="L335" clabu9" class="line" buf);
fbol" class="ssrecre32>fbc#L3)(=na,ashift5*l)e.c#L325" id="L325" class="line" name=7aa href="7;
origstatic  ref="+code=low_shift" class="sref">low_7;"L1e_pro7
bitfiear"c href="kernel/tar"cref" ref="+code=low_shift" class="sref">low_7"> 268( *772>orig. L34d=329" id="L329" class="line" name="L3297"est 7=data" class="sref">data7/a>, 77_regs * L3432static  332static  309      bu9" class="line" buf);
low_7rH_FUNCS"7L273"> 273{         7     774>)          ="+c!" id="L335" claar"v id="L304" clasar"v2"> )e.c#L325" id="L325" class="line" name=7ass="sref7>sc = hi_shift;returns-" id="L335" claENOMEM href="kernel/tENOMEMc#L3=ef="+code=low_shift" class="sref">low_7"date_sym7"+code=addr" class="sref7>addr77a>)  ef="+code=low_shift" class="sref">low_7"ing" cla7"+code=addr" class="sref7>addr77/a>        if="L3 href="+code=daar"c href="kernel/tar"cref")ef="+code=low_shift" class="sref">low_7"ss="line7L277"> 277        el7e    77sref">orig.           retlass="line" namret2"> L342" class="line"cre32>fbol" class="ssrecre32>fbc#L33 href="+code=daar"c href="kernel/tar"cref" )=ef="+code=low_shift" class="sref">low_7""L1e_pro7)orig7" car"v_fre c#L33 href="+code=daar"v id="L304" clasar"v2"> )=ef="+code=low_shift" class="sref">low_7 H_symbol7ass="sref">DEFINE_BASIC_7ETCH_78mbol_cache *DEFINE_F7TCH_s782>orig. ref="+code=low_shift" class="sref">low_7 ef="+cod7sref">DEFINE_FETCH_symbo7(78be.c#a>-> 284-&ga href="+code=bitfield"WRITE_BUFSIZEame="L332">7" cWRITE_BUFSIZE>orig<4096L343" id="L343" class="line" name="L347gdate_sym7"> 285struct )  ef="+code=low_shift" class="sref">low_7g;f7tch_p78/a>  32static bitfieobe.cref">_ref">s_writa href="+code=scobe.cref">_ref">s_writa2"> 3m" class="sref">bitfiefilclass="line" namfilc);
<>5" id="L335" clafilclass="line" namfilc);
<,aconstashift" id="L335" cla__usea href="+code=fe__usea);
<>5" id="L335" clabuffea href="+code=febuffea);
<,ef="+code=low_shift" class="sref">low_7gss="line7 287        long    7     78sref">orig.bitfiecoun1 href="+code=fecoun1ref"5" id="L335" clapposC_NAME(low_7g"L1e_pro7fbol" class="ssrecre32>fbc#L3)(=na,ashift5*l)e.c#L325" id="L325" class="line" name=7> 2887;
H_symbol7a>(hi_shshift5" id="L335" clakbu9" class="line" kbuf);
 ref="+code=low_shift" class="sref">low_7>        7="+code=pt_regs" class="7ref">79_regs *bitfieretlass="line" namret2"> L34d=329" id="L329" class="line" name="L3297>ef="+cod7de=data" class="sref">da7a79_regs *bitfiedonclass="line" namdonc2"> L34d=329" id="L329" class="line" name="L3297>_size 293{         7     794            3 id="L335" claiiza_1 href="+code=fe2iza_1c#L33s="sref">bitfie255"s="line" name="Liza>-&gref="+code=low_shift" class="sref">low_7>ss="sref7sref">dprm = ->7>ame="L287 href="+code=addr" class7"sref79a>)          " id="L335" clakbu9" class="line" kbuf);
 3+code=bitfield"WRITE_BUFSIZEame="L332">7" cWRITE_BUFSIZE>ori9"> 309      GFP_KERNE"L2352_kprss="s=GFP_KERNE"5" c)ref="+code=low_shift" class="sref">low_7>;, &ss="line7de=addr" class="sref">ad7r79sref">orig.low_7>">sc7>ad8r80sref">orig L<Ls="sref">bitfiecoun1 href="+code=fecoun1ref"l4be.c#L325" id="L325" class="line" name=8 1ref="+c8d>(hi_shift;s="sref">bitfie255"s="line" name="Liza>-&gL342" class="line"coun1 href="+code=fecoun1ref"L- " id="L335" cladonclass="line" namdonc2"> =ef="+code=low_shift" class="sref">low_8 2ref="+c8d"+code=pt_regs" class="8ss="s80bol *7" cWRITE_BUFSIZE>ori)e.c#L325" id="L325" class="line" name=8 4       8
293"> 293{         8_FETC804                            s="sref">bitfie255"s="line" name="Liza>-&gL342" class="line"WRITE_BUFSIZEame="L332">7" cWRITE_BUFSIZE>orig-s1ref="+code=low_shift" class="sref">low_8 5_FUNCS"8cref">dprm = ->8 6_FUNCS"8chref="+code=addr" class8(80a>)                  ="+c" id="L335" clacopy_from_usea href="+code=fecopy_from_usea2"> 3+code=bitfield"kbu9" class="line" kbuf);
            255"s="line" name="Liza>-&g l4be.c#L325" id="L325" class="line" name=8 7_FUNCS"8cegs, &bitfieretlass="line" namret2"> L34-" id="L335" claEFAULT href="kernel/tEFAULT2"> =ef="+code=low_shift" class="sref">low_8 8_FUNCS"8ce=addr" class="sref">ad8f_fet80sref">orig.bitfieoutlass="line" namout2"> ref="+code=low_shift" class="sref">low_8g9sizehi_shift;" id="L335" clakbu9" class="line" kbuf);
<[d="L330" class=255"s="line" name="Liza>-&g] = 3L323" id="L3itfield>&ref=\0&ref=low_8>1ref="+c8hi_shift;s="sref">bitfie1mp href="+code=fetmp2"> L342" class="line"itfcha href="+code=feitfcha2"> 332static low_8>2ref="+c8>        8 l4be.c#L325" id="L325" class="line" name=8>H_FUNCS"8
  = 3L323" id="L3itfield>&ref=\0&ref=low_8>5_FUNCS"8}
hi_shift;ift;s="sref">bitfie255"s="line" name="Liza>-&gL342" class="line"1mp href="+code=fetmp2">  - " id="L335" clakbu9" class="line" kbuf);
low_8>6_FUNCS"8_param" class="sref">der8f_fet81a>)                  }f href="+code=data" classdonclass="line" namdonc2"> L+a3 id="L335" cla255"s="line" name="Liza>-&gL lt;Ls="sref">bitfiecoun1 href="+code=fecoun1ref"l4be.c#L325" id="L325" class="line" name=8a_sizebitfiepr_warnield_NAME( 33L323" id="L3itfield>"Lef="length is/tootaorig.7" cWRITE_BUFSIZE>ori)ref="+code=low_shift" class="sref">low_8>9sizebitfieretlass="line" namret2"> L34-" id="L335" claEINVA"L2352_kprss="s=EINVA"2"> ref="+code=low_shift" class="sref">low_8>data8>hi_shift;;;;;;;;;goto s="sref">bitfieoutlass="line" namout2"> ref="+code=low_shift" class="sref">low_8>1ref="+c8hi_shift;a>-> L+342" class="line"ii5"s="line" name="Liza>-&gref="+code=low_shift" class="sref">low_8>        8

H_FUNCS"8}
bitfie1mp href="+code=fetmp2"> L342" class="line"itfcha href="+code=feitfcha2"> 332static low_8>5_FUNCS"8s="line" name="L324"> 328<82a>->8>f" class8struct  lt;8>_sizef8tch_p82/a>        if (!  = 3L323" id="L3itfield>&ref=\0&ref=low_8>8size        unsigned cha8     82ernel/trace/trace_probe.="L33_FE="line" nam8>9size        unsigned char 8     82                                retlass="line" namret2"> L342" class="line"obe.cref">_co" and id="L304" clasobe.cref">_co" and2"> 3+code=bitfield"kbu9" class="line" kbuf);
fbol" class="ssrecre32>fbc#L3)ref="+code=low_shift" class="sref">low_8hift;8hi_shift;="L3 href="+code=daretlass="line" namret2"> lt;8h->8;
hi_shift;;;;;;;;;goto s="sref">bitfieoutlass="line" namout2"> ref="+code=low_shift" class="sref">low_8CH_bitfie8d( *->83_regs * L342" class="line"donclass="line" namdonc2"> =ef="+code=low_shift" class="sref">low_8cH_FUNCS"8de=data" class="sref">da8a83be.c#L343" id="L343" class="line" name="L348ne" name=8L334"> 334{         8     83a>-&gs="sref">bitfieoutlass="line" namout2"> :L343" id="L343" class="line" name="L348nf" class8s="sref">bprm = 7" ckfre 2"> 332static low_8c_sizeb8f83amlow_8c8sizeregs, &orig ref="+code=low_shift" class="sref">low_8n9sizebu8)83e.c#La>->
The original LXR softwareaby th="+code=bithttp://sourceforge.net/projects/lxr">LXR co" unity);
lxr@+coux.no);
<.
lxr.+coux.no kindly host"daby +code=bithttp://www.redpill-+copro.no">Redpill Lcopro AS);