summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorSrinivasarao P <spathi@codeaurora.org>2018-08-02 12:00:59 +0530
committerSrinivasarao P <spathi@codeaurora.org>2018-08-03 17:05:13 +0530
commitfacb909e66d37224f564750e8ebc693b91934ec6 (patch)
treef51a18d81912d42bc1dcf9d4bd3b4a644680a1db /include/linux
parent508ac0adfc5bc7a0ec3fc81e2ac9371e3add6d6c (diff)
parent4b2d6badbc4057bd43e442eb20141fb40c549f6d (diff)
Merge android-4.4.144 (4b2d6ba) into msm-4.4
* refs/heads/tmp-4b2d6ba Linux 4.4.144 ubi: fastmap: Erase outdated anchor PEBs during attach ubi: Fix Fastmap's update_vol() ubi: Fix races around ubi_refill_pools() ubi: Be more paranoid while seaching for the most recent Fastmap ubi: Rework Fastmap attach base code ubi: Introduce vol_ignored() clk: tegra: Fix PLL_U post divider and initial rate on Tegra30 block: do not use interruptible wait anywhere x86/cpu: Re-apply forced caps every time CPU caps are re-read x86/xen: Add call of speculative_store_bypass_ht_init() to PV paths x86/bugs: Rename SSBD_NO to SSB_NO x86/speculation, KVM: Implement support for VIRT_SPEC_CTRL/LS_CFG x86/bugs: Rework spec_ctrl base and mask logic x86/bugs: Remove x86_spec_ctrl_set() x86/bugs: Expose x86_spec_ctrl_base directly x86/bugs: Unify x86_spec_ctrl_{set_guest, restore_host} x86/speculation: Rework speculative_store_bypass_update() x86/speculation: Add virtualized speculative store bypass disable support x86/bugs, KVM: Extend speculation control for VIRT_SPEC_CTRL x86/speculation: Handle HT correctly on AMD x86/cpufeatures: Add FEATURE_ZEN x86/cpu/AMD: Fix erratum 1076 (CPB bit) x86/cpufeatures: Disentangle SSBD enumeration x86/cpufeatures: Disentangle MSR_SPEC_CTRL enumeration from IBRS x86/speculation: Use synthetic bits for IBRS/IBPB/STIBP x86/cpu: Make alternative_msr_write work for 32-bit code x86/bugs: Fix the parameters alignment and missing void x86/bugs: Make cpu_show_common() static x86/bugs: Fix __ssb_select_mitigation() return type Documentation/spec_ctrl: Do some minor cleanups proc: Use underscores for SSBD in 'status' x86/bugs: Rename _RDS to _SSBD x86/speculation: Make "seccomp" the default mode for Speculative Store Bypass seccomp: Move speculation migitation control to arch code seccomp: Add filter flag to opt-out of SSB mitigation seccomp: Use PR_SPEC_FORCE_DISABLE prctl: Add force disable speculation seccomp: Enable speculation flaw mitigations proc: Provide details on speculation flaw mitigations nospec: Allow getting/setting on non-current task x86/speculation: Add prctl for Speculative Store Bypass mitigation x86/process: Allow runtime control of Speculative Store Bypass x86/process: Optimize TIF_NOTSC switch x86/process: Correct and optimize TIF_BLOCKSTEP switch x86/process: Optimize TIF checks in __switch_to_xtra() prctl: Add speculation control prctls x86/speculation: Create spec-ctrl.h to avoid include hell x86/bugs/AMD: Add support to disable RDS on Fam[15, 16, 17]h if requested x86/bugs: Whitelist allowed SPEC_CTRL MSR values x86/bugs/intel: Set proper CPU features and setup RDS x86/bugs: Provide boot parameters for the spec_store_bypass_disable mitigation x86/cpufeatures: Add X86_FEATURE_RDS x86/bugs: Expose /sys/../spec_store_bypass x86/cpu/intel: Add Knights Mill to Intel family x86/cpu: Rename Merrifield2 to Moorefield x86/bugs, KVM: Support the combination of guest and host IBRS x86/bugs: Read SPEC_CTRL MSR during boot and re-use reserved bits x86/bugs: Concentrate bug reporting into a separate function x86/bugs: Concentrate bug detection into a separate function x86/nospec: Simplify alternative_msr_write() x86/amd: don't set X86_BUG_SYSRET_SS_ATTRS when running under Xen xen: set cpu capabilities from xen_start_kernel() selftest/seccomp: Fix the seccomp(2) signature selftest/seccomp: Fix the flag name SECCOMP_FILTER_FLAG_TSYNC x86/speculation: Remove Skylake C2 from Speculation Control microcode blacklist x86/speculation: Move firmware_restrict_branch_speculation_*() from C to CPP x86/speculation: Use IBRS if available before calling into firmware x86/spectre_v2: Don't check microcode versions when running under hypervisors x86/speculation: Use Indirect Branch Prediction Barrier in context switch x86/mm: Give each mm TLB flush generation a unique ID x86/mm: Factor out LDT init from context init x86/xen: Zero MSR_IA32_SPEC_CTRL before suspend x86/speculation: Add <asm/msr-index.h> dependency x86/speculation: Fix up array_index_nospec_mask() asm constraint x86/speculation: Clean up various Spectre related details x86/speculation: Correct Speculation Control microcode blacklist again x86/speculation: Update Speculation Control microcode blacklist x86/entry/64/compat: Clear registers for compat syscalls, to reduce speculation attack surface x86/asm/entry/32: Simplify pushes of zeroed pt_regs->REGs x86/pti: Mark constant arrays as __initconst x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel x86/cpufeatures: Clean up Spectre v2 related CPUID flags x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown x86/msr: Add definitions for new speculation control MSRs x86/cpufeatures: Add AMD feature bits for Speculation Control x86/cpufeatures: Add Intel feature bits for Speculation Control x86/cpufeatures: Add CPUID_7_EDX CPUID leaf x86/paravirt: Make native_save_fl() extern inline xhci: Fix perceived dead host due to runtime suspend race with event handler skbuff: Unconditionally copy pfmemalloc in __skb_clone() net: Don't copy pfmemalloc flag in __copy_skb_header() tg3: Add higher cpu clock for 5762. ptp: fix missing break in switch net: phy: fix flag masking in __set_phy_supported net/ipv4: Set oif in fib_compute_spec_dst lib/rhashtable: consider param->min_size when setting initial table size ipv6: fix useless rol32 call on hash ipv4: Return EINVAL when ping_group_range sysctl doesn't map to user ns mm: memcg: fix use after free in mem_cgroup_iter() ARC: mm: allow mprotect to make stack mappings executable ARC: Fix CONFIG_SWAP ALSA: rawmidi: Change resized buffers atomically fat: fix memory allocation failure handling of match_strdup() x86/MCE: Remove min interval polling limitation KVM/Eventfd: Avoid crash when assign and deassign specific eventfd in parallel. Conflicts: drivers/mtd/ubi/wl.c sound/core/rawmidi.c Change-Id: I277fe9260a764e7923ddc90e7327d9aa5865a038 Signed-off-by: Srinivasarao P <spathi@codeaurora.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/cpu.h2
-rw-r--r--include/linux/nospec.h10
-rw-r--r--include/linux/sched.h9
-rw-r--r--include/linux/seccomp.h3
-rw-r--r--include/linux/skbuff.h12
5 files changed, 29 insertions, 7 deletions
diff --git a/include/linux/cpu.h b/include/linux/cpu.h
index 6d4c3d55d29c..76efa14a6959 100644
--- a/include/linux/cpu.h
+++ b/include/linux/cpu.h
@@ -59,6 +59,8 @@ extern ssize_t cpu_show_spectre_v1(struct device *dev,
struct device_attribute *attr, char *buf);
extern ssize_t cpu_show_spectre_v2(struct device *dev,
struct device_attribute *attr, char *buf);
+extern ssize_t cpu_show_spec_store_bypass(struct device *dev,
+ struct device_attribute *attr, char *buf);
extern __printf(4, 5)
struct device *cpu_device_create(struct device *parent, void *drvdata,
diff --git a/include/linux/nospec.h b/include/linux/nospec.h
index e791ebc65c9c..0c5ef54fd416 100644
--- a/include/linux/nospec.h
+++ b/include/linux/nospec.h
@@ -7,6 +7,8 @@
#define _LINUX_NOSPEC_H
#include <asm/barrier.h>
+struct task_struct;
+
/**
* array_index_mask_nospec() - generate a ~0 mask when index < size, 0 otherwise
* @index: array element index
@@ -55,4 +57,12 @@ static inline unsigned long array_index_mask_nospec(unsigned long index,
\
(typeof(_i)) (_i & _mask); \
})
+
+/* Speculation control prctl */
+int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which);
+int arch_prctl_spec_ctrl_set(struct task_struct *task, unsigned long which,
+ unsigned long ctrl);
+/* Speculation control for seccomp enforced mitigation */
+void arch_seccomp_spec_mitigate(struct task_struct *task);
+
#endif /* _LINUX_NOSPEC_H */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 81f422018aa1..5fe8c3dfd60f 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -2457,6 +2457,8 @@ static inline void memalloc_noio_restore(unsigned int flags)
#define PFA_NO_NEW_PRIVS 0 /* May not gain new privileges. */
#define PFA_SPREAD_PAGE 1 /* Spread page cache over cpuset */
#define PFA_SPREAD_SLAB 2 /* Spread some slab caches over cpuset */
+#define PFA_SPEC_SSB_DISABLE 4 /* Speculative Store Bypass disabled */
+#define PFA_SPEC_SSB_FORCE_DISABLE 5 /* Speculative Store Bypass force disabled*/
#define TASK_PFA_TEST(name, func) \
@@ -2480,6 +2482,13 @@ TASK_PFA_TEST(SPREAD_SLAB, spread_slab)
TASK_PFA_SET(SPREAD_SLAB, spread_slab)
TASK_PFA_CLEAR(SPREAD_SLAB, spread_slab)
+TASK_PFA_TEST(SPEC_SSB_DISABLE, spec_ssb_disable)
+TASK_PFA_SET(SPEC_SSB_DISABLE, spec_ssb_disable)
+TASK_PFA_CLEAR(SPEC_SSB_DISABLE, spec_ssb_disable)
+
+TASK_PFA_TEST(SPEC_SSB_FORCE_DISABLE, spec_ssb_force_disable)
+TASK_PFA_SET(SPEC_SSB_FORCE_DISABLE, spec_ssb_force_disable)
+
/*
* task->jobctl flags
*/
diff --git a/include/linux/seccomp.h b/include/linux/seccomp.h
index 2296e6b2f690..5a53d34bba26 100644
--- a/include/linux/seccomp.h
+++ b/include/linux/seccomp.h
@@ -3,7 +3,8 @@
#include <uapi/linux/seccomp.h>
-#define SECCOMP_FILTER_FLAG_MASK (SECCOMP_FILTER_FLAG_TSYNC)
+#define SECCOMP_FILTER_FLAG_MASK (SECCOMP_FILTER_FLAG_TSYNC | \
+ SECCOMP_FILTER_FLAG_SPEC_ALLOW)
#ifdef CONFIG_SECCOMP
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index a6da214d0584..c28bd8be290a 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -514,6 +514,7 @@ static inline bool skb_mstamp_after(const struct skb_mstamp *t1,
* @hash: the packet hash
* @queue_mapping: Queue mapping for multiqueue devices
* @xmit_more: More SKBs are pending for this queue
+ * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves
* @ndisc_nodetype: router type (from link layer)
* @ooo_okay: allow the mapping of a socket to a queue to be changed
* @l4_hash: indicate hash is a canonical 4-tuple hash over transport
@@ -594,8 +595,8 @@ struct sk_buff {
fclone:2,
peeked:1,
head_frag:1,
- xmit_more:1;
- /* one bit hole */
+ xmit_more:1,
+ pfmemalloc:1;
kmemcheck_bitfield_end(flags1);
/* fields enclosed in headers_start/headers_end are copied
@@ -615,19 +616,18 @@ struct sk_buff {
__u8 __pkt_type_offset[0];
__u8 pkt_type:3;
- __u8 pfmemalloc:1;
__u8 ignore_df:1;
__u8 nfctinfo:3;
-
__u8 nf_trace:1;
+
__u8 ip_summed:2;
__u8 ooo_okay:1;
__u8 l4_hash:1;
__u8 sw_hash:1;
__u8 wifi_acked_valid:1;
__u8 wifi_acked:1;
-
__u8 no_fcs:1;
+
/* Indicates the inner headers are valid in the skbuff. */
__u8 encapsulation:1;
__u8 encap_hdr_csum:1;
@@ -635,11 +635,11 @@ struct sk_buff {
__u8 csum_complete_sw:1;
__u8 csum_level:2;
__u8 csum_bad:1;
-
#ifdef CONFIG_IPV6_NDISC_NODETYPE
__u8 ndisc_nodetype:2;
#endif
__u8 ipvs_property:1;
+
__u8 inner_protocol_type:1;
__u8 remcsum_offload:1;
/* 3 or 5 bit hole */