linux/kernel/panic.c
<<
>>
Prefs
   1/*
   2 *  linux/kernel/panic.c
   3 *
   4 *  Copyright (C) 1991, 1992  Linus Torvalds
   5 */
   6
   7/*
   8 * This function is used through-out the kernel (including mm and fs)
   9 * to indicate a major problem.
  10 */
  11#include <linux/debug_locks.h>
  12#include <linux/interrupt.h>
  13#include <linux/kmsg_dump.h>
  14#include <linux/kallsyms.h>
  15#include <linux/notifier.h>
  16#include <linux/module.h>
  17#include <linux/random.h>
  18#include <linux/reboot.h>
  19#include <linux/delay.h>
  20#include <linux/kexec.h>
  21#include <linux/sched.h>
  22#include <linux/sysrq.h>
  23#include <linux/init.h>
  24#include <linux/nmi.h>
  25#include <linux/dmi.h>
  26
  27#define PANIC_TIMER_STEP 100
  28#define PANIC_BLINK_SPD 18
  29
  30int panic_on_oops = CONFIG_PANIC_ON_OOPS_VALUE;
  31static unsigned long tainted_mask;
  32static int pause_on_oops;
  33static int pause_on_oops_flag;
  34static DEFINE_SPINLOCK(pause_on_oops_lock);
  35
  36int panic_timeout;
  37EXPORT_SYMBOL_GPL(panic_timeout);
  38
  39ATOMIC_NOTIFIER_HEAD(panic_notifier_list);
  40
  41EXPORT_SYMBOL(panic_notifier_list);
  42
  43static long no_blink(int state)
  44{
  45        return 0;
  46}
  47
  48/* Returns how long it waited in ms */
  49long (*panic_blink)(int state);
  50EXPORT_SYMBOL(panic_blink);
  51
  52/*
  53 * Stop ourself in panic -- architecture code may override this
  54 */
  55void __weak panic_smp_self_stop(void)
  56{
  57        while (1)
  58                cpu_relax();
  59}
  60
  61/**
  62 *      panic - halt the system
  63 *      @fmt: The text string to print
  64 *
  65 *      Display a message, then perform cleanups.
  66 *
  67 *      This function never returns.
  68 */
  69void panic(const char *fmt, ...)
  70{
  71        static DEFINE_SPINLOCK(panic_lock);
  72        static char buf[1024];
  73        va_list args;
  74        long i, i_next = 0;
  75        int state = 0;
  76
  77        /*
  78         * Disable local interrupts. This will prevent panic_smp_self_stop
  79         * from deadlocking the first cpu that invokes the panic, since
  80         * there is nothing to prevent an interrupt handler (that runs
  81         * after the panic_lock is acquired) from invoking panic again.
  82         */
  83        local_irq_disable();
  84
  85        /*
  86         * It's possible to come here directly from a panic-assertion and
  87         * not have preempt disabled. Some functions called from here want
  88         * preempt to be disabled. No point enabling it later though...
  89         *
  90         * Only one CPU is allowed to execute the panic code from here. For
  91         * multiple parallel invocations of panic, all other CPUs either
  92         * stop themself or will wait until they are stopped by the 1st CPU
  93         * with smp_send_stop().
  94         */
  95        if (!spin_trylock(&panic_lock))
  96                panic_smp_self_stop();
  97
  98        console_verbose();
  99        bust_spinlocks(1);
 100        va_start(args, fmt);
 101        vsnprintf(buf, sizeof(buf), fmt, args);
 102        va_end(args);
 103        printk(KERN_EMERG "Kernel panic - not syncing: %s\n",buf);
 104#ifdef CONFIG_DEBUG_BUGVERBOSE
 105        /*
 106         * Avoid nested stack-dumping if a panic occurs during oops processing
 107         */
 108        if (!test_taint(TAINT_DIE) && oops_in_progress <= 1)
 109                dump_stack();
 110#endif
 111
 112        /*
 113         * If we have crashed and we have a crash kernel loaded let it handle
 114         * everything else.
 115         * Do we want to call this before we try to display a message?
 116         */
 117        crash_kexec(NULL);
 118
 119        /*
 120         * Note smp_send_stop is the usual smp shutdown function, which
 121         * unfortunately means it may not be hardened to work in a panic
 122         * situation.
 123         */
 124        smp_send_stop();
 125
 126        kmsg_dump(KMSG_DUMP_PANIC);
 127
 128        atomic_notifier_call_chain(&panic_notifier_list, 0, buf);
 129
 130        bust_spinlocks(0);
 131
 132        if (!panic_blink)
 133                panic_blink = no_blink;
 134
 135        if (panic_timeout > 0) {
 136                /*
 137                 * Delay timeout seconds before rebooting the machine.
 138                 * We can't use the "normal" timers since we just panicked.
 139                 */
 140                printk(KERN_EMERG "Rebooting in %d seconds..",  14
  142/a>                i,= 0;
i,<=a href="kernel/panic.c#L33" id="L33" class="line" name="L33")* W100;
i,&+ PANIC_TIMER_STEP  {
  14                <       ptouch_nmi_watchdo"/a>();
  144/a>                <       i,≶= 1a href="+code=i_next" class="sref">i_next  {
  15        r               <       i,&+ panic_blink state =^ 1)

  14                <       <       i_next = 0a href="+code=p" class="sref">i,&+ 3600 /PANIC_BLINK_SPD 
  147/a>                <       <
  14                <       Pmelay./a> PANIC_TIMER_STEP  
  14                <
  15         
  15        panic_timeout &!=0) {
  152/a>                /*
  13 ******************This will pot be ha leanurebooti,with sverything /span>
  14 ******************Thutding iown .  Bt sf (here is nacharce wof/span>
  15         **********Tebooting the mystem
  15         **********
  157/a>                veersgencyresuart"/a>();
  18         
  159/a>#ifdef v__panrc__/a>
  16         
  161/a>                staop__endbled./a> 
  162/a>                /*< Mak myre che usuercan&actiuallypreessStop -A (L1-A)**
  16                staop__endbled./a> = 01
  164/a>                printk(KERN_EMERG "RPeessStop -A (L1-A)*toreturn 0torhe uootiprocmn",;
  165/a>         
  16  16#in sefine ./a>(CONFIG_DS30"/a>)
  168/a>         
  16                crlledr/a> 
  17
  171/a>                crlledr/a> = 0(nsigned long )a href="+code=C__builing_eturn _addess" class="sref">o__builing_eturn _addess"/a>(0);
  172/a>                sesabled._ait /a>(crlledr/a> ;
  13        <
  14 endif
  15        ia href="+code=Kocal_irq_dndbled class="sref">cocal_irq_dndbled/a>();
  17         ore(i,= 0;
<
i,&+ PANIC_TIMER_STEP  {
  177/a>                ptouch_softocksup_watchdo"/a>();
  17                i,≶= 1a href="+code=i_next" class="sref">i_next  {
  17                <       i,&+ panic_blink state =^ 1)

  18                <       i_next = 0a href="+code=p" class="sref">i,&+ 3600 /PANIC_BLINK_SPD 
  181/a>                <
  182/a>                Pmelay./a> PANIC_TIMER_STEP  
  18        <
  14

  18
  16EXPORT_SYMBOL(panic_/a>  
  18
  18
  19tet({
  19        tu       a href="+code=but  class="sref">sbi;
  191/a>         har <  stru"/a>;
  192/a>         har <  salse;/a>;
  13<}
  19
  15 tatic chnst ctriuc tet({a href="+code=stt"" class="sref">ott""/a>([]= 0
  16         {{a href="+code=sAINT_DPROPRIETARY_MODUL" class="sref">TAINT_DPROPRIETARY_MODUL"/a> ,     apan class="string">&q39;tPq39;t/span>,&q39;tGq39;t/span>, },  197/a>         {{a href="+code=sAINT_DFORCED_MODUL" class="sref">TAINT_DFORCED_MODUL"/a> ,          apan class="string">&q39;tFq39;t/span>,&q39;t q39;t/span>, },  18        <{{a href="+code=sAINT_DUNSAFE_SM" class="sref">PAINT_DUNSAFE_SM"/a> ,             apan class="string">&q39;tSq39;t/span>,&q39;t q39;t/span>, },  19        <{{a href="+code=sAINT_DFORCED_RMMOD class="sref">TAINT_DFORCED_RMMOD/a> ,            pan class="string">&q39;tRq39;t/span>,&q39;t q39;t/span>, }, 120        <{{a href="+code=sAINT_DMACHNE_SCHEK" class="sref">DAINT_DMACHNE_SCHEK"/a> ,          apan class="string">&q39;tMq39;t/span>,&q39;t q39;t/span>, }, 121        <{{a href="+code=sAINT_DBAD_PAG" class="sref">TAINT_DBAD_PAG"/a> ,               apan class="string">&q39;tBq39;t/span>,&q39;t q39;t/span>, }, 122        <{{a href="+code=sAINT_DUSER class="sref">PAINT_DUSER/a> ,                   apan class="string">&q39;tUq39;t/span>,&q39;t q39;t/span>, }, 123        <{{a href="+code=sAINT_DIE" class="sref">TAINT_DIE),                   a pan class="string">&q39;tDq39;t/span>,&q39;t q39;t/span>, }, 1204/a>        <{{a href="+code=sAINT_DOVERRIDDEN_ACPI_TABL" class="sref">TAINT_DOVERRIDDEN_ACPI_TABL"/a>),   pan class="string">&q39;tAq39;t/span>,&q39;t q39;t/span>, }, 125        <{{a href="+code=sAINT_DWARN class="sref">TAINT_DWARN/a> ,                   apan class="string">&q39;tWq39;t/span>,&q39;t q39;t/span>, }, 120         {{a href="+code=sAINT_DCRA" class="sref">PAINT_DCRA"/a> ,                   apan class="string">&q39;tCq39;t/span>,&q39;t q39;t/span>, }, 1207/a>         {{a href="+code=sAINT_DFIRMWARE_WORKAROUND class="sref">TAINT_DFIRMWARE_WORKAROUND/a> ,     pan class="string">&q39;tIq39;t/span>,&q39;t q39;t/span>, }, 120        <{{a href="+code=sAINT_DOOT_MODUL" class="sref">TAINT_DOOT_MODUL"/a> ,             apan class="string">&q39;tOq39;t/span>,&q39;t q39;t/span>, }, 129 }
 121
 121/**
 121 *      paintk_ainted_ -return 0astring to prereesnt ahe kernel (aintestati.
 123  
 124     q39;tPq39;t -rProainetary odule. ha befenloaded 
 125     q39;tFq39;t -rMdule. ha befenlforciblyloaded 
 126     q39;tSq39;t -rSM"with sPUs eot bdeigned lore(SM"
 121 *   q39;tRq39;t -rUuercforcd an odule. unoade
 121 * T q39;tMq39;t -rSstem
 121 * t q39;tBq39;t -rSstem
 120   t q39;tUq39;t -rUuerpance-efine .namughtne s.
 121   t q39;tDq39;t -rernel pha bops_d byfore /span>
 122   t q39;tAq39;t -rACPI(aile tverridede.
 123   t q39;tWq39;t -rTinteson warnng 
 122     q39;tCq39;t -rodule.sfrom derierrs/tatgng tre soaded 
 122     q39;tIq39;t -rWorkng treoun secvre ifirmwre sbu 
 122     q39;tOq39;t -rOut-of-tree odule. ha befenloaded 
 122 * /span>
 122 * T     he ttring tistverrwrittenly the 1ext
 122 * 
 120 onst char *printk_ainted_/a>( 121

 123        static char buf[1a href="+code=bARRAY_SIZ" class="sref">TARRAY_SIZ"/a>(ott""/a>() +sizeof("RTinted_: quot;,; +s1;
 123  1234/a>        tainted_mask; {
 123        r        har *o;
 126                i,
 123
 123                o;= 0a href="+code=puf" class="sref">buf[ +sa href="+code=c"rintf" class="sref">vsrintf(buf, sapan class="string">"RTinted_: quot;,;
 123                i,= 0;
i,<=a href="kernel/pARRAY_SIZ" class="sref">TARRAY_SIZ"/a>(ott""/a>()
i,++ {
 120                <        hnst ctriuc tet({te/a>,= 0amp;ott""/a>([a href="+code=i" class="sref">i,;
  241/a>                <<<<<<<<<o;++= 0a href="+code=pest_tut  class="sref">sest_tut /a>(te/a>,-lg;=a href="+code=but  class="sref">sbi;,0amp;tainted_mask; {?  242/a>                <<<<<<<<<<<<<<<<<<<<<<<<te/a>,-lg;=a href="+code=btru" class="sref">stru"/a>; :te/a>,-lg;=a href="+code=balse; class="sref">salse;/a>;
  24                <
  244/a>                <o;= 0;
  25        r}else.  24                vnprintf(buf, sizeof(buf), "RNot ainted_quot;,;
  27
  24         eturn 0a href="+code=buf" class="sref">buf)
  24}
  25
  25 nt test_taint(pala"/a>),  252/a> 
  253/a>         eturn 0a href="+code=best_tut  class="sref">sest_tut /a>(pala"/a>),0amp;tainted_mask; 
  25

  25EXPORT_SYMBOL(test_taint( 
  25
  257/a> nsigned long tge_taint"/a>(  28 
  259/a>         eturn 0a href="+code=beinted_mask" class="sref">tainted_mask;
  26 
  26
  262/a> oid taddtaint"/a>(pala"/a>),  26 
  264/a>         span class="comment">/*
  25 *       << Cn't utrus ahe kntedgrityof phe kernel (anymor.
  26 *       << We do't uall tirectly fdebuglock
  27 *       << s noth neessiariy fserious enugh.thopset ops_in_progress
  28 *       << Als we want to ckeep uplocakdep ore(tatgng /out-of-tree/span>
  26         * fdevelopmnt an dposst-warnng uale.
  27         * 
  21        stwitch(pala"/a>),{
  272/a>         ale.{a href="+code=sAINT_DCRA" class="sref">PAINT_DCRA"/a> :  23        TAINT_DOOT_MODUL"/a> :  24        lale.{a href="+code=sAINT_DWARN class="sref">TAINT_DWARN/a> :  25        iale.{a href="+code=sAINT_DFIRMWARE_WORKAROUND class="sref">TAINT_DFIRMWARE_WORKAROUND/a> :  27                  27
  27         default:  27                T__debuglock(<)
  28                <       printk(KERN_EWARNIN"/a>  apan class="string">"Risableng uock idebuggng tdueto ckenel (ainten",;
  281/a>         
  282/a>   23        ssettut /a>(pala"/a>),0amp;tainted_mask; 
  24

  28EXPORT_SYMBOL(taddtaint"/a>( 
  28
  28
tatic coid cpin_tmsc"/a>(omsc""/a>),  28 
  28         nt i,
  29
  291/a>         ore(i,= 0;
i,<=a href="kernel/pmsc"" class="sref">omsc""/a>)
i,++ {
  292/a>                ptouch_nmi_watchdo"/a>();
  29                Pmelay./a> <)

  294/a>         
  25 
  29
  29 *
  29 * TItjust phappen theat ops_int"er()an dpops_inxit()ane isdnt"iall y/span>
  29 * timpleent"ed..
 130   
 131 tatic coid Pdo_ops_int"erinxit/a>( 1302/a> 
 133        oala""/a>,
 1304/a>        cpin_tcout"er/a>,
 130
 130         f (!prnuse_on_ops_/a>), 1307/a>                 130
 139         a href="+code=stin_tock irq_sav; class="sref">stin_tock irq_sav;/a>(prnuse_on_ops_tock /a>),0a href="+code=tala"" class="sref">oala""/a>,

 1310/a>         f (!a href="+code=panuse_on_ops_tala" class="sref">panuse_on_ops_tala"/a>,= =0) {
 1311/a>                /*< his wCPUmay notwpaintkthe &ops pessage?  
 1312/a>                panuse_on_ops_tala"/a>,= 01
 131        <
else.{
 1314/a>                /*< W 1exd to wtatl this bCPUm 
 131        r        f (!cpin_tcout"er/a>, {
 131                <       /*< his wCPUmget
 1317/a>                <       cpin_tcout"er/a>,= 0a href="+code=panuse_on_ops_ class="sref">prnuse_on_ops_/a>)
 131                <        131                <       <       ptin_tunock /a>(prnuse_on_ops_tock /a>)

 132                <       <       cpin_tmsc"/a>(KMSEC_PR_STE"/a>)

 1321/a>                <<<<<<<<<       ptin_tock /a>(prnuse_on_ops_tock /a>)

 1322/a>                <<<<<<<<<}whicle (--a href="+code=ptin_tcout"er class="sref">cpin_tcout"er/a>, 
 132                <       panuse_on_ops_tala"/a>,= 0;
 1324/a>                <
else.{
 132        r               /*< his wCPUmait s ore(a differeteson?  
 132                <       cpin_tcout"er/a>, {
 1327/a>                <       <       ptin_tunock /a>(prnuse_on_ops_tock /a>)

 132                <       <       cpin_tmsc"/a>(<)

 132                <       <       ptin_tock /a>(prnuse_on_ops_tock /a>)

 133                <       <
 1331/a>                <
 133        s
 133        stin_tunock irq_esuaor;/a>(prnuse_on_ops_tock /a>),0a href="+code=tala"" class="sref">oala""/a>,

 133

 133
 133 *
 137  * Rturn 0truesf (heruall ng tCPUms nallowd to waintktops_-relaed_ info
 138  < his ws nacbit racy.
 139   
 130 nt oops_tmay_aintk/a>(  34

  342/a>         eturn 0a href="+code=banuse_on_ops_tala" class="sref">panuse_on_ops_tala"/a>,= =0)
  34 
  34
  34 *
  34    Clledd
  34  * anthing .  Ifthis bis(herufirsttCPUmo wops_,an dpit#39;t bops_ng the mfirst/span>
  34  < imeothe n letritwaioced 
  34   /span>
  35   this ws nall ndbled.ly the 1anuse_on_ops_ckenel (ootipopion.<  We donall/span>
  35   this bo wenyre cheat ops_es do't uscroll of (heruscree.<  It ha bher/span>
  35   tside-effectof pprevet"ng tlaedr-ops_ng tPUs erom dmuckng tup(herudisplay,/span>
  33 * thoo
  34 * /span>
  35   TItjurn  boutcheat heruCPUmahichms nallowd to waintktendstup(anusng tore/span>
  35  * heruright duraion.,
  35  * oce win ops_int"er(), oce win ops_inxit()
  35  <
  359/a> oid oops_tet"er/a>,  36 
  361/a>         s href="+code=Ctracng _off class="sref">Ttracng _off/a>();
  362/a>         apan class="comment">/*< cn't utrus ahe kntedgrityof phe kernel (anymor.: <
  36        Tdebuglock(<)
  364/a>         s href="+code=pdo_ops_int"erinxit class="sref">Pdo_ops_int"erinxit/a>(<)
  36 
  36
  37 *
  38 ** 64-bit randm dID ore(ops_es:/span>
  36  <
  37tu64/a>  a href="+code=pops_ii_ class="sref">pops_ii_/a>)
  37
  372/a> tatic cnt pinit_ops_ii_/a>,  37 
  34        lf (!pops_ii_/a>)
  37        r        a href="+code=pge_trandm _byte" class="sref">oge_trandm _byte"/a>(pops_ii_/a>) sizeof(pops_ii_/a>)
)
  37         lse.  377/a>                pops_ii_/a>)++
  37
  379/a>         eturn 0)
  38 
  381/a> a href="+code=plaed_initall  class="sref">plaed_initall /a>(pinit_ops_ii_/a>,)
  382/a>   33 oid orintk_ops_int_masrker/a>,  34

  38        ia href="+code=Kinit_ops_ii_ class="sref">pinit_ops_ii_/a>,<)
  386/a>        ia href="+code=Krintk" class="sref">printk(KERN_EWARNIN"/a>  apan class="string">"R---[tend trace q397;016llx ]---n",,  387/a>                <(nsigned long long )a href="+code=Cops_ii_ class="sref">pops_ii_/a>)

  38 
  38   39 *
  39   tClledd
  39   tcvrething ./span>
  39 * 
  394/a> oid Pops_inxit/a>,  35 
  396/a>        ia href="+code=Kdo_ops_int"erinxit class="sref">Pdo_ops_int"erinxit/a>(<)
  397/a>         a href="+code=printk_ops_int_masrker class="sref">orintk_ops_int_masrker/a>,<)
  38        okmsg_dump/a>(KEMSG_DUMP_OOPS/a>)

  39}
 140
 141 #ifdefKWAT_DWARN_ON_SLOWPATH/a>
 1402/a> taiuc oslowpath_ar""/a>  
 143        Pfmt/a>)
 1404/a>         s href="+code=pva_list class="sref">Pva_list/a>  a href="+code=par"" class="sref">oar""/a> 
 140
}
 140
 140
tatic coid owarn_slowpath_ommeon/a>(sfil;/a>) snt plne"/a>) soid <oall er/a>)  140                <       <       < nsigned la href="+code=baint" class="sref">teint"/a>(,ctriuc oslowpath_ar""/a>  oar""/a> 
 149 
 1410/a>         onst char *pboar_/a> 
 141
 1412/a>         a href="+code=Krintk" class="sref">printk(KERN_EWARNIN"/a>  apan class="string">"R------------[ cut iere ]------------n",;
 141        printk(KERN_EWARNIN"/a>  apan class="string">"RWARNIN": at q397;s:q397;d q397;pS()n",,0a href="+code=tail; class="sref">sfil;/a>) sa href="+code=sine" nlass="sref">plne"/a>) sa href="+code=fall er class="sref">oall er/a>);
 1414/a>         s href="+code=pboar_ class="sref">pboar_/a> = 0a href="+code=pdmi_ge_tsstem<_info class="sref">Pdmi_ge_tsstem<_info/a>(PDMIDPRODUCT_NAME/a>);
 141        rf (!a href="+code=pboar_ class="sref">pboar_/a> 
 141                printk(KERN_EWARNIN"/a>  apan class="string">"RHar_wre same=: q397;sn",,0a href="+code=tboar_ class="sref">pboar_/a> 

 141
 141         f (!a href="+code=par"" class="sref">oar""/a> 
 141                pvrintk(oar""/a> -lg;=a href="+code=bamt class="sref">Pfmt/a>),0a href="+code=tar"" class="sref">oar""/a> -lg;=a href="+code=bar"" class="sref">oar""/a> 

 142
 1421/a>         s href="+code=Crintk_odule.s class="sref">orintk_odule.s/a>,<)
 1422/a>         a href="+code=Kdump_tatk  class="sref">pdump_tatk /a>,<)
 142        orintk_ops_int_masrker/a>,<)
 1424/a>         s href="+code=paddtaint" class="sref">taddtaint"/a>(teint"/a>()
 142 
 142
 1427/a> oid Pwarn_slowpath_amt/a>(sfil;/a>) snt plne"/a>) sonst char *Pfmt/a>), ...
 142 
 142         triuc oslowpath_ar""/a>  a href="+code=par"" class="sref">oar""/a> 
 143
 1431/a>         s href="+code=Car"" class="sref">oar""/a> .a href="+code=ffmt class="sref">Pfmt/a>)= 0a href="+code=pfmt class="sref">Pfmt/a>)
 1432/a>         a href="+code=Kva_tatrt class="sref">Pva_tatrt/a>(oar""/a> .a href="+code=far"" class="sref">oar""/a> ,0a href="+code=tamt class="sref">Pfmt/a>))
 143        owarn_slowpath_ommeon/a>(sfil;/a>) sa href="+code=sine" nlass="sref">plne"/a>) sa href="+code=f__builtin_eturn _addess< nlass="sref">p__builtin_eturn _addess(<0)  1434/a>        <<<<<<<<<<<<<<<<<<<<<TAINT_DWARN/a> ,0amp;oar""/a> 

 143        ia href="+code=Kva_nt_ class="sref">Pva_nt_/a>(oar""/a> .a href="+code=far"" class="sref">oar""/a> 

 143<
 147EXPORT_SYMBOL(Pwarn_slowpath_amt/a>(

 143
 1439/a> oid twarn_slowpath_amttaint"/a>(sfil;/a>) snt plne"/a>)  140                <             nsigned la href="+code=baint" class="sref">teint"/a>(,const char *Pfmt/a>), ...
  44

  442/a>         triuc oslowpath_ar""/a>  a href="+code=par"" class="sref">oar""/a> 
  44   444/a>         s href="+code=par"" class="sref">oar""/a> .a href="+code=ffmt class="sref">Pfmt/a>)= 0a href="+code=pfmt class="sref">Pfmt/a>)
  44        ia href="+code=Kva_tatrt class="sref">Pva_tatrt/a>(oar""/a> .a href="+code=far"" class="sref">oar""/a> ,0a href="+code=tamt class="sref">Pfmt/a>))
  446/a>        ia href="+code=Kwarn_slowpath_ommeon class="sref">owarn_slowpath_ommeon/a>(sfil;/a>) sa href="+code=sine" nlass="sref">plne"/a>) sa href="+code=f__builtin_eturn _addess< nlass="sref">p__builtin_eturn _addess(<0)   447/a>                <       <     a href="+code=baint" class="sref">teint"/a>(,camp;oar""/a> 

  44        Pva_nt_/a>(oar""/a> .a href="+code=far"" class="sref">oar""/a> 

  44}
  45EXPORT_SYMBOL(twarn_slowpath_amttaint"/a>(

  45
  452/a> oid pwarn_slowpath_nul /a>(sfil;/a>) snt plne"/a>)
  45 
  454/a>         s href="+code=pwarn_slowpath_ommeon class="sref">owarn_slowpath_ommeon/a>(sfil;/a>) sa href="+code=sine" nlass="sref">plne"/a>) sa href="+code=f__builtin_eturn _addess< nlass="sref">p__builtin_eturn _addess(<0)   45        r               <<<<<TAINT_DWARN/a> ,0a href="+code=fNUL" class="sref">ENUL"/a>(

  45<
  45EXPORT_SYMBOL(pwarn_slowpath_nul /a>(

  45<#nt_if  45   46 #ifdefpCONFIG_CC_STACKPROTECTOR/a>   46
  46 *
  46 * tClledd
  46 * (gcc detectsconrrupion.of phe kon-tatk  cn&ary valu /span>
  45 * 
  46
oid p__tatk _chk_fai /a>(  47<
  46        ornic./a>("Rtatk -protector: Krnel (tatk  isconrrupid_ in: q397;pn",,  46                p__builtin_eturn _addess(<0)

  47 
  471/a> a href="+code=pXPORT_SYMBOL" class="sref">EXPORT_SYMBOL(p__tatk _chk_fai /a>(

  472/a>   47 #nt_if  47
  47ponre_param/a>(ornic./a>(,0a href="+code=frnic._imeoou" class="sref">trnic._imeoou"/a>) snt , 0644

  47 s href="+code=ponre_param class="sref">ponre_param/a>(prnuse_on_ops_/a>),0a href="+code=frnuse_on_ops_ class="sref">prnuse_on_ops_/a>),0nt , 0644

  47
  47
tatic cnt p__init/a>  a href="+code=pops_isturp class="sref">oops_isturp/a>(os/a>)
  47 
  480/a>         f (!os/a>)
  481/a>                EXINVA"/a>)
  482/a>         f (!ottrcmp/a>(os/a>), apan class="string">"Ranic.quot;,;
  43        <       prnic._on_ops_/a>)= 01
  484/a>         eturn 0)
  48 
  48 s href="+code=pearly_param class="sref">pearly_param/a>("Rops_quot;,,0a href="+code=tops_isturp class="sref">oops_isturp/a>(

  487/a> 
Te koriginal LXR softwre sy the 1a href="khttp://sourcforege.net/projects/lxr >LXR ommeunity/a>), his bexperient"al verson.oy ta href="kmai to:lxr@ineux.no">lxr@ineux.no/a> .
lxr.ineux.no kindly hostd.ly ta href="khttp://www.redpill-inepro.no">Redpill Lnepro AS/a>), providerof pLneuxconstul"ng tn dpoperaion.s services sice w1995.