NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/41659: missing splx(s) in ip_output in FAST_IPSEC code



>Number:         41659
>Category:       kern
>Synopsis:       missing splx(s) in ip_output in FAST_IPSEC code
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 01 14:35:00 +0000 2009
>Originator:     Wolfgang Stukenbrock
>Release:        NetBSD 5.0
>Organization:
Dr. Nagler & Company GmbH
        
>Environment:
        
        
System: NetBSD s012 4.0 NetBSD 4.0 (NSW-S012) #9: Fri Mar 13 12:31:52 CET 2009 
wgstuken@s012:/usr/src/sys/arch/amd64/compile/NSW-S012 amd64
Architecture: x86_64
Machine: amd64
>Description:
        In output processing for FAST_IPSEC the spl-level is raised to 
splsoftnet(), but not lowered in one case again.
>How-To-Repeat:
        not relevant
>Fix:
        just apply the following fix:

*** ip_output.c Sun Oct 12 13:15:54 2008
--- /tmp/ip_output.c-fixed      Wed Jul  1 16:28:46 2009
***************
*** 671,678 ****
        if (!ipsec_outdone(m)) {
                s = splsoftnet();
                if (inp != NULL &&
!                               IPSEC_PCB_SKIP_IPSEC(inp->inp_sp, 
IPSEC_DIR_OUTBOUND))
                        goto spd_done;
                sp = ipsec4_checkpolicy(m, IPSEC_DIR_OUTBOUND, flags,
                                &error, inp);
                /*
--- 671,680 ----
        if (!ipsec_outdone(m)) {
                s = splsoftnet();
                if (inp != NULL &&
!                               IPSEC_PCB_SKIP_IPSEC(inp->inp_sp, 
IPSEC_DIR_OUTBOUND)) {
!                       splx(s);
                        goto spd_done;
+               }
                sp = ipsec4_checkpolicy(m, IPSEC_DIR_OUTBOUND, flags,
                                &error, inp);
                /*
        

>Unformatted:
        
        


Home | Main Index | Thread Index | Old Index