linux_dsm_epyc7002/include
James Morris 134b0fc544 IPsec: propagate security module errors up from flow_cache_lookup
When a security module is loaded (in this case, SELinux), the
security_xfrm_policy_lookup() hook can return an access denied permission
(or other error).  We were not handling that correctly, and in fact
inverting the return logic and propagating a false "ok" back up to
xfrm_lookup(), which then allowed packets to pass as if they were not
associated with an xfrm policy.

The way I was seeing the problem was when connecting via IPsec to a
confined service on an SELinux box (vsftpd), which did not have the
appropriate SELinux policy permissions to send packets via IPsec.

The first SYNACK would be blocked, because of an uncached lookup via
flow_cache_lookup(), which would fail to resolve an xfrm policy because
the SELinux policy is checked at that point via the resolver.

However, retransmitted SYNACKs would then find a cached flow entry when
calling into flow_cache_lookup() with a null xfrm policy, which is
interpreted by xfrm_lookup() as the packet not having any associated
policy and similarly to the first case, allowing it to pass without
transformation.

The solution presented here is to first ensure that errno values are
correctly propagated all the way back up through the various call chains
from security_xfrm_policy_lookup(), and handled correctly.

Then, flow_cache_lookup() is modified, so that if the policy resolver
fails (typically a permission denied via the security module), the flow
cache entry is killed rather than having a null policy assigned (which
indicates that the packet can pass freely).  This also forces any future
lookups for the same flow to consult the security module (e.g. SELinux)
for current security policy (rather than, say, caching the error on the
flow cache entry).

Signed-off-by: James Morris <jmorris@namei.org>
2006-10-11 23:59:34 -07:00
..
acpi ACPI: Allow setting SCI_EN bit in PM1_CONTROL register 2006-10-10 17:14:44 -07:00
asm-alpha [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-arm [PATCH] arm-versatile iomem annotations 2006-10-11 11:17:06 -07:00
asm-arm26 fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-avr32 [PATCH] IRQ: Fix AVR32 breakage 2006-10-11 11:14:14 -07:00
asm-cris [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-frv [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-generic [PATCH] sched: likely profiling 2006-10-11 11:14:22 -07:00
asm-h8300 [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-i386 [PATCH] uaccess.h: match kernel-doc and function names 2006-10-11 11:14:24 -07:00
asm-ia64 [PATCH] ia64/sn __iomem annotations 2006-10-10 15:37:22 -07:00
asm-m32r [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-m68k [PATCH] m68k uaccess __user annotations 2006-10-11 11:17:06 -07:00
asm-m68knommu fix file specification in comments 2006-10-03 23:01:26 +02:00
asm-mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2006-10-11 15:30:14 -07:00
asm-parisc [PARISC] pdc_init no longer exists 2006-10-07 05:22:30 -06:00
asm-powerpc [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-ppc [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-s390 [S390] cio: Use ccw_dev_id and subchannel_id in ccw_device_private 2006-10-11 15:31:38 +02:00
asm-sh [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-sh64 [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-sparc IRQ: Use the new typedef for interrupt handler function pointers 2006-10-09 12:19:47 +01:00
asm-sparc64 [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-um [PATCH] um: irq changes break build 2006-10-06 08:53:42 -07:00
asm-v850 [PATCH] remove remaining errno and __KERNEL_SYSCALLS__ references 2006-10-02 07:57:23 -07:00
asm-x86_64 [PATCH] Consolidate check_signature 2006-10-11 11:14:23 -07:00
asm-xtensa fix file specification in comments 2006-10-03 23:01:26 +02:00
crypto [CRYPTO] digest: Added user API for new hash type 2006-09-21 11:46:17 +10:00
keys
linux [PATCH] VFS: Destroy the dentries contributed by a superblock on unmounting 2006-10-11 11:14:25 -07:00
math-emu
media V4L/DVB (4666): Ensure the WM8775 driver is loaded generically for any board. 2006-10-03 15:13:48 -03:00
mtd Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-10-01 17:55:53 +01:00
net IPsec: propagate security module errors up from flow_cache_lookup 2006-10-11 23:59:34 -07:00
pcmcia
rdma IB/sa: fix ib_sa_selector names 2006-09-22 15:22:55 -07:00
rxrpc
scsi Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2006-10-04 18:57:35 -07:00
sound [ALSA] version 1.0.13 2006-10-06 20:28:26 +02:00
video fix file specification in comments 2006-10-03 23:01:26 +02:00
Kbuild [HEADERS] One line per header in Kbuild files to reduce conflicts 2006-09-19 12:43:58 +01:00