linux/arch/m32r/include/asm
Pavel Emelyanov a8fc927780 sk-filter: Add ability to get socket filter program (v2)
The SO_ATTACH_FILTER option is set only. I propose to add the get
ability by using SO_ATTACH_FILTER in getsockopt. To be less
irritating to eyes the SO_GET_FILTER alias to it is declared. This
ability is required by checkpoint-restore project to be able to
save full state of a socket.

There are two issues with getting filter back.

First, kernel modifies the sock_filter->code on filter load, thus in
order to return the filter element back to user we have to decode it
into user-visible constants. Fortunately the modification in question
is interconvertible.

Second, the BPF_S_ALU_DIV_K code modifies the command argument k to
speed up the run-time division by doing kernel_k = reciprocal(user_k).
Bad news is that different user_k may result in same kernel_k, so we
can't get the original user_k back. Good news is that we don't have
to do it. What we need to is calculate a user2_k so, that

  reciprocal(user2_k) == reciprocal(user_k) == kernel_k

i.e. if it's re-loaded back the compiled again value will be exactly
the same as it was. That said, the user2_k can be calculated like this

  user2_k = reciprocal(kernel_k)

with an exception, that if kernel_k == 0, then user2_k == 1.

The optlen argument is treated like this -- when zero, kernel returns
the amount of sock_fprog elements in filter, otherwise it should be
large enough for the sock_fprog array.

changes since v1:
* Declared SO_GET_FILTER in all arch headers
* Added decode of vlan-tag codes

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-11-01 11:17:15 -04:00
..
m32104ut Fix common misspellings 2011-03-31 11:26:23 -03:00
m32700ut Fix common misspellings 2011-03-31 11:26:23 -03:00
mappi2 m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
mappi3 m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
opsput Fix common misspellings 2011-03-31 11:26:23 -03:00
addrspace.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
assembler.h m32r: use __stringify() macro in assembler.h 2009-05-02 22:38:21 +09:00
atomic.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
auxvec.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
barrier.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
bitops.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bug.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
bugs.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
byteorder.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
cache.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
cachectl.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
cacheflush.h block: add helpers to run flush_dcache_page() against a bio and a request's pages 2009-11-26 09:16:19 +01:00
checksum.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
cmpxchg.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
cputime.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
current.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
dcache_clear.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
delay.h asm-generic: move archictures to common delay.h 2011-07-22 18:46:24 +02:00
device.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
div64.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
dma.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
elf.h cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
emergency-restart.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
errno.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
fb.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
fcntl.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
flat.h flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
ftrace.h m32r: move include/asm-m32r/* to arch/m32r/include/asm/ 2009-04-17 10:50:23 +09:00
futex.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
hardirq.h m32r: convert to asm-generic/hardirq.h 2009-09-22 07:17:43 -07:00
hw_irq.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
io.h m32r: define ioread* and iowrite* macros 2009-10-04 12:02:36 +09:00
ioctl.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
ioctls.h ioctl: Use asm-generic/ioctls.h on m32r (enables termiox) 2010-10-22 10:20:00 -07:00
ipcbuf.h consolidate a bunch of ipcbuf.h instances 2012-01-03 22:55:18 -05:00
irq_regs.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
irq.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
irqflags.h Fix IRQ flag handling naming 2010-10-07 14:08:55 +01:00
Kbuild Merge branch 'modules-next' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux 2012-10-14 13:39:34 -07:00
kdebug.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
linkage.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
local64.h arch: Implement local64_t 2010-06-09 11:12:36 +02:00
local.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
m32r_mp_fpga.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
m32r.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
m32102.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
mc146818rtc.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
mman.h mm: remove duplicate asm/mman.h files 2009-09-22 07:17:42 -07:00
mmu_context.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
mmu.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
mmzone.h Fix node_start/end_pfn() definition for mm/page_cgroup.c 2011-06-27 14:13:09 -07:00
msgbuf.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
mutex.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
page.h m32r: make PAGE_SIZE available to assembly. 2009-09-23 00:29:38 +09:00
param.h UAPI: Make M32R use asm-generic/param.h 2011-12-12 13:56:03 +00:00
pci.h asm-generic: make pci.h usable directly 2009-06-11 21:02:22 +02:00
percpu.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
pgalloc.h mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() 2009-07-27 12:10:38 -07:00
pgtable-2level.h Fix common misspellings 2011-03-31 11:26:23 -03:00
pgtable.h mm: remove pte_*map_nested() 2010-10-26 16:52:08 -07:00
poll.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
posix_types.h bury __kernel_nlink_t, make internal nlink_t consistent 2012-05-30 21:04:50 -04:00
processor.h fork: move the real prepare_to_copy() users to arch_dup_task_struct() 2012-05-16 15:16:26 -07:00
ptrace.h m32r: remove duplicate definition of PTRACE_O_TRACESYSGOOD 2012-07-17 16:21:30 -07:00
resource.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
rtc.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
s1d13806.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
scatterlist.h remove needless ISA_DMA_THRESHOLD 2010-08-07 18:15:50 +02:00
sections.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
segment.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
sembuf.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
serial.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
setup.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
shmbuf.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
shmparam.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
sigcontext.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
siginfo.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
signal.h m32r: struct old_sigaction is never used 2012-05-21 23:59:20 -04:00
smp.h smp: Remove num_booting_cpus() 2012-06-05 17:32:30 +02:00
socket.h sk-filter: Add ability to get socket filter program (v2) 2012-11-01 11:17:15 -04:00
sockios.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
spinlock_types.h locking: Convert raw_rwlock to arch_rwlock 2009-12-14 23:55:32 +01:00
spinlock.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
stat.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
statfs.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
string.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
swab.h m32r: move include/asm-m32r/* to arch/m32r/include/asm/ 2009-04-17 10:50:23 +09:00
switch_to.h Disintegrate asm/system.h for M32R 2012-03-28 18:30:02 +01:00
syscall.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
termbits.h tty: Add EXTPROC support for LINEMODE 2010-08-10 13:47:39 -07:00
termios.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
thread_info.h m32r: trim masks 2012-10-01 09:58:18 -04:00
timex.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
tlb.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
tlbflush.h MM: Pass a PTE pointer to update_mmu_cache() rather than the PTE itself 2010-02-20 16:41:46 +00:00
topology.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
ucontext.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
unaligned.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
unistd.h ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION 2012-07-30 17:25:21 -07:00
user.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
vga.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00
xor.h m32r: move include/asm-m32r headers to arch/m32r/include/asm 2009-04-17 10:05:01 +09:00