Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1599 commits
Select commit Hold shift + click to select a range
c0090f9
x86/mm/pti: Remove dead logic in pti_user_pagetable_walk*()
l1viathan Jan 8, 2018
649c1de
x86/cpu/AMD: Make LFENCE a serializing instruction
tlendacky Jan 8, 2018
268114c
x86/cpu/AMD: Use LFENCE_RDTSC in preference to MFENCE_RDTSC
tlendacky Jan 8, 2018
31431b7
sysfs/cpu: Fix typos in vulnerability documentation
dwmw2 Jan 9, 2018
b50f563
x86/alternatives: Fix optimize_nops() checking
suryasaimadhu Jan 10, 2018
22e64ef
x86/pti: Make unpoison of pgd for trusted boot work for real
hansendc Jan 10, 2018
6a4d118
objtool: Detect jumps to retpoline thunks
jpoimboe Jan 11, 2018
6b95f61
objtool: Allow alternatives to be ignored
jpoimboe Jan 11, 2018
3a72bd4
x86/retpoline: Add initial retpoline support
dwmw2 Jan 11, 2018
dcd4311
x86/spectre: Add boot time option to select Spectre v2 mitigation
dwmw2 Jan 11, 2018
79f2c12
x86/retpoline/crypto: Convert crypto assembler indirect jumps
dwmw2 Jan 11, 2018
d4edaa9
x86/retpoline/entry: Convert entry assembler indirect jumps
dwmw2 Jan 11, 2018
82de930
x86/retpoline/ftrace: Convert ftrace assembler indirect jumps
dwmw2 Jan 11, 2018
e0dcc73
x86/retpoline/hyperv: Convert assembler indirect jumps
dwmw2 Jan 11, 2018
41f8af6
x86/retpoline/xen: Convert Xen hypercall indirect jumps
dwmw2 Jan 11, 2018
4707037
x86/retpoline/checksum32: Convert assembler indirect jumps
dwmw2 Jan 11, 2018
b0edc2d
x86/retpoline/irq32: Convert assembler indirect jumps
Jan 11, 2018
b9cdaaf
x86/retpoline: Fill return stack buffer on vmexit
dwmw2 Jan 12, 2018
5a6e7a2
selftests/x86: Add test_vsyscall
amluto Jan 12, 2018
026b3f2
x86/pti: Fix !PCID and sanitize defines
KAGA-KOKO Jan 13, 2018
c3e7fc9
security/Kconfig: Correct the Documentation reference for PTI
wking Jan 12, 2018
6d8b7d3
x86,perf: Disable intel_bts when PTI
Jan 14, 2018
198660b
x86/retpoline: Remove compile time warning
KAGA-KOKO Jan 14, 2018
9c0bf98
Linux 4.14.14
gregkh Jan 17, 2018
50c1c6c
tools/objtool/Makefile: don't assume sync-check.sh is executable
akpm00 Jan 13, 2018
aa9b501
drm/nouveau/disp/gf119: add missing drive vfunc ptr
robclark Jan 6, 2018
e093c08
objtool: Fix seg fault with clang-compiled objects
emersion Dec 30, 2017
78172c7
objtool: Fix Clang enum conversion warning
bulwahn Dec 26, 2017
5174ec1
objtool: Fix seg fault caused by missing parameter
emersion Dec 30, 2017
4167dcb
powerpc/pseries: Add H_GET_CPU_CHARACTERISTICS flags & wrapper
mikey Jan 8, 2018
bcba6b9
powerpc/64: Add macros for annotating the destination of rfid/hrfid
npiggin Jan 9, 2018
11caf81
powerpc/64s: Simple RFI macro conversions
npiggin Jan 9, 2018
627700e
powerpc/64: Convert the syscall exit path to use RFI_TO_USER/KERNEL
npiggin Jan 9, 2018
bcac5d3
powerpc/64: Convert fast_exception_return to use RFI_TO_USER/KERNEL
npiggin Jan 9, 2018
9488c6b
powerpc/64s: Convert slb_miss_common to use RFI_TO_USER/KERNEL
npiggin Jan 9, 2018
b434c15
powerpc/64s: Add support for RFI flush of L1-D cache
mpe Jan 9, 2018
9472d89
powerpc/64s: Support disabling RFI flush with no_rfi_flush and nopti
mpe Jan 9, 2018
4b5158c
powerpc/pseries: Query hypervisor for RFI flush settings
mikey Jan 9, 2018
5dc5971
powerpc/powernv: Check device-tree for RFI flush settings
oohal Jan 9, 2018
1352130
futex: Avoid violating the 10th rule of futex
Dec 8, 2017
17ae6cc
futex: Prevent overflow by strengthen input validation
LiJinyue Dec 14, 2017
c316238
ALSA: seq: Make ioctls race-free
tiwai Jan 9, 2018
004cecc
ALSA: pcm: Remove yet superfluous WARN_ON()
tiwai Jan 10, 2018
f50902a
ALSA: hda - Apply headphone noise quirk for another Dell XPS 13 variant
tiwai Jan 10, 2018
f0299a1
ALSA: hda - Apply the existing quirk to iMac 14,1
tiwai Jan 10, 2018
b3049d3
IB/hfi1: Prevent a NULL dereference
Jan 9, 2018
6985762
RDMA/mlx5: Fix out-of-bound access while querying AH
Jan 12, 2018
4db98c5
timers: Unconditionally check deferrable base
KAGA-KOKO Jan 14, 2018
bee113a
af_key: fix buffer overread in verify_address_len()
ebiggers Dec 30, 2017
754705d
af_key: fix buffer overread in parse_exthdrs()
ebiggers Dec 30, 2017
9ace222
iser-target: Fix possible use-after-free in connection establishment …
sagigrimberg Nov 26, 2017
36ae2e6
delayacct: Account blkio completion on the correct task
hashbrowncipher Dec 18, 2017
f41b2d7
objtool: Fix seg fault with gold linker
jpoimboe Jan 15, 2018
f2264bb
mmc: sdhci-esdhc-imx: Fix i.MX53 eSDHCv3 clock
bthebaudeau Jan 14, 2018
fbb8c0a
x86/kasan: Panic if there is not enough memory to boot
aryabinin Jan 10, 2018
0515475
x86/retpoline: Fill RSB on context switch for affected CPUs
dwmw2 Jan 12, 2018
956ec9e
x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
tlendacky Jan 13, 2018
f45bbd9
objtool: Improve error message for bad file argument
jpoimboe Jan 15, 2018
4d9c9ab
x86/cpufeature: Move processor tracing out of scattered features
bonzini Jan 16, 2018
8c55678
module: Add retpoline tag to VERMAGIC
Jan 16, 2018
929e4b3
x86/intel_rdt/cqm: Prevent use after free
KAGA-KOKO Jan 16, 2018
239f288
x86/mm/pkeys: Fix fill_sig_info_pkey
ebiederm Jan 12, 2018
ad2d620
x86/idt: Mark IDT tables __initconst
Dec 22, 2017
a5ab7b5
x86/tsc: Future-proof native_calibrate_tsc()
lenb Dec 22, 2017
8352a3f
x86/tsc: Fix erroneous TSC rate on Skylake Xeon
lenb Dec 22, 2017
e109607
pipe: avoid round_pipe_size() nr_pages overflow on 32-bit
joe-lawrence Nov 17, 2017
0062c10
x86/apic/vector: Fix off by one in error path
KAGA-KOKO Jan 16, 2018
25e1197
x86/mm: Clean up register saving in the __enc_copy() assembly code
tlendacky Jan 10, 2018
ce1805f
x86/mm: Use a struct to reduce parameters for SME PGD mapping
tlendacky Jan 10, 2018
69a39cf
x86/mm: Centralize PMD flags in sme_encrypt_kernel()
tlendacky Jan 10, 2018
33e4ca3
x86/mm: Prepare sme_encrypt_kernel() for PAGE aligned encryption
tlendacky Jan 10, 2018
5455eef
ARM: OMAP3: hwmod_data: add missing module_offs for MMC3
Oct 30, 2017
e0f82cb
x86/mm: Encrypt the initrd earlier for BSP microcode update
tlendacky Jan 10, 2018
e86e543
Input: ALPS - fix multi-touch decoding on SS4 plus touchpads
Jan 12, 2018
b276eae
Input: synaptics-rmi4 - prevent UAF reported by KASAN
nickdesaulniers Jan 18, 2018
1bb19ef
Input: 88pm860x-ts - fix child-node lookup
jhovold Jan 9, 2018
aabc966
Input: twl6040-vibra - fix child-node lookup
jhovold Jan 9, 2018
b1c7c57
Input: twl4030-vibra - fix sibling-node lookup
jhovold Jan 9, 2018
7296666
tracing: Fix converting enum's from the map in trace_event_eval_update()
rostedt Jan 18, 2018
c044369
phy: work around 'phys' references to usb-nop-xceiv devices
arndb Jan 12, 2018
ebc8d9c
ARM64: dts: marvell: armada-cp110: Fix clock resources for various node
gclement Jul 25, 2017
fb7f328
ARM: sunxi_defconfig: Enable CMA
mripard Jan 19, 2018
e53050a
ARM: dts: kirkwood: fix pin-muxing of MPP7 on OpenBlocks A7
tpetazzoni Jan 4, 2018
659af12
can: peak: fix potential bug in packet fragmentation
Jan 15, 2018
91c5fbf
can: af_can: can_rcv(): replace WARN_ONCE by pr_warn_once
marckleinebudde Jan 16, 2018
41812e4
can: af_can: canfd_rcv(): replace WARN_ONCE by pr_warn_once
marckleinebudde Jan 16, 2018
c7b8be8
i2c: core-smbus: prevent stack corruption on read I2C_BLOCK_DATA
jeremy-compostella Nov 15, 2017
4616525
scripts/gdb/linux/tasks.py: fix get_thread_info
consen Jan 19, 2018
ea5c294
proc: fix coredump vs read /proc/*/stat race
Jan 19, 2018
25b13c2
libata: apply MAX_SEC_1024 to all LITEON EP1 series devices
xinyulin Dec 17, 2017
edd0a40
scsi: libsas: Disable asynchronous aborts for SATA devices
hreinecke Jan 10, 2018
a6d5930
workqueue: avoid hard lockups in show_workqueue_state()
sergey-senozhatsky Jan 11, 2018
8f0b1d5
drm/vmwgfx: fix memory corruption with legacy/sou connectors
Jan 17, 2018
9056370
dm btree: fix serious bug in btree_split_beneath()
Dec 20, 2017
5f12c33
dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6
qnap-dennisyang Dec 12, 2017
c808f1d
dm integrity: don't store cipher request on the stack
Jan 10, 2018
6b8fdea
dm crypt: fix crash by adding missing check for auth key size
mbroz Jan 3, 2018
82e12f1
dm crypt: wipe kernel key copy after IV initialization
oniko Jan 12, 2018
f054314
dm crypt: fix error return code in crypt_ctr()
Jan 17, 2018
314a028
x86: Use __nostackprotect for sme_encrypt_kernel
labbott Jan 21, 2018
708a15f
alpha/PCI: Fix noname IRQ level detection
Jan 16, 2018
550ba97
MIPS: CM: Drop WARN_ON(vp != 0)
amalon Dec 5, 2017
d641053
KVM: arm/arm64: Check pagesize when allocating a hugepage at Stage 2
punitagrawal Jan 4, 2018
14c7f5b
arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls
Jan 16, 2018
020c755
x86/mce: Make machine check speculation protected
KAGA-KOKO Jan 18, 2018
22371c4
retpoline: Introduce start/end markers of indirect thunk
mhiramat Jan 18, 2018
aaadccc
kprobes/x86: Blacklist indirect thunk functions for kprobes
mhiramat Jan 18, 2018
4fb8368
kprobes/x86: Disable optimizing on the function jumps to indirect thunk
mhiramat Jan 18, 2018
cd8d78e
x86/pti: Document fix wrong index
Jan 18, 2018
5fa8716
x86/retpoline: Optimize inline assembler for vmexit_fill_RSB
Jan 17, 2018
9cc86f9
x86/mm: Rework wbinvd, hlt operation in stop_this_cpu()
tlendacky Jan 17, 2018
3abb4c1
mm, page_vma_mapped: Drop faulty pointer arithmetics in check_pte()
kiryl Jan 19, 2018
0c28707
net: mvpp2: do not disable GMAC padding
yanmarkman Nov 28, 2017
d602cb8
MIPS: AR7: ensure the port type's FCR value is used
KanjiMonster Oct 29, 2017
a16134b
Linux 4.14.15
gregkh Jan 23, 2018
1d00dac
orangefs: use list_for_each_entry_safe in purge_waiting_ops
Jan 22, 2018
e1166d9
orangefs: initialize op on loop restart in orangefs_devreq_read
Jan 22, 2018
bd9fa78
mm, page_alloc: fix potential false positive in __zone_watermark_ok
tehcaster Nov 16, 2017
6716248
netfilter: nfnetlink_cthelper: Add missing permission checks
Dec 3, 2017
19848ca
netfilter: xt_osf: Add missing permission checks
Dec 5, 2017
ceab068
xfrm: Fix a race in the xdst pcpu cache.
klassert Jan 10, 2018
5cc765d
Revert "module: Add retpoline tag to VERMAGIC"
gregkh Jan 24, 2018
25cb145
Input: xpad - add support for PDP Xbox One controllers
TheUbuntuGuy Jan 22, 2018
7e4cd0a
Input: trackpoint - force 3 buttons if 0 button is reported
pyma1 Jan 19, 2018
203a603
Input: trackpoint - only expose supported controls for Elan, ALPS and…
dtor Jan 5, 2018
5c7b881
Btrfs: fix stale entries in readdir
Jan 23, 2018
d529ba9
KVM: s390: add proper locking for CMMA migration bitmap
borntraeger Dec 22, 2017
326efb4
orangefs: fix deadlock; do not write i_size in read_iter
Jan 26, 2018
124047a
ARM: net: bpf: avoid 'bx' instruction on non-Thumb capable CPUs
Jan 13, 2018
e7119ca
ARM: net: bpf: fix tail call jumps
Jan 13, 2018
bfd2c2b
ARM: net: bpf: fix stack alignment
Jan 13, 2018
403f4c6
ARM: net: bpf: move stack documentation
Jan 13, 2018
295bcfb
ARM: net: bpf: correct stack layout documentation
Jan 13, 2018
0da4a4d
ARM: net: bpf: fix register saving
Jan 13, 2018
5911dd3
ARM: net: bpf: fix LDX instructions
Jan 13, 2018
dd55bfc
ARM: net: bpf: clarify tail_call index
Jan 13, 2018
9ad970c
drm/vc4: Fix NULL pointer dereference in vc4_save_hang_state()
Jan 18, 2018
f703437
net: Allow neigh contructor functions ability to modify the primary_key
jwestfall69 Jan 14, 2018
42d68bf
ipv4: Make neigh lookup keys for loopback/point-to-point devices be I…
jwestfall69 Jan 14, 2018
c277f34
dccp: don't restart ccid2_hc_tx_rto_expire() if sk in closed state
akodanev Jan 26, 2018
2295b3d
ipv6: Fix getsockopt() for sockets with default IPV6_AUTOFLOWLABEL
bwh-ct Jan 22, 2018
8278804
ipv6: fix udpv6 sendmsg crash caused by too small MTU
mjamaloney Jan 10, 2018
3472170
ipv6: ip6_make_skb() needs to clear cork.base.dst
edumazet Jan 12, 2018
2afdce2
lan78xx: Fix failure in USB Full Speed
microchip1 Jan 15, 2018
d9bee33
net: igmp: fix source address check for IGMPv3 reports
nbd168 Jan 19, 2018
450449f
net: qdisc_pkt_len_init() should be more robust
edumazet Jan 19, 2018
32e57f8
net: tcp: close sock if net namespace is exiting
ddstreet Jan 18, 2018
d3048a1
net/tls: Fix inverted error codes to avoid endless loop
Raubato Jan 12, 2018
6ea6b86
net: vrf: Add support for sends to local broadcast address
dsahern Jan 25, 2018
d32e574
pppoe: take ->needed_headroom of lower device into account on xmit
Jan 22, 2018
72d4f3a
r8169: fix memory corruption on retrieval of hardware statistics.
Jan 26, 2018
f2e9570
sctp: do not allow the v4 socket to bind a v4mapped v6 address
lxin Jan 15, 2018
a940c19
sctp: return error if the asoc has been peeled off in sctp_wait_for_s…
lxin Jan 15, 2018
8de7fb3
tipc: fix a memory leak in tipc_nl_node_get_link()
congwang Jan 10, 2018
2ac1797
{net,ib}/mlx5: Don't disable local loopback multicast traffic when ne…
Jan 9, 2018
ce1e51d
net/mlx5: Fix get vector affinity helper function
Jan 4, 2018
759cd10
ppp: unlock all_ppp_mutex before registering device
Jan 10, 2018
ace9976
be2net: restore properly promisc mode after queues reconfiguration
ivecera Jan 19, 2018
8af27b1
ip6_gre: init dev->mtu and dev->hard_header_len correctly
akodanev Jan 18, 2018
dd7e1cb
gso: validate gso_type in GSO handlers
wdebruij Jan 19, 2018
8496f7d
mlxsw: spectrum_router: Don't log an error on missing neighbor
Jan 24, 2018
51c1f51
tun: fix a memory leak for tfile->tx_array
congwang Jan 15, 2018
80f3272
flow_dissector: properly cap thoff field
edumazet Jan 17, 2018
3c6e5f2
sctp: reinit stream if stream outcnt has been change by sinit in sendmsg
lxin Jan 15, 2018
3eae0ba
netlink: extack needs to be reset each time through loop
dsahern Jan 10, 2018
4f97adf
net/mlx5e: Fix fixpoint divide exception in mlx5e_am_stats_compare
talatb Jan 21, 2018
a8c21ba
nfp: use the correct index for link speed table
Jan 15, 2018
48606bb
netlink: reset extack earlier in netlink_rcv_skb
lxin Jan 18, 2018
a022bbe
net/tls: Only attach to sockets in ESTABLISHED state
Jan 16, 2018
3a28f04
tls: fix sw_ctx leak
qsn Jan 16, 2018
2f54941
tls: return -EBUSY if crypto_info is already set
qsn Jan 16, 2018
ed10b9a
tls: reset crypto_info when do_tls_setsockopt_tx fails
qsn Jan 16, 2018
c2fd0b2
net: ipv4: Make "ip route get" match iif lo rules again.
lcolitti Jan 11, 2018
74026a1
vmxnet3: repair memory leak
nhorman Jan 22, 2018
34c1acc
perf/x86/amd/power: Do not load AMD power module on !AMD platforms
liangxiao1 Jan 22, 2018
ac2cc88
x86/microcode/intel: Extend BDW late-loading further with LLC size check
jiazhang0 Jan 23, 2018
cbfb351
x86/microcode: Fix again accessing initrd after having been freed
suryasaimadhu Jan 23, 2018
ba07aba
x86/mm/64: Fix vmapped stack syncing on very-large-memory 4-level sys…
amluto Jan 25, 2018
fdd88d7
hrtimer: Reset hrtimer cpu base proper on CPU hotplug
KAGA-KOKO Jan 26, 2018
6fde36d
bpf: introduce BPF_JIT_ALWAYS_ON config
Jan 28, 2018
3ea4247
bpf: avoid false sharing of map refcount with max_entries
borkmann Jan 28, 2018
6eca013
bpf: fix divides by zero
edumazet Jan 28, 2018
ca0a096
bpf: fix 32-bit divide by zero
Jan 28, 2018
a175367
bpf: reject stores into ctx via st and xadd
borkmann Jan 28, 2018
c43db1a
bpf, arm64: fix stack_depth tracking in combination with tail calls
borkmann Jan 28, 2018
c83189e
cpufreq: governor: Ensure sufficiently large sampling intervals
rafaeljw Dec 18, 2017
54e67ba
nfsd: auth: Fix gid sorting when rootsquash enabled
bwh-ct Jan 22, 2018
6c70076
Linux 4.14.16
gregkh Jan 31, 2018
ae21f4e
apply mmc- and pcie-patch
frank-w Dec 12, 2017
eef6516
add build-script and defconfig
frank-w Dec 12, 2017
d906c09
swap mmc0 and mmc1 like in 4.4.70
frank-w Dec 12, 2017
954b4ef
Update README
frank-w Dec 12, 2017
e7aa8f4
add mt76x2 driver
frank-w Dec 12, 2017
d40428f
git ignore: build kernel binaries
frank-w Dec 12, 2017
3c60c12
added rej to gitignore
frank-w Dec 12, 2017
c4f7592
Merge tag 'v4.14.5' into frank-w-4.14-merges-2
bburky Feb 3, 2018
b86d0a7
updated branch to 4.14.5
frank-w Dec 12, 2017
35b10a3
added backup and some messages to build.sh
frank-w Dec 12, 2017
116a877
enabled uart0
frank-w Dec 13, 2017
26a9392
mt76x2 firmware was not uploaded due to gitignore (*.bin)
frank-w Dec 13, 2017
e59b295
first step to reorder kernel-config
frank-w Dec 13, 2017
c43f50a
Merge tag 'v4.14.6' into frank-w-4.14-merges-2
bburky Feb 3, 2018
e45e919
bugfix in config
frank-w Dec 14, 2017
bfd75aa
Merge tag 'v4.14.7' into frank-w-4.14-merges-2
bburky Feb 3, 2018
1e44c06
activated uart1 in dts (currently not working)
frank-w Dec 18, 2017
3befcc6
change language to english of error message in build.sh
frank-w Dec 19, 2017
c6c4de1
added make-option for faster compile on multicore-systems
frank-w Dec 19, 2017
d96aab3
Merge tag 'v4.14.8' into frank-w-4.14-merges-2
bburky Feb 3, 2018
e6b369a
merge mt6625l wifi driver
frank-w Dec 20, 2017
f386bbd
internal WiFi in defconfig
frank-w Dec 21, 2017
4761195
fixed uart-detection, added uart3-node
frank-w Dec 21, 2017
03f472d
merged wmt-tools from wifi-branch
frank-w Dec 22, 2017
e46d5d0
updated Readme for internal wifi usage
frank-w Dec 22, 2017
47ee77d
Patch for supporting PWM (including 4+5)
frank-w Dec 22, 2017
cab1f5c
README for wmt-files
frank-w Dec 23, 2017
d6d5096
added missing bin-files from wmt-firmware
frank-w Dec 23, 2017
f993842
added wmt-tools to build.sh-pack
frank-w Dec 23, 2017
707338b
Merge tag 'v4.14.9' into frank-w-4.14-merges-2
bburky Feb 3, 2018
48d4917
added automatic md5sum-creation on pack
frank-w Dec 28, 2017
822f8b1
added MT76-Firmware to build.sh
frank-w Dec 29, 2017
26fbc31
Merge tag 'v4.14.10' into frank-w-4.14-merges-2
bburky Feb 3, 2018
1f308bb
update to 4.14.10
frank-w Dec 30, 2017
82702ea
added cryptodev
frank-w Dec 30, 2017
bbaa86d
added logging to build.sh (was removed accidentally)
frank-w Dec 30, 2017
691a36b
fixed language of error-messages in build.log
frank-w Dec 30, 2017
7a28c2d
collecting files for SD-Card/Archive in separate function
frank-w Jan 1, 2018
feb7474
Merge tag 'v4.14.11' into frank-w-4.14-merges-2
bburky Feb 3, 2018
84a9de7
update to 4.14.11, adding some NetFilter-Options, build.sh now uses a…
frank-w Jan 3, 2018
97c10bb
added MTK_TERMAL for reading Temperature
frank-w Jan 3, 2018
c9b662f
added printk for pwm (1kHz instead of 5kHz)
frank-w Jan 5, 2018
956607e
patches for BT
frank-w Jan 5, 2018
fbde6eb
added HDMI-options to defconfig
frank-w Jan 5, 2018
903cd10
Merge tag 'v4.14.12' into frank-w-4.14-merges-2
bburky Feb 3, 2018
c5b81e0
changed defconfig (removed some defaults in wlan,added vlan-basics)
frank-w Jan 6, 2018
a6f20dd
fixed kernel-name (not include git-commit-id and dirty but "bpi-r2")
frank-w Jan 7, 2018
da288ca
get rid of commit-id and dirty-flag #2
frank-w Jan 10, 2018
a290c71
Merge tag 'v4.14.13' into frank-w-4.14-merges-2
bburky Feb 3, 2018
175c683
Update mtk_eth_soc.c
frank-w Jan 14, 2018
1741ef7
reorganizing Options adding some for HDMI+HID
frank-w Jan 14, 2018
ba12c3d
Merge tag 'v4.14.14' into frank-w-4.14-merges-2
bburky Feb 3, 2018
a715530
update to 4.14.14
frank-w Jan 18, 2018
124c822
updated defconfig (issue #11), added option in build.sh for changing …
frank-w Jan 20, 2018
d0899f9
add CONFIG_PAGE_TABLE_ISOLATION option against spectre/meltdown, curr…
frank-w Jan 20, 2018
0973c83
added usb-serial-driver, packed files should be owned by root
frank-w Jan 21, 2018
4e436bf
support Logical Volume Manager
frank-w Jan 22, 2018
fc85e82
Merge tag 'v4.14.15' into frank-w-4.14-merges-2
bburky Feb 3, 2018
f61055c
allow non-crosscompile direct on the bpi-r2
frank-w Jan 26, 2018
76d1992
add SPIDEV and IP-Mangle
frank-w Jan 26, 2018
171d715
Merge tag 'v4.14.16' into frank-w-4.14-merges-2
bburky Feb 3, 2018
452974d
added gitbranch to kernel-version
frank-w Feb 3, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ Module.symvers
*.dwo
*.su
*.c.[012]*.*
arch/arm/boot/zImage-dtb
uImage
*.rej
build.log
u-boot/
uboot/

#
# Top-level generic files
Expand Down
16 changes: 16 additions & 0 deletions Documentation/ABI/testing/sysfs-devices-system-cpu
Original file line number Diff line number Diff line change
Expand Up @@ -373,3 +373,19 @@ Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
Description: information about CPUs heterogeneity.

cpu_capacity: capacity of cpu#.

What: /sys/devices/system/cpu/vulnerabilities
/sys/devices/system/cpu/vulnerabilities/meltdown
/sys/devices/system/cpu/vulnerabilities/spectre_v1
/sys/devices/system/cpu/vulnerabilities/spectre_v2
Date: January 2018
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
Description: Information about CPU vulnerabilities

The files are named after the code names of CPU
vulnerabilities. The output of those files reflects the
state of the CPUs in the system. Possible output values:

"Not affected" CPU is not affected by the vulnerability
"Vulnerable" CPU is affected and no mitigation in effect
"Mitigation: $M" CPU is affected and mitigation $M is in effect
43 changes: 43 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2599,6 +2599,11 @@
nosmt [KNL,S390] Disable symmetric multithreading (SMT).
Equivalent to smt=1.

nospectre_v2 [X86] Disable all mitigations for the Spectre variant 2
(indirect branch prediction) vulnerability. System may
allow data leaks with this option, which is equivalent
to spectre_v2=off.

noxsave [BUGS=X86] Disables x86 extended register state save
and restore using xsave. The kernel will fallback to
enabling legacy floating-point and sse state.
Expand Down Expand Up @@ -3253,6 +3258,21 @@
pt. [PARIDE]
See Documentation/blockdev/paride.txt.

pti= [X86_64] Control Page Table Isolation of user and
kernel address spaces. Disabling this feature
removes hardening, but improves performance of
system calls and interrupts.

on - unconditionally enable
off - unconditionally disable
auto - kernel detects whether your CPU model is
vulnerable to issues that PTI mitigates

Not specifying this option is equivalent to pti=auto.

nopti [X86_64]
Equivalent to pti=off

pty.legacy_count=
[KNL] Number of legacy pty's. Overwrites compiled-in
default number.
Expand Down Expand Up @@ -3893,6 +3913,29 @@
sonypi.*= [HW] Sony Programmable I/O Control Device driver
See Documentation/laptops/sonypi.txt

spectre_v2= [X86] Control mitigation of Spectre variant 2
(indirect branch speculation) vulnerability.

on - unconditionally enable
off - unconditionally disable
auto - kernel detects whether your CPU model is
vulnerable

Selecting 'on' will, and 'auto' may, choose a
mitigation method at run time according to the
CPU, the available microcode, the setting of the
CONFIG_RETPOLINE configuration option, and the
compiler with which the kernel was built.

Specific mitigations can also be selected manually:

retpoline - replace indirect branches
retpoline,generic - google's original retpoline
retpoline,amd - AMD-specific minimal thunk

Not specifying this option is equivalent to
spectre_v2=auto.

spia_io_base= [HW,MTD]
spia_fio_base=
spia_pedr=
Expand Down
4 changes: 4 additions & 0 deletions Documentation/devicetree/bindings/hwmon/jc42.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ Required properties:

- reg: I2C address

Optional properties:
- smbus-timeout-disable: When set, the smbus timeout function will be disabled.
This is not supported on all chips.

Example:

temp-sensor@1a {
Expand Down
24 changes: 12 additions & 12 deletions Documentation/devicetree/bindings/timer/renesas,cmt.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ Required Properties:
(CMT1 on sh73a0 and r8a7740)
This is a fallback for the above renesas,cmt-48-* entries.

- "renesas,cmt0-r8a73a4" for the 32-bit CMT0 device included in r8a73a4.
- "renesas,cmt1-r8a73a4" for the 48-bit CMT1 device included in r8a73a4.
- "renesas,cmt0-r8a7790" for the 32-bit CMT0 device included in r8a7790.
- "renesas,cmt1-r8a7790" for the 48-bit CMT1 device included in r8a7790.
- "renesas,cmt0-r8a7791" for the 32-bit CMT0 device included in r8a7791.
- "renesas,cmt1-r8a7791" for the 48-bit CMT1 device included in r8a7791.
- "renesas,cmt0-r8a7793" for the 32-bit CMT0 device included in r8a7793.
- "renesas,cmt1-r8a7793" for the 48-bit CMT1 device included in r8a7793.
- "renesas,cmt0-r8a7794" for the 32-bit CMT0 device included in r8a7794.
- "renesas,cmt1-r8a7794" for the 48-bit CMT1 device included in r8a7794.
- "renesas,r8a73a4-cmt0" for the 32-bit CMT0 device included in r8a73a4.
- "renesas,r8a73a4-cmt1" for the 48-bit CMT1 device included in r8a73a4.
- "renesas,r8a7790-cmt0" for the 32-bit CMT0 device included in r8a7790.
- "renesas,r8a7790-cmt1" for the 48-bit CMT1 device included in r8a7790.
- "renesas,r8a7791-cmt0" for the 32-bit CMT0 device included in r8a7791.
- "renesas,r8a7791-cmt1" for the 48-bit CMT1 device included in r8a7791.
- "renesas,r8a7793-cmt0" for the 32-bit CMT0 device included in r8a7793.
- "renesas,r8a7793-cmt1" for the 48-bit CMT1 device included in r8a7793.
- "renesas,r8a7794-cmt0" for the 32-bit CMT0 device included in r8a7794.
- "renesas,r8a7794-cmt1" for the 48-bit CMT1 device included in r8a7794.

- "renesas,rcar-gen2-cmt0" for 32-bit CMT0 devices included in R-Car Gen2.
- "renesas,rcar-gen2-cmt1" for 48-bit CMT1 devices included in R-Car Gen2.
Expand All @@ -46,7 +46,7 @@ Required Properties:
Example: R8A7790 (R-Car H2) CMT0 and CMT1 nodes

cmt0: timer@ffca0000 {
compatible = "renesas,cmt0-r8a7790", "renesas,rcar-gen2-cmt0";
compatible = "renesas,r8a7790-cmt0", "renesas,rcar-gen2-cmt0";
reg = <0 0xffca0000 0 0x1004>;
interrupts = <0 142 IRQ_TYPE_LEVEL_HIGH>,
<0 142 IRQ_TYPE_LEVEL_HIGH>;
Expand All @@ -55,7 +55,7 @@ Example: R8A7790 (R-Car H2) CMT0 and CMT1 nodes
};

cmt1: timer@e6130000 {
compatible = "renesas,cmt1-r8a7790", "renesas,rcar-gen2-cmt1";
compatible = "renesas,r8a7790-cmt1", "renesas,rcar-gen2-cmt1";
reg = <0 0xe6130000 0 0x1004>;
interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>,
<0 121 IRQ_TYPE_LEVEL_HIGH>,
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/usb/usb-device.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Required properties:
be used, but a device adhering to this binding may leave out all except
for usbVID,PID.
- reg: the port number which this device is connecting to, the range
is 1-31.
is 1-255.

Example:

Expand Down
2 changes: 1 addition & 1 deletion Documentation/x86/orc-unwinder.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ORC unwinder
Overview
--------

The kernel CONFIG_ORC_UNWINDER option enables the ORC unwinder, which is
The kernel CONFIG_UNWINDER_ORC option enables the ORC unwinder, which is
similar in concept to a DWARF unwinder. The difference is that the
format of the ORC data is much simpler than DWARF, which in turn allows
the ORC unwinder to be much simpler and faster.
Expand Down
186 changes: 186 additions & 0 deletions Documentation/x86/pti.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
Overview
========

Page Table Isolation (pti, previously known as KAISER[1]) is a
countermeasure against attacks on the shared user/kernel address
space such as the "Meltdown" approach[2].

To mitigate this class of attacks, we create an independent set of
page tables for use only when running userspace applications. When
the kernel is entered via syscalls, interrupts or exceptions, the
page tables are switched to the full "kernel" copy. When the system
switches back to user mode, the user copy is used again.

The userspace page tables contain only a minimal amount of kernel
data: only what is needed to enter/exit the kernel such as the
entry/exit functions themselves and the interrupt descriptor table
(IDT). There are a few strictly unnecessary things that get mapped
such as the first C function when entering an interrupt (see
comments in pti.c).

This approach helps to ensure that side-channel attacks leveraging
the paging structures do not function when PTI is enabled. It can be
enabled by setting CONFIG_PAGE_TABLE_ISOLATION=y at compile time.
Once enabled at compile-time, it can be disabled at boot with the
'nopti' or 'pti=' kernel parameters (see kernel-parameters.txt).

Page Table Management
=====================

When PTI is enabled, the kernel manages two sets of page tables.
The first set is very similar to the single set which is present in
kernels without PTI. This includes a complete mapping of userspace
that the kernel can use for things like copy_to_user().

Although _complete_, the user portion of the kernel page tables is
crippled by setting the NX bit in the top level. This ensures
that any missed kernel->user CR3 switch will immediately crash
userspace upon executing its first instruction.

The userspace page tables map only the kernel data needed to enter
and exit the kernel. This data is entirely contained in the 'struct
cpu_entry_area' structure which is placed in the fixmap which gives
each CPU's copy of the area a compile-time-fixed virtual address.

For new userspace mappings, the kernel makes the entries in its
page tables like normal. The only difference is when the kernel
makes entries in the top (PGD) level. In addition to setting the
entry in the main kernel PGD, a copy of the entry is made in the
userspace page tables' PGD.

This sharing at the PGD level also inherently shares all the lower
layers of the page tables. This leaves a single, shared set of
userspace page tables to manage. One PTE to lock, one set of
accessed bits, dirty bits, etc...

Overhead
========

Protection against side-channel attacks is important. But,
this protection comes at a cost:

1. Increased Memory Use
a. Each process now needs an order-1 PGD instead of order-0.
(Consumes an additional 4k per process).
b. The 'cpu_entry_area' structure must be 2MB in size and 2MB
aligned so that it can be mapped by setting a single PMD
entry. This consumes nearly 2MB of RAM once the kernel
is decompressed, but no space in the kernel image itself.

2. Runtime Cost
a. CR3 manipulation to switch between the page table copies
must be done at interrupt, syscall, and exception entry
and exit (it can be skipped when the kernel is interrupted,
though.) Moves to CR3 are on the order of a hundred
cycles, and are required at every entry and exit.
b. A "trampoline" must be used for SYSCALL entry. This
trampoline depends on a smaller set of resources than the
non-PTI SYSCALL entry code, so requires mapping fewer
things into the userspace page tables. The downside is
that stacks must be switched at entry time.
c. Global pages are disabled for all kernel structures not
mapped into both kernel and userspace page tables. This
feature of the MMU allows different processes to share TLB
entries mapping the kernel. Losing the feature means more
TLB misses after a context switch. The actual loss of
performance is very small, however, never exceeding 1%.
d. Process Context IDentifiers (PCID) is a CPU feature that
allows us to skip flushing the entire TLB when switching page
tables by setting a special bit in CR3 when the page tables
are changed. This makes switching the page tables (at context
switch, or kernel entry/exit) cheaper. But, on systems with
PCID support, the context switch code must flush both the user
and kernel entries out of the TLB. The user PCID TLB flush is
deferred until the exit to userspace, minimizing the cost.
See intel.com/sdm for the gory PCID/INVPCID details.
e. The userspace page tables must be populated for each new
process. Even without PTI, the shared kernel mappings
are created by copying top-level (PGD) entries into each
new process. But, with PTI, there are now *two* kernel
mappings: one in the kernel page tables that maps everything
and one for the entry/exit structures. At fork(), we need to
copy both.
f. In addition to the fork()-time copying, there must also
be an update to the userspace PGD any time a set_pgd() is done
on a PGD used to map userspace. This ensures that the kernel
and userspace copies always map the same userspace
memory.
g. On systems without PCID support, each CR3 write flushes
the entire TLB. That means that each syscall, interrupt
or exception flushes the TLB.
h. INVPCID is a TLB-flushing instruction which allows flushing
of TLB entries for non-current PCIDs. Some systems support
PCIDs, but do not support INVPCID. On these systems, addresses
can only be flushed from the TLB for the current PCID. When
flushing a kernel address, we need to flush all PCIDs, so a
single kernel address flush will require a TLB-flushing CR3
write upon the next use of every PCID.

Possible Future Work
====================
1. We can be more careful about not actually writing to CR3
unless its value is actually changed.
2. Allow PTI to be enabled/disabled at runtime in addition to the
boot-time switching.

Testing
========

To test stability of PTI, the following test procedure is recommended,
ideally doing all of these in parallel:

1. Set CONFIG_DEBUG_ENTRY=y
2. Run several copies of all of the tools/testing/selftests/x86/ tests
(excluding MPX and protection_keys) in a loop on multiple CPUs for
several minutes. These tests frequently uncover corner cases in the
kernel entry code. In general, old kernels might cause these tests
themselves to crash, but they should never crash the kernel.
3. Run the 'perf' tool in a mode (top or record) that generates many
frequent performance monitoring non-maskable interrupts (see "NMI"
in /proc/interrupts). This exercises the NMI entry/exit code which
is known to trigger bugs in code paths that did not expect to be
interrupted, including nested NMIs. Using "-c" boosts the rate of
NMIs, and using two -c with separate counters encourages nested NMIs
and less deterministic behavior.

while true; do perf record -c 10000 -e instructions,cycles -a sleep 10; done

4. Launch a KVM virtual machine.
5. Run 32-bit binaries on systems supporting the SYSCALL instruction.
This has been a lightly-tested code path and needs extra scrutiny.

Debugging
=========

Bugs in PTI cause a few different signatures of crashes
that are worth noting here.

* Failures of the selftests/x86 code. Usually a bug in one of the
more obscure corners of entry_64.S
* Crashes in early boot, especially around CPU bringup. Bugs
in the trampoline code or mappings cause these.
* Crashes at the first interrupt. Caused by bugs in entry_64.S,
like screwing up a page table switch. Also caused by
incorrectly mapping the IRQ handler entry code.
* Crashes at the first NMI. The NMI code is separate from main
interrupt handlers and can have bugs that do not affect
normal interrupts. Also caused by incorrectly mapping NMI
code. NMIs that interrupt the entry code must be very
careful and can be the cause of crashes that show up when
running perf.
* Kernel crashes at the first exit to userspace. entry_64.S
bugs, or failing to map some of the exit code.
* Crashes at first interrupt that interrupts userspace. The paths
in entry_64.S that return to userspace are sometimes separate
from the ones that return to the kernel.
* Double faults: overflowing the kernel stack because of page
faults upon page faults. Caused by touching non-pti-mapped
data in the entry code, or forgetting to switch to kernel
CR3 before calling into C functions which are not pti-mapped.
* Userspace segfaults early in boot, sometimes manifesting
as mount(8) failing to mount the rootfs. These have
tended to be TLB invalidation issues. Usually invalidating
the wrong PCID, or otherwise missing an invalidation.

1. https://gruss.cc/files/kaiser.pdf
2. https://meltdownattack.com/meltdown.pdf
Loading