twx-linux/include/linux
Josef Bacik f23cc643f9 bpf: fix range arithmetic for bpf map access
I made some invalid assumptions with BPF_AND and BPF_MOD that could result in
invalid accesses to bpf map entries.  Fix this up by doing a few things

1) Kill BPF_MOD support.  This doesn't actually get used by the compiler in real
life and just adds extra complexity.

2) Fix the logic for BPF_AND, don't allow AND of negative numbers and set the
minimum value to 0 for positive AND's.

3) Don't do operations on the ranges if they are set to the limits, as they are
by definition undefined, and allowing arithmetic operations on those values
could make them appear valid when they really aren't.

This fixes the testcase provided by Jann as well as a few other theoretical
problems.

Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-11-16 13:21:45 -05:00
..
amba
bcma
byteorder
can
ceph libceph: initialize last_linger_id with a large integer 2016-11-10 20:13:08 +01:00
clk
crush
decompress
dma
extcon
firmware/meson
fpga
fsl
gpio
hsi
i2c
iio
input
irqchip
isdn
lockd
mailbox
mfd
mlx4 net/mlx4: Fix firmware command timeout during interrupt test 2016-10-29 16:23:48 -04:00
mlx5 net/mlx5: PCI error recovery health care simulation 2016-10-29 12:00:39 -04:00
mmc
mtd mtd: nand: Fix data interface configuration logic 2016-10-28 09:58:36 +02:00
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
perf
phy phy: Add reset callback for not generic phy 2016-11-05 13:45:02 +05:30
pinctrl
platform_data
power
qed qed*: Reduce the memory footprint for Rx path 2016-10-22 17:08:07 -04:00
raid
regulator
reset
rtc
sched
soc
spi
ssb
sunrpc
ulpi
unaligned
usb
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi_dma.h
acpi_iort.h
acpi_pmtmr.h
acpi.h Merge branch 'device-properties' 2016-11-11 23:23:02 +01:00
adb.h
adfs_fs.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm_bios.h
apm-emulation.h
apple_bl.h
apple-gmux.h
arm-cci.h
arm-smccc.h
asn1_ber_bytecode.h
asn1_decoder.h
asn1.h
assoc_array_priv.h
assoc_array.h
async_tx.h
async.h
ata_platform.h
ata.h
atalk.h
ath9k_platform.h
atm_suni.h
atm_tcp.h
atm.h
atmdev.h
atmel_pdc.h
atmel_serial.h
atmel_tc.h
atmel-mci.h
atmel-ssc.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h
backing-dev.h
backlight.h
badblocks.h
balloon_compaction.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_sprom.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
bfin_mac.h
binfmts.h
bio.h
bit_spinlock.h
bitfield.h
bitmap.h
bitops.h
bitrev.h
blk_types.h
blk-cgroup.h
blk-mq-pci.h
blk-mq.h
blkdev.h
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h
bottom_half.h
bpf_verifier.h bpf: fix range arithmetic for bpf map access 2016-11-16 13:21:45 -05:00
bpf.h
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h
bug.h
bvec.h
c2port.h
cache.h
cacheinfo.h
capability.h
cb710.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cec-funcs.h
cec.h
cfag12864b.h
cgroup_subsys.h
cgroup-defs.h
cgroup.h
circ_buf.h
cleancache.h
clk-provider.h
clk.h
clkdev.h
clock_cooling.h
clockchips.h
clocksource.h
cm4000_cs.h
cma.h
cmdline-parser.h
cn_proc.h
cnt32_to_63.h
coda_psdev.h
coda.h
compaction.h
compat.h
compiler-clang.h
compiler-gcc.h
compiler-intel.h
compiler.h
completion.h
component.h
concap.h
configfs.h
connector.h
console_struct.h
console.h Revert "console: don't prefer first registered if DT specifies stdout-path" 2016-11-11 08:12:37 -08:00
consolemap.h
container.h
context_tracking_state.h
context_tracking.h
cordic.h
coredump.h
coresight-pmu.h
coresight-stm.h
coresight.h
count_zeros.h
cper.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpu.h
cpufeature.h
cpufreq.h
cpuhotplug.h clocksource: Add J-Core timer/clocksource driver 2016-10-20 20:10:17 +02:00
cpuidle.h
cpumask.h
cpuset.h
cputime.h
crash_dump.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
cred.h
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h
dax.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
delayed_call.h
dell-led.h
devcoredump.h
devfreq_cooling.h
devfreq-event.h
devfreq.h
device_cgroup.h
device-mapper.h
device.h
devpts_fs.h
digsig.h
dio.h
dirent.h
dlm_plock.h
dlm.h
dm9000.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dma_remapping.h
dma-buf.h
dma-contiguous.h
dma-debug.h
dma-direction.h
dma-iommu.h
dma-mapping.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd_genl_api.h
drbd_genl.h
drbd_limits.h
drbd.h
ds2782_battery.h
dtlk.h
dw_apb_timer.h
dynamic_debug.h
dynamic_queue_limits.h
earlycpio.h
ecryptfs.h
edac.h
edd.h
edma.h
eeprom_93cx6.h
eeprom_93xx46.h
efi-bgrt.h
efi.h
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
evm.h
export.h
exportfs.h
ext2_fs.h
extable.h
extcon.h
f2fs_fs.h
f75375s.h
falloc.h
fanotify.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h
fec.h
fence-array.h
fence.h
file.h
filter.h
fips.h
firewire.h
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_array.h
flex_proportions.h
fmc-sdb.h
fmc.h
font.h
frame.h
freezer.h
frontswap.h mm, frontswap: make sure allocated frontswap map is assigned 2016-11-11 08:12:37 -08:00
fs_enet_pd.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fs.h aio: fix freeze protection of aio writes 2016-10-30 13:09:42 -04:00
fscache-cache.h
fscache.h
fscrypto.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsl-diu-fb.h
fsldma.h
fsnotify_backend.h
fsnotify.h
ftrace_irq.h
ftrace.h
futex.h
fwnode.h
gameport.h
gcd.h
genalloc.h
genetlink.h
genhd.h
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h
glob.h
goldfish.h
gpio_keys.h
gpio_mouse.h
gpio-fan.h
gpio-pxa.h
gpio.h
hardirq.h
hash.h
hashtable.h
hdlc.h
hdlcdrv.h
hdmi.h
hid-debug.h
hid-roccat.h
hid-sensor-hub.h
hid-sensor-ids.h
hid.h
hiddev.h
hidraw.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
host1x.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
htirq.h
huge_mm.h
hugetlb_cgroup.h
hugetlb_inline.h
hugetlb.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h Revert "hv_netvsc: report vmbus name in ethtool" 2016-10-29 15:03:14 -04:00
hypervisor.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-gpio.h
i2c-mux-gpio.h
i2c-mux-pinctrl.h
i2c-mux.h
i2c-ocores.h
i2c-omap.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c-smbus.h
i2c-xiic.h
i2c.h
i7300_idle.h
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
idr.h
ieee80211.h
ieee802154.h
if_arp.h
if_bridge.h
if_eql.h
if_ether.h
if_fddi.h
if_frad.h
if_link.h
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
igmp.h
ihex.h
ima.h
in6.h
in.h
inet_diag.h
inet.h
inetdevice.h
init_ohci1394_dma.h
init_task.h
init.h
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel_pmic_gpio.h
intel-iommu.h
intel-svm.h
interrupt.h
interval_tree_generic.h
interval_tree.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io.h x86/io: add interface to reserve io memtype for a resource range. (v1.1) 2016-10-26 15:45:38 +10:00
ioc3.h
ioc4.h
iocontext.h
iomap.h
iommu-common.h
iommu-helper.h
iommu.h
iopoll.h
ioport.h
ioprio.h
iova.h
ip.h
ipack.h
ipc_namespace.h
ipc.h
ipmi_smi.h
ipmi-fru.h
ipmi.h
ipv6_route.h
ipv6.h net: tcp: check skb is non-NULL for exact match on lookups 2016-11-03 16:05:44 -04:00
irq_cpustat.h
irq_poll.h
irq_work.h
irq.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
irqflags.h
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
isicom.h
jbd2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label_ratelimit.h
jump_label.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h
kasan-checks.h
kasan.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h kconfig.h: remove config_enabled() macro 2016-10-27 18:43:43 -07:00
kcore.h
kcov.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel_stat.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kernfs.h
kexec.h
key-type.h
key.h
keyboard.h
kfifo.h
kgdb.h
khugepaged.h
klist.h
kmemcheck.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject_ns.h
kobject.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
kthread.h
ktime.h
kvm_host.h
kvm_irqfd.h
kvm_para.h
kvm_types.h
l2tp.h
lapb.h
latencytop.h
lcd.h
lcm.h
led-class-flash.h
led-lm3530.h
leds_pwm.h
leds-bd2802.h
leds-lp3944.h
leds-lp3952.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds.h
lguest_launcher.h
lguest.h
libata.h
libfdt_env.h
libfdt.h
libnvdimm.h
libps2.h
license.h
lightnvm.h
linkage.h
linux_logo.h
lis3lv02d.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
list.h
livepatch.h
llc.h
llist.h
lockdep.h
lockref.h
log2.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h
lz4.h
lzo.h
mailbox_client.h
mailbox_controller.h
maple.h
marvell_phy.h
math64.h
max17040_battery.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mcb.h
mdio-bitbang.h
mdio-mux.h
mdio.h
mei_cl_bus.h
memblock.h
memcontrol.h
memory_hotplug.h
memory.h
mempolicy.h
mempool.h
memremap.h
memstick.h
mg_disk.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate_mode.h
migrate.h
mii.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm_inline.h
mm_types.h
mm-arch-hooks.h
mm.h mm: unexport __get_user_pages() 2016-10-24 19:13:20 -07:00
mman.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h mm: remove per-zone hashtable of bitlock waitqueues 2016-10-27 09:27:57 -07:00
mnt_namespace.h
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls_iptunnel.h
mpls.h
mroute6.h
mroute.h
msdos_fs.h
msg.h
msi.h
mutex-debug.h
mutex.h
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h
nd.h
net.h
netdev_features.h
netdevice.h bpf: Fix bpf_redirect to an ipip/ip6tnl dev 2016-11-12 23:38:07 -05:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink.h
netpoll.h
nfs3.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h
nfs_iostat.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb_transport.h
ntb.h
nubus.h
numa.h
nvme-rdma.h
nvme.h
nvmem-consumer.h
nvmem-provider.h
nvram.h
of_address.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h
of_graph.h
of_iommu.h
of_irq.h
of_mdio.h
of_net.h
of_pci.h
of_pdt.h
of_platform.h
of_reserved_mem.h
of.h
oid_registry.h
olpc-ec.h
omap-dma.h
omap-dmaengine.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
oom.h
openvswitch.h
oprofile.h
osq_lock.h
oxu210hp.h
padata.h
page_counter.h
page_ext.h
page_idle.h
page_owner.h
page_ref.h
page-flags-layout.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
parport_pc.h
parport.h
parser.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h
pci_ids.h
pci-acpi.h
pci-aspm.h
pci-ats.h
pci-dma-compat.h
pci-dma.h
pci-ecam.h
pci.h
pcieport_if.h
pda_power.h
pe.h
percpu_counter.h
percpu_ida.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
perf_event.h perf/powerpc: Don't call perf_event_disable() from atomic context 2016-10-28 11:06:25 +02:00
perf_regs.h
personality.h
pfn_t.h
pfn.h
phonet.h
phy_fixed.h
phy.h
pid_namespace.h
pid.h
pim.h
pipe_fs_i.h
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
plist.h
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
pm-trace.h
pm.h
pmem.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix-clock.h
posix-timers.h
power_supply.h
powercap.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
pps_kernel.h
pps-gpio.h
pr.h
preempt.h
prefetch.h
printk.h
proc_fs.h
proc_ns.h
profile.h
projid.h
property.h
psci.h
pstore_ram.h
pstore.h
pti.h
ptp_classify.h
ptp_clock_kernel.h
ptr_ring.h
ptrace.h
pvclock_gtod.h
pwm_backlight.h
pwm.h
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qnx6_fs.h
quicklist.h
quota.h
quotaops.h
radix-tree.h
raid_class.h
ramfs.h
random.h
range.h
ras.h
ratelimit.h
rational.h
rbtree_augmented.h
rbtree_latch.h
rbtree.h
rcu_sync.h
rculist_bl.h
rculist_nulls.h
rculist.h
rcupdate.h
rcutiny.h
rcutree.h
reboot.h
reciprocal_div.h
regmap.h Merge remote-tracking branches 'regmap/fix/header' and 'regmap/fix/macro' into regmap-linus 2016-10-29 12:14:39 -06:00
regset.h
relay.h
remoteproc.h
reservation.h
reset-controller.h
reset.h
resource_ext.h
resource.h
rfkill-regulator.h
rfkill.h
rhashtable.h
ring_buffer.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h
rmi.h
rndis.h
root_dev.h
rpmsg.h
rslib.h
rtc.h
rtmutex.h
rtnetlink.h
rwlock_api_smp.h
rwlock_types.h
rwlock.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
s3c_adc_battery.h
sa11x0-dma.h
sbitmap.h
scatterlist.h
scc.h
sched_clock.h
sched.h
scif.h
scpi_protocol.h
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h
selection.h
selinux.h
sem.h
semaphore.h
seq_buf.h
seq_file_net.h
seq_file.h
seqlock.h
seqno-fence.h
serial_8250.h
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serial.h
serio.h
sfi_acpi.h
sfi.h
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
shdma-base.h
shm.h
shmem_fs.h
shrinker.h
signal.h
signalfd.h
sirfsoc_dma.h
sizes.h
skb_array.h
skbuff.h doc: update docbook annotations for socket and skb 2016-10-26 17:31:23 -04:00
slab_def.h
slab.h
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
splice.h
spmi.h
srcu.h
ssbi.h
stackdepot.h
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h
ste_modem_shm.h
stm.h
stmmac.h
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h
stringhash.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h
svga.h
sw842.h
swab.h
swait.h
swap_cgroup.h
swap.h
swapfile.h
swapops.h
swiotlb.h
sxgbe_platform.h
sync_file.h
synclink.h
sys_soc.h
sys.h
syscalls.h
syscore_ops.h
sysctl.h
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h
task_io_accounting_ops.h
task_io_accounting.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h
thinkpad_acpi.h
thread_info.h
threads.h
ti_wilink_st.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time64.h
time.h
timecounter.h
timekeeper_internal.h
timekeeping.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
topology.h
torture.h
toshiba.h
tpm_command.h
tpm.h
trace_clock.h
trace_events.h
trace_seq.h
tracefs.h
tracehook.h
tracepoint-defs.h
tracepoint.h
transport_class.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
typecheck.h
types.h
u64_stats_sync.h
uaccess.h
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uinput.h
uio_driver.h
uio.h
uprobes.h
usb_usual.h
usb.h
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h
uwb.h
verification.h
vermagic.h
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
via_i2c.h
via-core.h
via-gpio.h
via.h
videodev2.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_mmio.h
virtio_net.h
virtio_ring.h
virtio_vsock.h
virtio.h
vlynq.h
vm_event_item.h
vm_sockets.h
vmacache.h
vmalloc.h
vme.h
vmpressure.h
vmstat.h
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt_buffer.h
vt_kern.h
vt.h
vtime.h
w1-gpio.h
wait.h
wanrouter.h
watchdog.h
win_minmax.h
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
workqueue.h
writeback.h
ww_mutex.h
xattr.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h
zsmalloc.h
zutil.h