android_kernel_xiaomi_sm7250/include/asm-sparc64
Catherine Zhang 877ce7c1b3 [AF_UNIX]: Datagram getpeersec
This patch implements an API whereby an application can determine the
label of its peer's Unix datagram sockets via the auxiliary data mechanism of
recvmsg.

Patch purpose:

This patch enables a security-aware application to retrieve the
security context of the peer of a Unix datagram socket.  The application
can then use this security context to determine the security context for
processing on behalf of the peer who sent the packet.

Patch design and implementation:

The design and implementation is very similar to the UDP case for INET
sockets.  Basically we build upon the existing Unix domain socket API for
retrieving user credentials.  Linux offers the API for obtaining user
credentials via ancillary messages (i.e., out of band/control messages
that are bundled together with a normal message).  To retrieve the security
context, the application first indicates to the kernel such desire by
setting the SO_PASSSEC option via getsockopt.  Then the application
retrieves the security context using the auxiliary data mechanism.

An example server application for Unix datagram socket should look like this:

toggle = 1;
toggle_len = sizeof(toggle);

setsockopt(sockfd, SOL_SOCKET, SO_PASSSEC, &toggle, &toggle_len);
recvmsg(sockfd, &msg_hdr, 0);
if (msg_hdr.msg_controllen > sizeof(struct cmsghdr)) {
    cmsg_hdr = CMSG_FIRSTHDR(&msg_hdr);
    if (cmsg_hdr->cmsg_len <= CMSG_LEN(sizeof(scontext)) &&
        cmsg_hdr->cmsg_level == SOL_SOCKET &&
        cmsg_hdr->cmsg_type == SCM_SECURITY) {
        memcpy(&scontext, CMSG_DATA(cmsg_hdr), sizeof(scontext));
    }
}

sock_setsockopt is enhanced with a new socket option SOCK_PASSSEC to allow
a server socket to receive security context of the peer.

Testing:

We have tested the patch by setting up Unix datagram client and server
applications.  We verified that the server can retrieve the security context
using the auxiliary data mechanism of recvmsg.

