linux/arch/h8300/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
..
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
atomic.h Disintegrate asm/system.h for H8300 2012-03-28 18:30:02 +01:00
auxvec.h
barrier.h Disintegrate asm/system.h for H8300 2012-03-28 18:30:02 +01:00
bitops.h Disintegrate asm/system.h for H8300 2012-03-28 18:30:02 +01:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bootinfo.h
bug.h Disintegrate asm/system.h for H8300 2012-03-28 18:30:02 +01:00
bugs.h
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h
cachectl.h
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
cmpxchg.h Disintegrate asm/system.h for H8300 2012-03-28 18:30:02 +01:00
cputime.h
current.h
dbg.h
delay.h
device.h
div64.h
dma.h
elf.h cross-arch: don't corrupt personality flags upon exec() 2012-10-06 03:04:47 +09:00
emergency-restart.h
errno.h
fb.h
fcntl.h
flat.h flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
fpu.h
ftrace.h tracing: make CALLER_ADDRx overwriteable 2009-03-02 16:49:37 -05:00
futex.h
gpio-internal.h h8300: Move gpio.h to gpio-internal.h 2011-10-26 23:15:28 +02:00
hardirq.h h8300: convert to asm-generic/hardirq.h 2009-09-22 07:17:43 -07:00
hw_irq.h
io.h tree-wide: Assorted spelling fixes 2010-02-09 11:13:56 +01:00
ioctl.h
ioctls.h ioctl: Use asm-generic/ioctls.h on h8300 (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
irq.h
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
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kvm_para.h kvmclock: Add functions to check if the host has stopped the vm 2012-04-08 12:48:59 +03:00
linkage.h
local64.h arch: Implement local64_t 2010-06-09 11:12:36 +02:00
local.h
mc146818rtc.h
mman.h mm: remove duplicate asm/mman.h files 2009-09-22 07:17:42 -07:00
mmu_context.h
mmu.h NOMMU: Make VMAs per MM as for MMU-mode linux 2009-01-08 12:04:47 +00:00
msgbuf.h
mutex.h
page_offset.h
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
param.h
pci.h PCI: Pull PCI 'latency timer' setup up into the core 2012-01-06 12:10:42 -08:00
percpu.h
pgalloc.h
pgtable.h h8300/pgtable: add missing #include <asm-generic/pgtable.h> 2012-07-11 16:04:44 -07:00
poll.h
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 ptrace: unify show_regs() prototype 2011-07-26 16:49:43 -07:00
regs267x.h
regs306x.h
resource.h
scatterlist.h remove needless ISA_DMA_THRESHOLD 2010-08-07 18:15:50 +02:00
sections.h
segment.h
sembuf.h
setup.h
sh_bios.h
shm.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h
socket.h sk-filter: Add ability to get socket filter program (v2) 2012-11-01 11:17:15 -04:00
sockios.h
spinlock.h
stat.h
statfs.h
string.h
swab.h headers_check fix: h8300, swab.h 2009-02-01 11:01:24 +05:30
switch_to.h Disintegrate asm/system.h for H8300 2012-03-28 18:30:02 +01:00
target_time.h
termbits.h tty: Add EXTPROC support for LINEMODE 2010-08-10 13:47:39 -07:00
termios.h
thread_info.h h8300: trim _TIF_WORK_MASK 2012-10-01 09:58:15 -04:00
timer.h Get rid of final remnants of include/asm-$(ARCH) 2009-04-17 09:59:27 -07:00
timex.h
tlb.h
tlbflush.h
topology.h
traps.h
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess.h h8300/uaccess: add mising __clear_user() 2012-07-11 16:04:46 -07:00
ucontext.h
unaligned.h
unistd.h ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION 2012-07-30 17:25:21 -07:00
user.h
virtconvert.h