Re: Linux 4.13.8

2017-10-18 Thread Greg KH
diff --git a/Makefile b/Makefile
index 0d4f1b19869d..66ec023da822 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 13
-SUBLEVEL = 7
+SUBLEVEL = 8
 EXTRAVERSION =
 NAME = Fearless Coyote
 
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index f08a7b4facb9..4f0a1a6f7589 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -2387,7 +2387,6 @@ static int fpu_emu(struct pt_regs *xcp, struct 
mips_fpu_struct *ctx,
break;
default:
/* Reserved R6 ops */
-   pr_err("Reserved MIPS R6 CMP.condn.S 
operation\n");
return SIGILL;
}
}
@@ -2461,7 +2460,6 @@ static int fpu_emu(struct pt_regs *xcp, struct 
mips_fpu_struct *ctx,
break;
default:
/* Reserved R6 ops */
-   pr_err("Reserved MIPS R6 CMP.condn.D 
operation\n");
return SIGILL;
}
}
diff --git a/arch/mips/net/ebpf_jit.c b/arch/mips/net/ebpf_jit.c
index 3f87b96da5c4..401776f92288 100644
--- a/arch/mips/net/ebpf_jit.c
+++ b/arch/mips/net/ebpf_jit.c
@@ -679,7 +679,7 @@ static int build_one_insn(const struct bpf_insn *insn, 
struct jit_ctx *ctx,
 {
int src, dst, r, td, ts, mem_off, b_off;
bool need_swap, did_move, cmp_eq;
-   unsigned int target;
+   unsigned int target = 0;
u64 t64;
s64 t64s;
 
diff --git a/arch/x86/include/asm/alternative-asm.h 
b/arch/x86/include/asm/alternative-asm.h
index e7636bac7372..6c98821fef5e 100644
--- a/arch/x86/include/asm/alternative-asm.h
+++ b/arch/x86/include/asm/alternative-asm.h
@@ -62,8 +62,10 @@
 #define new_len2   145f-144f
 
 /*
- * max without conditionals. Idea adapted from:
+ * gas compatible max based on the idea from:
  * http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax
+ *
+ * The additional "-" is needed because gas uses a "true" value of -1.
  */
 #define alt_max_short(a, b)((a) ^ (((a) ^ (b)) & -(-((a) < (b)
 
diff --git a/arch/x86/include/asm/alternative.h 
b/arch/x86/include/asm/alternative.h
index 1b020381ab38..d4aea31eec03 100644
--- a/arch/x86/include/asm/alternative.h
+++ b/arch/x86/include/asm/alternative.h
@@ -103,12 +103,12 @@ static inline int alternatives_text_reserved(void *start, 
void *end)
alt_end_marker ":\n"
 
 /*
- * max without conditionals. Idea adapted from:
+ * gas compatible max based on the idea from:
  * http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax
  *
- * The additional "-" is needed because gas works with s32s.
+ * The additional "-" is needed because gas uses a "true" value of -1.
  */
-#define alt_max_short(a, b)"((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") 
- (" b ")"
+#define alt_max_short(a, b)"((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") 
< (" b ")"
 
 /*
  * Pad the second replacement alternative with additional NOPs if it is
diff --git a/arch/x86/kernel/cpu/microcode/core.c 
b/arch/x86/kernel/cpu/microcode/core.c
index 86e8f0b2537b..c4fa4a85d4cb 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -122,9 +122,6 @@ static bool __init check_loader_disabled_bsp(void)
bool *res = _ucode_ldr;
 #endif
 
-   if (!have_cpuid_p())
-   return *res;
-
/*
 * CPUID(1).ECX[31]: reserved for hypervisor use. This is still not
 * completely accurate as xen pv guests don't see that CPUID bit set but
@@ -166,24 +163,36 @@ bool get_builtin_firmware(struct cpio_data *cd, const 
char *name)
 void __init load_ucode_bsp(void)
 {
unsigned int cpuid_1_eax;
+   bool intel = true;
 
-   if (check_loader_disabled_bsp())
+   if (!have_cpuid_p())
return;
 
cpuid_1_eax = native_cpuid_eax(1);
 
switch (x86_cpuid_vendor()) {
case X86_VENDOR_INTEL:
-   if (x86_family(cpuid_1_eax) >= 6)
-   load_ucode_intel_bsp();
+   if (x86_family(cpuid_1_eax) < 6)
+   return;
break;
+
case X86_VENDOR_AMD:
-   if (x86_family(cpuid_1_eax) >= 0x10)
-   load_ucode_amd_bsp(cpuid_1_eax);
+   if (x86_family(cpuid_1_eax) < 0x10)
+   return;
+   intel = false;
break;
+
default:
-   break;
+   return;
}
+
+   if (check_loader_disabled_bsp())
+   return;
+
+   if (intel)
+   load_ucode_intel_bsp();
+   else
+   load_ucode_amd_bsp(cpuid_1_eax);
 }
 
 

Re: Linux 4.13.8

2017-10-18 Thread Greg KH
diff --git a/Makefile b/Makefile
index 0d4f1b19869d..66ec023da822 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 13
-SUBLEVEL = 7
+SUBLEVEL = 8
 EXTRAVERSION =
 NAME = Fearless Coyote
 
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c
index f08a7b4facb9..4f0a1a6f7589 100644
--- a/arch/mips/math-emu/cp1emu.c
+++ b/arch/mips/math-emu/cp1emu.c
@@ -2387,7 +2387,6 @@ static int fpu_emu(struct pt_regs *xcp, struct 
mips_fpu_struct *ctx,
break;
default:
/* Reserved R6 ops */
-   pr_err("Reserved MIPS R6 CMP.condn.S 
operation\n");
return SIGILL;
}
}
@@ -2461,7 +2460,6 @@ static int fpu_emu(struct pt_regs *xcp, struct 
mips_fpu_struct *ctx,
break;
default:
/* Reserved R6 ops */
-   pr_err("Reserved MIPS R6 CMP.condn.D 
operation\n");
return SIGILL;
}
}
diff --git a/arch/mips/net/ebpf_jit.c b/arch/mips/net/ebpf_jit.c
index 3f87b96da5c4..401776f92288 100644
--- a/arch/mips/net/ebpf_jit.c
+++ b/arch/mips/net/ebpf_jit.c
@@ -679,7 +679,7 @@ static int build_one_insn(const struct bpf_insn *insn, 
struct jit_ctx *ctx,
 {
int src, dst, r, td, ts, mem_off, b_off;
bool need_swap, did_move, cmp_eq;
-   unsigned int target;
+   unsigned int target = 0;
u64 t64;
s64 t64s;
 
diff --git a/arch/x86/include/asm/alternative-asm.h 
b/arch/x86/include/asm/alternative-asm.h
index e7636bac7372..6c98821fef5e 100644
--- a/arch/x86/include/asm/alternative-asm.h
+++ b/arch/x86/include/asm/alternative-asm.h
@@ -62,8 +62,10 @@
 #define new_len2   145f-144f
 
 /*
- * max without conditionals. Idea adapted from:
+ * gas compatible max based on the idea from:
  * http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax
+ *
+ * The additional "-" is needed because gas uses a "true" value of -1.
  */
 #define alt_max_short(a, b)((a) ^ (((a) ^ (b)) & -(-((a) < (b)
 
diff --git a/arch/x86/include/asm/alternative.h 
b/arch/x86/include/asm/alternative.h
index 1b020381ab38..d4aea31eec03 100644
--- a/arch/x86/include/asm/alternative.h
+++ b/arch/x86/include/asm/alternative.h
@@ -103,12 +103,12 @@ static inline int alternatives_text_reserved(void *start, 
void *end)
alt_end_marker ":\n"
 
 /*
- * max without conditionals. Idea adapted from:
+ * gas compatible max based on the idea from:
  * http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax
  *
- * The additional "-" is needed because gas works with s32s.
+ * The additional "-" is needed because gas uses a "true" value of -1.
  */
-#define alt_max_short(a, b)"((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") 
- (" b ")"
+#define alt_max_short(a, b)"((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") 
< (" b ")"
 
 /*
  * Pad the second replacement alternative with additional NOPs if it is
diff --git a/arch/x86/kernel/cpu/microcode/core.c 
b/arch/x86/kernel/cpu/microcode/core.c
index 86e8f0b2537b..c4fa4a85d4cb 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -122,9 +122,6 @@ static bool __init check_loader_disabled_bsp(void)
bool *res = _ucode_ldr;
 #endif
 
-   if (!have_cpuid_p())
-   return *res;
-
/*
 * CPUID(1).ECX[31]: reserved for hypervisor use. This is still not
 * completely accurate as xen pv guests don't see that CPUID bit set but
@@ -166,24 +163,36 @@ bool get_builtin_firmware(struct cpio_data *cd, const 
char *name)
 void __init load_ucode_bsp(void)
 {
unsigned int cpuid_1_eax;
+   bool intel = true;
 
-   if (check_loader_disabled_bsp())
+   if (!have_cpuid_p())
return;
 
cpuid_1_eax = native_cpuid_eax(1);
 
switch (x86_cpuid_vendor()) {
case X86_VENDOR_INTEL:
-   if (x86_family(cpuid_1_eax) >= 6)
-   load_ucode_intel_bsp();
+   if (x86_family(cpuid_1_eax) < 6)
+   return;
break;
+
case X86_VENDOR_AMD:
-   if (x86_family(cpuid_1_eax) >= 0x10)
-   load_ucode_amd_bsp(cpuid_1_eax);
+   if (x86_family(cpuid_1_eax) < 0x10)
+   return;
+   intel = false;
break;
+
default:
-   break;
+   return;
}
+
+   if (check_loader_disabled_bsp())
+   return;
+
+   if (intel)
+   load_ucode_intel_bsp();
+   else
+   load_ucode_amd_bsp(cpuid_1_eax);
 }