Signed-off-by: Catherine Zhang <cxzhang@watson.ibm.com>
Acked-by: Acked-by: James Morris <jmorris@namei.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-06-29 16:58:06 -07:00
..
a.out.h [SPARC64]: Increase top of 32-bit process stack. 2006-03-20 01:16:36 -08:00
agp.h
apb.h
asi.h [SPARC64]: Sun4v specific ASI defines. 2006-03-20 01:11:43 -08:00
atomic.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
auxio.h
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bbc.h
bitops.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
bpp.h
bsderrno.h
bug.h
bugs.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
byteorder.h
cache.h [PATCH] Move read_mostly definition to asm/cache.h 2006-03-23 07:38:10 -08:00
cacheflush.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
chafsr.h
checksum.h
chmctrl.h
cmt.h
compat.h [PATCH] compat: be more consistent about [ug]id_t 2005-09-07 16:57:19 -07:00
const.h
cpudata.h [SPARC64]: Send all device interrupts via one PIL. 2006-06-20 01:20:00 -07:00
cputime.h
current.h
dcr.h
dcu.h
delay.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
display7seg.h
div64.h
dma-mapping.h [SPARC64]: Add missing interfaces to dma-mapping.h 2006-06-25 23:15:05 -07:00
dma.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
ebus.h [SPARC64]: Add of_device layer and make ebus/isa use it. 2006-06-23 23:15:43 -07:00
elf.h [SPARC64]: Add HWCAP_SPARC_BLKINIT elf capability flag for Niagara. 2006-03-20 01:13:26 -08:00
emergency-restart.h
envctrl.h
errno.h
estate.h
fbio.h
fcntl.h [PATCH] Clean up struct flock definitions 2005-09-07 16:57:38 -07:00
fhc.h [SPARC64]: Convert central bus layer to in-kernel PROM device tree. 2006-06-23 23:15:32 -07:00
floppy.h [SPARC64]: Allow floppy driver to build modular. 2006-06-25 23:15:01 -07:00
fpumacro.h
futex.h [SPARC64]: Implement futex_atomic_cmpxchg_inatomic(). 2006-03-28 01:00:08 -08:00
hardirq.h [SPARC64]: Move over to GENERIC_HARDIRQS. 2006-06-20 01:23:32 -07:00
head.h [SPARC64]: Add GET_GL_GLOBAL() macro for SUN4V. 2006-03-20 01:13:18 -08:00
hw_irq.h [SPARC64]: Move over to GENERIC_HARDIRQS. 2006-06-20 01:23:32 -07:00
hypervisor.h [SPARC64]: Fix bugs in SUN4V cpu mondo dispatch. 2006-03-20 01:14:09 -08:00
ide.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
idprom.h [SPARC]: Clean up idprom header files. 2006-03-20 01:12:08 -08:00
intr_queue.h [SPARC64]: Sun4v interrupt queue register definitions. 2006-03-20 01:11:44 -08:00
io.h
ioctl.h
ioctls.h
iommu.h
ipc.h
ipcbuf.h
irq.h Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2006-06-20 17:39:28 -07:00
isa.h [SPARC64]: Add of_device layer and make ebus/isa use it. 2006-06-23 23:15:43 -07:00
kdebug.h [PATCH] Notify page fault call chain for sparc64 2006-06-26 09:58:22 -07:00
kmap_types.h
kprobes.h [PATCH] Notify page fault call chain 2006-06-26 09:58:22 -07:00
linkage.h
local.h
lsu.h
mc146818rtc.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
mman.h [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
mmu_context.h [SPARC64]: Add a secondary TSB for hugepage mappings. 2006-03-22 01:15:14 -08:00
mmu.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
module.h
mostek.h
msgbuf.h
mutex.h [PATCH] mutex subsystem, add default include/asm-*/mutex.h files 2006-01-09 15:59:19 -08:00
namei.h
ns87303.h
numnodes.h [SPARC64]: Move over to sparsemem. 2006-03-20 01:14:22 -08:00
of_device.h [SPARC]: Port of_device layer and make ebus use it. 2006-06-23 23:15:47 -07:00
openprom.h [SPARC64]: Rewrite convoluted physical memory probing. 2005-09-29 17:58:26 -07:00
openpromio.h
oplib.h [SPARC64]: Convert cpu_find_by_*() interface to in-kernel PROM device tree. 2006-06-23 23:15:17 -07:00
page.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
param.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
parport.h [SPARC64]: Use in-kernel PROM tree for EBUS and ISA. 2006-06-23 23:15:28 -07:00
pbm.h [SPARC64]: Convert sparc64 PCI layer to in-kernel device tree. 2006-06-23 23:15:26 -07:00
pci.h [SPARC64]: Respect gfp_t argument to dma_alloc_coherent(). 2006-05-23 02:07:22 -07:00
pconf.h
percpu.h [PATCH] Define __raw_get_cpu_var and use it 2006-06-25 10:01:01 -07:00
perfctr.h
pgalloc.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
pgtable.h [SPARC64]: Fix for Niagara memory corruption. 2006-06-23 23:15:21 -07:00
pil.h [SPARC64]: Send all device interrupts via one PIL. 2006-06-20 01:20:00 -07:00
poll.h [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
posix_types.h
processor.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
prom.h [SPARC]: Add unique device_node IDs and a ".node" property. 2006-06-25 23:18:57 -07:00
psrcompat.h
pstate.h [SPARC64]: Fixup TSTATE layout diagram in asm/pstate.h 2006-03-20 01:13:02 -08:00
ptrace.h [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
reg.h
resource.h
rtc.h
rwsem-const.h
rwsem.h [PATCH] add sem_is_read/write_locked() 2005-10-29 21:40:35 -07:00
sbus.h [SBUS]: Rewrite and plug into of_device framework. 2006-06-23 23:15:50 -07:00
scatterlist.h
scratchpad.h [SPARC64]: Sun4v scratchpad register layout. 2006-03-20 01:11:44 -08:00
seccomp.h
sections.h
semaphore.h [PATCH] semaphore: Remove __MUTEX_INITIALIZER() 2005-10-30 17:37:27 -08:00
sembuf.h
setup.h
sfafsr.h
sfp-machine.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
signal.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
smp.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
socket.h [AF_UNIX]: Datagram getpeersec 2006-06-29 16:58:06 -07:00
sockios.h
solerrno.h
sparsemem.h [SPARC64]: Move over to sparsemem. 2006-03-20 01:14:22 -08:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
spitfire.h [SPARC64]: Add 'hypervisor' to ultra_tlb_type enumeration. 2006-03-20 01:11:39 -08:00
starfire.h
stat.h
statfs.h
string.h
sunbpp.h
svr4.h
system.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
termbits.h
termios.h [SPARC]: remove duplicate TIOCPKT_ definitions 2005-11-07 14:10:42 -08:00
thread_info.h [SPARC64]: Correctable ECC errors cannot occur at trap level > 0. 2006-03-20 01:11:33 -08:00
timer.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
timex.h [SPARC64]: Define ARCH_HAS_READ_CURRENT_TIMER. 2006-03-20 01:13:29 -08:00
tlb.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
tlbflush.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-05-06 19:59:18 +01:00
topology.h [PATCH] sched: mc/smt power savings sched policy 2006-06-27 17:32:45 -07:00
tsb.h [SPARC64]: Create a seperate kernel TSB for 4MB/256MB mappings. 2006-03-20 01:13:56 -08:00
ttable.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
types.h
uaccess.h [SPARC64]: __bzero_noasi --> __clear_user 2006-03-20 01:13:28 -08:00
uctx.h
unaligned.h
unistd.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-05-24 09:22:21 +01:00
upa.h
user.h
utrap.h
vdev.h [SPARC64]: Convert sun4v virtual-device layer to in-kernel PROM device tree. 2006-06-23 23:15:13 -07:00
vga.h [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
visasm.h
watchdog.h
xor.h [SPARC64]: Niagara optimized XOR functions for RAID. 2006-03-20 01:14:03 -08:00