The kzfree() function is normally used to clear some sensitive
information, like encryption keys, in the buffer before freeing it back
to the pool. Memset() is currently used for the buffer clearing. However,
it is entirely possible that the compiler may choose to optimize away the
memory clearing especially if LTO is being used. To make sure that this
optimization will not happen, memzero_explicit(), which is introduced
in v3.18, is now used in kzfree() to do the clearing.
Fixes: 3ef0e5ba4673 ("slab: introduce kzfree()")
Cc: stable(a)vger.kernel.org
Signed-off-by: Waiman Long <longman(a)redhat.com>
---
mm/slab_common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/slab_common.c b/mm/slab_common.c
index 9e72ba224175..37d48a56431d 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1726,7 +1726,7 @@ void kzfree(const void *p)
if (unlikely(ZERO_OR_NULL_PTR(mem)))
return;
ks = ksize(mem);
- memset(mem, 0, ks);
+ memzero_explicit(mem, ks);
kfree(mem);
}
EXPORT_SYMBOL(kzfree);
--
2.18.1
The kzfree() function is normally used to clear some sensitive
information, like encryption keys, in the buffer before freeing it back
to the pool. Memset() is currently used for buffer clearing. However
unlikely, there is still a non-zero probability that the compiler may
choose to optimize away the memory clearing especially if LTO is being
used in the future. To make sure that this optimization will never
happen, memzero_explicit(), which is introduced in v3.18, is now used
in kzfree() to future-proof it.
Fixes: 3ef0e5ba4673 ("slab: introduce kzfree()")
Cc: stable(a)vger.kernel.org
Acked-by: Michal Hocko <mhocko(a)suse.com>
Signed-off-by: Waiman Long <longman(a)redhat.com>
---
mm/slab_common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/slab_common.c b/mm/slab_common.c
index 9e72ba224175..37d48a56431d 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -1726,7 +1726,7 @@ void kzfree(const void *p)
if (unlikely(ZERO_OR_NULL_PTR(mem)))
return;
ks = ksize(mem);
- memset(mem, 0, ks);
+ memzero_explicit(mem, ks);
kfree(mem);
}
EXPORT_SYMBOL(kzfree);
--
2.18.1
The Obins Anne Pro 2 keyboard (04d9:a293) disconnects after a few
minutes of inactivity when using it wired and typing does not result
in any input events any more. This is a common firmware flaw. So add
the ALWAYS_POLL quirk for this device.
GitHub user Dietrich Moerman (dietrichm) tested the quirk and
requested my help in my project
https://github.com/sriemer/fix-linux-mouse issue 22 to provide
this patch.
Link: https://www.reddit.com/r/AnnePro/comments/gruzcb/anne_pro_2_linux_cant_type…
Signed-off-by: Sebastian Parschauer <s.parschauer(a)gmx.de>
Cc: stable(a)vger.kernel.org # v4.16+
---
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-quirks.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 1c71a1aa76b2..3a1047e143d2 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -624,6 +624,7 @@
#define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081 0xa081
#define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A0C2 0xa0c2
#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096 0xa096
+#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A293 0xa293
#define USB_VENDOR_ID_IMATION 0x0718
#define USB_DEVICE_ID_DISC_STAKKA 0xd000
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index e4cb543de0cd..67839d5eece8 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -88,6 +88,7 @@ static const struct hid_device_id hid_quirks[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096), HID_QUIRK_NO_INIT_REPORTS },
+ { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A293), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0A4A), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_LOGITECH_OEM_USB_OPTICAL_MOUSE_0B4A), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_HP, USB_PRODUCT_ID_HP_PIXART_OEM_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
--
2.26.2
commit 0370964dd3ff7d3d406f292cb443a927952cbd05 upstream
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
---
arch/arm/include/asm/kvm_host.h | 2 ++
arch/arm64/include/asm/kvm_host.h | 2 ++
virt/kvm/arm/aarch32.c | 28 ++++++++++++++++++++++++++++
3 files changed, 32 insertions(+)
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index d0d0227fc70d..c9128bb187f9 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -364,4 +364,6 @@ static inline void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu) {}
struct kvm *kvm_arch_alloc_vm(void);
void kvm_arch_free_vm(struct kvm *kvm);
+#define kvm_arm_vcpu_loaded(vcpu) (false)
+
#endif /* __ARM_KVM_HOST_H__ */
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 367b2e0b6d76..3c2f270f3b50 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -535,4 +535,6 @@ void kvm_vcpu_put_sysregs(struct kvm_vcpu *vcpu);
struct kvm *kvm_arch_alloc_vm(void);
void kvm_arch_free_vm(struct kvm *kvm);
+#define kvm_arm_vcpu_loaded(vcpu) ((vcpu)->arch.sysregs_loaded_on_cpu)
+
#endif /* __ARM64_KVM_HOST_H__ */
diff --git a/virt/kvm/arm/aarch32.c b/virt/kvm/arm/aarch32.c
index 18d6d5124397..92c9ad6c0182 100644
--- a/virt/kvm/arm/aarch32.c
+++ b/virt/kvm/arm/aarch32.c
@@ -44,6 +44,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (kvm_arm_vcpu_loaded(vcpu)) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -166,7 +186,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -179,6 +202,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -202,6 +228,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
--
2.27.0
commit 0370964dd3ff7d3d406f292cb443a927952cbd05 upstream
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
---
arch/arm/include/asm/kvm_host.h | 2 ++
arch/arm64/include/asm/kvm_host.h | 2 ++
virt/kvm/arm/aarch32.c | 28 ++++++++++++++++++++++++++++
3 files changed, 32 insertions(+)
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index a827b4d60d38..03932e172730 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -453,4 +453,6 @@ static inline bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu)
return true;
}
+#define kvm_arm_vcpu_loaded(vcpu) (false)
+
#endif /* __ARM_KVM_HOST_H__ */
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 57fd46acd058..06bb53a9d8dd 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -683,4 +683,6 @@ bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu);
#define kvm_arm_vcpu_sve_finalized(vcpu) \
((vcpu)->arch.flags & KVM_ARM64_VCPU_SVE_FINALIZED)
+#define kvm_arm_vcpu_loaded(vcpu) ((vcpu)->arch.sysregs_loaded_on_cpu)
+
#endif /* __ARM64_KVM_HOST_H__ */
diff --git a/virt/kvm/arm/aarch32.c b/virt/kvm/arm/aarch32.c
index 0a356aa91aa1..f2047fc69006 100644
--- a/virt/kvm/arm/aarch32.c
+++ b/virt/kvm/arm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (kvm_arm_vcpu_loaded(vcpu)) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
--
2.27.0
commit 0370964dd3ff7d3d406f292cb443a927952cbd05 upstream
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
---
arch/arm/include/asm/kvm_host.h | 2 ++
arch/arm64/include/asm/kvm_host.h | 2 ++
virt/kvm/arm/aarch32.c | 28 ++++++++++++++++++++++++++++
3 files changed, 32 insertions(+)
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 8a37c8e89777..1b179b1f46bc 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -421,4 +421,6 @@ static inline bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu)
return true;
}
+#define kvm_arm_vcpu_loaded(vcpu) (false)
+
#endif /* __ARM_KVM_HOST_H__ */
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index f656169db8c3..441899f0fb36 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -677,4 +677,6 @@ bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu);
#define kvm_arm_vcpu_sve_finalized(vcpu) \
((vcpu)->arch.flags & KVM_ARM64_VCPU_SVE_FINALIZED)
+#define kvm_arm_vcpu_loaded(vcpu) ((vcpu)->arch.sysregs_loaded_on_cpu)
+
#endif /* __ARM64_KVM_HOST_H__ */
diff --git a/virt/kvm/arm/aarch32.c b/virt/kvm/arm/aarch32.c
index 0a356aa91aa1..f2047fc69006 100644
--- a/virt/kvm/arm/aarch32.c
+++ b/virt/kvm/arm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (kvm_arm_vcpu_loaded(vcpu)) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
--
2.27.0
commit 0370964dd3ff7d3d406f292cb443a927952cbd05 upstream
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
---
virt/kvm/arm/aarch32.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/virt/kvm/arm/aarch32.c b/virt/kvm/arm/aarch32.c
index 0a356aa91aa1..40a62a99fbf8 100644
--- a/virt/kvm/arm/aarch32.c
+++ b/virt/kvm/arm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (vcpu->arch.sysregs_loaded_on_cpu) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
--
2.27.0
commit 95e2c5b0fd6d7a022f37e7c762ea093aba7b8e34 upstream
platform/x86: sony-laptop: SNC calls should handle BUFFER types
After commit 6d232b29cfce ("ACPICA: Dispatcher: always generate buffer
objects for ASL create_field() operator") ACPICA creates buffers even
when new fields are small enough to fit into an integer.
Many SNC calls counted on the old behaviour.
Since sony-laptop already handles the INTEGER/BUFFER case in
sony_nc_buffer_call, switch sony_nc_int_call to use its more generic
function instead.
Fixes: 6d232b29cfce ("ACPICA: Dispatcher: always generate buffer objects for ASL create_field() operator")
Reported-by: Dominik Mierzejewski <dominik(a)greysector.net>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=207491
Reported-by: William Bader <williambader(a)hotmail.com>
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1830150
Signed-off-by: Mattia Dongili <malattia(a)linux.it>
---
ACPICA broke resume from s2ram for some Vaio laptops in 5.6. The
platform drivers maintainers didn't send the fix for 5.7, so the commit
is needed both on 5.6 and on 5.7.
Thanks
--
mattia
:wq!
Especially with memory hotplug, we can have offline sections (with a
garbage memmap) and overlapping zones. We have to make sure to only
touch initialized memmaps (online sections managed by the buddy) and that
the zone matches, to not move pages between zones.
To test if this can actually happen, I added a simple
BUG_ON(page_zone(page_i) != page_zone(page_j));
right before the swap. When hotplugging a 256M DIMM to a 4G x86-64 VM and
onlining the first memory block "online_movable" and the second memory
block "online_kernel", it will trigger the BUG, as both zones (NORMAL
and MOVABLE) overlap.
This might result in all kinds of weird situations (e.g., double
allocations, list corruptions, unmovable allocations ending up in the
movable zone).
Fixes: e900a918b098 ("mm: shuffle initial free memory to improve memory-side-cache utilization")
Cc: stable(a)vger.kernel.org # v5.2+
Cc: Andrew Morton <akpm(a)linux-foundation.org>
Cc: Johannes Weiner <hannes(a)cmpxchg.org>
Cc: Michal Hocko <mhocko(a)suse.com>
Cc: Minchan Kim <minchan(a)kernel.org>
Cc: Huang Ying <ying.huang(a)intel.com>
Cc: Wei Yang <richard.weiyang(a)gmail.com>
Cc: Mel Gorman <mgorman(a)techsingularity.net>
Signed-off-by: David Hildenbrand <david(a)redhat.com>
---
mm/shuffle.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/mm/shuffle.c b/mm/shuffle.c
index 44406d9977c77..dd13ab851b3ee 100644
--- a/mm/shuffle.c
+++ b/mm/shuffle.c
@@ -58,25 +58,25 @@ module_param_call(shuffle, shuffle_store, shuffle_show, &shuffle_param, 0400);
* For two pages to be swapped in the shuffle, they must be free (on a
* 'free_area' lru), have the same order, and have the same migratetype.
*/
-static struct page * __meminit shuffle_valid_page(unsigned long pfn, int order)
+static struct page * __meminit shuffle_valid_page(struct zone *zone,
+ unsigned long pfn, int order)
{
- struct page *page;
+ struct page *page = pfn_to_online_page(pfn);
/*
* Given we're dealing with randomly selected pfns in a zone we
* need to ask questions like...
*/
- /* ...is the pfn even in the memmap? */
- if (!pfn_valid_within(pfn))
+ /* ... is the page managed by the buddy? */
+ if (!page)
return NULL;
- /* ...is the pfn in a present section or a hole? */
- if (!pfn_in_present_section(pfn))
+ /* ... is the page assigned to the same zone? */
+ if (page_zone(page) != zone)
return NULL;
/* ...is the page free and currently on a free_area list? */
- page = pfn_to_page(pfn);
if (!PageBuddy(page))
return NULL;
@@ -123,7 +123,7 @@ void __meminit __shuffle_zone(struct zone *z)
* page_j randomly selected in the span @zone_start_pfn to
* @spanned_pages.
*/
- page_i = shuffle_valid_page(i, order);
+ page_i = shuffle_valid_page(z, i, order);
if (!page_i)
continue;
@@ -137,7 +137,7 @@ void __meminit __shuffle_zone(struct zone *z)
j = z->zone_start_pfn +
ALIGN_DOWN(get_random_long() % z->spanned_pages,
order_pages);
- page_j = shuffle_valid_page(j, order);
+ page_j = shuffle_valid_page(z, j, order);
if (page_j && page_j != page_i)
break;
}
--
2.26.2
Hi
The issue fixed with da2311a6385c ("can: kvaser_usb: kvaser_usb_leaf:
Fix some info-leaks to USB devices") seem to be present as well before
4.19, introduced in 3.8 by commit 080f40a6fa28 "can: kvaser_usb: Add
support for Kvaser CAN/USB devices" already.
For Debian (for 4.9.210-1 upload) and for 3.16.y upstream Ben
Hutchings did backport the commit.
Can you apply it please as well for v4.9.y?
Regards,
Salvatore
>From fe8da238df185e6b55301eea0c762e1ab04df625 Mon Sep 17 00:00:00 2001
From: Xiaolong Huang <butterflyhuangxx(a)gmail.com>
Date: Sat, 7 Dec 2019 22:40:24 +0800
Subject: [PATCH] can: kvaser_usb: kvaser_usb_leaf: Fix some info-leaks to USB
devices
Uninitialized Kernel memory can leak to USB devices.
Fix this by using kzalloc() instead of kmalloc().
Signed-off-by: Xiaolong Huang <butterflyhuangxx(a)gmail.com>
Fixes: 7259124eac7d ("can: kvaser_usb: Split driver into kvaser_usb_core.c and kvaser_usb_leaf.c")
Cc: linux-stable <stable(a)vger.kernel.org> # >= v4.19
Signed-off-by: Marc Kleine-Budde <mkl(a)pengutronix.de>
[bwh: Backported to 4.9: adjust filename, context]
Signed-off-by: Ben Hutchings <ben(a)decadent.org.uk>
---
drivers/net/can/usb/kvaser_usb.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/can/usb/kvaser_usb.c b/drivers/net/can/usb/kvaser_usb.c
index 3a75352f632b..792a1afabf5d 100644
--- a/drivers/net/can/usb/kvaser_usb.c
+++ b/drivers/net/can/usb/kvaser_usb.c
@@ -791,7 +791,7 @@ static int kvaser_usb_simple_msg_async(struct kvaser_usb_net_priv *priv,
if (!urb)
return -ENOMEM;
- buf = kmalloc(sizeof(struct kvaser_msg), GFP_ATOMIC);
+ buf = kzalloc(sizeof(struct kvaser_msg), GFP_ATOMIC);
if (!buf) {
usb_free_urb(urb);
return -ENOMEM;
@@ -1459,7 +1459,7 @@ static int kvaser_usb_set_opt_mode(const struct kvaser_usb_net_priv *priv)
struct kvaser_msg *msg;
int rc;
- msg = kmalloc(sizeof(*msg), GFP_KERNEL);
+ msg = kzalloc(sizeof(*msg), GFP_KERNEL);
if (!msg)
return -ENOMEM;
@@ -1592,7 +1592,7 @@ static int kvaser_usb_flush_queue(struct kvaser_usb_net_priv *priv)
struct kvaser_msg *msg;
int rc;
- msg = kmalloc(sizeof(*msg), GFP_KERNEL);
+ msg = kzalloc(sizeof(*msg), GFP_KERNEL);
if (!msg)
return -ENOMEM;
--
2.27.0
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 14ed1c908a7a623cc0cbf0203f8201d1b7d31d16 Mon Sep 17 00:00:00 2001
From: Harry Wentland <harry.wentland(a)amd.com>
Date: Thu, 28 May 2020 09:44:44 -0400
Subject: [PATCH] Revert "drm/amd/display: disable dcn20 abm feature for bring
up"
This reverts commit 96cb7cf13d8530099c256c053648ad576588c387.
This change was used for DCN2 bringup and is no longer desired.
In fact it breaks backlight on DCN2 systems.
Cc: Alexander Monakov <amonakov(a)ispras.ru>
Cc: Hersen Wu <hersenxs.wu(a)amd.com>
Cc: Anthony Koo <Anthony.Koo(a)amd.com>
Cc: Michael Chiu <Michael.Chiu(a)amd.com>
Signed-off-by: Harry Wentland <harry.wentland(a)amd.com>
Acked-by: Alex Deucher <alexander.deucher(a)amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas(a)amd.com>
Reported-and-tested-by: Alexander Monakov <amonakov(a)ispras.ru>
Signed-off-by: Alex Deucher <alexander.deucher(a)amd.com>
Cc: stable(a)vger.kernel.org
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index d53c60b37cc6..f42e7e67ddba 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -1356,7 +1356,7 @@ static int dm_late_init(void *handle)
unsigned int linear_lut[16];
int i;
struct dmcu *dmcu = NULL;
- bool ret = false;
+ bool ret;
if (!adev->dm.fw_dmcu)
return detect_mst_link_for_all_connectors(adev->ddev);
@@ -1377,13 +1377,10 @@ static int dm_late_init(void *handle)
*/
params.min_abm_backlight = 0x28F;
- /* todo will enable for navi10 */
- if (adev->asic_type <= CHIP_RAVEN) {
- ret = dmcu_load_iram(dmcu, params);
+ ret = dmcu_load_iram(dmcu, params);
- if (!ret)
- return -EINVAL;
- }
+ if (!ret)
+ return -EINVAL;
return detect_mst_link_for_all_connectors(adev->ddev);
}
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 14ed1c908a7a623cc0cbf0203f8201d1b7d31d16 Mon Sep 17 00:00:00 2001
From: Harry Wentland <harry.wentland(a)amd.com>
Date: Thu, 28 May 2020 09:44:44 -0400
Subject: [PATCH] Revert "drm/amd/display: disable dcn20 abm feature for bring
up"
This reverts commit 96cb7cf13d8530099c256c053648ad576588c387.
This change was used for DCN2 bringup and is no longer desired.
In fact it breaks backlight on DCN2 systems.
Cc: Alexander Monakov <amonakov(a)ispras.ru>
Cc: Hersen Wu <hersenxs.wu(a)amd.com>
Cc: Anthony Koo <Anthony.Koo(a)amd.com>
Cc: Michael Chiu <Michael.Chiu(a)amd.com>
Signed-off-by: Harry Wentland <harry.wentland(a)amd.com>
Acked-by: Alex Deucher <alexander.deucher(a)amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas(a)amd.com>
Reported-and-tested-by: Alexander Monakov <amonakov(a)ispras.ru>
Signed-off-by: Alex Deucher <alexander.deucher(a)amd.com>
Cc: stable(a)vger.kernel.org
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index d53c60b37cc6..f42e7e67ddba 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -1356,7 +1356,7 @@ static int dm_late_init(void *handle)
unsigned int linear_lut[16];
int i;
struct dmcu *dmcu = NULL;
- bool ret = false;
+ bool ret;
if (!adev->dm.fw_dmcu)
return detect_mst_link_for_all_connectors(adev->ddev);
@@ -1377,13 +1377,10 @@ static int dm_late_init(void *handle)
*/
params.min_abm_backlight = 0x28F;
- /* todo will enable for navi10 */
- if (adev->asic_type <= CHIP_RAVEN) {
- ret = dmcu_load_iram(dmcu, params);
+ ret = dmcu_load_iram(dmcu, params);
- if (!ret)
- return -EINVAL;
- }
+ if (!ret)
+ return -EINVAL;
return detect_mst_link_for_all_connectors(adev->ddev);
}
The patch below does not apply to the 5.7-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 14ed1c908a7a623cc0cbf0203f8201d1b7d31d16 Mon Sep 17 00:00:00 2001
From: Harry Wentland <harry.wentland(a)amd.com>
Date: Thu, 28 May 2020 09:44:44 -0400
Subject: [PATCH] Revert "drm/amd/display: disable dcn20 abm feature for bring
up"
This reverts commit 96cb7cf13d8530099c256c053648ad576588c387.
This change was used for DCN2 bringup and is no longer desired.
In fact it breaks backlight on DCN2 systems.
Cc: Alexander Monakov <amonakov(a)ispras.ru>
Cc: Hersen Wu <hersenxs.wu(a)amd.com>
Cc: Anthony Koo <Anthony.Koo(a)amd.com>
Cc: Michael Chiu <Michael.Chiu(a)amd.com>
Signed-off-by: Harry Wentland <harry.wentland(a)amd.com>
Acked-by: Alex Deucher <alexander.deucher(a)amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas(a)amd.com>
Reported-and-tested-by: Alexander Monakov <amonakov(a)ispras.ru>
Signed-off-by: Alex Deucher <alexander.deucher(a)amd.com>
Cc: stable(a)vger.kernel.org
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index d53c60b37cc6..f42e7e67ddba 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -1356,7 +1356,7 @@ static int dm_late_init(void *handle)
unsigned int linear_lut[16];
int i;
struct dmcu *dmcu = NULL;
- bool ret = false;
+ bool ret;
if (!adev->dm.fw_dmcu)
return detect_mst_link_for_all_connectors(adev->ddev);
@@ -1377,13 +1377,10 @@ static int dm_late_init(void *handle)
*/
params.min_abm_backlight = 0x28F;
- /* todo will enable for navi10 */
- if (adev->asic_type <= CHIP_RAVEN) {
- ret = dmcu_load_iram(dmcu, params);
+ ret = dmcu_load_iram(dmcu, params);
- if (!ret)
- return -EINVAL;
- }
+ if (!ret)
+ return -EINVAL;
return detect_mst_link_for_all_connectors(adev->ddev);
}
The patch below does not apply to the 5.7-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 96cb7cf13d8530099c256c053648ad576588c387 Mon Sep 17 00:00:00 2001
From: hersen wu <hersenxs.wu(a)amd.com>
Date: Thu, 28 Feb 2019 16:35:24 -0500
Subject: [PATCH] drm/amd/display: disable dcn20 abm feature for bring up
[WHY] dcn20 enable usb-c dp ALT mode in dmcu. There is bug
when enable abm feature which cause system crash. dal team
will debug this bug later.
[HOW] disable dcn abm feature for dcn20.
Signed-off-by: hersen wu <hersenxs.wu(a)amd.com>
Signed-off-by: Alex Deucher <alexander.deucher(a)amd.com>
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 5971aef4f033..72d14f680932 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -781,7 +781,7 @@ static int dm_late_init(void *handle)
unsigned int linear_lut[16];
int i;
struct dmcu *dmcu = adev->dm.dc->res_pool->dmcu;
- bool ret;
+ bool ret = false;
for (i = 0; i < 16; i++)
linear_lut[i] = 0xFFFF * i / 15;
@@ -792,10 +792,13 @@ static int dm_late_init(void *handle)
params.backlight_lut_array_size = 16;
params.backlight_lut_array = linear_lut;
- ret = dmcu_load_iram(dmcu, params);
+ /* todo will enable for navi10 */
+ if (adev->asic_type <= CHIP_RAVEN) {
+ ret = dmcu_load_iram(dmcu, params);
- if (!ret)
- return -EINVAL;
+ if (!ret)
+ return -EINVAL;
+ }
return detect_mst_link_for_all_connectors(adev->ddev);
}
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 21998a351512eba4ed5969006f0c55882d995ada Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Tue, 19 May 2020 06:40:42 -0700
Subject: [PATCH] x86/speculation: Avoid force-disabling IBPB based on STIBP
and enhanced IBRS.
When STIBP is unavailable or enhanced IBRS is available, Linux
force-disables the IBPB mitigation of Spectre-BTB even when simultaneous
multithreading is disabled. While attempts to enable IBPB using
prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, ...) fail with
EPERM, the seccomp syscall (or its prctl(PR_SET_SECCOMP, ...) equivalent)
which are used e.g. by Chromium or OpenSSH succeed with no errors but the
application remains silently vulnerable to cross-process Spectre v2 attacks
(classical BTB poisoning). At the same time the SYSFS reporting
(/sys/devices/system/cpu/vulnerabilities/spectre_v2) displays that IBPB is
conditionally enabled when in fact it is unconditionally disabled.
STIBP is useful only when SMT is enabled. When SMT is disabled and STIBP is
unavailable, it makes no sense to force-disable also IBPB, because IBPB
protects against cross-process Spectre-BTB attacks regardless of the SMT
state. At the same time since missing STIBP was only observed on AMD CPUs,
AMD does not recommend using STIBP, but recommends using IBPB, so disabling
IBPB because of missing STIBP goes directly against AMD's advice:
https://developer.amd.com/wp-content/resources/Architecture_Guidelines_Upda…
Similarly, enhanced IBRS is designed to protect cross-core BTB poisoning
and BTB-poisoning attacks from user space against kernel (and
BTB-poisoning attacks from guest against hypervisor), it is not designed
to prevent cross-process (or cross-VM) BTB poisoning between processes (or
VMs) running on the same core. Therefore, even with enhanced IBRS it is
necessary to flush the BTB during context-switches, so there is no reason
to force disable IBPB when enhanced IBRS is available.
Enable the prctl control of IBPB even when STIBP is unavailable or enhanced
IBRS is available.
Fixes: 7cc765a67d8e ("x86/speculation: Enable prctl mode for spectre_v2_user")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index ed54b3b21c39..8d57562b1d2c 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -495,7 +495,9 @@ early_param("nospectre_v1", nospectre_v1_cmdline);
static enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init =
SPECTRE_V2_NONE;
-static enum spectre_v2_user_mitigation spectre_v2_user __ro_after_init =
+static enum spectre_v2_user_mitigation spectre_v2_user_stibp __ro_after_init =
+ SPECTRE_V2_USER_NONE;
+static enum spectre_v2_user_mitigation spectre_v2_user_ibpb __ro_after_init =
SPECTRE_V2_USER_NONE;
#ifdef CONFIG_RETPOLINE
@@ -641,15 +643,6 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
break;
}
- /*
- * At this point, an STIBP mode other than "off" has been set.
- * If STIBP support is not being forced, check if STIBP always-on
- * is preferred.
- */
- if (mode != SPECTRE_V2_USER_STRICT &&
- boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
- mode = SPECTRE_V2_USER_STRICT_PREFERRED;
-
/* Initialize Indirect Branch Prediction Barrier */
if (boot_cpu_has(X86_FEATURE_IBPB)) {
setup_force_cpu_cap(X86_FEATURE_USE_IBPB);
@@ -672,23 +665,36 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
pr_info("mitigation: Enabling %s Indirect Branch Prediction Barrier\n",
static_key_enabled(&switch_mm_always_ibpb) ?
"always-on" : "conditional");
+
+ spectre_v2_user_ibpb = mode;
}
- /* If enhanced IBRS is enabled no STIBP required */
- if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
+ /*
+ * If enhanced IBRS is enabled or SMT impossible, STIBP is not
+ * required.
+ */
+ if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return;
/*
- * If SMT is not possible or STIBP is not available clear the STIBP
- * mode.
+ * At this point, an STIBP mode other than "off" has been set.
+ * If STIBP support is not being forced, check if STIBP always-on
+ * is preferred.
+ */
+ if (mode != SPECTRE_V2_USER_STRICT &&
+ boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
+ mode = SPECTRE_V2_USER_STRICT_PREFERRED;
+
+ /*
+ * If STIBP is not available, clear the STIBP mode.
*/
- if (!smt_possible || !boot_cpu_has(X86_FEATURE_STIBP))
+ if (!boot_cpu_has(X86_FEATURE_STIBP))
mode = SPECTRE_V2_USER_NONE;
+
+ spectre_v2_user_stibp = mode;
+
set_mode:
- spectre_v2_user = mode;
- /* Only print the STIBP mode when SMT possible */
- if (smt_possible)
- pr_info("%s\n", spectre_v2_user_strings[mode]);
+ pr_info("%s\n", spectre_v2_user_strings[mode]);
}
static const char * const spectre_v2_strings[] = {
@@ -921,7 +927,7 @@ void cpu_bugs_smt_update(void)
{
mutex_lock(&spec_ctrl_mutex);
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
break;
case SPECTRE_V2_USER_STRICT:
@@ -1164,14 +1170,16 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
{
switch (ctrl) {
case PR_SPEC_ENABLE:
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return 0;
/*
* Indirect branch speculation is always disabled in strict
* mode.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
@@ -1182,10 +1190,12 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
* Indirect branch speculation is always allowed when
* mitigation is force disabled.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return -EPERM;
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return 0;
task_set_spec_ib_disable(task);
if (ctrl == PR_SPEC_FORCE_DISABLE)
@@ -1216,7 +1226,8 @@ void arch_seccomp_spec_mitigate(struct task_struct *task)
{
if (ssb_mode == SPEC_STORE_BYPASS_SECCOMP)
ssb_prctl_set(task, PR_SPEC_FORCE_DISABLE);
- if (spectre_v2_user == SPECTRE_V2_USER_SECCOMP)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP)
ib_prctl_set(task, PR_SPEC_FORCE_DISABLE);
}
#endif
@@ -1247,22 +1258,24 @@ static int ib_prctl_get(struct task_struct *task)
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
return PR_SPEC_NOT_AFFECTED;
- switch (spectre_v2_user) {
- case SPECTRE_V2_USER_NONE:
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_PRCTL:
- case SPECTRE_V2_USER_SECCOMP:
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ return PR_SPEC_DISABLE;
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP) {
if (task_spec_ib_force_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE;
if (task_spec_ib_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_DISABLE;
return PR_SPEC_PRCTL | PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_STRICT:
- case SPECTRE_V2_USER_STRICT_PREFERRED:
- return PR_SPEC_DISABLE;
- default:
+ } else
return PR_SPEC_NOT_AFFECTED;
- }
}
int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
@@ -1501,7 +1514,7 @@ static char *stibp_state(void)
if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return "";
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
return ", STIBP: disabled";
case SPECTRE_V2_USER_STRICT:
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 0370964dd3ff7d3d406f292cb443a927952cbd05 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Tue, 9 Jun 2020 08:50:29 +0100
Subject: [PATCH] KVM: arm64: Synchronize sysreg state on injecting an AArch32
exception
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/kvm/aarch32.c b/arch/arm64/kvm/aarch32.c
index 0a356aa91aa1..40a62a99fbf8 100644
--- a/arch/arm64/kvm/aarch32.c
+++ b/arch/arm64/kvm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (vcpu->arch.sysregs_loaded_on_cpu) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 0370964dd3ff7d3d406f292cb443a927952cbd05 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Tue, 9 Jun 2020 08:50:29 +0100
Subject: [PATCH] KVM: arm64: Synchronize sysreg state on injecting an AArch32
exception
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/kvm/aarch32.c b/arch/arm64/kvm/aarch32.c
index 0a356aa91aa1..40a62a99fbf8 100644
--- a/arch/arm64/kvm/aarch32.c
+++ b/arch/arm64/kvm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (vcpu->arch.sysregs_loaded_on_cpu) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
The patch below does not apply to the 5.7-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 0370964dd3ff7d3d406f292cb443a927952cbd05 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Tue, 9 Jun 2020 08:50:29 +0100
Subject: [PATCH] KVM: arm64: Synchronize sysreg state on injecting an AArch32
exception
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/kvm/aarch32.c b/arch/arm64/kvm/aarch32.c
index 0a356aa91aa1..40a62a99fbf8 100644
--- a/arch/arm64/kvm/aarch32.c
+++ b/arch/arm64/kvm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (vcpu->arch.sysregs_loaded_on_cpu) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 0370964dd3ff7d3d406f292cb443a927952cbd05 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Tue, 9 Jun 2020 08:50:29 +0100
Subject: [PATCH] KVM: arm64: Synchronize sysreg state on injecting an AArch32
exception
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/kvm/aarch32.c b/arch/arm64/kvm/aarch32.c
index 0a356aa91aa1..40a62a99fbf8 100644
--- a/arch/arm64/kvm/aarch32.c
+++ b/arch/arm64/kvm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (vcpu->arch.sysregs_loaded_on_cpu) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ef3e40a7ea8dbe2abd0a345032cd7d5023b9684f Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Wed, 3 Jun 2020 18:24:01 +0100
Subject: [PATCH] KVM: arm64: Save the host's PtrAuth keys in non-preemptible
context
When using the PtrAuth feature in a guest, we need to save the host's
keys before allowing the guest to program them. For that, we dump
them in a per-CPU data structure (the so called host context).
But both call sites that do this are in preemptible context,
which may end up in disaster should the vcpu thread get preempted
before reentering the guest.
Instead, save the keys eagerly on each vcpu_load(). This has an
increased overhead, but is at least safe.
Cc: stable(a)vger.kernel.org
Reviewed-by: Mark Rutland <mark.rutland(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
index a30b4eec7cb4..977843e4d5fb 100644
--- a/arch/arm64/include/asm/kvm_emulate.h
+++ b/arch/arm64/include/asm/kvm_emulate.h
@@ -112,12 +112,6 @@ static inline void vcpu_ptrauth_disable(struct kvm_vcpu *vcpu)
vcpu->arch.hcr_el2 &= ~(HCR_API | HCR_APK);
}
-static inline void vcpu_ptrauth_setup_lazy(struct kvm_vcpu *vcpu)
-{
- if (vcpu_has_ptrauth(vcpu))
- vcpu_ptrauth_disable(vcpu);
-}
-
static inline unsigned long vcpu_get_vsesr(struct kvm_vcpu *vcpu)
{
return vcpu->arch.vsesr_el2;
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index d6988401c22a..152049c5055d 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -337,6 +337,12 @@ void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
preempt_enable();
}
+#define __ptrauth_save_key(regs, key) \
+({ \
+ regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
+ regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
+})
+
void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
int *last_ran;
@@ -370,7 +376,17 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
else
vcpu_set_wfx_traps(vcpu);
- vcpu_ptrauth_setup_lazy(vcpu);
+ if (vcpu_has_ptrauth(vcpu)) {
+ struct kvm_cpu_context *ctxt = vcpu->arch.host_cpu_context;
+
+ __ptrauth_save_key(ctxt->sys_regs, APIA);
+ __ptrauth_save_key(ctxt->sys_regs, APIB);
+ __ptrauth_save_key(ctxt->sys_regs, APDA);
+ __ptrauth_save_key(ctxt->sys_regs, APDB);
+ __ptrauth_save_key(ctxt->sys_regs, APGA);
+
+ vcpu_ptrauth_disable(vcpu);
+ }
}
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
index eb194696ef62..065251efa2e6 100644
--- a/arch/arm64/kvm/handle_exit.c
+++ b/arch/arm64/kvm/handle_exit.c
@@ -162,31 +162,16 @@ static int handle_sve(struct kvm_vcpu *vcpu, struct kvm_run *run)
return 1;
}
-#define __ptrauth_save_key(regs, key) \
-({ \
- regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
- regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
-})
-
/*
* Handle the guest trying to use a ptrauth instruction, or trying to access a
* ptrauth register.
*/
void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu)
{
- struct kvm_cpu_context *ctxt;
-
- if (vcpu_has_ptrauth(vcpu)) {
+ if (vcpu_has_ptrauth(vcpu))
vcpu_ptrauth_enable(vcpu);
- ctxt = vcpu->arch.host_cpu_context;
- __ptrauth_save_key(ctxt->sys_regs, APIA);
- __ptrauth_save_key(ctxt->sys_regs, APIB);
- __ptrauth_save_key(ctxt->sys_regs, APDA);
- __ptrauth_save_key(ctxt->sys_regs, APDB);
- __ptrauth_save_key(ctxt->sys_regs, APGA);
- } else {
+ else
kvm_inject_undefined(vcpu);
- }
}
/*
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ef3e40a7ea8dbe2abd0a345032cd7d5023b9684f Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Wed, 3 Jun 2020 18:24:01 +0100
Subject: [PATCH] KVM: arm64: Save the host's PtrAuth keys in non-preemptible
context
When using the PtrAuth feature in a guest, we need to save the host's
keys before allowing the guest to program them. For that, we dump
them in a per-CPU data structure (the so called host context).
But both call sites that do this are in preemptible context,
which may end up in disaster should the vcpu thread get preempted
before reentering the guest.
Instead, save the keys eagerly on each vcpu_load(). This has an
increased overhead, but is at least safe.
Cc: stable(a)vger.kernel.org
Reviewed-by: Mark Rutland <mark.rutland(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
index a30b4eec7cb4..977843e4d5fb 100644
--- a/arch/arm64/include/asm/kvm_emulate.h
+++ b/arch/arm64/include/asm/kvm_emulate.h
@@ -112,12 +112,6 @@ static inline void vcpu_ptrauth_disable(struct kvm_vcpu *vcpu)
vcpu->arch.hcr_el2 &= ~(HCR_API | HCR_APK);
}
-static inline void vcpu_ptrauth_setup_lazy(struct kvm_vcpu *vcpu)
-{
- if (vcpu_has_ptrauth(vcpu))
- vcpu_ptrauth_disable(vcpu);
-}
-
static inline unsigned long vcpu_get_vsesr(struct kvm_vcpu *vcpu)
{
return vcpu->arch.vsesr_el2;
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index d6988401c22a..152049c5055d 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -337,6 +337,12 @@ void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
preempt_enable();
}
+#define __ptrauth_save_key(regs, key) \
+({ \
+ regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
+ regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
+})
+
void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
int *last_ran;
@@ -370,7 +376,17 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
else
vcpu_set_wfx_traps(vcpu);
- vcpu_ptrauth_setup_lazy(vcpu);
+ if (vcpu_has_ptrauth(vcpu)) {
+ struct kvm_cpu_context *ctxt = vcpu->arch.host_cpu_context;
+
+ __ptrauth_save_key(ctxt->sys_regs, APIA);
+ __ptrauth_save_key(ctxt->sys_regs, APIB);
+ __ptrauth_save_key(ctxt->sys_regs, APDA);
+ __ptrauth_save_key(ctxt->sys_regs, APDB);
+ __ptrauth_save_key(ctxt->sys_regs, APGA);
+
+ vcpu_ptrauth_disable(vcpu);
+ }
}
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
index eb194696ef62..065251efa2e6 100644
--- a/arch/arm64/kvm/handle_exit.c
+++ b/arch/arm64/kvm/handle_exit.c
@@ -162,31 +162,16 @@ static int handle_sve(struct kvm_vcpu *vcpu, struct kvm_run *run)
return 1;
}
-#define __ptrauth_save_key(regs, key) \
-({ \
- regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
- regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
-})
-
/*
* Handle the guest trying to use a ptrauth instruction, or trying to access a
* ptrauth register.
*/
void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu)
{
- struct kvm_cpu_context *ctxt;
-
- if (vcpu_has_ptrauth(vcpu)) {
+ if (vcpu_has_ptrauth(vcpu))
vcpu_ptrauth_enable(vcpu);
- ctxt = vcpu->arch.host_cpu_context;
- __ptrauth_save_key(ctxt->sys_regs, APIA);
- __ptrauth_save_key(ctxt->sys_regs, APIB);
- __ptrauth_save_key(ctxt->sys_regs, APDA);
- __ptrauth_save_key(ctxt->sys_regs, APDB);
- __ptrauth_save_key(ctxt->sys_regs, APGA);
- } else {
+ else
kvm_inject_undefined(vcpu);
- }
}
/*
The patch below does not apply to the 5.7-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ef3e40a7ea8dbe2abd0a345032cd7d5023b9684f Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Wed, 3 Jun 2020 18:24:01 +0100
Subject: [PATCH] KVM: arm64: Save the host's PtrAuth keys in non-preemptible
context
When using the PtrAuth feature in a guest, we need to save the host's
keys before allowing the guest to program them. For that, we dump
them in a per-CPU data structure (the so called host context).
But both call sites that do this are in preemptible context,
which may end up in disaster should the vcpu thread get preempted
before reentering the guest.
Instead, save the keys eagerly on each vcpu_load(). This has an
increased overhead, but is at least safe.
Cc: stable(a)vger.kernel.org
Reviewed-by: Mark Rutland <mark.rutland(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
index a30b4eec7cb4..977843e4d5fb 100644
--- a/arch/arm64/include/asm/kvm_emulate.h
+++ b/arch/arm64/include/asm/kvm_emulate.h
@@ -112,12 +112,6 @@ static inline void vcpu_ptrauth_disable(struct kvm_vcpu *vcpu)
vcpu->arch.hcr_el2 &= ~(HCR_API | HCR_APK);
}
-static inline void vcpu_ptrauth_setup_lazy(struct kvm_vcpu *vcpu)
-{
- if (vcpu_has_ptrauth(vcpu))
- vcpu_ptrauth_disable(vcpu);
-}
-
static inline unsigned long vcpu_get_vsesr(struct kvm_vcpu *vcpu)
{
return vcpu->arch.vsesr_el2;
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index d6988401c22a..152049c5055d 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -337,6 +337,12 @@ void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
preempt_enable();
}
+#define __ptrauth_save_key(regs, key) \
+({ \
+ regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
+ regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
+})
+
void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
int *last_ran;
@@ -370,7 +376,17 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
else
vcpu_set_wfx_traps(vcpu);
- vcpu_ptrauth_setup_lazy(vcpu);
+ if (vcpu_has_ptrauth(vcpu)) {
+ struct kvm_cpu_context *ctxt = vcpu->arch.host_cpu_context;
+
+ __ptrauth_save_key(ctxt->sys_regs, APIA);
+ __ptrauth_save_key(ctxt->sys_regs, APIB);
+ __ptrauth_save_key(ctxt->sys_regs, APDA);
+ __ptrauth_save_key(ctxt->sys_regs, APDB);
+ __ptrauth_save_key(ctxt->sys_regs, APGA);
+
+ vcpu_ptrauth_disable(vcpu);
+ }
}
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
index eb194696ef62..065251efa2e6 100644
--- a/arch/arm64/kvm/handle_exit.c
+++ b/arch/arm64/kvm/handle_exit.c
@@ -162,31 +162,16 @@ static int handle_sve(struct kvm_vcpu *vcpu, struct kvm_run *run)
return 1;
}
-#define __ptrauth_save_key(regs, key) \
-({ \
- regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
- regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
-})
-
/*
* Handle the guest trying to use a ptrauth instruction, or trying to access a
* ptrauth register.
*/
void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu)
{
- struct kvm_cpu_context *ctxt;
-
- if (vcpu_has_ptrauth(vcpu)) {
+ if (vcpu_has_ptrauth(vcpu))
vcpu_ptrauth_enable(vcpu);
- ctxt = vcpu->arch.host_cpu_context;
- __ptrauth_save_key(ctxt->sys_regs, APIA);
- __ptrauth_save_key(ctxt->sys_regs, APIB);
- __ptrauth_save_key(ctxt->sys_regs, APDA);
- __ptrauth_save_key(ctxt->sys_regs, APDB);
- __ptrauth_save_key(ctxt->sys_regs, APGA);
- } else {
+ else
kvm_inject_undefined(vcpu);
- }
}
/*
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ef3e40a7ea8dbe2abd0a345032cd7d5023b9684f Mon Sep 17 00:00:00 2001
From: Marc Zyngier <maz(a)kernel.org>
Date: Wed, 3 Jun 2020 18:24:01 +0100
Subject: [PATCH] KVM: arm64: Save the host's PtrAuth keys in non-preemptible
context
When using the PtrAuth feature in a guest, we need to save the host's
keys before allowing the guest to program them. For that, we dump
them in a per-CPU data structure (the so called host context).
But both call sites that do this are in preemptible context,
which may end up in disaster should the vcpu thread get preempted
before reentering the guest.
Instead, save the keys eagerly on each vcpu_load(). This has an
increased overhead, but is at least safe.
Cc: stable(a)vger.kernel.org
Reviewed-by: Mark Rutland <mark.rutland(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
index a30b4eec7cb4..977843e4d5fb 100644
--- a/arch/arm64/include/asm/kvm_emulate.h
+++ b/arch/arm64/include/asm/kvm_emulate.h
@@ -112,12 +112,6 @@ static inline void vcpu_ptrauth_disable(struct kvm_vcpu *vcpu)
vcpu->arch.hcr_el2 &= ~(HCR_API | HCR_APK);
}
-static inline void vcpu_ptrauth_setup_lazy(struct kvm_vcpu *vcpu)
-{
- if (vcpu_has_ptrauth(vcpu))
- vcpu_ptrauth_disable(vcpu);
-}
-
static inline unsigned long vcpu_get_vsesr(struct kvm_vcpu *vcpu)
{
return vcpu->arch.vsesr_el2;
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index d6988401c22a..152049c5055d 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -337,6 +337,12 @@ void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu)
preempt_enable();
}
+#define __ptrauth_save_key(regs, key) \
+({ \
+ regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
+ regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
+})
+
void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
int *last_ran;
@@ -370,7 +376,17 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
else
vcpu_set_wfx_traps(vcpu);
- vcpu_ptrauth_setup_lazy(vcpu);
+ if (vcpu_has_ptrauth(vcpu)) {
+ struct kvm_cpu_context *ctxt = vcpu->arch.host_cpu_context;
+
+ __ptrauth_save_key(ctxt->sys_regs, APIA);
+ __ptrauth_save_key(ctxt->sys_regs, APIB);
+ __ptrauth_save_key(ctxt->sys_regs, APDA);
+ __ptrauth_save_key(ctxt->sys_regs, APDB);
+ __ptrauth_save_key(ctxt->sys_regs, APGA);
+
+ vcpu_ptrauth_disable(vcpu);
+ }
}
void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
index eb194696ef62..065251efa2e6 100644
--- a/arch/arm64/kvm/handle_exit.c
+++ b/arch/arm64/kvm/handle_exit.c
@@ -162,31 +162,16 @@ static int handle_sve(struct kvm_vcpu *vcpu, struct kvm_run *run)
return 1;
}
-#define __ptrauth_save_key(regs, key) \
-({ \
- regs[key ## KEYLO_EL1] = read_sysreg_s(SYS_ ## key ## KEYLO_EL1); \
- regs[key ## KEYHI_EL1] = read_sysreg_s(SYS_ ## key ## KEYHI_EL1); \
-})
-
/*
* Handle the guest trying to use a ptrauth instruction, or trying to access a
* ptrauth register.
*/
void kvm_arm_vcpu_ptrauth_trap(struct kvm_vcpu *vcpu)
{
- struct kvm_cpu_context *ctxt;
-
- if (vcpu_has_ptrauth(vcpu)) {
+ if (vcpu_has_ptrauth(vcpu))
vcpu_ptrauth_enable(vcpu);
- ctxt = vcpu->arch.host_cpu_context;
- __ptrauth_save_key(ctxt->sys_regs, APIA);
- __ptrauth_save_key(ctxt->sys_regs, APIB);
- __ptrauth_save_key(ctxt->sys_regs, APDA);
- __ptrauth_save_key(ctxt->sys_regs, APDB);
- __ptrauth_save_key(ctxt->sys_regs, APGA);
- } else {
+ else
kvm_inject_undefined(vcpu);
- }
}
/*
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From a3535be731c2a343912578465021f50937f7b099 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini(a)redhat.com>
Date: Sat, 16 May 2020 09:19:06 -0400
Subject: [PATCH] KVM: nSVM: fix condition for filtering async PF
Async page faults have to be trapped in the host (L1 in this case),
since the APF reason was passed from L0 to L1 and stored in the L1 APF
data page. This was completely reversed: the page faults were passed
to the guest, a L2 hypervisor.
Cc: stable(a)vger.kernel.org
Reviewed-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
index a89a166d1cb8..f4cd2d0cc360 100644
--- a/arch/x86/kvm/svm/nested.c
+++ b/arch/x86/kvm/svm/nested.c
@@ -880,8 +880,8 @@ int nested_svm_exit_special(struct vcpu_svm *svm)
return NESTED_EXIT_HOST;
break;
case SVM_EXIT_EXCP_BASE + PF_VECTOR:
- /* When we're shadowing, trap PFs, but not async PF */
- if (!npt_enabled && svm->vcpu.arch.apf.host_apf_reason == 0)
+ /* Trap async PF even if not shadowing */
+ if (!npt_enabled || svm->vcpu.arch.apf.host_apf_reason)
return NESTED_EXIT_HOST;
break;
default:
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From a3535be731c2a343912578465021f50937f7b099 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini(a)redhat.com>
Date: Sat, 16 May 2020 09:19:06 -0400
Subject: [PATCH] KVM: nSVM: fix condition for filtering async PF
Async page faults have to be trapped in the host (L1 in this case),
since the APF reason was passed from L0 to L1 and stored in the L1 APF
data page. This was completely reversed: the page faults were passed
to the guest, a L2 hypervisor.
Cc: stable(a)vger.kernel.org
Reviewed-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
index a89a166d1cb8..f4cd2d0cc360 100644
--- a/arch/x86/kvm/svm/nested.c
+++ b/arch/x86/kvm/svm/nested.c
@@ -880,8 +880,8 @@ int nested_svm_exit_special(struct vcpu_svm *svm)
return NESTED_EXIT_HOST;
break;
case SVM_EXIT_EXCP_BASE + PF_VECTOR:
- /* When we're shadowing, trap PFs, but not async PF */
- if (!npt_enabled && svm->vcpu.arch.apf.host_apf_reason == 0)
+ /* Trap async PF even if not shadowing */
+ if (!npt_enabled || svm->vcpu.arch.apf.host_apf_reason)
return NESTED_EXIT_HOST;
break;
default:
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 5c911beff20aa8639e7a1f28988736c13e03ed54 Mon Sep 17 00:00:00 2001
From: Sean Christopherson <sean.j.christopherson(a)intel.com>
Date: Fri, 1 May 2020 09:31:17 -0700
Subject: [PATCH] KVM: nVMX: Skip IBPB when switching between vmcs01 and vmcs02
Skip the Indirect Branch Prediction Barrier that is triggered on a VMCS
switch when running with spectre_v2_user=on/auto if the switch is
between two VMCSes in the same guest, i.e. between vmcs01 and vmcs02.
The IBPB is intended to prevent one guest from attacking another, which
is unnecessary in the nested case as it's the same guest from KVM's
perspective.
This all but eliminates the overhead observed for nested VMX transitions
when running with CONFIG_RETPOLINE=y and spectre_v2_user=on/auto, which
can be significant, e.g. roughly 3x on current systems.
Reported-by: Alexander Graf <graf(a)amazon.com>
Cc: KarimAllah Raslan <karahmed(a)amazon.de>
Cc: stable(a)vger.kernel.org
Fixes: 15d45071523d ("KVM/x86: Add IBPB support")
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Message-Id: <20200501163117.4655-1-sean.j.christopherson(a)intel.com>
[Invert direction of bool argument. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
index 669445136144..7f754b3bc6dd 100644
--- a/arch/x86/kvm/vmx/nested.c
+++ b/arch/x86/kvm/vmx/nested.c
@@ -303,7 +303,7 @@ static void vmx_switch_vmcs(struct kvm_vcpu *vcpu, struct loaded_vmcs *vmcs)
cpu = get_cpu();
prev = vmx->loaded_vmcs;
vmx->loaded_vmcs = vmcs;
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, prev);
vmx_sync_vmcs_host_state(vmx, prev);
put_cpu();
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fbede089d0f7..db842ce74e5d 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -1311,10 +1311,12 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
pi_set_on(pi_desc);
}
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
bool already_loaded = vmx->loaded_vmcs->cpu == cpu;
+ struct vmcs *prev;
if (!already_loaded) {
loaded_vmcs_clear(vmx->loaded_vmcs);
@@ -1333,10 +1335,18 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
local_irq_enable();
}
- if (per_cpu(current_vmcs, cpu) != vmx->loaded_vmcs->vmcs) {
+ prev = per_cpu(current_vmcs, cpu);
+ if (prev != vmx->loaded_vmcs->vmcs) {
per_cpu(current_vmcs, cpu) = vmx->loaded_vmcs->vmcs;
vmcs_load(vmx->loaded_vmcs->vmcs);
- indirect_branch_prediction_barrier();
+
+ /*
+ * No indirect branch prediction barrier needed when switching
+ * the active VMCS within a guest, e.g. on nested VM-Enter.
+ * The L1 VMM can protect itself with retpolines, IBPB or IBRS.
+ */
+ if (!buddy || WARN_ON_ONCE(buddy->vmcs != prev))
+ indirect_branch_prediction_barrier();
}
if (!already_loaded) {
@@ -1377,7 +1387,7 @@ void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, NULL);
vmx_vcpu_pi_load(vcpu, cpu);
diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h
index b5e773267abe..d3d48acc6bd9 100644
--- a/arch/x86/kvm/vmx/vmx.h
+++ b/arch/x86/kvm/vmx/vmx.h
@@ -320,7 +320,8 @@ struct kvm_vmx {
};
bool nested_vmx_allowed(struct kvm_vcpu *vcpu);
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu);
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy);
void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
int allocate_vpid(void);
void free_vpid(int vpid);
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 5c911beff20aa8639e7a1f28988736c13e03ed54 Mon Sep 17 00:00:00 2001
From: Sean Christopherson <sean.j.christopherson(a)intel.com>
Date: Fri, 1 May 2020 09:31:17 -0700
Subject: [PATCH] KVM: nVMX: Skip IBPB when switching between vmcs01 and vmcs02
Skip the Indirect Branch Prediction Barrier that is triggered on a VMCS
switch when running with spectre_v2_user=on/auto if the switch is
between two VMCSes in the same guest, i.e. between vmcs01 and vmcs02.
The IBPB is intended to prevent one guest from attacking another, which
is unnecessary in the nested case as it's the same guest from KVM's
perspective.
This all but eliminates the overhead observed for nested VMX transitions
when running with CONFIG_RETPOLINE=y and spectre_v2_user=on/auto, which
can be significant, e.g. roughly 3x on current systems.
Reported-by: Alexander Graf <graf(a)amazon.com>
Cc: KarimAllah Raslan <karahmed(a)amazon.de>
Cc: stable(a)vger.kernel.org
Fixes: 15d45071523d ("KVM/x86: Add IBPB support")
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Message-Id: <20200501163117.4655-1-sean.j.christopherson(a)intel.com>
[Invert direction of bool argument. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
index 669445136144..7f754b3bc6dd 100644
--- a/arch/x86/kvm/vmx/nested.c
+++ b/arch/x86/kvm/vmx/nested.c
@@ -303,7 +303,7 @@ static void vmx_switch_vmcs(struct kvm_vcpu *vcpu, struct loaded_vmcs *vmcs)
cpu = get_cpu();
prev = vmx->loaded_vmcs;
vmx->loaded_vmcs = vmcs;
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, prev);
vmx_sync_vmcs_host_state(vmx, prev);
put_cpu();
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fbede089d0f7..db842ce74e5d 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -1311,10 +1311,12 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
pi_set_on(pi_desc);
}
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
bool already_loaded = vmx->loaded_vmcs->cpu == cpu;
+ struct vmcs *prev;
if (!already_loaded) {
loaded_vmcs_clear(vmx->loaded_vmcs);
@@ -1333,10 +1335,18 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
local_irq_enable();
}
- if (per_cpu(current_vmcs, cpu) != vmx->loaded_vmcs->vmcs) {
+ prev = per_cpu(current_vmcs, cpu);
+ if (prev != vmx->loaded_vmcs->vmcs) {
per_cpu(current_vmcs, cpu) = vmx->loaded_vmcs->vmcs;
vmcs_load(vmx->loaded_vmcs->vmcs);
- indirect_branch_prediction_barrier();
+
+ /*
+ * No indirect branch prediction barrier needed when switching
+ * the active VMCS within a guest, e.g. on nested VM-Enter.
+ * The L1 VMM can protect itself with retpolines, IBPB or IBRS.
+ */
+ if (!buddy || WARN_ON_ONCE(buddy->vmcs != prev))
+ indirect_branch_prediction_barrier();
}
if (!already_loaded) {
@@ -1377,7 +1387,7 @@ void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, NULL);
vmx_vcpu_pi_load(vcpu, cpu);
diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h
index b5e773267abe..d3d48acc6bd9 100644
--- a/arch/x86/kvm/vmx/vmx.h
+++ b/arch/x86/kvm/vmx/vmx.h
@@ -320,7 +320,8 @@ struct kvm_vmx {
};
bool nested_vmx_allowed(struct kvm_vcpu *vcpu);
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu);
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy);
void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
int allocate_vpid(void);
void free_vpid(int vpid);
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 5c911beff20aa8639e7a1f28988736c13e03ed54 Mon Sep 17 00:00:00 2001
From: Sean Christopherson <sean.j.christopherson(a)intel.com>
Date: Fri, 1 May 2020 09:31:17 -0700
Subject: [PATCH] KVM: nVMX: Skip IBPB when switching between vmcs01 and vmcs02
Skip the Indirect Branch Prediction Barrier that is triggered on a VMCS
switch when running with spectre_v2_user=on/auto if the switch is
between two VMCSes in the same guest, i.e. between vmcs01 and vmcs02.
The IBPB is intended to prevent one guest from attacking another, which
is unnecessary in the nested case as it's the same guest from KVM's
perspective.
This all but eliminates the overhead observed for nested VMX transitions
when running with CONFIG_RETPOLINE=y and spectre_v2_user=on/auto, which
can be significant, e.g. roughly 3x on current systems.
Reported-by: Alexander Graf <graf(a)amazon.com>
Cc: KarimAllah Raslan <karahmed(a)amazon.de>
Cc: stable(a)vger.kernel.org
Fixes: 15d45071523d ("KVM/x86: Add IBPB support")
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Message-Id: <20200501163117.4655-1-sean.j.christopherson(a)intel.com>
[Invert direction of bool argument. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
index 669445136144..7f754b3bc6dd 100644
--- a/arch/x86/kvm/vmx/nested.c
+++ b/arch/x86/kvm/vmx/nested.c
@@ -303,7 +303,7 @@ static void vmx_switch_vmcs(struct kvm_vcpu *vcpu, struct loaded_vmcs *vmcs)
cpu = get_cpu();
prev = vmx->loaded_vmcs;
vmx->loaded_vmcs = vmcs;
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, prev);
vmx_sync_vmcs_host_state(vmx, prev);
put_cpu();
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fbede089d0f7..db842ce74e5d 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -1311,10 +1311,12 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
pi_set_on(pi_desc);
}
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
bool already_loaded = vmx->loaded_vmcs->cpu == cpu;
+ struct vmcs *prev;
if (!already_loaded) {
loaded_vmcs_clear(vmx->loaded_vmcs);
@@ -1333,10 +1335,18 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
local_irq_enable();
}
- if (per_cpu(current_vmcs, cpu) != vmx->loaded_vmcs->vmcs) {
+ prev = per_cpu(current_vmcs, cpu);
+ if (prev != vmx->loaded_vmcs->vmcs) {
per_cpu(current_vmcs, cpu) = vmx->loaded_vmcs->vmcs;
vmcs_load(vmx->loaded_vmcs->vmcs);
- indirect_branch_prediction_barrier();
+
+ /*
+ * No indirect branch prediction barrier needed when switching
+ * the active VMCS within a guest, e.g. on nested VM-Enter.
+ * The L1 VMM can protect itself with retpolines, IBPB or IBRS.
+ */
+ if (!buddy || WARN_ON_ONCE(buddy->vmcs != prev))
+ indirect_branch_prediction_barrier();
}
if (!already_loaded) {
@@ -1377,7 +1387,7 @@ void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, NULL);
vmx_vcpu_pi_load(vcpu, cpu);
diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h
index b5e773267abe..d3d48acc6bd9 100644
--- a/arch/x86/kvm/vmx/vmx.h
+++ b/arch/x86/kvm/vmx/vmx.h
@@ -320,7 +320,8 @@ struct kvm_vmx {
};
bool nested_vmx_allowed(struct kvm_vcpu *vcpu);
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu);
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy);
void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
int allocate_vpid(void);
void free_vpid(int vpid);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 5c911beff20aa8639e7a1f28988736c13e03ed54 Mon Sep 17 00:00:00 2001
From: Sean Christopherson <sean.j.christopherson(a)intel.com>
Date: Fri, 1 May 2020 09:31:17 -0700
Subject: [PATCH] KVM: nVMX: Skip IBPB when switching between vmcs01 and vmcs02
Skip the Indirect Branch Prediction Barrier that is triggered on a VMCS
switch when running with spectre_v2_user=on/auto if the switch is
between two VMCSes in the same guest, i.e. between vmcs01 and vmcs02.
The IBPB is intended to prevent one guest from attacking another, which
is unnecessary in the nested case as it's the same guest from KVM's
perspective.
This all but eliminates the overhead observed for nested VMX transitions
when running with CONFIG_RETPOLINE=y and spectre_v2_user=on/auto, which
can be significant, e.g. roughly 3x on current systems.
Reported-by: Alexander Graf <graf(a)amazon.com>
Cc: KarimAllah Raslan <karahmed(a)amazon.de>
Cc: stable(a)vger.kernel.org
Fixes: 15d45071523d ("KVM/x86: Add IBPB support")
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Message-Id: <20200501163117.4655-1-sean.j.christopherson(a)intel.com>
[Invert direction of bool argument. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
index 669445136144..7f754b3bc6dd 100644
--- a/arch/x86/kvm/vmx/nested.c
+++ b/arch/x86/kvm/vmx/nested.c
@@ -303,7 +303,7 @@ static void vmx_switch_vmcs(struct kvm_vcpu *vcpu, struct loaded_vmcs *vmcs)
cpu = get_cpu();
prev = vmx->loaded_vmcs;
vmx->loaded_vmcs = vmcs;
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, prev);
vmx_sync_vmcs_host_state(vmx, prev);
put_cpu();
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index fbede089d0f7..db842ce74e5d 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -1311,10 +1311,12 @@ static void vmx_vcpu_pi_load(struct kvm_vcpu *vcpu, int cpu)
pi_set_on(pi_desc);
}
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
bool already_loaded = vmx->loaded_vmcs->cpu == cpu;
+ struct vmcs *prev;
if (!already_loaded) {
loaded_vmcs_clear(vmx->loaded_vmcs);
@@ -1333,10 +1335,18 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu)
local_irq_enable();
}
- if (per_cpu(current_vmcs, cpu) != vmx->loaded_vmcs->vmcs) {
+ prev = per_cpu(current_vmcs, cpu);
+ if (prev != vmx->loaded_vmcs->vmcs) {
per_cpu(current_vmcs, cpu) = vmx->loaded_vmcs->vmcs;
vmcs_load(vmx->loaded_vmcs->vmcs);
- indirect_branch_prediction_barrier();
+
+ /*
+ * No indirect branch prediction barrier needed when switching
+ * the active VMCS within a guest, e.g. on nested VM-Enter.
+ * The L1 VMM can protect itself with retpolines, IBPB or IBRS.
+ */
+ if (!buddy || WARN_ON_ONCE(buddy->vmcs != prev))
+ indirect_branch_prediction_barrier();
}
if (!already_loaded) {
@@ -1377,7 +1387,7 @@ void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
{
struct vcpu_vmx *vmx = to_vmx(vcpu);
- vmx_vcpu_load_vmcs(vcpu, cpu);
+ vmx_vcpu_load_vmcs(vcpu, cpu, NULL);
vmx_vcpu_pi_load(vcpu, cpu);
diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h
index b5e773267abe..d3d48acc6bd9 100644
--- a/arch/x86/kvm/vmx/vmx.h
+++ b/arch/x86/kvm/vmx/vmx.h
@@ -320,7 +320,8 @@ struct kvm_vmx {
};
bool nested_vmx_allowed(struct kvm_vcpu *vcpu);
-void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu);
+void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,
+ struct loaded_vmcs *buddy);
void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
int allocate_vpid(void);
void free_vpid(int vpid);
Hi,
This is the 2nd version of bootconfig bugfixes.
The previous version is here.
https://lkml.kernel.org/r/159197538852.80267.10091816844311950396.stgit@dev…
This version fixes the patch description and modify(cleanup) code
according to Steve's comment.
Thank you,
---
Masami Hiramatsu (4):
proc/bootconfig: Fix to use correct quotes for value
tools/bootconfig: Fix to use correct quotes for value
tools/bootconfig: Fix to return 0 if succeeded to show the bootconfig
tools/bootconfig: Add testcase for show-command and quotes test
fs/proc/bootconfig.c | 15 ++++++++++-----
tools/bootconfig/main.c | 24 ++++++++++++++----------
tools/bootconfig/test-bootconfig.sh | 10 ++++++++++
3 files changed, 34 insertions(+), 15 deletions(-)
--
Masami Hiramatsu (Linaro) <mhiramat(a)kernel.org>
When "ovl_is_inuse" true case, trap inode reference not put.
plus adding the comment explaining sequence of
ovl_is_inuse after ovl_setup_trap.
Fixes: 0be0bfd2de9d ("ovl: fix regression caused by overlapping layers..")
Cc: <stable(a)vger.kernel.org> # v4.19+
Reviewed-by: Amir Goldstein <amir73il(a)gmail.com>
Signed-off-by: youngjun <her0gyugyu(a)gmail.com>
---
fs/overlayfs/super.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 91476bc422f9..3097142b1e23 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -1493,14 +1493,22 @@ static int ovl_get_layers(struct super_block *sb, struct ovl_fs *ofs,
if (err < 0)
goto out;
+ /*
+ * Check if lower root conflicts with this overlay layers before checking
+ * if it is in-use as upperdir/workdir of "another" mount, because we do
+ * not bother to check in ovl_is_inuse() if the upperdir/workdir is in fact
+ * in-use by our upperdir/workdir.
+ */
err = ovl_setup_trap(sb, stack[i].dentry, &trap, "lowerdir");
if (err)
goto out;
if (ovl_is_inuse(stack[i].dentry)) {
err = ovl_report_in_use(ofs, "lowerdir");
- if (err)
+ if (err) {
+ iput(trap);
goto out;
+ }
}
mnt = clone_private_mount(&stack[i]);
--
2.17.1
Sorry. I Wrongly sent subect version. I changed it to v4.
Thank you Amir.
This is the start of the stable review cycle for the 4.19.128 release.
There are 25 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 11 Jun 2020 17:40:24 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.128-r…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 4.19.128-rc1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Revert "net/mlx5: Annotate mutex destroy for root ns"
Oleg Nesterov <oleg(a)redhat.com>
uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
Josh Poimboeuf <jpoimboe(a)redhat.com>
x86/speculation: Add Ivy Bridge to affected list
Mark Gross <mgross(a)linux.intel.com>
x86/speculation: Add SRBDS vulnerability and mitigation documentation
Mark Gross <mgross(a)linux.intel.com>
x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
Mark Gross <mgross(a)linux.intel.com>
x86/cpu: Add 'table' argument to cpu_matches()
Mark Gross <mgross(a)linux.intel.com>
x86/cpu: Add a steppings field to struct x86_cpu_id
Srinivas Kandagatla <srinivas.kandagatla(a)linaro.org>
nvmem: qfprom: remove incorrect write support
Oliver Neukum <oneukum(a)suse.com>
CDC-ACM: heed quirk also in error handling
Pascal Terjan <pterjan(a)google.com>
staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
Jiri Slaby <jslaby(a)suse.cz>
tty: hvc_console, fix crashes on parallel open/close
Dmitry Torokhov <dmitry.torokhov(a)gmail.com>
vt: keyboard: avoid signed integer overflow in k_ascii
Dinghao Liu <dinghao.liu(a)zju.edu.cn>
usb: musb: Fix runtime PM imbalance on error
Bin Liu <b-liu(a)ti.com>
usb: musb: start session in resume for host port
Mathieu Othacehe <m.othacehe(a)gmail.com>
iio: vcnl4000: Fix i2c swapped word reading.
Daniele Palmas <dnlplm(a)gmail.com>
USB: serial: option: add Telit LE910C1-EUX compositions
Bin Liu <b-liu(a)ti.com>
USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
Matt Jolly <Kangie(a)footclan.ninja>
USB: serial: qcserial: add DW5816e QDL support
Willem de Bruijn <willemb(a)google.com>
net: check untrusted gso_size at kernel entry
Stefano Garzarella <sgarzare(a)redhat.com>
vsock: fix timeout in vsock_accept()
Chuhong Yuan <hslester96(a)gmail.com>
NFC: st21nfca: add missed kfree_skb() in an error path
Daniele Palmas <dnlplm(a)gmail.com>
net: usb: qmi_wwan: add Telit LE910C1-EUX composition
Eric Dumazet <edumazet(a)google.com>
l2tp: do not use inet_hash()/inet_unhash()
Eric Dumazet <edumazet(a)google.com>
l2tp: add sk_family checks to l2tp_validate_socket
Yang Yingliang <yangyingliang(a)huawei.com>
devinet: fix memleak in inetdev_init()
-------------
Diffstat:
Documentation/ABI/testing/sysfs-devices-system-cpu | 1 +
Documentation/admin-guide/hw-vuln/index.rst | 1 +
.../special-register-buffer-data-sampling.rst | 149 +++++++++++++++++++++
Documentation/admin-guide/kernel-parameters.txt | 20 +++
Makefile | 4 +-
arch/x86/include/asm/cpu_device_id.h | 27 ++++
arch/x86/include/asm/cpufeatures.h | 2 +
arch/x86/include/asm/msr-index.h | 4 +
arch/x86/kernel/cpu/bugs.c | 106 +++++++++++++++
arch/x86/kernel/cpu/common.c | 54 ++++++--
arch/x86/kernel/cpu/cpu.h | 1 +
arch/x86/kernel/cpu/match.c | 7 +-
drivers/base/cpu.c | 8 ++
drivers/iio/light/vcnl4000.c | 6 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 6 -
drivers/net/usb/qmi_wwan.c | 1 +
drivers/nfc/st21nfca/dep.c | 4 +-
drivers/nvmem/qfprom.c | 14 --
drivers/staging/rtl8712/wifi.h | 9 +-
drivers/tty/hvc/hvc_console.c | 23 ++--
drivers/tty/vt/keyboard.c | 26 ++--
drivers/usb/class/cdc-acm.c | 2 +-
drivers/usb/musb/musb_core.c | 7 +
drivers/usb/musb/musb_debugfs.c | 10 +-
drivers/usb/serial/option.c | 4 +
drivers/usb/serial/qcserial.c | 1 +
drivers/usb/serial/usb_wwan.c | 4 +
include/linux/mod_devicetable.h | 6 +
include/linux/virtio_net.h | 14 +-
kernel/events/uprobes.c | 16 ++-
net/ipv4/devinet.c | 1 +
net/l2tp/l2tp_core.c | 3 +
net/l2tp/l2tp_ip.c | 29 +++-
net/l2tp/l2tp_ip6.c | 30 +++--
net/vmw_vsock/af_vsock.c | 2 +-
35 files changed, 503 insertions(+), 99 deletions(-)
Hi Steve,
I found 2 bugs in /proc/bootconfig and tools/bootconfig.
- They always use double-quote to quote values. For the values
which includes double-quote, it should use single-quote instead.
- tools/bootconfig always returns error code if it shows the
bootconfig in initrd (executed without options)
This series fixes those bugs and add testcases to ensure
no regressions.
Thank you,
---
Masami Hiramatsu (4):
proc/bootconfig: Fix to use correct quotes for value
tools/bootconfig: Fix to use correct quotes for value
tools/bootconfig: Fix to return 0 if succeeded to show the bootconfig
tools/bootconfig: Add testcase for show-command and quotes test
fs/proc/bootconfig.c | 13 +++++++++----
tools/bootconfig/main.c | 18 +++++++++++-------
tools/bootconfig/test-bootconfig.sh | 10 ++++++++++
3 files changed, 30 insertions(+), 11 deletions(-)
--
Masami Hiramatsu (Linaro) <mhiramat(a)kernel.org>
When "ovl_is_inuse" true case, trap inode reference not put.
plus adding the comment explaining sequence of
ovl_is_inuse after ovl_setup_trap.
Fixes: 0be0bfd2de9d ("ovl: fix regression caused by overlapping layers..")
Cc: <stable(a)vger.kernel.org> # v4.19+
Reviewed-by: Amir Goldstein <amir73il(a)gmail.com>
> Signed-off-by: youngjun <her0gyugyu(a)gmail.com>
> ---
> fs/overlayfs/super.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
> index 91476bc422f9..0396793dadb8 100644
> --- a/fs/overlayfs/super.c
> +++ b/fs/overlayfs/super.c
> @@ -1029,6 +1029,12 @@ static const struct xattr_handler *ovl_xattr_handlers[] = {
> NULL
> };
>
> +/*
> + * Check if lower root conflicts with this overlay layers before checking
> + * if it is in-use as upperdir/workdir of "another" mount, because we do
> + * not bother to check in ovl_is_inuse() if the upperdir/workdir is in fact
> + * in-use by our upperdir/workdir.
> + */
Signed-off-by: youngjun <her0gyugyu(a)gmail.com>
---
fs/overlayfs/super.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 91476bc422f9..3097142b1e23 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -1493,14 +1493,22 @@ static int ovl_get_layers(struct super_block *sb, struct ovl_fs *ofs,
if (err < 0)
goto out;
+ /*
+ * Check if lower root conflicts with this overlay layers before checking
+ * if it is in-use as upperdir/workdir of "another" mount, because we do
+ * not bother to check in ovl_is_inuse() if the upperdir/workdir is in fact
+ * in-use by our upperdir/workdir.
+ */
err = ovl_setup_trap(sb, stack[i].dentry, &trap, "lowerdir");
if (err)
goto out;
if (ovl_is_inuse(stack[i].dentry)) {
err = ovl_report_in_use(ofs, "lowerdir");
- if (err)
+ if (err) {
+ iput(trap);
goto out;
+ }
}
mnt = clone_private_mount(&stack[i]);
--
2.17.1
Great thanks Amir. guidance to me really helpful.
As you comment, I modified my patch.
1) I revised three patch so version is 3.
2) I misunderstood your comment(adding annotation) firstly.
But, I clearly know at now and modified it.
the annotation before "ovl_setup_trap" is clearly understood as I see.
And I have some questions.
1) As I understand, The CC you said valid is 'linux-unionfs'?
2) The comment "Please add these lines to the bottom of commit message..."
Is it needed manually when I revised patch?
Currently the system will be woken up via WOL(Wake On Lan) even if the
device wakeup ability has been disabled via sysfs:
cat /sys/devices/pci0000:00/0000:00:1f.6/power/wakeup
disabled
The system should not be woken up if the user has explicitly
disabled the wake up ability for this device.
This patch clears the WOL ability of this network device if the
user has disabled the wake up ability in sysfs.
Fixes: bc7f75fa9788 ("[E1000E]: New pci-express e1000 driver")
Reported-by: Rafael J. Wysocki <rafael.j.wysocki(a)intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: <Stable(a)vger.kernel.org>
Signed-off-by: Chen Yu <yu.c.chen(a)intel.com>
---
drivers/net/ethernet/intel/e1000e/netdev.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 177c6da80c57..f6f730388705 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -6516,11 +6516,17 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
struct net_device *netdev = pci_get_drvdata(pdev);
struct e1000_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
- u32 ctrl, ctrl_ext, rctl, status;
- /* Runtime suspend should only enable wakeup for link changes */
- u32 wufc = runtime ? E1000_WUFC_LNKC : adapter->wol;
+ u32 ctrl, ctrl_ext, rctl, status, wufc;
int retval = 0;
+ /* Runtime suspend should only enable wakeup for link changes */
+ if (runtime)
+ wufc = E1000_WUFC_LNKC;
+ else if (device_may_wakeup(&pdev->dev))
+ wufc = adapter->wol;
+ else
+ wufc = 0;
+
status = er32(STATUS);
if (status & E1000_STATUS_LU)
wufc &= ~E1000_WUFC_LNKC;
@@ -6577,7 +6583,7 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)
if (adapter->hw.phy.type == e1000_phy_igp_3) {
e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw);
} else if (hw->mac.type >= e1000_pch_lpt) {
- if (!(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC)))
+ if (wufc && !(wufc & (E1000_WUFC_EX | E1000_WUFC_MC | E1000_WUFC_BC)))
/* ULP does not support wake from unicast, multicast
* or broadcast.
*/
--
2.17.1
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 9dd277ff92d06f6aa95b39936ad83981d781f49b Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:02 +0200
Subject: [PATCH] spi: bcm2835: Fix controller unregister order
The BCM2835 SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
bcm2835_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: bcm2835_spi_remove() tears down the DMA
channels and turns off the SPI controller, including its interrupts
and clock. The SPI controller is thus no longer usable.
When the SPI controller is subsequently unregistered, it unbinds all
its slave devices. If their drivers need to access the SPI bus,
e.g. to quiesce their interrupts, unbinding will fail.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed
after unbinding of slaves.
Fix by using the non-devm variant spi_register_controller(). Note that
the struct spi_controller as well as the driver-private data are not
freed until after bcm2835_spi_remove() has finished, so accessing them
is safe.
Fixes: 247263dba208 ("spi: bcm2835: use devm_spi_register_master()")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.13+
Link: https://lore.kernel.org/r/2397dd70cdbe95e0bc4da2b9fca0f31cb94e5aed.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
index 11c235879bb7..fd887a6492f4 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -1347,7 +1347,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
goto out_dma_release;
}
- err = devm_spi_register_controller(&pdev->dev, ctlr);
+ err = spi_register_controller(ctlr);
if (err) {
dev_err(&pdev->dev, "could not register SPI controller: %d\n",
err);
@@ -1374,6 +1374,8 @@ static int bcm2835_spi_remove(struct platform_device *pdev)
bcm2835_debugfs_remove(bs);
+ spi_unregister_controller(ctlr);
+
/* Clear FIFOs, and disable the HW block */
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
When SECCOMP_IOCTL_NOTIF_ID_VALID was first introduced it had the wrong
direction flag set. While this isn't a big deal as nothing currently
enforces these bits in the kernel, it should be defined correctly. Fix
the define and provide support for the old command until it is no longer
needed for backward compatibility.
Fixes: 6a21cc50f0c7 ("seccomp: add a return code to trap to userspace")
Cc: stable(a)vger.kernel.org
Signed-off-by: Kees Cook <keescook(a)chromium.org>
---
include/uapi/linux/seccomp.h | 2 +-
kernel/seccomp.c | 9 +++++++++
tools/testing/selftests/seccomp/seccomp_bpf.c | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/include/uapi/linux/seccomp.h b/include/uapi/linux/seccomp.h
index 473a61695ac3..6ba18b82a02e 100644
--- a/include/uapi/linux/seccomp.h
+++ b/include/uapi/linux/seccomp.h
@@ -142,7 +142,7 @@ struct seccomp_notif_addfd {
#define SECCOMP_IOCTL_NOTIF_RECV SECCOMP_IOWR(0, struct seccomp_notif)
#define SECCOMP_IOCTL_NOTIF_SEND SECCOMP_IOWR(1, \
struct seccomp_notif_resp)
-#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64)
+#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOW(2, __u64)
/* On success, the return value is the remote process's added fd number */
#define SECCOMP_IOCTL_NOTIF_ADDFD SECCOMP_IOW(3, \
struct seccomp_notif_addfd)
diff --git a/kernel/seccomp.c b/kernel/seccomp.c
index 9660abf91135..61e556bca338 100644
--- a/kernel/seccomp.c
+++ b/kernel/seccomp.c
@@ -43,6 +43,14 @@
#include <linux/anon_inodes.h>
#include <linux/lockdep.h>
+/*
+ * When SECCOMP_IOCTL_NOTIF_ID_VALID was first introduced, it had the
+ * wrong direction flag in the ioctl number. This is the broken one,
+ * which the kernel needs to keep supporting until all userspaces stop
+ * using the wrong command number.
+ */
+#define SECCOMP_IOCTL_NOTIF_ID_VALID_WRONG_DIR SECCOMP_IOR(2, __u64)
+
enum notify_state {
SECCOMP_NOTIFY_INIT,
SECCOMP_NOTIFY_SENT,
@@ -1397,6 +1405,7 @@ static long seccomp_notify_ioctl(struct file *file, unsigned int cmd,
return seccomp_notify_recv(filter, buf);
case SECCOMP_IOCTL_NOTIF_SEND:
return seccomp_notify_send(filter, buf);
+ case SECCOMP_IOCTL_NOTIF_ID_VALID_WRONG_DIR:
case SECCOMP_IOCTL_NOTIF_ID_VALID:
return seccomp_notify_id_valid(filter, buf);
}
diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c
index cf1480e498ea..403c6d0f149e 100644
--- a/tools/testing/selftests/seccomp/seccomp_bpf.c
+++ b/tools/testing/selftests/seccomp/seccomp_bpf.c
@@ -184,7 +184,7 @@ struct seccomp_metadata {
#define SECCOMP_IOCTL_NOTIF_RECV SECCOMP_IOWR(0, struct seccomp_notif)
#define SECCOMP_IOCTL_NOTIF_SEND SECCOMP_IOWR(1, \
struct seccomp_notif_resp)
-#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64)
+#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOW(2, __u64)
struct seccomp_notif {
__u64 id;
--
2.25.1
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From d90ca42012db2863a9a30b564a2ace6016594bda Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:05:01 +0800
Subject: [PATCH] crypto: virtio: Fix dest length calculation in
__virtio_crypto_skcipher_do_req()
The src/dst length is not aligned with AES_BLOCK_SIZE(which is 16) in some
testcases in tcrypto.ko.
For example, the src/dst length of one of cts(cbc(aes))'s testcase is 17, the
crypto_virtio driver will set @src_data_len=16 but @dst_data_len=17 in this
case and get a wrong at then end.
SRC: pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp (17 bytes)
EXP: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc pp (17 bytes)
DST: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 00 (pollute the last bytes)
(pp: plaintext cc:ciphertext)
Fix this issue by limit the length of dest buffer.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Cc: Gonglei <arei.gonglei(a)huawei.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-4-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 52261b6c247e..cb8a6ea2a4bc 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -407,6 +407,7 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
goto free;
}
+ dst_len = min_t(unsigned int, req->cryptlen, dst_len);
pr_debug("virtio_crypto: src_len: %u, dst_len: %llu\n",
req->cryptlen, dst_len);
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From b02989f37fc5e865ceeee9070907e4493b3a21e2 Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:04:59 +0800
Subject: [PATCH] crypto: virtio: Fix src/dst scatterlist calculation in
__virtio_crypto_skcipher_do_req()
The system will crash when the users insmod crypto/tcrypt.ko with mode=38
( testing "cts(cbc(aes))" ).
Usually the next entry of one sg will be @sg@ + 1, but if this sg element
is part of a chained scatterlist, it could jump to the start of a new
scatterlist array. Fix it by sg_next() on calculation of src/dst
scatterlist.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Reported-by: LABBE Corentin <clabbe(a)baylibre.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200123101000.GB24255@Red
Signed-off-by: Gonglei <arei.gonglei(a)huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-2-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index fd045e64972a..5f8243563009 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -350,13 +350,18 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
int err;
unsigned long flags;
struct scatterlist outhdr, iv_sg, status_sg, **sgs;
- int i;
u64 dst_len;
unsigned int num_out = 0, num_in = 0;
int sg_total;
uint8_t *iv;
+ struct scatterlist *sg;
src_nents = sg_nents_for_len(req->src, req->cryptlen);
+ if (src_nents < 0) {
+ pr_err("Invalid number of src SG.\n");
+ return src_nents;
+ }
+
dst_nents = sg_nents(req->dst);
pr_debug("virtio_crypto: Number of sgs (src_nents: %d, dst_nents: %d)\n",
@@ -442,12 +447,12 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
vc_sym_req->iv = iv;
/* Source data */
- for (i = 0; i < src_nents; i++)
- sgs[num_out++] = &req->src[i];
+ for (sg = req->src; src_nents; sg = sg_next(sg), src_nents--)
+ sgs[num_out++] = sg;
/* Destination data */
- for (i = 0; i < dst_nents; i++)
- sgs[num_out + num_in++] = &req->dst[i];
+ for (sg = req->dst; sg; sg = sg_next(sg))
+ sgs[num_out + num_in++] = sg;
/* Status */
sg_init_one(&status_sg, &vc_req->status, sizeof(vc_req->status));
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 8c855f0720ff006d75d0a2512c7f6c4f60ff60ee Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:05:00 +0800
Subject: [PATCH] crypto: virtio: Fix use-after-free in
virtio_crypto_skcipher_finalize_req()
The system'll crash when the users insmod crypto/tcrypto.ko with mode=155
( testing "authenc(hmac(sha1),cbc(aes))" ). It's caused by reuse the memory
of request structure.
In crypto_authenc_init_tfm(), the reqsize is set to:
[PART 1] sizeof(authenc_request_ctx) +
[PART 2] ictx->reqoff +
[PART 3] MAX(ahash part, skcipher part)
and the 'PART 3' is used by both ahash and skcipher in turn.
When the virtio_crypto driver finish skcipher req, it'll call ->complete
callback(in crypto_finalize_skcipher_request) and then free its
resources whose pointers are recorded in 'skcipher parts'.
However, the ->complete is 'crypto_authenc_encrypt_done' in this case,
it will use the 'ahash part' of the request and change its content,
so virtio_crypto driver will get the wrong pointer after ->complete
finish and mistakenly free some other's memory. So the system will crash
when these memory will be used again.
The resources which need to be cleaned up are not used any more. But the
pointers of these resources may be changed in the function
"crypto_finalize_skcipher_request". Thus release specific resources before
calling this function.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Reported-by: LABBE Corentin <clabbe(a)baylibre.com>
Cc: Gonglei <arei.gonglei(a)huawei.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200123101000.GB24255@Red
Acked-by: Gonglei <arei.gonglei(a)huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-3-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 5f8243563009..52261b6c247e 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -582,10 +582,11 @@ static void virtio_crypto_skcipher_finalize_req(
scatterwalk_map_and_copy(req->iv, req->dst,
req->cryptlen - AES_BLOCK_SIZE,
AES_BLOCK_SIZE, 0);
- crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine,
- req, err);
kzfree(vc_sym_req->iv);
virtcrypto_clear_request(&vc_sym_req->base);
+
+ crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine,
+ req, err);
}
static struct virtio_crypto_algo virtio_crypto_algs[] = { {
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 65e318e17358a3fd4fcb5a69d89b14016dee2f06 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:03 +0200
Subject: [PATCH] spi: pxa2xx: Fix runtime PM ref imbalance on probe error
The PXA2xx SPI driver releases a runtime PM ref in the probe error path
even though it hasn't acquired a ref earlier.
Apparently commit e2b714afee32 ("spi: pxa2xx: Disable runtime PM if
controller registration fails") sought to copy-paste the invocation of
pm_runtime_disable() from pxa2xx_spi_remove(), but erroneously copied
the call to pm_runtime_put_noidle() as well. Drop it.
Fixes: e2b714afee32 ("spi: pxa2xx: Disable runtime PM if controller registration fails")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Jarkko Nikula <jarkko.nikula(a)linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v4.17+
Cc: Jarkko Nikula <jarkko.nikula(a)linux.intel.com>
Link: https://lore.kernel.org/r/58b2ac6942ca1f91aaeeafe512144bc5343e1d84.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index f456ce18f79e..f6e87344a36c 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1893,7 +1893,6 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
return status;
out_error_pm_runtime_enabled:
- pm_runtime_put_noidle(&pdev->dev);
pm_runtime_disable(&pdev->dev);
out_error_clock_enabled:
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 32e5b57232c0411e7dea96625c415510430ac079 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:02 +0200
Subject: [PATCH] spi: pxa2xx: Fix controller unregister order
The PXA2xx SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
pxa2xx_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: pxa2xx_spi_remove() disables the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in pxa2xx_spi_remove(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
The improper use of devm_spi_register_controller() was introduced in 2013
by commit a807fcd090d6 ("spi: pxa2xx: use devm_spi_register_master()"),
but all earlier versions of the driver going back to 2006 were likewise
broken because they invoked spi_unregister_master() at the end of
pxa2xx_spi_remove(), rather than at the beginning.
Fixes: e0c9905e87ac ("[PATCH] SPI: add PXA2xx SSP SPI Driver")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v2.6.17+
Cc: Tsuchiya Yuto <kitakar(a)gmail.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206403#c1
Link: https://lore.kernel.org/r/834c446b1cf3284d2660f1bee1ebe3e737cd02a9.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index 73d2a65d0b6e..f456ce18f79e 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1884,7 +1884,7 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
/* Register with the SPI framework */
platform_set_drvdata(pdev, drv_data);
- status = devm_spi_register_controller(&pdev->dev, controller);
+ status = spi_register_controller(controller);
if (status != 0) {
dev_err(&pdev->dev, "problem registering spi controller\n");
goto out_error_pm_runtime_enabled;
@@ -1916,6 +1916,8 @@ static int pxa2xx_spi_remove(struct platform_device *pdev)
pm_runtime_get_sync(&pdev->dev);
+ spi_unregister_controller(drv_data->controller);
+
/* Disable the SSP at the peripheral and SOC level */
pxa2xx_spi_write(drv_data, SSCR0, 0);
clk_disable_unprepare(ssp->clk);
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 84855678add8aba927faf76bc2f130a40f94b6f7 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:01 +0200
Subject: [PATCH] spi: Fix controller unregister order
When an SPI controller unregisters, it unbinds all its slave devices.
For this, their drivers may need to access the SPI bus, e.g. to quiesce
interrupts.
However since commit ffbbdd21329f ("spi: create a message queueing
infrastructure"), spi_destroy_queue() is executed before unbinding the
slaves. It sets ctlr->running = false, thereby preventing SPI bus
access and causing unbinding of slave devices to fail.
Fix by unbinding slaves before calling spi_destroy_queue().
Fixes: ffbbdd21329f ("spi: create a message queueing infrastructure")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.4+
Cc: Linus Walleij <linus.walleij(a)linaro.org>
Link: https://lore.kernel.org/r/8aaf9d44c153fe233b17bc2dec4eb679898d7e7b.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 531d1de85f7f..25eb96d329ab 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -2763,6 +2763,8 @@ void spi_unregister_controller(struct spi_controller *ctlr)
struct spi_controller *found;
int id = ctlr->bus_num;
+ device_for_each_child(&ctlr->dev, NULL, __unregister);
+
/* First make sure that this controller was ever added */
mutex_lock(&board_lock);
found = idr_find(&spi_master_idr, id);
@@ -2775,7 +2777,6 @@ void spi_unregister_controller(struct spi_controller *ctlr)
list_del(&ctlr->list);
mutex_unlock(&board_lock);
- device_for_each_child(&ctlr->dev, NULL, __unregister);
device_unregister(&ctlr->dev);
/* free bus id */
mutex_lock(&board_lock);
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ca8b19d61e3fce5d2d7790cde27a0b57bcb3f341 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:01 +0200
Subject: [PATCH] spi: dw: Fix controller unregister order
The Designware SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
dw_spi_remove_host() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: dw_spi_remove_host() shuts down the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in dw_spi_remove_host(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
Fixes: 04f421e7b0b1 ("spi: dw: use managed resources")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v3.14+
Cc: Baruch Siach <baruch(a)tkos.co.il>
Link: https://lore.kernel.org/r/3fff8cb8ae44a9893840d0688be15bb88c090a14.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c
index 31e3f866d11a..780ffad64a91 100644
--- a/drivers/spi/spi-dw.c
+++ b/drivers/spi/spi-dw.c
@@ -526,7 +526,7 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws)
}
}
- ret = devm_spi_register_controller(dev, master);
+ ret = spi_register_controller(master);
if (ret) {
dev_err(&master->dev, "problem registering spi master\n");
goto err_dma_exit;
@@ -550,6 +550,8 @@ void dw_spi_remove_host(struct dw_spi *dws)
{
dw_spi_debugfs_remove(dws);
+ spi_unregister_controller(dws->master);
+
if (dws->dma_ops && dws->dma_ops->dma_exit)
dws->dma_ops->dma_exit(dws);
The patch below does not apply to the 5.7-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From f5f27b79eab80de0287c243a22169e4876b08d5e Mon Sep 17 00:00:00 2001
From: Franck LENORMAND <franck.lenormand(a)nxp.com>
Date: Thu, 26 Mar 2020 00:00:05 +0200
Subject: [PATCH] firmware: imx: scu: Fix corruption of header
The header of the message to send can be changed if the
response is longer than the request:
- 1st word, the header is sent
- the remaining words of the message are sent
- the response is received asynchronously during the
execution of the loop, changing the size field in
the header
- the for loop test the termination condition using
the corrupted header
It is the case for the API build_info which has just a
header as request but 3 words in response.
This issue is fixed storing the header locally instead of
using a pointer on it.
Fixes: edbee095fafb (firmware: imx: add SCU firmware driver support)
Signed-off-by: Franck LENORMAND <franck.lenormand(a)nxp.com>
Reviewed-by: Leonard Crestez <leonard.crestez(a)nxp.com>
Signed-off-by: Leonard Crestez <leonard.crestez(a)nxp.com>
Cc: stable(a)vger.kernel.org
Reviewed-by: Dong Aisheng <aisheng.dong(a)nxp.com>
Signed-off-by: Shawn Guo <shawnguo(a)kernel.org>
diff --git a/drivers/firmware/imx/imx-scu.c b/drivers/firmware/imx/imx-scu.c
index e94a5585b698..b3da2e193ad2 100644
--- a/drivers/firmware/imx/imx-scu.c
+++ b/drivers/firmware/imx/imx-scu.c
@@ -158,7 +158,7 @@ static void imx_scu_rx_callback(struct mbox_client *c, void *msg)
static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
{
- struct imx_sc_rpc_msg *hdr = msg;
+ struct imx_sc_rpc_msg hdr = *(struct imx_sc_rpc_msg *)msg;
struct imx_sc_chan *sc_chan;
u32 *data = msg;
int ret;
@@ -166,13 +166,13 @@ static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
int i;
/* Check size */
- if (hdr->size > IMX_SC_RPC_MAX_MSG)
+ if (hdr.size > IMX_SC_RPC_MAX_MSG)
return -EINVAL;
- dev_dbg(sc_ipc->dev, "RPC SVC %u FUNC %u SIZE %u\n", hdr->svc,
- hdr->func, hdr->size);
+ dev_dbg(sc_ipc->dev, "RPC SVC %u FUNC %u SIZE %u\n", hdr.svc,
+ hdr.func, hdr.size);
- size = sc_ipc->fast_ipc ? 1 : hdr->size;
+ size = sc_ipc->fast_ipc ? 1 : hdr.size;
for (i = 0; i < size; i++) {
sc_chan = &sc_ipc->chans[i % 4];
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From d90ca42012db2863a9a30b564a2ace6016594bda Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:05:01 +0800
Subject: [PATCH] crypto: virtio: Fix dest length calculation in
__virtio_crypto_skcipher_do_req()
The src/dst length is not aligned with AES_BLOCK_SIZE(which is 16) in some
testcases in tcrypto.ko.
For example, the src/dst length of one of cts(cbc(aes))'s testcase is 17, the
crypto_virtio driver will set @src_data_len=16 but @dst_data_len=17 in this
case and get a wrong at then end.
SRC: pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp (17 bytes)
EXP: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc pp (17 bytes)
DST: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 00 (pollute the last bytes)
(pp: plaintext cc:ciphertext)
Fix this issue by limit the length of dest buffer.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Cc: Gonglei <arei.gonglei(a)huawei.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-4-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 52261b6c247e..cb8a6ea2a4bc 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -407,6 +407,7 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
goto free;
}
+ dst_len = min_t(unsigned int, req->cryptlen, dst_len);
pr_debug("virtio_crypto: src_len: %u, dst_len: %llu\n",
req->cryptlen, dst_len);
From: "Luck, Tony" <tony.luck(a)intel.com>
commit 17fae1294ad9d711b2c3dd0edef479d40c76a5e8 upstream
An interesting thing happened when a guest Linux instance took
a machine check. The VMM unmapped the bad page from guest physical
space and passed the machine check to the guest.
Linux took all the normal actions to offline the page from the process
that was using it. But then guest Linux crashed because it said there
was a second machine check inside the kernel with this stack trace:
do_memory_failure
set_mce_nospec
set_memory_uc
_set_memory_uc
change_page_attr_set_clr
cpa_flush
clflush_cache_range_opt
This was odd, because a CLFLUSH instruction shouldn't raise a machine
check (it isn't consuming the data). Further investigation showed that
the VMM had passed in another machine check because is appeared that the
guest was accessing the bad page.
Fix is to check the scope of the poison by checking the MCi_MISC register.
If the entire page is affected, then unmap the page. If only part of the
page is affected, then mark the page as uncacheable.
This assumes that VMMs will do the logical thing and pass in the "whole
page scope" via the MCi_MISC register (since they unmapped the entire
page).
Reported-by: Jue Wang <juew(a)google.com>
Tested-by: Jue Wang <juew(a)google.com>
Fixes: 284ce4011ba6 ("x86/memory_failure: Introduce {set, clear}_mce_nospec()")
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Link: https://lore.kernel.org/r/20200520163546.GA7977@agluck-desk2.amr.corp.intel…
---
arch/x86/include/asm/set_memory.h | 19 +++++++++++++------
arch/x86/kernel/cpu/mce/core.c | 11 +++++++++--
include/linux/set_memory.h | 2 +-
3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index 2ee8e469dcf5..162128cdfbf2 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -85,28 +85,35 @@ void set_kernel_text_rw(void);
void set_kernel_text_ro(void);
#ifdef CONFIG_X86_64
-static inline int set_mce_nospec(unsigned long pfn)
+/*
+ * Prevent speculative access to the page by either unmapping
+ * it (if we do not require access to any part of the page) or
+ * marking it uncacheable (if we want to try to retrieve data
+ * from non-poisoned lines in the page).
+ */
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
unsigned long decoy_addr;
int rc;
/*
- * Mark the linear address as UC to make sure we don't log more
- * errors because of speculative access to the page.
* We would like to just call:
- * set_memory_uc((unsigned long)pfn_to_kaddr(pfn), 1);
+ * set_memory_XX((unsigned long)pfn_to_kaddr(pfn), 1);
* but doing that would radically increase the odds of a
* speculative access to the poison page because we'd have
* the virtual address of the kernel 1:1 mapping sitting
* around in registers.
* Instead we get tricky. We create a non-canonical address
* that looks just like the one we want, but has bit 63 flipped.
- * This relies on set_memory_uc() properly sanitizing any __pa()
+ * This relies on set_memory_XX() properly sanitizing any __pa()
* results with __PHYSICAL_MASK or PTE_PFN_MASK.
*/
decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
- rc = set_memory_uc(decoy_addr, 1);
+ if (unmap)
+ rc = set_memory_np(decoy_addr, 1);
+ else
+ rc = set_memory_uc(decoy_addr, 1);
if (rc)
pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
return rc;
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index aecb15ba66cd..fd76e3733dd3 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -533,6 +533,13 @@ bool mce_is_memory_error(struct mce *m)
}
EXPORT_SYMBOL_GPL(mce_is_memory_error);
+static bool whole_page(struct mce *m)
+{
+ if (!mca_cfg.ser || !(m->status & MCI_STATUS_MISCV))
+ return true;
+ return MCI_MISC_ADDR_LSB(m->misc) >= PAGE_SHIFT;
+}
+
bool mce_is_correctable(struct mce *m)
{
if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED)
@@ -601,7 +608,7 @@ static int srao_decode_notifier(struct notifier_block *nb, unsigned long val,
if (mce_usable_address(mce) && (mce->severity == MCE_AO_SEVERITY)) {
pfn = mce->addr >> PAGE_SHIFT;
if (!memory_failure(pfn, 0))
- set_mce_nospec(pfn);
+ set_mce_nospec(pfn, whole_page(mce));
}
return NOTIFY_OK;
@@ -1103,7 +1110,7 @@ static int do_memory_failure(struct mce *m)
if (ret)
pr_err("Memory error not recovered");
else
- set_mce_nospec(m->addr >> PAGE_SHIFT);
+ set_mce_nospec(m->addr >> PAGE_SHIFT, whole_page(m));
return ret;
}
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 86281ac7c305..860e0f843c12 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -26,7 +26,7 @@ static inline int set_direct_map_default_noflush(struct page *page)
#endif
#ifndef set_mce_nospec
-static inline int set_mce_nospec(unsigned long pfn)
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
return 0;
}
--
2.21.1
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From d90ca42012db2863a9a30b564a2ace6016594bda Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:05:01 +0800
Subject: [PATCH] crypto: virtio: Fix dest length calculation in
__virtio_crypto_skcipher_do_req()
The src/dst length is not aligned with AES_BLOCK_SIZE(which is 16) in some
testcases in tcrypto.ko.
For example, the src/dst length of one of cts(cbc(aes))'s testcase is 17, the
crypto_virtio driver will set @src_data_len=16 but @dst_data_len=17 in this
case and get a wrong at then end.
SRC: pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp pp (17 bytes)
EXP: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc pp (17 bytes)
DST: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 00 (pollute the last bytes)
(pp: plaintext cc:ciphertext)
Fix this issue by limit the length of dest buffer.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Cc: Gonglei <arei.gonglei(a)huawei.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-4-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 52261b6c247e..cb8a6ea2a4bc 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -407,6 +407,7 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
goto free;
}
+ dst_len = min_t(unsigned int, req->cryptlen, dst_len);
pr_debug("virtio_crypto: src_len: %u, dst_len: %llu\n",
req->cryptlen, dst_len);
The patch below does not apply to the 5.7-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 17fae1294ad9d711b2c3dd0edef479d40c76a5e8 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck(a)intel.com>
Date: Wed, 20 May 2020 09:35:46 -0700
Subject: [PATCH] x86/{mce,mm}: Unmap the entire page if the whole page is
affected and poisoned
An interesting thing happened when a guest Linux instance took a machine
check. The VMM unmapped the bad page from guest physical space and
passed the machine check to the guest.
Linux took all the normal actions to offline the page from the process
that was using it. But then guest Linux crashed because it said there
was a second machine check inside the kernel with this stack trace:
do_memory_failure
set_mce_nospec
set_memory_uc
_set_memory_uc
change_page_attr_set_clr
cpa_flush
clflush_cache_range_opt
This was odd, because a CLFLUSH instruction shouldn't raise a machine
check (it isn't consuming the data). Further investigation showed that
the VMM had passed in another machine check because is appeared that the
guest was accessing the bad page.
Fix is to check the scope of the poison by checking the MCi_MISC register.
If the entire page is affected, then unmap the page. If only part of the
page is affected, then mark the page as uncacheable.
This assumes that VMMs will do the logical thing and pass in the "whole
page scope" via the MCi_MISC register (since they unmapped the entire
page).
[ bp: Adjust to x86/entry changes. ]
Fixes: 284ce4011ba6 ("x86/memory_failure: Introduce {set, clear}_mce_nospec()")
Reported-by: Jue Wang <juew(a)google.com>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Jue Wang <juew(a)google.com>
Cc: <stable(a)vger.kernel.org>
Link: https://lkml.kernel.org/r/20200520163546.GA7977@agluck-desk2.amr.corp.intel…
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index ec2c0a094b5d..5948218f35c5 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -86,28 +86,35 @@ int set_direct_map_default_noflush(struct page *page);
extern int kernel_set_to_readonly;
#ifdef CONFIG_X86_64
-static inline int set_mce_nospec(unsigned long pfn)
+/*
+ * Prevent speculative access to the page by either unmapping
+ * it (if we do not require access to any part of the page) or
+ * marking it uncacheable (if we want to try to retrieve data
+ * from non-poisoned lines in the page).
+ */
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
unsigned long decoy_addr;
int rc;
/*
- * Mark the linear address as UC to make sure we don't log more
- * errors because of speculative access to the page.
* We would like to just call:
- * set_memory_uc((unsigned long)pfn_to_kaddr(pfn), 1);
+ * set_memory_XX((unsigned long)pfn_to_kaddr(pfn), 1);
* but doing that would radically increase the odds of a
* speculative access to the poison page because we'd have
* the virtual address of the kernel 1:1 mapping sitting
* around in registers.
* Instead we get tricky. We create a non-canonical address
* that looks just like the one we want, but has bit 63 flipped.
- * This relies on set_memory_uc() properly sanitizing any __pa()
+ * This relies on set_memory_XX() properly sanitizing any __pa()
* results with __PHYSICAL_MASK or PTE_PFN_MASK.
*/
decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
- rc = set_memory_uc(decoy_addr, 1);
+ if (unmap)
+ rc = set_memory_np(decoy_addr, 1);
+ else
+ rc = set_memory_uc(decoy_addr, 1);
if (rc)
pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
return rc;
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 30413325de22..ce9120c4f740 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -520,6 +520,14 @@ bool mce_is_memory_error(struct mce *m)
}
EXPORT_SYMBOL_GPL(mce_is_memory_error);
+static bool whole_page(struct mce *m)
+{
+ if (!mca_cfg.ser || !(m->status & MCI_STATUS_MISCV))
+ return true;
+
+ return MCI_MISC_ADDR_LSB(m->misc) >= PAGE_SHIFT;
+}
+
bool mce_is_correctable(struct mce *m)
{
if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED)
@@ -573,7 +581,7 @@ static int uc_decode_notifier(struct notifier_block *nb, unsigned long val,
pfn = mce->addr >> PAGE_SHIFT;
if (!memory_failure(pfn, 0)) {
- set_mce_nospec(pfn);
+ set_mce_nospec(pfn, whole_page(mce));
mce->kflags |= MCE_HANDLED_UC;
}
@@ -1173,11 +1181,12 @@ static void kill_me_maybe(struct callback_head *cb)
int flags = MF_ACTION_REQUIRED;
pr_err("Uncorrected hardware memory error in user-access at %llx", p->mce_addr);
- if (!(p->mce_status & MCG_STATUS_RIPV))
+
+ if (!p->mce_ripv)
flags |= MF_MUST_KILL;
if (!memory_failure(p->mce_addr >> PAGE_SHIFT, flags)) {
- set_mce_nospec(p->mce_addr >> PAGE_SHIFT);
+ set_mce_nospec(p->mce_addr >> PAGE_SHIFT, p->mce_whole_page);
return;
}
@@ -1331,7 +1340,8 @@ void noinstr do_machine_check(struct pt_regs *regs)
BUG_ON(!on_thread_stack() || !user_mode(regs));
current->mce_addr = m.addr;
- current->mce_status = m.mcgstatus;
+ current->mce_ripv = !!(m.mcgstatus & MCG_STATUS_RIPV);
+ current->mce_whole_page = whole_page(&m);
current->mce_kill_me.func = kill_me_maybe;
if (kill_it)
current->mce_kill_me.func = kill_me_now;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index c5d96e3e7fff..62c1de522fc5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1304,7 +1304,9 @@ struct task_struct {
#ifdef CONFIG_X86_MCE
u64 mce_addr;
- u64 mce_status;
+ __u64 mce_ripv : 1,
+ mce_whole_page : 1,
+ __mce_reserved : 62;
struct callback_head mce_kill_me;
#endif
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 86281ac7c305..860e0f843c12 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -26,7 +26,7 @@ static inline int set_direct_map_default_noflush(struct page *page)
#endif
#ifndef set_mce_nospec
-static inline int set_mce_nospec(unsigned long pfn)
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
return 0;
}
From: Michał Mirosław <mirq-linux(a)rere.qmqm.pl>
commit 951e2736f4b11b58dc44d41964fa17c3527d882a upstream.
Prevent SNDRV_PCM_IOCTL_LINK linking stream to itself - the code
can't handle it. Fixed commit is not where bug was introduced, but
changes the context significantly.
Cc: stable(a)vger.kernel.org
Fixes: 0888c321de70 ("pcm_native: switch to fdget()/fdput()")
Signed-off-by: Michał Mirosław <mirq-linux(a)rere.qmqm.pl>
Link: https://lore.kernel.org/r/89c4a2487609a0ed6af3ecf01cc972bdc59a7a2d.15916349…
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
Backported to 4.19.y. It can be used for older branches, too.
sound/core/pcm_native.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 14b1ee29509d..071e09c3d855 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -1950,6 +1950,11 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)
}
pcm_file = f.file->private_data;
substream1 = pcm_file->substream;
+ if (substream == substream1) {
+ res = -EINVAL;
+ goto _badf;
+ }
+
group = kmalloc(sizeof(*group), GFP_KERNEL);
if (!group) {
res = -ENOMEM;
--
2.16.4
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 4518a3cc273cf82efdd36522fb1f13baad173c70 Mon Sep 17 00:00:00 2001
From: Pavel Begunkov <asml.silence(a)gmail.com>
Date: Tue, 26 May 2020 20:34:02 +0300
Subject: [PATCH] io_uring: fix flush req->refs underflow
In io_uring_cancel_files(), after refcount_sub_and_test() leaves 0
req->refs, it calls io_put_req(), which would also put a ref. Call
io_free_req() instead.
Cc: stable(a)vger.kernel.org
Fixes: 2ca10259b418 ("io_uring: prune request from overflow list on flush")
Signed-off-by: Pavel Begunkov <asml.silence(a)gmail.com>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 0b51f21e5432..37422fcdaa7f 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -7534,7 +7534,7 @@ static void io_uring_cancel_files(struct io_ring_ctx *ctx,
* all we had, then we're done with this request.
*/
if (refcount_sub_and_test(2, &cancel_req->refs)) {
- io_put_req(cancel_req);
+ io_free_req(cancel_req);
finish_wait(&ctx->inflight_wait, &wait);
continue;
}
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From b02989f37fc5e865ceeee9070907e4493b3a21e2 Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:04:59 +0800
Subject: [PATCH] crypto: virtio: Fix src/dst scatterlist calculation in
__virtio_crypto_skcipher_do_req()
The system will crash when the users insmod crypto/tcrypt.ko with mode=38
( testing "cts(cbc(aes))" ).
Usually the next entry of one sg will be @sg@ + 1, but if this sg element
is part of a chained scatterlist, it could jump to the start of a new
scatterlist array. Fix it by sg_next() on calculation of src/dst
scatterlist.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Reported-by: LABBE Corentin <clabbe(a)baylibre.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200123101000.GB24255@Red
Signed-off-by: Gonglei <arei.gonglei(a)huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-2-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index fd045e64972a..5f8243563009 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -350,13 +350,18 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
int err;
unsigned long flags;
struct scatterlist outhdr, iv_sg, status_sg, **sgs;
- int i;
u64 dst_len;
unsigned int num_out = 0, num_in = 0;
int sg_total;
uint8_t *iv;
+ struct scatterlist *sg;
src_nents = sg_nents_for_len(req->src, req->cryptlen);
+ if (src_nents < 0) {
+ pr_err("Invalid number of src SG.\n");
+ return src_nents;
+ }
+
dst_nents = sg_nents(req->dst);
pr_debug("virtio_crypto: Number of sgs (src_nents: %d, dst_nents: %d)\n",
@@ -442,12 +447,12 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
vc_sym_req->iv = iv;
/* Source data */
- for (i = 0; i < src_nents; i++)
- sgs[num_out++] = &req->src[i];
+ for (sg = req->src; src_nents; sg = sg_next(sg), src_nents--)
+ sgs[num_out++] = sg;
/* Destination data */
- for (i = 0; i < dst_nents; i++)
- sgs[num_out + num_in++] = &req->dst[i];
+ for (sg = req->dst; sg; sg = sg_next(sg))
+ sgs[num_out + num_in++] = sg;
/* Status */
sg_init_one(&status_sg, &vc_req->status, sizeof(vc_req->status));
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From b02989f37fc5e865ceeee9070907e4493b3a21e2 Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:04:59 +0800
Subject: [PATCH] crypto: virtio: Fix src/dst scatterlist calculation in
__virtio_crypto_skcipher_do_req()
The system will crash when the users insmod crypto/tcrypt.ko with mode=38
( testing "cts(cbc(aes))" ).
Usually the next entry of one sg will be @sg@ + 1, but if this sg element
is part of a chained scatterlist, it could jump to the start of a new
scatterlist array. Fix it by sg_next() on calculation of src/dst
scatterlist.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Reported-by: LABBE Corentin <clabbe(a)baylibre.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200123101000.GB24255@Red
Signed-off-by: Gonglei <arei.gonglei(a)huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-2-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index fd045e64972a..5f8243563009 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -350,13 +350,18 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
int err;
unsigned long flags;
struct scatterlist outhdr, iv_sg, status_sg, **sgs;
- int i;
u64 dst_len;
unsigned int num_out = 0, num_in = 0;
int sg_total;
uint8_t *iv;
+ struct scatterlist *sg;
src_nents = sg_nents_for_len(req->src, req->cryptlen);
+ if (src_nents < 0) {
+ pr_err("Invalid number of src SG.\n");
+ return src_nents;
+ }
+
dst_nents = sg_nents(req->dst);
pr_debug("virtio_crypto: Number of sgs (src_nents: %d, dst_nents: %d)\n",
@@ -442,12 +447,12 @@ __virtio_crypto_skcipher_do_req(struct virtio_crypto_sym_request *vc_sym_req,
vc_sym_req->iv = iv;
/* Source data */
- for (i = 0; i < src_nents; i++)
- sgs[num_out++] = &req->src[i];
+ for (sg = req->src; src_nents; sg = sg_next(sg), src_nents--)
+ sgs[num_out++] = sg;
/* Destination data */
- for (i = 0; i < dst_nents; i++)
- sgs[num_out + num_in++] = &req->dst[i];
+ for (sg = req->dst; sg; sg = sg_next(sg))
+ sgs[num_out + num_in++] = sg;
/* Status */
sg_init_one(&status_sg, &vc_req->status, sizeof(vc_req->status));
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 8c855f0720ff006d75d0a2512c7f6c4f60ff60ee Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:05:00 +0800
Subject: [PATCH] crypto: virtio: Fix use-after-free in
virtio_crypto_skcipher_finalize_req()
The system'll crash when the users insmod crypto/tcrypto.ko with mode=155
( testing "authenc(hmac(sha1),cbc(aes))" ). It's caused by reuse the memory
of request structure.
In crypto_authenc_init_tfm(), the reqsize is set to:
[PART 1] sizeof(authenc_request_ctx) +
[PART 2] ictx->reqoff +
[PART 3] MAX(ahash part, skcipher part)
and the 'PART 3' is used by both ahash and skcipher in turn.
When the virtio_crypto driver finish skcipher req, it'll call ->complete
callback(in crypto_finalize_skcipher_request) and then free its
resources whose pointers are recorded in 'skcipher parts'.
However, the ->complete is 'crypto_authenc_encrypt_done' in this case,
it will use the 'ahash part' of the request and change its content,
so virtio_crypto driver will get the wrong pointer after ->complete
finish and mistakenly free some other's memory. So the system will crash
when these memory will be used again.
The resources which need to be cleaned up are not used any more. But the
pointers of these resources may be changed in the function
"crypto_finalize_skcipher_request". Thus release specific resources before
calling this function.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Reported-by: LABBE Corentin <clabbe(a)baylibre.com>
Cc: Gonglei <arei.gonglei(a)huawei.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200123101000.GB24255@Red
Acked-by: Gonglei <arei.gonglei(a)huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-3-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 5f8243563009..52261b6c247e 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -582,10 +582,11 @@ static void virtio_crypto_skcipher_finalize_req(
scatterwalk_map_and_copy(req->iv, req->dst,
req->cryptlen - AES_BLOCK_SIZE,
AES_BLOCK_SIZE, 0);
- crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine,
- req, err);
kzfree(vc_sym_req->iv);
virtcrypto_clear_request(&vc_sym_req->base);
+
+ crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine,
+ req, err);
}
static struct virtio_crypto_algo virtio_crypto_algs[] = { {
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 8c855f0720ff006d75d0a2512c7f6c4f60ff60ee Mon Sep 17 00:00:00 2001
From: "Longpeng(Mike)" <longpeng2(a)huawei.com>
Date: Tue, 2 Jun 2020 15:05:00 +0800
Subject: [PATCH] crypto: virtio: Fix use-after-free in
virtio_crypto_skcipher_finalize_req()
The system'll crash when the users insmod crypto/tcrypto.ko with mode=155
( testing "authenc(hmac(sha1),cbc(aes))" ). It's caused by reuse the memory
of request structure.
In crypto_authenc_init_tfm(), the reqsize is set to:
[PART 1] sizeof(authenc_request_ctx) +
[PART 2] ictx->reqoff +
[PART 3] MAX(ahash part, skcipher part)
and the 'PART 3' is used by both ahash and skcipher in turn.
When the virtio_crypto driver finish skcipher req, it'll call ->complete
callback(in crypto_finalize_skcipher_request) and then free its
resources whose pointers are recorded in 'skcipher parts'.
However, the ->complete is 'crypto_authenc_encrypt_done' in this case,
it will use the 'ahash part' of the request and change its content,
so virtio_crypto driver will get the wrong pointer after ->complete
finish and mistakenly free some other's memory. So the system will crash
when these memory will be used again.
The resources which need to be cleaned up are not used any more. But the
pointers of these resources may be changed in the function
"crypto_finalize_skcipher_request". Thus release specific resources before
calling this function.
Fixes: dbaf0624ffa5 ("crypto: add virtio-crypto driver")
Reported-by: LABBE Corentin <clabbe(a)baylibre.com>
Cc: Gonglei <arei.gonglei(a)huawei.com>
Cc: Herbert Xu <herbert(a)gondor.apana.org.au>
Cc: "Michael S. Tsirkin" <mst(a)redhat.com>
Cc: Jason Wang <jasowang(a)redhat.com>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: virtualization(a)lists.linux-foundation.org
Cc: linux-kernel(a)vger.kernel.org
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200123101000.GB24255@Red
Acked-by: Gonglei <arei.gonglei(a)huawei.com>
Signed-off-by: Longpeng(Mike) <longpeng2(a)huawei.com>
Link: https://lore.kernel.org/r/20200602070501.2023-3-longpeng2@huawei.com
Signed-off-by: Michael S. Tsirkin <mst(a)redhat.com>
diff --git a/drivers/crypto/virtio/virtio_crypto_algs.c b/drivers/crypto/virtio/virtio_crypto_algs.c
index 5f8243563009..52261b6c247e 100644
--- a/drivers/crypto/virtio/virtio_crypto_algs.c
+++ b/drivers/crypto/virtio/virtio_crypto_algs.c
@@ -582,10 +582,11 @@ static void virtio_crypto_skcipher_finalize_req(
scatterwalk_map_and_copy(req->iv, req->dst,
req->cryptlen - AES_BLOCK_SIZE,
AES_BLOCK_SIZE, 0);
- crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine,
- req, err);
kzfree(vc_sym_req->iv);
virtcrypto_clear_request(&vc_sym_req->base);
+
+ crypto_finalize_skcipher_request(vc_sym_req->base.dataq->engine,
+ req, err);
}
static struct virtio_crypto_algo virtio_crypto_algs[] = { {
Commit 17839856fd58 ("gup: document and work around "COW can break
either way" issue") is a real fix, but wasn't marked for stable
because I wanted it to get more coverage testing in mainline first.
Not because the patch is all that complex or scary, but because I was
worried we'd find some odd case where it would make things slower by
triggering the GUP slowpath much more often due to people doing odd
things.
It turns out my worry seems to have been misplaced. The kernel test
robot did indeed trigger a case where this made a big difference, but
rather than being bad, it improved the odd corner-case test-case
performance by a factor of 20x by breaking the COW and triggering the
fast-case code that way, rather than the other way around.
See
https://lore.kernel.org/lkml/20200611040453.GK12456@shao2-debian/
for details.
So that commit fixes a bug, isn't expected to really make any
difference on any sane workload, and can apparently help the crazy
cases by a huge amount. Let's just push it to stable..
Linus
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 4d8df8cbb9156b0a0ab3f802b80cb5db57acc0bf Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Sun, 7 Jun 2020 05:44:19 -0700
Subject: [PATCH] x86/speculation: PR_SPEC_FORCE_DISABLE enforcement for
indirect branches.
Currently, it is possible to enable indirect branch speculation even after
it was force-disabled using the PR_SPEC_FORCE_DISABLE option. Moreover, the
PR_GET_SPECULATION_CTRL command gives afterwards an incorrect result
(force-disabled when it is in fact enabled). This also is inconsistent
vs. STIBP and the documention which cleary states that
PR_SPEC_FORCE_DISABLE cannot be undone.
Fix this by actually enforcing force-disabled indirect branch
speculation. PR_SPEC_ENABLE called after PR_SPEC_FORCE_DISABLE now fails
with -EPERM as described in the documentation.
Fixes: 9137bb27e60e ("x86/speculation: Add prctl() control for indirect branch speculation")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 8d57562b1d2c..56f573aa764f 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1175,11 +1175,14 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
return 0;
/*
* Indirect branch speculation is always disabled in strict
- * mode.
+ * mode. It can neither be enabled if it was force-disabled
+ * by a previous prctl call.
+
*/
if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED ||
+ task_spec_ib_force_disable(task))
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
From: "Luck, Tony" <tony.luck(a)intel.com>
commit 17fae1294ad9d711b2c3dd0edef479d40c76a5e8 upstream
An interesting thing happened when a guest Linux instance took
a machine check. The VMM unmapped the bad page from guest physical
space and passed the machine check to the guest.
Linux took all the normal actions to offline the page from the process
that was using it. But then guest Linux crashed because it said there
was a second machine check inside the kernel with this stack trace:
do_memory_failure
set_mce_nospec
set_memory_uc
_set_memory_uc
change_page_attr_set_clr
cpa_flush
clflush_cache_range_opt
This was odd, because a CLFLUSH instruction shouldn't raise a machine
check (it isn't consuming the data). Further investigation showed that
the VMM had passed in another machine check because is appeared that the
guest was accessing the bad page.
Fix is to check the scope of the poison by checking the MCi_MISC register.
If the entire page is affected, then unmap the page. If only part of the
page is affected, then mark the page as uncacheable.
This assumes that VMMs will do the logical thing and pass in the "whole
page scope" via the MCi_MISC register (since they unmapped the entire
page).
Reported-by: Jue Wang <juew(a)google.com>
Tested-by: Jue Wang <juew(a)google.com>
Fixes: 284ce4011ba6 ("x86/memory_failure: Introduce {set, clear}_mce_nospec()")
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Link: https://lore.kernel.org/r/20200520163546.GA7977@agluck-desk2.amr.corp.intel…
---
arch/x86/include/asm/set_memory.h | 19 +++++++++++++------
arch/x86/kernel/cpu/mce/core.c | 11 +++++++++--
include/linux/set_memory.h | 2 +-
3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index ec2c0a094b5d..5948218f35c5 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -86,28 +86,35 @@ int set_direct_map_default_noflush(struct page *page);
extern int kernel_set_to_readonly;
#ifdef CONFIG_X86_64
-static inline int set_mce_nospec(unsigned long pfn)
+/*
+ * Prevent speculative access to the page by either unmapping
+ * it (if we do not require access to any part of the page) or
+ * marking it uncacheable (if we want to try to retrieve data
+ * from non-poisoned lines in the page).
+ */
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
unsigned long decoy_addr;
int rc;
/*
- * Mark the linear address as UC to make sure we don't log more
- * errors because of speculative access to the page.
* We would like to just call:
- * set_memory_uc((unsigned long)pfn_to_kaddr(pfn), 1);
+ * set_memory_XX((unsigned long)pfn_to_kaddr(pfn), 1);
* but doing that would radically increase the odds of a
* speculative access to the poison page because we'd have
* the virtual address of the kernel 1:1 mapping sitting
* around in registers.
* Instead we get tricky. We create a non-canonical address
* that looks just like the one we want, but has bit 63 flipped.
- * This relies on set_memory_uc() properly sanitizing any __pa()
+ * This relies on set_memory_XX() properly sanitizing any __pa()
* results with __PHYSICAL_MASK or PTE_PFN_MASK.
*/
decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
- rc = set_memory_uc(decoy_addr, 1);
+ if (unmap)
+ rc = set_memory_np(decoy_addr, 1);
+ else
+ rc = set_memory_uc(decoy_addr, 1);
if (rc)
pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
return rc;
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 54165f3569e8..c1a480a27164 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -529,6 +529,13 @@ bool mce_is_memory_error(struct mce *m)
}
EXPORT_SYMBOL_GPL(mce_is_memory_error);
+static bool whole_page(struct mce *m)
+{
+ if (!mca_cfg.ser || !(m->status & MCI_STATUS_MISCV))
+ return true;
+ return MCI_MISC_ADDR_LSB(m->misc) >= PAGE_SHIFT;
+}
+
bool mce_is_correctable(struct mce *m)
{
if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED)
@@ -600,7 +607,7 @@ static int uc_decode_notifier(struct notifier_block *nb, unsigned long val,
pfn = mce->addr >> PAGE_SHIFT;
if (!memory_failure(pfn, 0))
- set_mce_nospec(pfn);
+ set_mce_nospec(pfn, whole_page(mce));
return NOTIFY_OK;
}
@@ -1098,7 +1105,7 @@ static int do_memory_failure(struct mce *m)
if (ret)
pr_err("Memory error not recovered");
else
- set_mce_nospec(m->addr >> PAGE_SHIFT);
+ set_mce_nospec(m->addr >> PAGE_SHIFT, whole_page(m));
return ret;
}
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 86281ac7c305..860e0f843c12 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -26,7 +26,7 @@ static inline int set_direct_map_default_noflush(struct page *page)
#endif
#ifndef set_mce_nospec
-static inline int set_mce_nospec(unsigned long pfn)
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
return 0;
}
--
2.21.1
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From d43e2675e96fc6ae1a633b6a69d296394448cc32 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini(a)redhat.com>
Date: Tue, 19 May 2020 05:34:41 -0400
Subject: [PATCH] KVM: x86: only do L1TF workaround on affected processors
KVM stores the gfn in MMIO SPTEs as a caching optimization. These are split
in two parts, as in "[high 11111 low]", to thwart any attempt to use these bits
in an L1TF attack. This works as long as there are 5 free bits between
MAXPHYADDR and bit 50 (inclusive), leaving bit 51 free so that the MMIO
access triggers a reserved-bit-set page fault.
The bit positions however were computed wrongly for AMD processors that have
encryption support. In this case, x86_phys_bits is reduced (for example
from 48 to 43, to account for the C bit at position 47 and four bits used
internally to store the SEV ASID and other stuff) while x86_cache_bits in
would remain set to 48, and _all_ bits between the reduced MAXPHYADDR
and bit 51 are set. Then low_phys_bits would also cover some of the
bits that are set in the shadow_mmio_value, terribly confusing the gfn
caching mechanism.
To fix this, avoid splitting gfns as long as the processor does not have
the L1TF bug (which includes all AMD processors). When there is no
splitting, low_phys_bits can be set to the reduced MAXPHYADDR removing
the overlap. This fixes "npt=0" operation on EPYC processors.
Thanks to Maxim Levitsky for bisecting this bug.
Cc: stable(a)vger.kernel.org
Fixes: 52918ed5fcf0 ("KVM: SVM: Override default MMIO mask if memory encryption is enabled")
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 8071952e9cf2..86619631ff6a 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -335,6 +335,8 @@ void kvm_mmu_set_mmio_spte_mask(u64 mmio_mask, u64 mmio_value, u64 access_mask)
{
BUG_ON((u64)(unsigned)access_mask != access_mask);
BUG_ON((mmio_mask & mmio_value) != mmio_value);
+ WARN_ON(mmio_value & (shadow_nonpresent_or_rsvd_mask << shadow_nonpresent_or_rsvd_mask_len));
+ WARN_ON(mmio_value & shadow_nonpresent_or_rsvd_lower_gfn_mask);
shadow_mmio_value = mmio_value | SPTE_MMIO_MASK;
shadow_mmio_mask = mmio_mask | SPTE_SPECIAL_MASK;
shadow_mmio_access_mask = access_mask;
@@ -583,16 +585,15 @@ static void kvm_mmu_reset_all_pte_masks(void)
* the most significant bits of legal physical address space.
*/
shadow_nonpresent_or_rsvd_mask = 0;
- low_phys_bits = boot_cpu_data.x86_cache_bits;
- if (boot_cpu_data.x86_cache_bits <
- 52 - shadow_nonpresent_or_rsvd_mask_len) {
+ low_phys_bits = boot_cpu_data.x86_phys_bits;
+ if (boot_cpu_has_bug(X86_BUG_L1TF) &&
+ !WARN_ON_ONCE(boot_cpu_data.x86_cache_bits >=
+ 52 - shadow_nonpresent_or_rsvd_mask_len)) {
+ low_phys_bits = boot_cpu_data.x86_cache_bits
+ - shadow_nonpresent_or_rsvd_mask_len;
shadow_nonpresent_or_rsvd_mask =
- rsvd_bits(boot_cpu_data.x86_cache_bits -
- shadow_nonpresent_or_rsvd_mask_len,
- boot_cpu_data.x86_cache_bits - 1);
- low_phys_bits -= shadow_nonpresent_or_rsvd_mask_len;
- } else
- WARN_ON_ONCE(boot_cpu_has_bug(X86_BUG_L1TF));
+ rsvd_bits(low_phys_bits, boot_cpu_data.x86_cache_bits - 1);
+ }
shadow_nonpresent_or_rsvd_lower_gfn_mask =
GENMASK_ULL(low_phys_bits - 1, PAGE_SHIFT);
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 951e2736f4b11b58dc44d41964fa17c3527d882a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux(a)rere.qmqm.pl>
Date: Mon, 8 Jun 2020 18:50:39 +0200
Subject: [PATCH] ALSA: pcm: disallow linking stream to itself
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Prevent SNDRV_PCM_IOCTL_LINK linking stream to itself - the code
can't handle it. Fixed commit is not where bug was introduced, but
changes the context significantly.
Cc: stable(a)vger.kernel.org
Fixes: 0888c321de70 ("pcm_native: switch to fdget()/fdput()")
Signed-off-by: Michał Mirosław <mirq-linux(a)rere.qmqm.pl>
Link: https://lore.kernel.org/r/89c4a2487609a0ed6af3ecf01cc972bdc59a7a2d.15916349…
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index c08732998a42..eeab8850ed76 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2176,6 +2176,12 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)
}
pcm_file = f.file->private_data;
substream1 = pcm_file->substream;
+
+ if (substream == substream1) {
+ res = -EINVAL;
+ goto _badf;
+ }
+
group = kzalloc(sizeof(*group), GFP_KERNEL);
if (!group) {
res = -ENOMEM;
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 96cb7cf13d8530099c256c053648ad576588c387 Mon Sep 17 00:00:00 2001
From: hersen wu <hersenxs.wu(a)amd.com>
Date: Thu, 28 Feb 2019 16:35:24 -0500
Subject: [PATCH] drm/amd/display: disable dcn20 abm feature for bring up
[WHY] dcn20 enable usb-c dp ALT mode in dmcu. There is bug
when enable abm feature which cause system crash. dal team
will debug this bug later.
[HOW] disable dcn abm feature for dcn20.
Signed-off-by: hersen wu <hersenxs.wu(a)amd.com>
Signed-off-by: Alex Deucher <alexander.deucher(a)amd.com>
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 5971aef4f033..72d14f680932 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -781,7 +781,7 @@ static int dm_late_init(void *handle)
unsigned int linear_lut[16];
int i;
struct dmcu *dmcu = adev->dm.dc->res_pool->dmcu;
- bool ret;
+ bool ret = false;
for (i = 0; i < 16; i++)
linear_lut[i] = 0xFFFF * i / 15;
@@ -792,10 +792,13 @@ static int dm_late_init(void *handle)
params.backlight_lut_array_size = 16;
params.backlight_lut_array = linear_lut;
- ret = dmcu_load_iram(dmcu, params);
+ /* todo will enable for navi10 */
+ if (adev->asic_type <= CHIP_RAVEN) {
+ ret = dmcu_load_iram(dmcu, params);
- if (!ret)
- return -EINVAL;
+ if (!ret)
+ return -EINVAL;
+ }
return detect_mst_link_for_all_connectors(adev->ddev);
}
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 96cb7cf13d8530099c256c053648ad576588c387 Mon Sep 17 00:00:00 2001
From: hersen wu <hersenxs.wu(a)amd.com>
Date: Thu, 28 Feb 2019 16:35:24 -0500
Subject: [PATCH] drm/amd/display: disable dcn20 abm feature for bring up
[WHY] dcn20 enable usb-c dp ALT mode in dmcu. There is bug
when enable abm feature which cause system crash. dal team
will debug this bug later.
[HOW] disable dcn abm feature for dcn20.
Signed-off-by: hersen wu <hersenxs.wu(a)amd.com>
Signed-off-by: Alex Deucher <alexander.deucher(a)amd.com>
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 5971aef4f033..72d14f680932 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -781,7 +781,7 @@ static int dm_late_init(void *handle)
unsigned int linear_lut[16];
int i;
struct dmcu *dmcu = adev->dm.dc->res_pool->dmcu;
- bool ret;
+ bool ret = false;
for (i = 0; i < 16; i++)
linear_lut[i] = 0xFFFF * i / 15;
@@ -792,10 +792,13 @@ static int dm_late_init(void *handle)
params.backlight_lut_array_size = 16;
params.backlight_lut_array = linear_lut;
- ret = dmcu_load_iram(dmcu, params);
+ /* todo will enable for navi10 */
+ if (adev->asic_type <= CHIP_RAVEN) {
+ ret = dmcu_load_iram(dmcu, params);
- if (!ret)
- return -EINVAL;
+ if (!ret)
+ return -EINVAL;
+ }
return detect_mst_link_for_all_connectors(adev->ddev);
}
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 9dd277ff92d06f6aa95b39936ad83981d781f49b Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:02 +0200
Subject: [PATCH] spi: bcm2835: Fix controller unregister order
The BCM2835 SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
bcm2835_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: bcm2835_spi_remove() tears down the DMA
channels and turns off the SPI controller, including its interrupts
and clock. The SPI controller is thus no longer usable.
When the SPI controller is subsequently unregistered, it unbinds all
its slave devices. If their drivers need to access the SPI bus,
e.g. to quiesce their interrupts, unbinding will fail.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed
after unbinding of slaves.
Fix by using the non-devm variant spi_register_controller(). Note that
the struct spi_controller as well as the driver-private data are not
freed until after bcm2835_spi_remove() has finished, so accessing them
is safe.
Fixes: 247263dba208 ("spi: bcm2835: use devm_spi_register_master()")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.13+
Link: https://lore.kernel.org/r/2397dd70cdbe95e0bc4da2b9fca0f31cb94e5aed.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
index 11c235879bb7..fd887a6492f4 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -1347,7 +1347,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
goto out_dma_release;
}
- err = devm_spi_register_controller(&pdev->dev, ctlr);
+ err = spi_register_controller(ctlr);
if (err) {
dev_err(&pdev->dev, "could not register SPI controller: %d\n",
err);
@@ -1374,6 +1374,8 @@ static int bcm2835_spi_remove(struct platform_device *pdev)
bcm2835_debugfs_remove(bs);
+ spi_unregister_controller(ctlr);
+
/* Clear FIFOs, and disable the HW block */
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 9dd277ff92d06f6aa95b39936ad83981d781f49b Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:02 +0200
Subject: [PATCH] spi: bcm2835: Fix controller unregister order
The BCM2835 SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
bcm2835_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: bcm2835_spi_remove() tears down the DMA
channels and turns off the SPI controller, including its interrupts
and clock. The SPI controller is thus no longer usable.
When the SPI controller is subsequently unregistered, it unbinds all
its slave devices. If their drivers need to access the SPI bus,
e.g. to quiesce their interrupts, unbinding will fail.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed
after unbinding of slaves.
Fix by using the non-devm variant spi_register_controller(). Note that
the struct spi_controller as well as the driver-private data are not
freed until after bcm2835_spi_remove() has finished, so accessing them
is safe.
Fixes: 247263dba208 ("spi: bcm2835: use devm_spi_register_master()")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.13+
Link: https://lore.kernel.org/r/2397dd70cdbe95e0bc4da2b9fca0f31cb94e5aed.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
index 11c235879bb7..fd887a6492f4 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -1347,7 +1347,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
goto out_dma_release;
}
- err = devm_spi_register_controller(&pdev->dev, ctlr);
+ err = spi_register_controller(ctlr);
if (err) {
dev_err(&pdev->dev, "could not register SPI controller: %d\n",
err);
@@ -1374,6 +1374,8 @@ static int bcm2835_spi_remove(struct platform_device *pdev)
bcm2835_debugfs_remove(bs);
+ spi_unregister_controller(ctlr);
+
/* Clear FIFOs, and disable the HW block */
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 9dd277ff92d06f6aa95b39936ad83981d781f49b Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:02 +0200
Subject: [PATCH] spi: bcm2835: Fix controller unregister order
The BCM2835 SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
bcm2835_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: bcm2835_spi_remove() tears down the DMA
channels and turns off the SPI controller, including its interrupts
and clock. The SPI controller is thus no longer usable.
When the SPI controller is subsequently unregistered, it unbinds all
its slave devices. If their drivers need to access the SPI bus,
e.g. to quiesce their interrupts, unbinding will fail.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed
after unbinding of slaves.
Fix by using the non-devm variant spi_register_controller(). Note that
the struct spi_controller as well as the driver-private data are not
freed until after bcm2835_spi_remove() has finished, so accessing them
is safe.
Fixes: 247263dba208 ("spi: bcm2835: use devm_spi_register_master()")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.13+
Link: https://lore.kernel.org/r/2397dd70cdbe95e0bc4da2b9fca0f31cb94e5aed.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
index 11c235879bb7..fd887a6492f4 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -1347,7 +1347,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
goto out_dma_release;
}
- err = devm_spi_register_controller(&pdev->dev, ctlr);
+ err = spi_register_controller(ctlr);
if (err) {
dev_err(&pdev->dev, "could not register SPI controller: %d\n",
err);
@@ -1374,6 +1374,8 @@ static int bcm2835_spi_remove(struct platform_device *pdev)
bcm2835_debugfs_remove(bs);
+ spi_unregister_controller(ctlr);
+
/* Clear FIFOs, and disable the HW block */
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 32e5b57232c0411e7dea96625c415510430ac079 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:02 +0200
Subject: [PATCH] spi: pxa2xx: Fix controller unregister order
The PXA2xx SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
pxa2xx_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: pxa2xx_spi_remove() disables the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in pxa2xx_spi_remove(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
The improper use of devm_spi_register_controller() was introduced in 2013
by commit a807fcd090d6 ("spi: pxa2xx: use devm_spi_register_master()"),
but all earlier versions of the driver going back to 2006 were likewise
broken because they invoked spi_unregister_master() at the end of
pxa2xx_spi_remove(), rather than at the beginning.
Fixes: e0c9905e87ac ("[PATCH] SPI: add PXA2xx SSP SPI Driver")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v2.6.17+
Cc: Tsuchiya Yuto <kitakar(a)gmail.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206403#c1
Link: https://lore.kernel.org/r/834c446b1cf3284d2660f1bee1ebe3e737cd02a9.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index 73d2a65d0b6e..f456ce18f79e 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1884,7 +1884,7 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
/* Register with the SPI framework */
platform_set_drvdata(pdev, drv_data);
- status = devm_spi_register_controller(&pdev->dev, controller);
+ status = spi_register_controller(controller);
if (status != 0) {
dev_err(&pdev->dev, "problem registering spi controller\n");
goto out_error_pm_runtime_enabled;
@@ -1916,6 +1916,8 @@ static int pxa2xx_spi_remove(struct platform_device *pdev)
pm_runtime_get_sync(&pdev->dev);
+ spi_unregister_controller(drv_data->controller);
+
/* Disable the SSP at the peripheral and SOC level */
pxa2xx_spi_write(drv_data, SSCR0, 0);
clk_disable_unprepare(ssp->clk);
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 32e5b57232c0411e7dea96625c415510430ac079 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:02 +0200
Subject: [PATCH] spi: pxa2xx: Fix controller unregister order
The PXA2xx SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
pxa2xx_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: pxa2xx_spi_remove() disables the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in pxa2xx_spi_remove(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
The improper use of devm_spi_register_controller() was introduced in 2013
by commit a807fcd090d6 ("spi: pxa2xx: use devm_spi_register_master()"),
but all earlier versions of the driver going back to 2006 were likewise
broken because they invoked spi_unregister_master() at the end of
pxa2xx_spi_remove(), rather than at the beginning.
Fixes: e0c9905e87ac ("[PATCH] SPI: add PXA2xx SSP SPI Driver")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v2.6.17+
Cc: Tsuchiya Yuto <kitakar(a)gmail.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206403#c1
Link: https://lore.kernel.org/r/834c446b1cf3284d2660f1bee1ebe3e737cd02a9.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index 73d2a65d0b6e..f456ce18f79e 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1884,7 +1884,7 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
/* Register with the SPI framework */
platform_set_drvdata(pdev, drv_data);
- status = devm_spi_register_controller(&pdev->dev, controller);
+ status = spi_register_controller(controller);
if (status != 0) {
dev_err(&pdev->dev, "problem registering spi controller\n");
goto out_error_pm_runtime_enabled;
@@ -1916,6 +1916,8 @@ static int pxa2xx_spi_remove(struct platform_device *pdev)
pm_runtime_get_sync(&pdev->dev);
+ spi_unregister_controller(drv_data->controller);
+
/* Disable the SSP at the peripheral and SOC level */
pxa2xx_spi_write(drv_data, SSCR0, 0);
clk_disable_unprepare(ssp->clk);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 32e5b57232c0411e7dea96625c415510430ac079 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:02 +0200
Subject: [PATCH] spi: pxa2xx: Fix controller unregister order
The PXA2xx SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
pxa2xx_spi_remove() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: pxa2xx_spi_remove() disables the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in pxa2xx_spi_remove(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
The improper use of devm_spi_register_controller() was introduced in 2013
by commit a807fcd090d6 ("spi: pxa2xx: use devm_spi_register_master()"),
but all earlier versions of the driver going back to 2006 were likewise
broken because they invoked spi_unregister_master() at the end of
pxa2xx_spi_remove(), rather than at the beginning.
Fixes: e0c9905e87ac ("[PATCH] SPI: add PXA2xx SSP SPI Driver")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v2.6.17+
Cc: Tsuchiya Yuto <kitakar(a)gmail.com>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206403#c1
Link: https://lore.kernel.org/r/834c446b1cf3284d2660f1bee1ebe3e737cd02a9.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index 73d2a65d0b6e..f456ce18f79e 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1884,7 +1884,7 @@ static int pxa2xx_spi_probe(struct platform_device *pdev)
/* Register with the SPI framework */
platform_set_drvdata(pdev, drv_data);
- status = devm_spi_register_controller(&pdev->dev, controller);
+ status = spi_register_controller(controller);
if (status != 0) {
dev_err(&pdev->dev, "problem registering spi controller\n");
goto out_error_pm_runtime_enabled;
@@ -1916,6 +1916,8 @@ static int pxa2xx_spi_remove(struct platform_device *pdev)
pm_runtime_get_sync(&pdev->dev);
+ spi_unregister_controller(drv_data->controller);
+
/* Disable the SSP at the peripheral and SOC level */
pxa2xx_spi_write(drv_data, SSCR0, 0);
clk_disable_unprepare(ssp->clk);
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 84855678add8aba927faf76bc2f130a40f94b6f7 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:01 +0200
Subject: [PATCH] spi: Fix controller unregister order
When an SPI controller unregisters, it unbinds all its slave devices.
For this, their drivers may need to access the SPI bus, e.g. to quiesce
interrupts.
However since commit ffbbdd21329f ("spi: create a message queueing
infrastructure"), spi_destroy_queue() is executed before unbinding the
slaves. It sets ctlr->running = false, thereby preventing SPI bus
access and causing unbinding of slave devices to fail.
Fix by unbinding slaves before calling spi_destroy_queue().
Fixes: ffbbdd21329f ("spi: create a message queueing infrastructure")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.4+
Cc: Linus Walleij <linus.walleij(a)linaro.org>
Link: https://lore.kernel.org/r/8aaf9d44c153fe233b17bc2dec4eb679898d7e7b.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 531d1de85f7f..25eb96d329ab 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -2763,6 +2763,8 @@ void spi_unregister_controller(struct spi_controller *ctlr)
struct spi_controller *found;
int id = ctlr->bus_num;
+ device_for_each_child(&ctlr->dev, NULL, __unregister);
+
/* First make sure that this controller was ever added */
mutex_lock(&board_lock);
found = idr_find(&spi_master_idr, id);
@@ -2775,7 +2777,6 @@ void spi_unregister_controller(struct spi_controller *ctlr)
list_del(&ctlr->list);
mutex_unlock(&board_lock);
- device_for_each_child(&ctlr->dev, NULL, __unregister);
device_unregister(&ctlr->dev);
/* free bus id */
mutex_lock(&board_lock);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 84855678add8aba927faf76bc2f130a40f94b6f7 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:01 +0200
Subject: [PATCH] spi: Fix controller unregister order
When an SPI controller unregisters, it unbinds all its slave devices.
For this, their drivers may need to access the SPI bus, e.g. to quiesce
interrupts.
However since commit ffbbdd21329f ("spi: create a message queueing
infrastructure"), spi_destroy_queue() is executed before unbinding the
slaves. It sets ctlr->running = false, thereby preventing SPI bus
access and causing unbinding of slave devices to fail.
Fix by unbinding slaves before calling spi_destroy_queue().
Fixes: ffbbdd21329f ("spi: create a message queueing infrastructure")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.4+
Cc: Linus Walleij <linus.walleij(a)linaro.org>
Link: https://lore.kernel.org/r/8aaf9d44c153fe233b17bc2dec4eb679898d7e7b.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 531d1de85f7f..25eb96d329ab 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -2763,6 +2763,8 @@ void spi_unregister_controller(struct spi_controller *ctlr)
struct spi_controller *found;
int id = ctlr->bus_num;
+ device_for_each_child(&ctlr->dev, NULL, __unregister);
+
/* First make sure that this controller was ever added */
mutex_lock(&board_lock);
found = idr_find(&spi_master_idr, id);
@@ -2775,7 +2777,6 @@ void spi_unregister_controller(struct spi_controller *ctlr)
list_del(&ctlr->list);
mutex_unlock(&board_lock);
- device_for_each_child(&ctlr->dev, NULL, __unregister);
device_unregister(&ctlr->dev);
/* free bus id */
mutex_lock(&board_lock);
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 84855678add8aba927faf76bc2f130a40f94b6f7 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Fri, 15 May 2020 17:58:01 +0200
Subject: [PATCH] spi: Fix controller unregister order
When an SPI controller unregisters, it unbinds all its slave devices.
For this, their drivers may need to access the SPI bus, e.g. to quiesce
interrupts.
However since commit ffbbdd21329f ("spi: create a message queueing
infrastructure"), spi_destroy_queue() is executed before unbinding the
slaves. It sets ctlr->running = false, thereby preventing SPI bus
access and causing unbinding of slave devices to fail.
Fix by unbinding slaves before calling spi_destroy_queue().
Fixes: ffbbdd21329f ("spi: create a message queueing infrastructure")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Cc: stable(a)vger.kernel.org # v3.4+
Cc: Linus Walleij <linus.walleij(a)linaro.org>
Link: https://lore.kernel.org/r/8aaf9d44c153fe233b17bc2dec4eb679898d7e7b.15895575…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 531d1de85f7f..25eb96d329ab 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -2763,6 +2763,8 @@ void spi_unregister_controller(struct spi_controller *ctlr)
struct spi_controller *found;
int id = ctlr->bus_num;
+ device_for_each_child(&ctlr->dev, NULL, __unregister);
+
/* First make sure that this controller was ever added */
mutex_lock(&board_lock);
found = idr_find(&spi_master_idr, id);
@@ -2775,7 +2777,6 @@ void spi_unregister_controller(struct spi_controller *ctlr)
list_del(&ctlr->list);
mutex_unlock(&board_lock);
- device_for_each_child(&ctlr->dev, NULL, __unregister);
device_unregister(&ctlr->dev);
/* free bus id */
mutex_lock(&board_lock);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ca8b19d61e3fce5d2d7790cde27a0b57bcb3f341 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:01 +0200
Subject: [PATCH] spi: dw: Fix controller unregister order
The Designware SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
dw_spi_remove_host() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: dw_spi_remove_host() shuts down the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in dw_spi_remove_host(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
Fixes: 04f421e7b0b1 ("spi: dw: use managed resources")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v3.14+
Cc: Baruch Siach <baruch(a)tkos.co.il>
Link: https://lore.kernel.org/r/3fff8cb8ae44a9893840d0688be15bb88c090a14.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c
index 31e3f866d11a..780ffad64a91 100644
--- a/drivers/spi/spi-dw.c
+++ b/drivers/spi/spi-dw.c
@@ -526,7 +526,7 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws)
}
}
- ret = devm_spi_register_controller(dev, master);
+ ret = spi_register_controller(master);
if (ret) {
dev_err(&master->dev, "problem registering spi master\n");
goto err_dma_exit;
@@ -550,6 +550,8 @@ void dw_spi_remove_host(struct dw_spi *dws)
{
dw_spi_debugfs_remove(dws);
+ spi_unregister_controller(dws->master);
+
if (dws->dma_ops && dws->dma_ops->dma_exit)
dws->dma_ops->dma_exit(dws);
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From ca8b19d61e3fce5d2d7790cde27a0b57bcb3f341 Mon Sep 17 00:00:00 2001
From: Lukas Wunner <lukas(a)wunner.de>
Date: Mon, 25 May 2020 14:25:01 +0200
Subject: [PATCH] spi: dw: Fix controller unregister order
The Designware SPI driver uses devm_spi_register_controller() on bind.
As a consequence, on unbind, __device_release_driver() first invokes
dw_spi_remove_host() before unregistering the SPI controller via
devres_release_all().
This order is incorrect: dw_spi_remove_host() shuts down the chip,
rendering the SPI bus inaccessible even though the SPI controller is
still registered. When the SPI controller is subsequently unregistered,
it unbinds all its slave devices. Because their drivers cannot access
the SPI bus, e.g. to quiesce interrupts, the slave devices may be left
in an improper state.
As a rule, devm_spi_register_controller() must not be used if the
->remove() hook performs teardown steps which shall be performed after
unregistering the controller and specifically after unbinding of slaves.
Fix by reverting to the non-devm variant of spi_register_controller().
An alternative approach would be to use device-managed functions for all
steps in dw_spi_remove_host(), e.g. by calling devm_add_action_or_reset()
on probe. However that approach would add more LoC to the driver and
it wouldn't lend itself as well to backporting to stable.
Fixes: 04f421e7b0b1 ("spi: dw: use managed resources")
Signed-off-by: Lukas Wunner <lukas(a)wunner.de>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Cc: stable(a)vger.kernel.org # v3.14+
Cc: Baruch Siach <baruch(a)tkos.co.il>
Link: https://lore.kernel.org/r/3fff8cb8ae44a9893840d0688be15bb88c090a14.15904084…
Signed-off-by: Mark Brown <broonie(a)kernel.org>
diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c
index 31e3f866d11a..780ffad64a91 100644
--- a/drivers/spi/spi-dw.c
+++ b/drivers/spi/spi-dw.c
@@ -526,7 +526,7 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws)
}
}
- ret = devm_spi_register_controller(dev, master);
+ ret = spi_register_controller(master);
if (ret) {
dev_err(&master->dev, "problem registering spi master\n");
goto err_dma_exit;
@@ -550,6 +550,8 @@ void dw_spi_remove_host(struct dw_spi *dws)
{
dw_spi_debugfs_remove(dws);
+ spi_unregister_controller(dws->master);
+
if (dws->dma_ops && dws->dma_ops->dma_exit)
dws->dma_ops->dma_exit(dws);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 951e2736f4b11b58dc44d41964fa17c3527d882a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux(a)rere.qmqm.pl>
Date: Mon, 8 Jun 2020 18:50:39 +0200
Subject: [PATCH] ALSA: pcm: disallow linking stream to itself
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Prevent SNDRV_PCM_IOCTL_LINK linking stream to itself - the code
can't handle it. Fixed commit is not where bug was introduced, but
changes the context significantly.
Cc: stable(a)vger.kernel.org
Fixes: 0888c321de70 ("pcm_native: switch to fdget()/fdput()")
Signed-off-by: Michał Mirosław <mirq-linux(a)rere.qmqm.pl>
Link: https://lore.kernel.org/r/89c4a2487609a0ed6af3ecf01cc972bdc59a7a2d.15916349…
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index c08732998a42..eeab8850ed76 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2176,6 +2176,12 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)
}
pcm_file = f.file->private_data;
substream1 = pcm_file->substream;
+
+ if (substream == substream1) {
+ res = -EINVAL;
+ goto _badf;
+ }
+
group = kzalloc(sizeof(*group), GFP_KERNEL);
if (!group) {
res = -ENOMEM;
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 951e2736f4b11b58dc44d41964fa17c3527d882a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux(a)rere.qmqm.pl>
Date: Mon, 8 Jun 2020 18:50:39 +0200
Subject: [PATCH] ALSA: pcm: disallow linking stream to itself
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Prevent SNDRV_PCM_IOCTL_LINK linking stream to itself - the code
can't handle it. Fixed commit is not where bug was introduced, but
changes the context significantly.
Cc: stable(a)vger.kernel.org
Fixes: 0888c321de70 ("pcm_native: switch to fdget()/fdput()")
Signed-off-by: Michał Mirosław <mirq-linux(a)rere.qmqm.pl>
Link: https://lore.kernel.org/r/89c4a2487609a0ed6af3ecf01cc972bdc59a7a2d.15916349…
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index c08732998a42..eeab8850ed76 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2176,6 +2176,12 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)
}
pcm_file = f.file->private_data;
substream1 = pcm_file->substream;
+
+ if (substream == substream1) {
+ res = -EINVAL;
+ goto _badf;
+ }
+
group = kzalloc(sizeof(*group), GFP_KERNEL);
if (!group) {
res = -ENOMEM;
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 951e2736f4b11b58dc44d41964fa17c3527d882a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= <mirq-linux(a)rere.qmqm.pl>
Date: Mon, 8 Jun 2020 18:50:39 +0200
Subject: [PATCH] ALSA: pcm: disallow linking stream to itself
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Prevent SNDRV_PCM_IOCTL_LINK linking stream to itself - the code
can't handle it. Fixed commit is not where bug was introduced, but
changes the context significantly.
Cc: stable(a)vger.kernel.org
Fixes: 0888c321de70 ("pcm_native: switch to fdget()/fdput()")
Signed-off-by: Michał Mirosław <mirq-linux(a)rere.qmqm.pl>
Link: https://lore.kernel.org/r/89c4a2487609a0ed6af3ecf01cc972bdc59a7a2d.15916349…
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index c08732998a42..eeab8850ed76 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2176,6 +2176,12 @@ static int snd_pcm_link(struct snd_pcm_substream *substream, int fd)
}
pcm_file = f.file->private_data;
substream1 = pcm_file->substream;
+
+ if (substream == substream1) {
+ res = -EINVAL;
+ goto _badf;
+ }
+
group = kzalloc(sizeof(*group), GFP_KERNEL);
if (!group) {
res = -ENOMEM;
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From f5f27b79eab80de0287c243a22169e4876b08d5e Mon Sep 17 00:00:00 2001
From: Franck LENORMAND <franck.lenormand(a)nxp.com>
Date: Thu, 26 Mar 2020 00:00:05 +0200
Subject: [PATCH] firmware: imx: scu: Fix corruption of header
The header of the message to send can be changed if the
response is longer than the request:
- 1st word, the header is sent
- the remaining words of the message are sent
- the response is received asynchronously during the
execution of the loop, changing the size field in
the header
- the for loop test the termination condition using
the corrupted header
It is the case for the API build_info which has just a
header as request but 3 words in response.
This issue is fixed storing the header locally instead of
using a pointer on it.
Fixes: edbee095fafb (firmware: imx: add SCU firmware driver support)
Signed-off-by: Franck LENORMAND <franck.lenormand(a)nxp.com>
Reviewed-by: Leonard Crestez <leonard.crestez(a)nxp.com>
Signed-off-by: Leonard Crestez <leonard.crestez(a)nxp.com>
Cc: stable(a)vger.kernel.org
Reviewed-by: Dong Aisheng <aisheng.dong(a)nxp.com>
Signed-off-by: Shawn Guo <shawnguo(a)kernel.org>
diff --git a/drivers/firmware/imx/imx-scu.c b/drivers/firmware/imx/imx-scu.c
index e94a5585b698..b3da2e193ad2 100644
--- a/drivers/firmware/imx/imx-scu.c
+++ b/drivers/firmware/imx/imx-scu.c
@@ -158,7 +158,7 @@ static void imx_scu_rx_callback(struct mbox_client *c, void *msg)
static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
{
- struct imx_sc_rpc_msg *hdr = msg;
+ struct imx_sc_rpc_msg hdr = *(struct imx_sc_rpc_msg *)msg;
struct imx_sc_chan *sc_chan;
u32 *data = msg;
int ret;
@@ -166,13 +166,13 @@ static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
int i;
/* Check size */
- if (hdr->size > IMX_SC_RPC_MAX_MSG)
+ if (hdr.size > IMX_SC_RPC_MAX_MSG)
return -EINVAL;
- dev_dbg(sc_ipc->dev, "RPC SVC %u FUNC %u SIZE %u\n", hdr->svc,
- hdr->func, hdr->size);
+ dev_dbg(sc_ipc->dev, "RPC SVC %u FUNC %u SIZE %u\n", hdr.svc,
+ hdr.func, hdr.size);
- size = sc_ipc->fast_ipc ? 1 : hdr->size;
+ size = sc_ipc->fast_ipc ? 1 : hdr.size;
for (i = 0; i < size; i++) {
sc_chan = &sc_ipc->chans[i % 4];
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From f5f27b79eab80de0287c243a22169e4876b08d5e Mon Sep 17 00:00:00 2001
From: Franck LENORMAND <franck.lenormand(a)nxp.com>
Date: Thu, 26 Mar 2020 00:00:05 +0200
Subject: [PATCH] firmware: imx: scu: Fix corruption of header
The header of the message to send can be changed if the
response is longer than the request:
- 1st word, the header is sent
- the remaining words of the message are sent
- the response is received asynchronously during the
execution of the loop, changing the size field in
the header
- the for loop test the termination condition using
the corrupted header
It is the case for the API build_info which has just a
header as request but 3 words in response.
This issue is fixed storing the header locally instead of
using a pointer on it.
Fixes: edbee095fafb (firmware: imx: add SCU firmware driver support)
Signed-off-by: Franck LENORMAND <franck.lenormand(a)nxp.com>
Reviewed-by: Leonard Crestez <leonard.crestez(a)nxp.com>
Signed-off-by: Leonard Crestez <leonard.crestez(a)nxp.com>
Cc: stable(a)vger.kernel.org
Reviewed-by: Dong Aisheng <aisheng.dong(a)nxp.com>
Signed-off-by: Shawn Guo <shawnguo(a)kernel.org>
diff --git a/drivers/firmware/imx/imx-scu.c b/drivers/firmware/imx/imx-scu.c
index e94a5585b698..b3da2e193ad2 100644
--- a/drivers/firmware/imx/imx-scu.c
+++ b/drivers/firmware/imx/imx-scu.c
@@ -158,7 +158,7 @@ static void imx_scu_rx_callback(struct mbox_client *c, void *msg)
static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
{
- struct imx_sc_rpc_msg *hdr = msg;
+ struct imx_sc_rpc_msg hdr = *(struct imx_sc_rpc_msg *)msg;
struct imx_sc_chan *sc_chan;
u32 *data = msg;
int ret;
@@ -166,13 +166,13 @@ static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
int i;
/* Check size */
- if (hdr->size > IMX_SC_RPC_MAX_MSG)
+ if (hdr.size > IMX_SC_RPC_MAX_MSG)
return -EINVAL;
- dev_dbg(sc_ipc->dev, "RPC SVC %u FUNC %u SIZE %u\n", hdr->svc,
- hdr->func, hdr->size);
+ dev_dbg(sc_ipc->dev, "RPC SVC %u FUNC %u SIZE %u\n", hdr.svc,
+ hdr.func, hdr.size);
- size = sc_ipc->fast_ipc ? 1 : hdr->size;
+ size = sc_ipc->fast_ipc ? 1 : hdr.size;
for (i = 0; i < size; i++) {
sc_chan = &sc_ipc->chans[i % 4];
The patch below was submitted to be applied to the 5.7-stable tree.
I fail to see how this patch meets the stable kernel rules as found at
Documentation/process/stable-kernel-rules.rst.
I could be totally wrong, and if so, please respond to
<stable(a)vger.kernel.org> and let me know why this patch should be
applied. Otherwise, it is now dropped from my patch queues, never to be
seen again.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 82e9367c43890cb6a870f700c9180c7eb2035684 Mon Sep 17 00:00:00 2001
From: Steve French <stfrench(a)microsoft.com>
Date: Tue, 19 May 2020 03:06:57 -0500
Subject: [PATCH] smb3: Add new parm "nodelete"
In order to handle workloads where it is important to make sure that
a buggy app did not delete content on the drive, the new mount option
"nodelete" allows standard permission checks on the server to work,
but prevents on the client any attempts to unlink a file or delete
a directory on that mount point. This can be helpful when running
a little understood app on a network mount that contains important
content that should not be deleted.
Signed-off-by: Steve French <stfrench(a)microsoft.com>
CC: Stable <stable(a)vger.kernel.org>
Reviewed-by: Pavel Shilovsky <pshilov(a)microsoft.com>
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index c31f362fa098..889f9c71049b 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -534,6 +534,8 @@ cifs_show_options(struct seq_file *s, struct dentry *root)
seq_puts(s, ",signloosely");
if (tcon->nocase)
seq_puts(s, ",nocase");
+ if (tcon->nodelete)
+ seq_puts(s, ",nodelete");
if (tcon->local_lease)
seq_puts(s, ",locallease");
if (tcon->retry)
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 39b708d9d86d..4d261fd78fcb 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -562,6 +562,7 @@ struct smb_vol {
bool override_gid:1;
bool dynperm:1;
bool noperm:1;
+ bool nodelete:1;
bool mode_ace:1;
bool no_psx_acl:1; /* set if posix acl support should be disabled */
bool cifs_acl:1;
@@ -1136,6 +1137,7 @@ struct cifs_tcon {
bool retry:1;
bool nocase:1;
bool nohandlecache:1; /* if strange server resource prob can turn off */
+ bool nodelete:1;
bool seal:1; /* transport encryption for this mounted share */
bool unix_ext:1; /* if false disable Linux extensions to CIFS protocol
for this mount even if server would support */
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 329babc6b18a..57d1cc6bf86f 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -75,7 +75,7 @@ enum {
Opt_forceuid, Opt_noforceuid,
Opt_forcegid, Opt_noforcegid,
Opt_noblocksend, Opt_noautotune, Opt_nolease,
- Opt_hard, Opt_soft, Opt_perm, Opt_noperm,
+ Opt_hard, Opt_soft, Opt_perm, Opt_noperm, Opt_nodelete,
Opt_mapposix, Opt_nomapposix,
Opt_mapchars, Opt_nomapchars, Opt_sfu,
Opt_nosfu, Opt_nodfs, Opt_posixpaths,
@@ -141,6 +141,7 @@ static const match_table_t cifs_mount_option_tokens = {
{ Opt_soft, "soft" },
{ Opt_perm, "perm" },
{ Opt_noperm, "noperm" },
+ { Opt_nodelete, "nodelete" },
{ Opt_mapchars, "mapchars" }, /* SFU style */
{ Opt_nomapchars, "nomapchars" },
{ Opt_mapposix, "mapposix" }, /* SFM style */
@@ -1760,6 +1761,9 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
case Opt_noperm:
vol->noperm = 1;
break;
+ case Opt_nodelete:
+ vol->nodelete = 1;
+ break;
case Opt_mapchars:
vol->sfu_remap = true;
vol->remap = false; /* disable SFM mapping */
@@ -3362,6 +3366,8 @@ static int match_tcon(struct cifs_tcon *tcon, struct smb_vol *volume_info)
return 0;
if (tcon->no_lease != volume_info->no_lease)
return 0;
+ if (tcon->nodelete != volume_info->nodelete)
+ return 0;
return 1;
}
@@ -3597,6 +3603,7 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb_vol *volume_info)
tcon->retry = volume_info->retry;
tcon->nocase = volume_info->nocase;
tcon->nohandlecache = volume_info->nohandlecache;
+ tcon->nodelete = volume_info->nodelete;
tcon->local_lease = volume_info->local_lease;
INIT_LIST_HEAD(&tcon->pending_opens);
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 5d2965a23730..873b1effd412 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1418,6 +1418,11 @@ int cifs_unlink(struct inode *dir, struct dentry *dentry)
xid = get_xid();
+ if (tcon->nodelete) {
+ rc = -EACCES;
+ goto unlink_out;
+ }
+
/* Unlink can be called from rename so we can not take the
* sb->s_vfs_rename_mutex here */
full_path = build_path_from_dentry(dentry);
@@ -1746,6 +1751,12 @@ int cifs_rmdir(struct inode *inode, struct dentry *direntry)
goto rmdir_exit;
}
+ if (tcon->nodelete) {
+ rc = -EACCES;
+ cifs_put_tlink(tlink);
+ goto rmdir_exit;
+ }
+
rc = server->ops->rmdir(xid, tcon, full_path, cifs_sb);
cifs_put_tlink(tlink);
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 17fae1294ad9d711b2c3dd0edef479d40c76a5e8 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck(a)intel.com>
Date: Wed, 20 May 2020 09:35:46 -0700
Subject: [PATCH] x86/{mce,mm}: Unmap the entire page if the whole page is
affected and poisoned
An interesting thing happened when a guest Linux instance took a machine
check. The VMM unmapped the bad page from guest physical space and
passed the machine check to the guest.
Linux took all the normal actions to offline the page from the process
that was using it. But then guest Linux crashed because it said there
was a second machine check inside the kernel with this stack trace:
do_memory_failure
set_mce_nospec
set_memory_uc
_set_memory_uc
change_page_attr_set_clr
cpa_flush
clflush_cache_range_opt
This was odd, because a CLFLUSH instruction shouldn't raise a machine
check (it isn't consuming the data). Further investigation showed that
the VMM had passed in another machine check because is appeared that the
guest was accessing the bad page.
Fix is to check the scope of the poison by checking the MCi_MISC register.
If the entire page is affected, then unmap the page. If only part of the
page is affected, then mark the page as uncacheable.
This assumes that VMMs will do the logical thing and pass in the "whole
page scope" via the MCi_MISC register (since they unmapped the entire
page).
[ bp: Adjust to x86/entry changes. ]
Fixes: 284ce4011ba6 ("x86/memory_failure: Introduce {set, clear}_mce_nospec()")
Reported-by: Jue Wang <juew(a)google.com>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Jue Wang <juew(a)google.com>
Cc: <stable(a)vger.kernel.org>
Link: https://lkml.kernel.org/r/20200520163546.GA7977@agluck-desk2.amr.corp.intel…
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index ec2c0a094b5d..5948218f35c5 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -86,28 +86,35 @@ int set_direct_map_default_noflush(struct page *page);
extern int kernel_set_to_readonly;
#ifdef CONFIG_X86_64
-static inline int set_mce_nospec(unsigned long pfn)
+/*
+ * Prevent speculative access to the page by either unmapping
+ * it (if we do not require access to any part of the page) or
+ * marking it uncacheable (if we want to try to retrieve data
+ * from non-poisoned lines in the page).
+ */
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
unsigned long decoy_addr;
int rc;
/*
- * Mark the linear address as UC to make sure we don't log more
- * errors because of speculative access to the page.
* We would like to just call:
- * set_memory_uc((unsigned long)pfn_to_kaddr(pfn), 1);
+ * set_memory_XX((unsigned long)pfn_to_kaddr(pfn), 1);
* but doing that would radically increase the odds of a
* speculative access to the poison page because we'd have
* the virtual address of the kernel 1:1 mapping sitting
* around in registers.
* Instead we get tricky. We create a non-canonical address
* that looks just like the one we want, but has bit 63 flipped.
- * This relies on set_memory_uc() properly sanitizing any __pa()
+ * This relies on set_memory_XX() properly sanitizing any __pa()
* results with __PHYSICAL_MASK or PTE_PFN_MASK.
*/
decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
- rc = set_memory_uc(decoy_addr, 1);
+ if (unmap)
+ rc = set_memory_np(decoy_addr, 1);
+ else
+ rc = set_memory_uc(decoy_addr, 1);
if (rc)
pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
return rc;
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 30413325de22..ce9120c4f740 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -520,6 +520,14 @@ bool mce_is_memory_error(struct mce *m)
}
EXPORT_SYMBOL_GPL(mce_is_memory_error);
+static bool whole_page(struct mce *m)
+{
+ if (!mca_cfg.ser || !(m->status & MCI_STATUS_MISCV))
+ return true;
+
+ return MCI_MISC_ADDR_LSB(m->misc) >= PAGE_SHIFT;
+}
+
bool mce_is_correctable(struct mce *m)
{
if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED)
@@ -573,7 +581,7 @@ static int uc_decode_notifier(struct notifier_block *nb, unsigned long val,
pfn = mce->addr >> PAGE_SHIFT;
if (!memory_failure(pfn, 0)) {
- set_mce_nospec(pfn);
+ set_mce_nospec(pfn, whole_page(mce));
mce->kflags |= MCE_HANDLED_UC;
}
@@ -1173,11 +1181,12 @@ static void kill_me_maybe(struct callback_head *cb)
int flags = MF_ACTION_REQUIRED;
pr_err("Uncorrected hardware memory error in user-access at %llx", p->mce_addr);
- if (!(p->mce_status & MCG_STATUS_RIPV))
+
+ if (!p->mce_ripv)
flags |= MF_MUST_KILL;
if (!memory_failure(p->mce_addr >> PAGE_SHIFT, flags)) {
- set_mce_nospec(p->mce_addr >> PAGE_SHIFT);
+ set_mce_nospec(p->mce_addr >> PAGE_SHIFT, p->mce_whole_page);
return;
}
@@ -1331,7 +1340,8 @@ void noinstr do_machine_check(struct pt_regs *regs)
BUG_ON(!on_thread_stack() || !user_mode(regs));
current->mce_addr = m.addr;
- current->mce_status = m.mcgstatus;
+ current->mce_ripv = !!(m.mcgstatus & MCG_STATUS_RIPV);
+ current->mce_whole_page = whole_page(&m);
current->mce_kill_me.func = kill_me_maybe;
if (kill_it)
current->mce_kill_me.func = kill_me_now;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index c5d96e3e7fff..62c1de522fc5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1304,7 +1304,9 @@ struct task_struct {
#ifdef CONFIG_X86_MCE
u64 mce_addr;
- u64 mce_status;
+ __u64 mce_ripv : 1,
+ mce_whole_page : 1,
+ __mce_reserved : 62;
struct callback_head mce_kill_me;
#endif
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 86281ac7c305..860e0f843c12 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -26,7 +26,7 @@ static inline int set_direct_map_default_noflush(struct page *page)
#endif
#ifndef set_mce_nospec
-static inline int set_mce_nospec(unsigned long pfn)
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
return 0;
}
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 17fae1294ad9d711b2c3dd0edef479d40c76a5e8 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck(a)intel.com>
Date: Wed, 20 May 2020 09:35:46 -0700
Subject: [PATCH] x86/{mce,mm}: Unmap the entire page if the whole page is
affected and poisoned
An interesting thing happened when a guest Linux instance took a machine
check. The VMM unmapped the bad page from guest physical space and
passed the machine check to the guest.
Linux took all the normal actions to offline the page from the process
that was using it. But then guest Linux crashed because it said there
was a second machine check inside the kernel with this stack trace:
do_memory_failure
set_mce_nospec
set_memory_uc
_set_memory_uc
change_page_attr_set_clr
cpa_flush
clflush_cache_range_opt
This was odd, because a CLFLUSH instruction shouldn't raise a machine
check (it isn't consuming the data). Further investigation showed that
the VMM had passed in another machine check because is appeared that the
guest was accessing the bad page.
Fix is to check the scope of the poison by checking the MCi_MISC register.
If the entire page is affected, then unmap the page. If only part of the
page is affected, then mark the page as uncacheable.
This assumes that VMMs will do the logical thing and pass in the "whole
page scope" via the MCi_MISC register (since they unmapped the entire
page).
[ bp: Adjust to x86/entry changes. ]
Fixes: 284ce4011ba6 ("x86/memory_failure: Introduce {set, clear}_mce_nospec()")
Reported-by: Jue Wang <juew(a)google.com>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Jue Wang <juew(a)google.com>
Cc: <stable(a)vger.kernel.org>
Link: https://lkml.kernel.org/r/20200520163546.GA7977@agluck-desk2.amr.corp.intel…
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index ec2c0a094b5d..5948218f35c5 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -86,28 +86,35 @@ int set_direct_map_default_noflush(struct page *page);
extern int kernel_set_to_readonly;
#ifdef CONFIG_X86_64
-static inline int set_mce_nospec(unsigned long pfn)
+/*
+ * Prevent speculative access to the page by either unmapping
+ * it (if we do not require access to any part of the page) or
+ * marking it uncacheable (if we want to try to retrieve data
+ * from non-poisoned lines in the page).
+ */
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
unsigned long decoy_addr;
int rc;
/*
- * Mark the linear address as UC to make sure we don't log more
- * errors because of speculative access to the page.
* We would like to just call:
- * set_memory_uc((unsigned long)pfn_to_kaddr(pfn), 1);
+ * set_memory_XX((unsigned long)pfn_to_kaddr(pfn), 1);
* but doing that would radically increase the odds of a
* speculative access to the poison page because we'd have
* the virtual address of the kernel 1:1 mapping sitting
* around in registers.
* Instead we get tricky. We create a non-canonical address
* that looks just like the one we want, but has bit 63 flipped.
- * This relies on set_memory_uc() properly sanitizing any __pa()
+ * This relies on set_memory_XX() properly sanitizing any __pa()
* results with __PHYSICAL_MASK or PTE_PFN_MASK.
*/
decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
- rc = set_memory_uc(decoy_addr, 1);
+ if (unmap)
+ rc = set_memory_np(decoy_addr, 1);
+ else
+ rc = set_memory_uc(decoy_addr, 1);
if (rc)
pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
return rc;
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 30413325de22..ce9120c4f740 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -520,6 +520,14 @@ bool mce_is_memory_error(struct mce *m)
}
EXPORT_SYMBOL_GPL(mce_is_memory_error);
+static bool whole_page(struct mce *m)
+{
+ if (!mca_cfg.ser || !(m->status & MCI_STATUS_MISCV))
+ return true;
+
+ return MCI_MISC_ADDR_LSB(m->misc) >= PAGE_SHIFT;
+}
+
bool mce_is_correctable(struct mce *m)
{
if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED)
@@ -573,7 +581,7 @@ static int uc_decode_notifier(struct notifier_block *nb, unsigned long val,
pfn = mce->addr >> PAGE_SHIFT;
if (!memory_failure(pfn, 0)) {
- set_mce_nospec(pfn);
+ set_mce_nospec(pfn, whole_page(mce));
mce->kflags |= MCE_HANDLED_UC;
}
@@ -1173,11 +1181,12 @@ static void kill_me_maybe(struct callback_head *cb)
int flags = MF_ACTION_REQUIRED;
pr_err("Uncorrected hardware memory error in user-access at %llx", p->mce_addr);
- if (!(p->mce_status & MCG_STATUS_RIPV))
+
+ if (!p->mce_ripv)
flags |= MF_MUST_KILL;
if (!memory_failure(p->mce_addr >> PAGE_SHIFT, flags)) {
- set_mce_nospec(p->mce_addr >> PAGE_SHIFT);
+ set_mce_nospec(p->mce_addr >> PAGE_SHIFT, p->mce_whole_page);
return;
}
@@ -1331,7 +1340,8 @@ void noinstr do_machine_check(struct pt_regs *regs)
BUG_ON(!on_thread_stack() || !user_mode(regs));
current->mce_addr = m.addr;
- current->mce_status = m.mcgstatus;
+ current->mce_ripv = !!(m.mcgstatus & MCG_STATUS_RIPV);
+ current->mce_whole_page = whole_page(&m);
current->mce_kill_me.func = kill_me_maybe;
if (kill_it)
current->mce_kill_me.func = kill_me_now;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index c5d96e3e7fff..62c1de522fc5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1304,7 +1304,9 @@ struct task_struct {
#ifdef CONFIG_X86_MCE
u64 mce_addr;
- u64 mce_status;
+ __u64 mce_ripv : 1,
+ mce_whole_page : 1,
+ __mce_reserved : 62;
struct callback_head mce_kill_me;
#endif
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 86281ac7c305..860e0f843c12 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -26,7 +26,7 @@ static inline int set_direct_map_default_noflush(struct page *page)
#endif
#ifndef set_mce_nospec
-static inline int set_mce_nospec(unsigned long pfn)
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
return 0;
}
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 17fae1294ad9d711b2c3dd0edef479d40c76a5e8 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck(a)intel.com>
Date: Wed, 20 May 2020 09:35:46 -0700
Subject: [PATCH] x86/{mce,mm}: Unmap the entire page if the whole page is
affected and poisoned
An interesting thing happened when a guest Linux instance took a machine
check. The VMM unmapped the bad page from guest physical space and
passed the machine check to the guest.
Linux took all the normal actions to offline the page from the process
that was using it. But then guest Linux crashed because it said there
was a second machine check inside the kernel with this stack trace:
do_memory_failure
set_mce_nospec
set_memory_uc
_set_memory_uc
change_page_attr_set_clr
cpa_flush
clflush_cache_range_opt
This was odd, because a CLFLUSH instruction shouldn't raise a machine
check (it isn't consuming the data). Further investigation showed that
the VMM had passed in another machine check because is appeared that the
guest was accessing the bad page.
Fix is to check the scope of the poison by checking the MCi_MISC register.
If the entire page is affected, then unmap the page. If only part of the
page is affected, then mark the page as uncacheable.
This assumes that VMMs will do the logical thing and pass in the "whole
page scope" via the MCi_MISC register (since they unmapped the entire
page).
[ bp: Adjust to x86/entry changes. ]
Fixes: 284ce4011ba6 ("x86/memory_failure: Introduce {set, clear}_mce_nospec()")
Reported-by: Jue Wang <juew(a)google.com>
Signed-off-by: Tony Luck <tony.luck(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Tested-by: Jue Wang <juew(a)google.com>
Cc: <stable(a)vger.kernel.org>
Link: https://lkml.kernel.org/r/20200520163546.GA7977@agluck-desk2.amr.corp.intel…
diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h
index ec2c0a094b5d..5948218f35c5 100644
--- a/arch/x86/include/asm/set_memory.h
+++ b/arch/x86/include/asm/set_memory.h
@@ -86,28 +86,35 @@ int set_direct_map_default_noflush(struct page *page);
extern int kernel_set_to_readonly;
#ifdef CONFIG_X86_64
-static inline int set_mce_nospec(unsigned long pfn)
+/*
+ * Prevent speculative access to the page by either unmapping
+ * it (if we do not require access to any part of the page) or
+ * marking it uncacheable (if we want to try to retrieve data
+ * from non-poisoned lines in the page).
+ */
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
unsigned long decoy_addr;
int rc;
/*
- * Mark the linear address as UC to make sure we don't log more
- * errors because of speculative access to the page.
* We would like to just call:
- * set_memory_uc((unsigned long)pfn_to_kaddr(pfn), 1);
+ * set_memory_XX((unsigned long)pfn_to_kaddr(pfn), 1);
* but doing that would radically increase the odds of a
* speculative access to the poison page because we'd have
* the virtual address of the kernel 1:1 mapping sitting
* around in registers.
* Instead we get tricky. We create a non-canonical address
* that looks just like the one we want, but has bit 63 flipped.
- * This relies on set_memory_uc() properly sanitizing any __pa()
+ * This relies on set_memory_XX() properly sanitizing any __pa()
* results with __PHYSICAL_MASK or PTE_PFN_MASK.
*/
decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
- rc = set_memory_uc(decoy_addr, 1);
+ if (unmap)
+ rc = set_memory_np(decoy_addr, 1);
+ else
+ rc = set_memory_uc(decoy_addr, 1);
if (rc)
pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
return rc;
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index 30413325de22..ce9120c4f740 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -520,6 +520,14 @@ bool mce_is_memory_error(struct mce *m)
}
EXPORT_SYMBOL_GPL(mce_is_memory_error);
+static bool whole_page(struct mce *m)
+{
+ if (!mca_cfg.ser || !(m->status & MCI_STATUS_MISCV))
+ return true;
+
+ return MCI_MISC_ADDR_LSB(m->misc) >= PAGE_SHIFT;
+}
+
bool mce_is_correctable(struct mce *m)
{
if (m->cpuvendor == X86_VENDOR_AMD && m->status & MCI_STATUS_DEFERRED)
@@ -573,7 +581,7 @@ static int uc_decode_notifier(struct notifier_block *nb, unsigned long val,
pfn = mce->addr >> PAGE_SHIFT;
if (!memory_failure(pfn, 0)) {
- set_mce_nospec(pfn);
+ set_mce_nospec(pfn, whole_page(mce));
mce->kflags |= MCE_HANDLED_UC;
}
@@ -1173,11 +1181,12 @@ static void kill_me_maybe(struct callback_head *cb)
int flags = MF_ACTION_REQUIRED;
pr_err("Uncorrected hardware memory error in user-access at %llx", p->mce_addr);
- if (!(p->mce_status & MCG_STATUS_RIPV))
+
+ if (!p->mce_ripv)
flags |= MF_MUST_KILL;
if (!memory_failure(p->mce_addr >> PAGE_SHIFT, flags)) {
- set_mce_nospec(p->mce_addr >> PAGE_SHIFT);
+ set_mce_nospec(p->mce_addr >> PAGE_SHIFT, p->mce_whole_page);
return;
}
@@ -1331,7 +1340,8 @@ void noinstr do_machine_check(struct pt_regs *regs)
BUG_ON(!on_thread_stack() || !user_mode(regs));
current->mce_addr = m.addr;
- current->mce_status = m.mcgstatus;
+ current->mce_ripv = !!(m.mcgstatus & MCG_STATUS_RIPV);
+ current->mce_whole_page = whole_page(&m);
current->mce_kill_me.func = kill_me_maybe;
if (kill_it)
current->mce_kill_me.func = kill_me_now;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index c5d96e3e7fff..62c1de522fc5 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1304,7 +1304,9 @@ struct task_struct {
#ifdef CONFIG_X86_MCE
u64 mce_addr;
- u64 mce_status;
+ __u64 mce_ripv : 1,
+ mce_whole_page : 1,
+ __mce_reserved : 62;
struct callback_head mce_kill_me;
#endif
diff --git a/include/linux/set_memory.h b/include/linux/set_memory.h
index 86281ac7c305..860e0f843c12 100644
--- a/include/linux/set_memory.h
+++ b/include/linux/set_memory.h
@@ -26,7 +26,7 @@ static inline int set_direct_map_default_noflush(struct page *page)
#endif
#ifndef set_mce_nospec
-static inline int set_mce_nospec(unsigned long pfn)
+static inline int set_mce_nospec(unsigned long pfn, bool unmap)
{
return 0;
}
Commit "aio: fix async fsync creds"
(530f32fc370fd1431ea9802dbc53ab5601dfccdb) was committed for v5.8-rc1,
but I don't see it in any stable branches or rc queues (it is marked for
4.18+). Did it slip through the cracks? Or is it on some other queue?
Thanks, Avi
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From f4cfcd2d5aea4e96c5d483c476f3057b6b7baf6a Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk(a)redhat.com>
Date: Sat, 23 May 2020 19:14:55 +0300
Subject: [PATCH] KVM: x86: don't expose MSR_IA32_UMWAIT_CONTROL
unconditionally
This msr is only available when the host supports WAITPKG feature.
This breaks a nested guest, if the L1 hypervisor is set to ignore
unknown msrs, because the only other safety check that the
kernel does is that it attempts to read the msr and
rejects it if it gets an exception.
Cc: stable(a)vger.kernel.org
Fixes: 6e3ba4abce ("KVM: vmx: Emulate MSR IA32_UMWAIT_CONTROL")
Signed-off-by: Maxim Levitsky <mlevitsk(a)redhat.com>
Message-Id: <20200523161455.3940-3-mlevitsk(a)redhat.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index c17e6eb9ad43..e0083a08da9e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -5242,6 +5242,10 @@ static void kvm_init_msr_list(void)
if (!kvm_cpu_cap_has(X86_FEATURE_RDTSCP))
continue;
break;
+ case MSR_IA32_UMWAIT_CONTROL:
+ if (!kvm_cpu_cap_has(X86_FEATURE_WAITPKG))
+ continue;
+ break;
case MSR_IA32_RTIT_CTL:
case MSR_IA32_RTIT_STATUS:
if (!kvm_cpu_cap_has(X86_FEATURE_INTEL_PT))
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From f4cfcd2d5aea4e96c5d483c476f3057b6b7baf6a Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk(a)redhat.com>
Date: Sat, 23 May 2020 19:14:55 +0300
Subject: [PATCH] KVM: x86: don't expose MSR_IA32_UMWAIT_CONTROL
unconditionally
This msr is only available when the host supports WAITPKG feature.
This breaks a nested guest, if the L1 hypervisor is set to ignore
unknown msrs, because the only other safety check that the
kernel does is that it attempts to read the msr and
rejects it if it gets an exception.
Cc: stable(a)vger.kernel.org
Fixes: 6e3ba4abce ("KVM: vmx: Emulate MSR IA32_UMWAIT_CONTROL")
Signed-off-by: Maxim Levitsky <mlevitsk(a)redhat.com>
Message-Id: <20200523161455.3940-3-mlevitsk(a)redhat.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index c17e6eb9ad43..e0083a08da9e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -5242,6 +5242,10 @@ static void kvm_init_msr_list(void)
if (!kvm_cpu_cap_has(X86_FEATURE_RDTSCP))
continue;
break;
+ case MSR_IA32_UMWAIT_CONTROL:
+ if (!kvm_cpu_cap_has(X86_FEATURE_WAITPKG))
+ continue;
+ break;
case MSR_IA32_RTIT_CTL:
case MSR_IA32_RTIT_STATUS:
if (!kvm_cpu_cap_has(X86_FEATURE_INTEL_PT))
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From e649b3f0188f8fd34dd0dde8d43fd3312b902fb2 Mon Sep 17 00:00:00 2001
From: Eiichi Tsukata <eiichi.tsukata(a)nutanix.com>
Date: Sat, 6 Jun 2020 13:26:27 +0900
Subject: [PATCH] KVM: x86: Fix APIC page invalidation race
Commit b1394e745b94 ("KVM: x86: fix APIC page invalidation") tried
to fix inappropriate APIC page invalidation by re-introducing arch
specific kvm_arch_mmu_notifier_invalidate_range() and calling it from
kvm_mmu_notifier_invalidate_range_start. However, the patch left a
possible race where the VMCS APIC address cache is updated *before*
it is unmapped:
(Invalidator) kvm_mmu_notifier_invalidate_range_start()
(Invalidator) kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD)
(KVM VCPU) vcpu_enter_guest()
(KVM VCPU) kvm_vcpu_reload_apic_access_page()
(Invalidator) actually unmap page
Because of the above race, there can be a mismatch between the
host physical address stored in the APIC_ACCESS_PAGE VMCS field and
the host physical address stored in the EPT entry for the APIC GPA
(0xfee0000). When this happens, the processor will not trap APIC
accesses, and will instead show the raw contents of the APIC-access page.
Because Windows OS periodically checks for unexpected modifications to
the LAPIC register, this will show up as a BSOD crash with BugCheck
CRITICAL_STRUCTURE_CORRUPTION (109) we are currently seeing in
https://bugzilla.redhat.com/show_bug.cgi?id=1751017.
The root cause of the issue is that kvm_arch_mmu_notifier_invalidate_range()
cannot guarantee that no additional references are taken to the pages in
the range before kvm_mmu_notifier_invalidate_range_end(). Fortunately,
this case is supported by the MMU notifier API, as documented in
include/linux/mmu_notifier.h:
* If the subsystem
* can't guarantee that no additional references are taken to
* the pages in the range, it has to implement the
* invalidate_range() notifier to remove any references taken
* after invalidate_range_start().
The fix therefore is to reload the APIC-access page field in the VMCS
from kvm_mmu_notifier_invalidate_range() instead of ..._range_start().
Cc: stable(a)vger.kernel.org
Fixes: b1394e745b94 ("KVM: x86: fix APIC page invalidation")
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=197951
Signed-off-by: Eiichi Tsukata <eiichi.tsukata(a)nutanix.com>
Message-Id: <20200606042627.61070-1-eiichi.tsukata(a)nutanix.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index c26dd1363151..24de847af52e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8270,9 +8270,8 @@ static void vcpu_load_eoi_exitmap(struct kvm_vcpu *vcpu)
kvm_x86_ops.load_eoi_exitmap(vcpu, eoi_exit_bitmap);
}
-int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end,
- bool blockable)
+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end)
{
unsigned long apic_address;
@@ -8283,8 +8282,6 @@ int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
apic_address = gfn_to_hva(kvm, APIC_DEFAULT_PHYS_BASE >> PAGE_SHIFT);
if (start <= apic_address && apic_address < end)
kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD);
-
- return 0;
}
void kvm_vcpu_reload_apic_access_page(struct kvm_vcpu *vcpu)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index d38d6b9c24be..e2f82131bb3e 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -1420,8 +1420,8 @@ static inline long kvm_arch_vcpu_async_ioctl(struct file *filp,
}
#endif /* CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL */
-int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end, bool blockable);
+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end);
#ifdef CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE
int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 4db151f6101e..7b6013f2ba19 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -155,10 +155,9 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm);
static unsigned long long kvm_createvm_count;
static unsigned long long kvm_active_vms;
-__weak int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end, bool blockable)
+__weak void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end)
{
- return 0;
}
bool kvm_is_zone_device_pfn(kvm_pfn_t pfn)
@@ -384,6 +383,18 @@ static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn)
return container_of(mn, struct kvm, mmu_notifier);
}
+static void kvm_mmu_notifier_invalidate_range(struct mmu_notifier *mn,
+ struct mm_struct *mm,
+ unsigned long start, unsigned long end)
+{
+ struct kvm *kvm = mmu_notifier_to_kvm(mn);
+ int idx;
+
+ idx = srcu_read_lock(&kvm->srcu);
+ kvm_arch_mmu_notifier_invalidate_range(kvm, start, end);
+ srcu_read_unlock(&kvm->srcu, idx);
+}
+
static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn,
struct mm_struct *mm,
unsigned long address,
@@ -408,7 +419,6 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
{
struct kvm *kvm = mmu_notifier_to_kvm(mn);
int need_tlb_flush = 0, idx;
- int ret;
idx = srcu_read_lock(&kvm->srcu);
spin_lock(&kvm->mmu_lock);
@@ -425,14 +435,9 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
kvm_flush_remote_tlbs(kvm);
spin_unlock(&kvm->mmu_lock);
-
- ret = kvm_arch_mmu_notifier_invalidate_range(kvm, range->start,
- range->end,
- mmu_notifier_range_blockable(range));
-
srcu_read_unlock(&kvm->srcu, idx);
- return ret;
+ return 0;
}
static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
@@ -538,6 +543,7 @@ static void kvm_mmu_notifier_release(struct mmu_notifier *mn,
}
static const struct mmu_notifier_ops kvm_mmu_notifier_ops = {
+ .invalidate_range = kvm_mmu_notifier_invalidate_range,
.invalidate_range_start = kvm_mmu_notifier_invalidate_range_start,
.invalidate_range_end = kvm_mmu_notifier_invalidate_range_end,
.clear_flush_young = kvm_mmu_notifier_clear_flush_young,
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From e649b3f0188f8fd34dd0dde8d43fd3312b902fb2 Mon Sep 17 00:00:00 2001
From: Eiichi Tsukata <eiichi.tsukata(a)nutanix.com>
Date: Sat, 6 Jun 2020 13:26:27 +0900
Subject: [PATCH] KVM: x86: Fix APIC page invalidation race
Commit b1394e745b94 ("KVM: x86: fix APIC page invalidation") tried
to fix inappropriate APIC page invalidation by re-introducing arch
specific kvm_arch_mmu_notifier_invalidate_range() and calling it from
kvm_mmu_notifier_invalidate_range_start. However, the patch left a
possible race where the VMCS APIC address cache is updated *before*
it is unmapped:
(Invalidator) kvm_mmu_notifier_invalidate_range_start()
(Invalidator) kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD)
(KVM VCPU) vcpu_enter_guest()
(KVM VCPU) kvm_vcpu_reload_apic_access_page()
(Invalidator) actually unmap page
Because of the above race, there can be a mismatch between the
host physical address stored in the APIC_ACCESS_PAGE VMCS field and
the host physical address stored in the EPT entry for the APIC GPA
(0xfee0000). When this happens, the processor will not trap APIC
accesses, and will instead show the raw contents of the APIC-access page.
Because Windows OS periodically checks for unexpected modifications to
the LAPIC register, this will show up as a BSOD crash with BugCheck
CRITICAL_STRUCTURE_CORRUPTION (109) we are currently seeing in
https://bugzilla.redhat.com/show_bug.cgi?id=1751017.
The root cause of the issue is that kvm_arch_mmu_notifier_invalidate_range()
cannot guarantee that no additional references are taken to the pages in
the range before kvm_mmu_notifier_invalidate_range_end(). Fortunately,
this case is supported by the MMU notifier API, as documented in
include/linux/mmu_notifier.h:
* If the subsystem
* can't guarantee that no additional references are taken to
* the pages in the range, it has to implement the
* invalidate_range() notifier to remove any references taken
* after invalidate_range_start().
The fix therefore is to reload the APIC-access page field in the VMCS
from kvm_mmu_notifier_invalidate_range() instead of ..._range_start().
Cc: stable(a)vger.kernel.org
Fixes: b1394e745b94 ("KVM: x86: fix APIC page invalidation")
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=197951
Signed-off-by: Eiichi Tsukata <eiichi.tsukata(a)nutanix.com>
Message-Id: <20200606042627.61070-1-eiichi.tsukata(a)nutanix.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index c26dd1363151..24de847af52e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8270,9 +8270,8 @@ static void vcpu_load_eoi_exitmap(struct kvm_vcpu *vcpu)
kvm_x86_ops.load_eoi_exitmap(vcpu, eoi_exit_bitmap);
}
-int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end,
- bool blockable)
+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end)
{
unsigned long apic_address;
@@ -8283,8 +8282,6 @@ int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
apic_address = gfn_to_hva(kvm, APIC_DEFAULT_PHYS_BASE >> PAGE_SHIFT);
if (start <= apic_address && apic_address < end)
kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD);
-
- return 0;
}
void kvm_vcpu_reload_apic_access_page(struct kvm_vcpu *vcpu)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index d38d6b9c24be..e2f82131bb3e 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -1420,8 +1420,8 @@ static inline long kvm_arch_vcpu_async_ioctl(struct file *filp,
}
#endif /* CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL */
-int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end, bool blockable);
+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end);
#ifdef CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE
int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 4db151f6101e..7b6013f2ba19 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -155,10 +155,9 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm);
static unsigned long long kvm_createvm_count;
static unsigned long long kvm_active_vms;
-__weak int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end, bool blockable)
+__weak void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end)
{
- return 0;
}
bool kvm_is_zone_device_pfn(kvm_pfn_t pfn)
@@ -384,6 +383,18 @@ static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn)
return container_of(mn, struct kvm, mmu_notifier);
}
+static void kvm_mmu_notifier_invalidate_range(struct mmu_notifier *mn,
+ struct mm_struct *mm,
+ unsigned long start, unsigned long end)
+{
+ struct kvm *kvm = mmu_notifier_to_kvm(mn);
+ int idx;
+
+ idx = srcu_read_lock(&kvm->srcu);
+ kvm_arch_mmu_notifier_invalidate_range(kvm, start, end);
+ srcu_read_unlock(&kvm->srcu, idx);
+}
+
static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn,
struct mm_struct *mm,
unsigned long address,
@@ -408,7 +419,6 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
{
struct kvm *kvm = mmu_notifier_to_kvm(mn);
int need_tlb_flush = 0, idx;
- int ret;
idx = srcu_read_lock(&kvm->srcu);
spin_lock(&kvm->mmu_lock);
@@ -425,14 +435,9 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
kvm_flush_remote_tlbs(kvm);
spin_unlock(&kvm->mmu_lock);
-
- ret = kvm_arch_mmu_notifier_invalidate_range(kvm, range->start,
- range->end,
- mmu_notifier_range_blockable(range));
-
srcu_read_unlock(&kvm->srcu, idx);
- return ret;
+ return 0;
}
static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
@@ -538,6 +543,7 @@ static void kvm_mmu_notifier_release(struct mmu_notifier *mn,
}
static const struct mmu_notifier_ops kvm_mmu_notifier_ops = {
+ .invalidate_range = kvm_mmu_notifier_invalidate_range,
.invalidate_range_start = kvm_mmu_notifier_invalidate_range_start,
.invalidate_range_end = kvm_mmu_notifier_invalidate_range_end,
.clear_flush_young = kvm_mmu_notifier_clear_flush_young,
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From e649b3f0188f8fd34dd0dde8d43fd3312b902fb2 Mon Sep 17 00:00:00 2001
From: Eiichi Tsukata <eiichi.tsukata(a)nutanix.com>
Date: Sat, 6 Jun 2020 13:26:27 +0900
Subject: [PATCH] KVM: x86: Fix APIC page invalidation race
Commit b1394e745b94 ("KVM: x86: fix APIC page invalidation") tried
to fix inappropriate APIC page invalidation by re-introducing arch
specific kvm_arch_mmu_notifier_invalidate_range() and calling it from
kvm_mmu_notifier_invalidate_range_start. However, the patch left a
possible race where the VMCS APIC address cache is updated *before*
it is unmapped:
(Invalidator) kvm_mmu_notifier_invalidate_range_start()
(Invalidator) kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD)
(KVM VCPU) vcpu_enter_guest()
(KVM VCPU) kvm_vcpu_reload_apic_access_page()
(Invalidator) actually unmap page
Because of the above race, there can be a mismatch between the
host physical address stored in the APIC_ACCESS_PAGE VMCS field and
the host physical address stored in the EPT entry for the APIC GPA
(0xfee0000). When this happens, the processor will not trap APIC
accesses, and will instead show the raw contents of the APIC-access page.
Because Windows OS periodically checks for unexpected modifications to
the LAPIC register, this will show up as a BSOD crash with BugCheck
CRITICAL_STRUCTURE_CORRUPTION (109) we are currently seeing in
https://bugzilla.redhat.com/show_bug.cgi?id=1751017.
The root cause of the issue is that kvm_arch_mmu_notifier_invalidate_range()
cannot guarantee that no additional references are taken to the pages in
the range before kvm_mmu_notifier_invalidate_range_end(). Fortunately,
this case is supported by the MMU notifier API, as documented in
include/linux/mmu_notifier.h:
* If the subsystem
* can't guarantee that no additional references are taken to
* the pages in the range, it has to implement the
* invalidate_range() notifier to remove any references taken
* after invalidate_range_start().
The fix therefore is to reload the APIC-access page field in the VMCS
from kvm_mmu_notifier_invalidate_range() instead of ..._range_start().
Cc: stable(a)vger.kernel.org
Fixes: b1394e745b94 ("KVM: x86: fix APIC page invalidation")
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=197951
Signed-off-by: Eiichi Tsukata <eiichi.tsukata(a)nutanix.com>
Message-Id: <20200606042627.61070-1-eiichi.tsukata(a)nutanix.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index c26dd1363151..24de847af52e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8270,9 +8270,8 @@ static void vcpu_load_eoi_exitmap(struct kvm_vcpu *vcpu)
kvm_x86_ops.load_eoi_exitmap(vcpu, eoi_exit_bitmap);
}
-int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end,
- bool blockable)
+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end)
{
unsigned long apic_address;
@@ -8283,8 +8282,6 @@ int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
apic_address = gfn_to_hva(kvm, APIC_DEFAULT_PHYS_BASE >> PAGE_SHIFT);
if (start <= apic_address && apic_address < end)
kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD);
-
- return 0;
}
void kvm_vcpu_reload_apic_access_page(struct kvm_vcpu *vcpu)
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index d38d6b9c24be..e2f82131bb3e 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -1420,8 +1420,8 @@ static inline long kvm_arch_vcpu_async_ioctl(struct file *filp,
}
#endif /* CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL */
-int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end, bool blockable);
+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end);
#ifdef CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE
int kvm_arch_vcpu_run_pid_change(struct kvm_vcpu *vcpu);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 4db151f6101e..7b6013f2ba19 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -155,10 +155,9 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm);
static unsigned long long kvm_createvm_count;
static unsigned long long kvm_active_vms;
-__weak int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
- unsigned long start, unsigned long end, bool blockable)
+__weak void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
+ unsigned long start, unsigned long end)
{
- return 0;
}
bool kvm_is_zone_device_pfn(kvm_pfn_t pfn)
@@ -384,6 +383,18 @@ static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn)
return container_of(mn, struct kvm, mmu_notifier);
}
+static void kvm_mmu_notifier_invalidate_range(struct mmu_notifier *mn,
+ struct mm_struct *mm,
+ unsigned long start, unsigned long end)
+{
+ struct kvm *kvm = mmu_notifier_to_kvm(mn);
+ int idx;
+
+ idx = srcu_read_lock(&kvm->srcu);
+ kvm_arch_mmu_notifier_invalidate_range(kvm, start, end);
+ srcu_read_unlock(&kvm->srcu, idx);
+}
+
static void kvm_mmu_notifier_change_pte(struct mmu_notifier *mn,
struct mm_struct *mm,
unsigned long address,
@@ -408,7 +419,6 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
{
struct kvm *kvm = mmu_notifier_to_kvm(mn);
int need_tlb_flush = 0, idx;
- int ret;
idx = srcu_read_lock(&kvm->srcu);
spin_lock(&kvm->mmu_lock);
@@ -425,14 +435,9 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
kvm_flush_remote_tlbs(kvm);
spin_unlock(&kvm->mmu_lock);
-
- ret = kvm_arch_mmu_notifier_invalidate_range(kvm, range->start,
- range->end,
- mmu_notifier_range_blockable(range));
-
srcu_read_unlock(&kvm->srcu, idx);
- return ret;
+ return 0;
}
static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
@@ -538,6 +543,7 @@ static void kvm_mmu_notifier_release(struct mmu_notifier *mn,
}
static const struct mmu_notifier_ops kvm_mmu_notifier_ops = {
+ .invalidate_range = kvm_mmu_notifier_invalidate_range,
.invalidate_range_start = kvm_mmu_notifier_invalidate_range_start,
.invalidate_range_end = kvm_mmu_notifier_invalidate_range_end,
.clear_flush_young = kvm_mmu_notifier_clear_flush_young,
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 6129ed877d409037b79866327102c9dc59a302fe Mon Sep 17 00:00:00 2001
From: Sean Christopherson <sean.j.christopherson(a)intel.com>
Date: Wed, 27 May 2020 01:49:09 -0700
Subject: [PATCH] KVM: x86/mmu: Set mmio_value to '0' if reserved #PF can't be
generated
Set the mmio_value to '0' instead of simply clearing the present bit to
squash a benign warning in kvm_mmu_set_mmio_spte_mask() that complains
about the mmio_value overlapping the lower GFN mask on systems with 52
bits of PA space.
Opportunistically clean up the code and comments.
Cc: stable(a)vger.kernel.org
Fixes: d43e2675e96fc ("KVM: x86: only do L1TF workaround on affected processors")
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Message-Id: <20200527084909.23492-1-sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 86619631ff6a..92d056954194 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -6143,25 +6143,16 @@ static void kvm_set_mmio_spte_mask(void)
u64 mask;
/*
- * Set the reserved bits and the present bit of an paging-structure
- * entry to generate page fault with PFER.RSV = 1.
+ * Set a reserved PA bit in MMIO SPTEs to generate page faults with
+ * PFEC.RSVD=1 on MMIO accesses. 64-bit PTEs (PAE, x86-64, and EPT
+ * paging) support a maximum of 52 bits of PA, i.e. if the CPU supports
+ * 52-bit physical addresses then there are no reserved PA bits in the
+ * PTEs and so the reserved PA approach must be disabled.
*/
-
- /*
- * Mask the uppermost physical address bit, which would be reserved as
- * long as the supported physical address width is less than 52.
- */
- mask = 1ull << 51;
-
- /* Set the present bit. */
- mask |= 1ull;
-
- /*
- * If reserved bit is not supported, clear the present bit to disable
- * mmio page fault.
- */
- if (shadow_phys_bits == 52)
- mask &= ~1ull;
+ if (shadow_phys_bits < 52)
+ mask = BIT_ULL(51) | PT_PRESENT_MASK;
+ else
+ mask = 0;
kvm_mmu_set_mmio_spte_mask(mask, mask, ACC_WRITE_MASK | ACC_USER_MASK);
}
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 6129ed877d409037b79866327102c9dc59a302fe Mon Sep 17 00:00:00 2001
From: Sean Christopherson <sean.j.christopherson(a)intel.com>
Date: Wed, 27 May 2020 01:49:09 -0700
Subject: [PATCH] KVM: x86/mmu: Set mmio_value to '0' if reserved #PF can't be
generated
Set the mmio_value to '0' instead of simply clearing the present bit to
squash a benign warning in kvm_mmu_set_mmio_spte_mask() that complains
about the mmio_value overlapping the lower GFN mask on systems with 52
bits of PA space.
Opportunistically clean up the code and comments.
Cc: stable(a)vger.kernel.org
Fixes: d43e2675e96fc ("KVM: x86: only do L1TF workaround on affected processors")
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Message-Id: <20200527084909.23492-1-sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 86619631ff6a..92d056954194 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -6143,25 +6143,16 @@ static void kvm_set_mmio_spte_mask(void)
u64 mask;
/*
- * Set the reserved bits and the present bit of an paging-structure
- * entry to generate page fault with PFER.RSV = 1.
+ * Set a reserved PA bit in MMIO SPTEs to generate page faults with
+ * PFEC.RSVD=1 on MMIO accesses. 64-bit PTEs (PAE, x86-64, and EPT
+ * paging) support a maximum of 52 bits of PA, i.e. if the CPU supports
+ * 52-bit physical addresses then there are no reserved PA bits in the
+ * PTEs and so the reserved PA approach must be disabled.
*/
-
- /*
- * Mask the uppermost physical address bit, which would be reserved as
- * long as the supported physical address width is less than 52.
- */
- mask = 1ull << 51;
-
- /* Set the present bit. */
- mask |= 1ull;
-
- /*
- * If reserved bit is not supported, clear the present bit to disable
- * mmio page fault.
- */
- if (shadow_phys_bits == 52)
- mask &= ~1ull;
+ if (shadow_phys_bits < 52)
+ mask = BIT_ULL(51) | PT_PRESENT_MASK;
+ else
+ mask = 0;
kvm_mmu_set_mmio_spte_mask(mask, mask, ACC_WRITE_MASK | ACC_USER_MASK);
}
The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 0abcc8f65cc23b65bc8d1614cc64b02b1641ed7c Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk(a)redhat.com>
Date: Sat, 23 May 2020 19:14:54 +0300
Subject: [PATCH] KVM: VMX: enable X86_FEATURE_WAITPKG in KVM capabilities
Even though we might not allow the guest to use WAITPKG's new
instructions, we should tell KVM that the feature is supported by the
host CPU.
Note that vmx_waitpkg_supported checks that WAITPKG _can_ be set in
secondary execution controls as specified by VMX capability MSR, rather
that we actually enable it for a guest.
Cc: stable(a)vger.kernel.org
Fixes: e69e72faa3a0 ("KVM: x86: Add support for user wait instructions")
Suggested-by: Paolo Bonzini <pbonzini(a)redhat.com>
Signed-off-by: Maxim Levitsky <mlevitsk(a)redhat.com>
Message-Id: <20200523161455.3940-2-mlevitsk(a)redhat.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 89c766fad889..9b63ac8d97ee 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -7138,6 +7138,9 @@ static __init void vmx_set_cpu_caps(void)
/* CPUID 0x80000001 */
if (!cpu_has_vmx_rdtscp())
kvm_cpu_cap_clear(X86_FEATURE_RDTSCP);
+
+ if (vmx_waitpkg_supported())
+ kvm_cpu_cap_check_and_set(X86_FEATURE_WAITPKG);
}
static void vmx_request_immediate_exit(struct kvm_vcpu *vcpu)
The patch below does not apply to the 5.6-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 0abcc8f65cc23b65bc8d1614cc64b02b1641ed7c Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <mlevitsk(a)redhat.com>
Date: Sat, 23 May 2020 19:14:54 +0300
Subject: [PATCH] KVM: VMX: enable X86_FEATURE_WAITPKG in KVM capabilities
Even though we might not allow the guest to use WAITPKG's new
instructions, we should tell KVM that the feature is supported by the
host CPU.
Note that vmx_waitpkg_supported checks that WAITPKG _can_ be set in
secondary execution controls as specified by VMX capability MSR, rather
that we actually enable it for a guest.
Cc: stable(a)vger.kernel.org
Fixes: e69e72faa3a0 ("KVM: x86: Add support for user wait instructions")
Suggested-by: Paolo Bonzini <pbonzini(a)redhat.com>
Signed-off-by: Maxim Levitsky <mlevitsk(a)redhat.com>
Message-Id: <20200523161455.3940-2-mlevitsk(a)redhat.com>
Reviewed-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
index 89c766fad889..9b63ac8d97ee 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -7138,6 +7138,9 @@ static __init void vmx_set_cpu_caps(void)
/* CPUID 0x80000001 */
if (!cpu_has_vmx_rdtscp())
kvm_cpu_cap_clear(X86_FEATURE_RDTSCP);
+
+ if (vmx_waitpkg_supported())
+ kvm_cpu_cap_check_and_set(X86_FEATURE_WAITPKG);
}
static void vmx_request_immediate_exit(struct kvm_vcpu *vcpu)
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 4d8df8cbb9156b0a0ab3f802b80cb5db57acc0bf Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Sun, 7 Jun 2020 05:44:19 -0700
Subject: [PATCH] x86/speculation: PR_SPEC_FORCE_DISABLE enforcement for
indirect branches.
Currently, it is possible to enable indirect branch speculation even after
it was force-disabled using the PR_SPEC_FORCE_DISABLE option. Moreover, the
PR_GET_SPECULATION_CTRL command gives afterwards an incorrect result
(force-disabled when it is in fact enabled). This also is inconsistent
vs. STIBP and the documention which cleary states that
PR_SPEC_FORCE_DISABLE cannot be undone.
Fix this by actually enforcing force-disabled indirect branch
speculation. PR_SPEC_ENABLE called after PR_SPEC_FORCE_DISABLE now fails
with -EPERM as described in the documentation.
Fixes: 9137bb27e60e ("x86/speculation: Add prctl() control for indirect branch speculation")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 8d57562b1d2c..56f573aa764f 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1175,11 +1175,14 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
return 0;
/*
* Indirect branch speculation is always disabled in strict
- * mode.
+ * mode. It can neither be enabled if it was force-disabled
+ * by a previous prctl call.
+
*/
if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED ||
+ task_spec_ib_force_disable(task))
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 4d8df8cbb9156b0a0ab3f802b80cb5db57acc0bf Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Sun, 7 Jun 2020 05:44:19 -0700
Subject: [PATCH] x86/speculation: PR_SPEC_FORCE_DISABLE enforcement for
indirect branches.
Currently, it is possible to enable indirect branch speculation even after
it was force-disabled using the PR_SPEC_FORCE_DISABLE option. Moreover, the
PR_GET_SPECULATION_CTRL command gives afterwards an incorrect result
(force-disabled when it is in fact enabled). This also is inconsistent
vs. STIBP and the documention which cleary states that
PR_SPEC_FORCE_DISABLE cannot be undone.
Fix this by actually enforcing force-disabled indirect branch
speculation. PR_SPEC_ENABLE called after PR_SPEC_FORCE_DISABLE now fails
with -EPERM as described in the documentation.
Fixes: 9137bb27e60e ("x86/speculation: Add prctl() control for indirect branch speculation")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 8d57562b1d2c..56f573aa764f 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1175,11 +1175,14 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
return 0;
/*
* Indirect branch speculation is always disabled in strict
- * mode.
+ * mode. It can neither be enabled if it was force-disabled
+ * by a previous prctl call.
+
*/
if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED ||
+ task_spec_ib_force_disable(task))
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 4d8df8cbb9156b0a0ab3f802b80cb5db57acc0bf Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Sun, 7 Jun 2020 05:44:19 -0700
Subject: [PATCH] x86/speculation: PR_SPEC_FORCE_DISABLE enforcement for
indirect branches.
Currently, it is possible to enable indirect branch speculation even after
it was force-disabled using the PR_SPEC_FORCE_DISABLE option. Moreover, the
PR_GET_SPECULATION_CTRL command gives afterwards an incorrect result
(force-disabled when it is in fact enabled). This also is inconsistent
vs. STIBP and the documention which cleary states that
PR_SPEC_FORCE_DISABLE cannot be undone.
Fix this by actually enforcing force-disabled indirect branch
speculation. PR_SPEC_ENABLE called after PR_SPEC_FORCE_DISABLE now fails
with -EPERM as described in the documentation.
Fixes: 9137bb27e60e ("x86/speculation: Add prctl() control for indirect branch speculation")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 8d57562b1d2c..56f573aa764f 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -1175,11 +1175,14 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
return 0;
/*
* Indirect branch speculation is always disabled in strict
- * mode.
+ * mode. It can neither be enabled if it was force-disabled
+ * by a previous prctl call.
+
*/
if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED ||
+ task_spec_ib_force_disable(task))
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
The patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 21998a351512eba4ed5969006f0c55882d995ada Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Tue, 19 May 2020 06:40:42 -0700
Subject: [PATCH] x86/speculation: Avoid force-disabling IBPB based on STIBP
and enhanced IBRS.
When STIBP is unavailable or enhanced IBRS is available, Linux
force-disables the IBPB mitigation of Spectre-BTB even when simultaneous
multithreading is disabled. While attempts to enable IBPB using
prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, ...) fail with
EPERM, the seccomp syscall (or its prctl(PR_SET_SECCOMP, ...) equivalent)
which are used e.g. by Chromium or OpenSSH succeed with no errors but the
application remains silently vulnerable to cross-process Spectre v2 attacks
(classical BTB poisoning). At the same time the SYSFS reporting
(/sys/devices/system/cpu/vulnerabilities/spectre_v2) displays that IBPB is
conditionally enabled when in fact it is unconditionally disabled.
STIBP is useful only when SMT is enabled. When SMT is disabled and STIBP is
unavailable, it makes no sense to force-disable also IBPB, because IBPB
protects against cross-process Spectre-BTB attacks regardless of the SMT
state. At the same time since missing STIBP was only observed on AMD CPUs,
AMD does not recommend using STIBP, but recommends using IBPB, so disabling
IBPB because of missing STIBP goes directly against AMD's advice:
https://developer.amd.com/wp-content/resources/Architecture_Guidelines_Upda…
Similarly, enhanced IBRS is designed to protect cross-core BTB poisoning
and BTB-poisoning attacks from user space against kernel (and
BTB-poisoning attacks from guest against hypervisor), it is not designed
to prevent cross-process (or cross-VM) BTB poisoning between processes (or
VMs) running on the same core. Therefore, even with enhanced IBRS it is
necessary to flush the BTB during context-switches, so there is no reason
to force disable IBPB when enhanced IBRS is available.
Enable the prctl control of IBPB even when STIBP is unavailable or enhanced
IBRS is available.
Fixes: 7cc765a67d8e ("x86/speculation: Enable prctl mode for spectre_v2_user")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index ed54b3b21c39..8d57562b1d2c 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -495,7 +495,9 @@ early_param("nospectre_v1", nospectre_v1_cmdline);
static enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init =
SPECTRE_V2_NONE;
-static enum spectre_v2_user_mitigation spectre_v2_user __ro_after_init =
+static enum spectre_v2_user_mitigation spectre_v2_user_stibp __ro_after_init =
+ SPECTRE_V2_USER_NONE;
+static enum spectre_v2_user_mitigation spectre_v2_user_ibpb __ro_after_init =
SPECTRE_V2_USER_NONE;
#ifdef CONFIG_RETPOLINE
@@ -641,15 +643,6 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
break;
}
- /*
- * At this point, an STIBP mode other than "off" has been set.
- * If STIBP support is not being forced, check if STIBP always-on
- * is preferred.
- */
- if (mode != SPECTRE_V2_USER_STRICT &&
- boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
- mode = SPECTRE_V2_USER_STRICT_PREFERRED;
-
/* Initialize Indirect Branch Prediction Barrier */
if (boot_cpu_has(X86_FEATURE_IBPB)) {
setup_force_cpu_cap(X86_FEATURE_USE_IBPB);
@@ -672,23 +665,36 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
pr_info("mitigation: Enabling %s Indirect Branch Prediction Barrier\n",
static_key_enabled(&switch_mm_always_ibpb) ?
"always-on" : "conditional");
+
+ spectre_v2_user_ibpb = mode;
}
- /* If enhanced IBRS is enabled no STIBP required */
- if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
+ /*
+ * If enhanced IBRS is enabled or SMT impossible, STIBP is not
+ * required.
+ */
+ if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return;
/*
- * If SMT is not possible or STIBP is not available clear the STIBP
- * mode.
+ * At this point, an STIBP mode other than "off" has been set.
+ * If STIBP support is not being forced, check if STIBP always-on
+ * is preferred.
+ */
+ if (mode != SPECTRE_V2_USER_STRICT &&
+ boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
+ mode = SPECTRE_V2_USER_STRICT_PREFERRED;
+
+ /*
+ * If STIBP is not available, clear the STIBP mode.
*/
- if (!smt_possible || !boot_cpu_has(X86_FEATURE_STIBP))
+ if (!boot_cpu_has(X86_FEATURE_STIBP))
mode = SPECTRE_V2_USER_NONE;
+
+ spectre_v2_user_stibp = mode;
+
set_mode:
- spectre_v2_user = mode;
- /* Only print the STIBP mode when SMT possible */
- if (smt_possible)
- pr_info("%s\n", spectre_v2_user_strings[mode]);
+ pr_info("%s\n", spectre_v2_user_strings[mode]);
}
static const char * const spectre_v2_strings[] = {
@@ -921,7 +927,7 @@ void cpu_bugs_smt_update(void)
{
mutex_lock(&spec_ctrl_mutex);
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
break;
case SPECTRE_V2_USER_STRICT:
@@ -1164,14 +1170,16 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
{
switch (ctrl) {
case PR_SPEC_ENABLE:
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return 0;
/*
* Indirect branch speculation is always disabled in strict
* mode.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
@@ -1182,10 +1190,12 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
* Indirect branch speculation is always allowed when
* mitigation is force disabled.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return -EPERM;
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return 0;
task_set_spec_ib_disable(task);
if (ctrl == PR_SPEC_FORCE_DISABLE)
@@ -1216,7 +1226,8 @@ void arch_seccomp_spec_mitigate(struct task_struct *task)
{
if (ssb_mode == SPEC_STORE_BYPASS_SECCOMP)
ssb_prctl_set(task, PR_SPEC_FORCE_DISABLE);
- if (spectre_v2_user == SPECTRE_V2_USER_SECCOMP)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP)
ib_prctl_set(task, PR_SPEC_FORCE_DISABLE);
}
#endif
@@ -1247,22 +1258,24 @@ static int ib_prctl_get(struct task_struct *task)
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
return PR_SPEC_NOT_AFFECTED;
- switch (spectre_v2_user) {
- case SPECTRE_V2_USER_NONE:
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_PRCTL:
- case SPECTRE_V2_USER_SECCOMP:
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ return PR_SPEC_DISABLE;
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP) {
if (task_spec_ib_force_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE;
if (task_spec_ib_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_DISABLE;
return PR_SPEC_PRCTL | PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_STRICT:
- case SPECTRE_V2_USER_STRICT_PREFERRED:
- return PR_SPEC_DISABLE;
- default:
+ } else
return PR_SPEC_NOT_AFFECTED;
- }
}
int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
@@ -1501,7 +1514,7 @@ static char *stibp_state(void)
if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return "";
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
return ", STIBP: disabled";
case SPECTRE_V2_USER_STRICT:
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 21998a351512eba4ed5969006f0c55882d995ada Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Tue, 19 May 2020 06:40:42 -0700
Subject: [PATCH] x86/speculation: Avoid force-disabling IBPB based on STIBP
and enhanced IBRS.
When STIBP is unavailable or enhanced IBRS is available, Linux
force-disables the IBPB mitigation of Spectre-BTB even when simultaneous
multithreading is disabled. While attempts to enable IBPB using
prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, ...) fail with
EPERM, the seccomp syscall (or its prctl(PR_SET_SECCOMP, ...) equivalent)
which are used e.g. by Chromium or OpenSSH succeed with no errors but the
application remains silently vulnerable to cross-process Spectre v2 attacks
(classical BTB poisoning). At the same time the SYSFS reporting
(/sys/devices/system/cpu/vulnerabilities/spectre_v2) displays that IBPB is
conditionally enabled when in fact it is unconditionally disabled.
STIBP is useful only when SMT is enabled. When SMT is disabled and STIBP is
unavailable, it makes no sense to force-disable also IBPB, because IBPB
protects against cross-process Spectre-BTB attacks regardless of the SMT
state. At the same time since missing STIBP was only observed on AMD CPUs,
AMD does not recommend using STIBP, but recommends using IBPB, so disabling
IBPB because of missing STIBP goes directly against AMD's advice:
https://developer.amd.com/wp-content/resources/Architecture_Guidelines_Upda…
Similarly, enhanced IBRS is designed to protect cross-core BTB poisoning
and BTB-poisoning attacks from user space against kernel (and
BTB-poisoning attacks from guest against hypervisor), it is not designed
to prevent cross-process (or cross-VM) BTB poisoning between processes (or
VMs) running on the same core. Therefore, even with enhanced IBRS it is
necessary to flush the BTB during context-switches, so there is no reason
to force disable IBPB when enhanced IBRS is available.
Enable the prctl control of IBPB even when STIBP is unavailable or enhanced
IBRS is available.
Fixes: 7cc765a67d8e ("x86/speculation: Enable prctl mode for spectre_v2_user")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index ed54b3b21c39..8d57562b1d2c 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -495,7 +495,9 @@ early_param("nospectre_v1", nospectre_v1_cmdline);
static enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init =
SPECTRE_V2_NONE;
-static enum spectre_v2_user_mitigation spectre_v2_user __ro_after_init =
+static enum spectre_v2_user_mitigation spectre_v2_user_stibp __ro_after_init =
+ SPECTRE_V2_USER_NONE;
+static enum spectre_v2_user_mitigation spectre_v2_user_ibpb __ro_after_init =
SPECTRE_V2_USER_NONE;
#ifdef CONFIG_RETPOLINE
@@ -641,15 +643,6 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
break;
}
- /*
- * At this point, an STIBP mode other than "off" has been set.
- * If STIBP support is not being forced, check if STIBP always-on
- * is preferred.
- */
- if (mode != SPECTRE_V2_USER_STRICT &&
- boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
- mode = SPECTRE_V2_USER_STRICT_PREFERRED;
-
/* Initialize Indirect Branch Prediction Barrier */
if (boot_cpu_has(X86_FEATURE_IBPB)) {
setup_force_cpu_cap(X86_FEATURE_USE_IBPB);
@@ -672,23 +665,36 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
pr_info("mitigation: Enabling %s Indirect Branch Prediction Barrier\n",
static_key_enabled(&switch_mm_always_ibpb) ?
"always-on" : "conditional");
+
+ spectre_v2_user_ibpb = mode;
}
- /* If enhanced IBRS is enabled no STIBP required */
- if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
+ /*
+ * If enhanced IBRS is enabled or SMT impossible, STIBP is not
+ * required.
+ */
+ if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return;
/*
- * If SMT is not possible or STIBP is not available clear the STIBP
- * mode.
+ * At this point, an STIBP mode other than "off" has been set.
+ * If STIBP support is not being forced, check if STIBP always-on
+ * is preferred.
+ */
+ if (mode != SPECTRE_V2_USER_STRICT &&
+ boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
+ mode = SPECTRE_V2_USER_STRICT_PREFERRED;
+
+ /*
+ * If STIBP is not available, clear the STIBP mode.
*/
- if (!smt_possible || !boot_cpu_has(X86_FEATURE_STIBP))
+ if (!boot_cpu_has(X86_FEATURE_STIBP))
mode = SPECTRE_V2_USER_NONE;
+
+ spectre_v2_user_stibp = mode;
+
set_mode:
- spectre_v2_user = mode;
- /* Only print the STIBP mode when SMT possible */
- if (smt_possible)
- pr_info("%s\n", spectre_v2_user_strings[mode]);
+ pr_info("%s\n", spectre_v2_user_strings[mode]);
}
static const char * const spectre_v2_strings[] = {
@@ -921,7 +927,7 @@ void cpu_bugs_smt_update(void)
{
mutex_lock(&spec_ctrl_mutex);
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
break;
case SPECTRE_V2_USER_STRICT:
@@ -1164,14 +1170,16 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
{
switch (ctrl) {
case PR_SPEC_ENABLE:
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return 0;
/*
* Indirect branch speculation is always disabled in strict
* mode.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
@@ -1182,10 +1190,12 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
* Indirect branch speculation is always allowed when
* mitigation is force disabled.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return -EPERM;
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return 0;
task_set_spec_ib_disable(task);
if (ctrl == PR_SPEC_FORCE_DISABLE)
@@ -1216,7 +1226,8 @@ void arch_seccomp_spec_mitigate(struct task_struct *task)
{
if (ssb_mode == SPEC_STORE_BYPASS_SECCOMP)
ssb_prctl_set(task, PR_SPEC_FORCE_DISABLE);
- if (spectre_v2_user == SPECTRE_V2_USER_SECCOMP)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP)
ib_prctl_set(task, PR_SPEC_FORCE_DISABLE);
}
#endif
@@ -1247,22 +1258,24 @@ static int ib_prctl_get(struct task_struct *task)
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
return PR_SPEC_NOT_AFFECTED;
- switch (spectre_v2_user) {
- case SPECTRE_V2_USER_NONE:
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_PRCTL:
- case SPECTRE_V2_USER_SECCOMP:
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ return PR_SPEC_DISABLE;
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP) {
if (task_spec_ib_force_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE;
if (task_spec_ib_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_DISABLE;
return PR_SPEC_PRCTL | PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_STRICT:
- case SPECTRE_V2_USER_STRICT_PREFERRED:
- return PR_SPEC_DISABLE;
- default:
+ } else
return PR_SPEC_NOT_AFFECTED;
- }
}
int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
@@ -1501,7 +1514,7 @@ static char *stibp_state(void)
if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return "";
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
return ", STIBP: disabled";
case SPECTRE_V2_USER_STRICT:
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From 21998a351512eba4ed5969006f0c55882d995ada Mon Sep 17 00:00:00 2001
From: Anthony Steinhauser <asteinhauser(a)google.com>
Date: Tue, 19 May 2020 06:40:42 -0700
Subject: [PATCH] x86/speculation: Avoid force-disabling IBPB based on STIBP
and enhanced IBRS.
When STIBP is unavailable or enhanced IBRS is available, Linux
force-disables the IBPB mitigation of Spectre-BTB even when simultaneous
multithreading is disabled. While attempts to enable IBPB using
prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, ...) fail with
EPERM, the seccomp syscall (or its prctl(PR_SET_SECCOMP, ...) equivalent)
which are used e.g. by Chromium or OpenSSH succeed with no errors but the
application remains silently vulnerable to cross-process Spectre v2 attacks
(classical BTB poisoning). At the same time the SYSFS reporting
(/sys/devices/system/cpu/vulnerabilities/spectre_v2) displays that IBPB is
conditionally enabled when in fact it is unconditionally disabled.
STIBP is useful only when SMT is enabled. When SMT is disabled and STIBP is
unavailable, it makes no sense to force-disable also IBPB, because IBPB
protects against cross-process Spectre-BTB attacks regardless of the SMT
state. At the same time since missing STIBP was only observed on AMD CPUs,
AMD does not recommend using STIBP, but recommends using IBPB, so disabling
IBPB because of missing STIBP goes directly against AMD's advice:
https://developer.amd.com/wp-content/resources/Architecture_Guidelines_Upda…
Similarly, enhanced IBRS is designed to protect cross-core BTB poisoning
and BTB-poisoning attacks from user space against kernel (and
BTB-poisoning attacks from guest against hypervisor), it is not designed
to prevent cross-process (or cross-VM) BTB poisoning between processes (or
VMs) running on the same core. Therefore, even with enhanced IBRS it is
necessary to flush the BTB during context-switches, so there is no reason
to force disable IBPB when enhanced IBRS is available.
Enable the prctl control of IBPB even when STIBP is unavailable or enhanced
IBRS is available.
Fixes: 7cc765a67d8e ("x86/speculation: Enable prctl mode for spectre_v2_user")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index ed54b3b21c39..8d57562b1d2c 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -495,7 +495,9 @@ early_param("nospectre_v1", nospectre_v1_cmdline);
static enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init =
SPECTRE_V2_NONE;
-static enum spectre_v2_user_mitigation spectre_v2_user __ro_after_init =
+static enum spectre_v2_user_mitigation spectre_v2_user_stibp __ro_after_init =
+ SPECTRE_V2_USER_NONE;
+static enum spectre_v2_user_mitigation spectre_v2_user_ibpb __ro_after_init =
SPECTRE_V2_USER_NONE;
#ifdef CONFIG_RETPOLINE
@@ -641,15 +643,6 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
break;
}
- /*
- * At this point, an STIBP mode other than "off" has been set.
- * If STIBP support is not being forced, check if STIBP always-on
- * is preferred.
- */
- if (mode != SPECTRE_V2_USER_STRICT &&
- boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
- mode = SPECTRE_V2_USER_STRICT_PREFERRED;
-
/* Initialize Indirect Branch Prediction Barrier */
if (boot_cpu_has(X86_FEATURE_IBPB)) {
setup_force_cpu_cap(X86_FEATURE_USE_IBPB);
@@ -672,23 +665,36 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
pr_info("mitigation: Enabling %s Indirect Branch Prediction Barrier\n",
static_key_enabled(&switch_mm_always_ibpb) ?
"always-on" : "conditional");
+
+ spectre_v2_user_ibpb = mode;
}
- /* If enhanced IBRS is enabled no STIBP required */
- if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
+ /*
+ * If enhanced IBRS is enabled or SMT impossible, STIBP is not
+ * required.
+ */
+ if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return;
/*
- * If SMT is not possible or STIBP is not available clear the STIBP
- * mode.
+ * At this point, an STIBP mode other than "off" has been set.
+ * If STIBP support is not being forced, check if STIBP always-on
+ * is preferred.
+ */
+ if (mode != SPECTRE_V2_USER_STRICT &&
+ boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
+ mode = SPECTRE_V2_USER_STRICT_PREFERRED;
+
+ /*
+ * If STIBP is not available, clear the STIBP mode.
*/
- if (!smt_possible || !boot_cpu_has(X86_FEATURE_STIBP))
+ if (!boot_cpu_has(X86_FEATURE_STIBP))
mode = SPECTRE_V2_USER_NONE;
+
+ spectre_v2_user_stibp = mode;
+
set_mode:
- spectre_v2_user = mode;
- /* Only print the STIBP mode when SMT possible */
- if (smt_possible)
- pr_info("%s\n", spectre_v2_user_strings[mode]);
+ pr_info("%s\n", spectre_v2_user_strings[mode]);
}
static const char * const spectre_v2_strings[] = {
@@ -921,7 +927,7 @@ void cpu_bugs_smt_update(void)
{
mutex_lock(&spec_ctrl_mutex);
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
break;
case SPECTRE_V2_USER_STRICT:
@@ -1164,14 +1170,16 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
{
switch (ctrl) {
case PR_SPEC_ENABLE:
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return 0;
/*
* Indirect branch speculation is always disabled in strict
* mode.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
@@ -1182,10 +1190,12 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
* Indirect branch speculation is always allowed when
* mitigation is force disabled.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return -EPERM;
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return 0;
task_set_spec_ib_disable(task);
if (ctrl == PR_SPEC_FORCE_DISABLE)
@@ -1216,7 +1226,8 @@ void arch_seccomp_spec_mitigate(struct task_struct *task)
{
if (ssb_mode == SPEC_STORE_BYPASS_SECCOMP)
ssb_prctl_set(task, PR_SPEC_FORCE_DISABLE);
- if (spectre_v2_user == SPECTRE_V2_USER_SECCOMP)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP)
ib_prctl_set(task, PR_SPEC_FORCE_DISABLE);
}
#endif
@@ -1247,22 +1258,24 @@ static int ib_prctl_get(struct task_struct *task)
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
return PR_SPEC_NOT_AFFECTED;
- switch (spectre_v2_user) {
- case SPECTRE_V2_USER_NONE:
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_PRCTL:
- case SPECTRE_V2_USER_SECCOMP:
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ return PR_SPEC_DISABLE;
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP) {
if (task_spec_ib_force_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE;
if (task_spec_ib_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_DISABLE;
return PR_SPEC_PRCTL | PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_STRICT:
- case SPECTRE_V2_USER_STRICT_PREFERRED:
- return PR_SPEC_DISABLE;
- default:
+ } else
return PR_SPEC_NOT_AFFECTED;
- }
}
int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
@@ -1501,7 +1514,7 @@ static char *stibp_state(void)
if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return "";
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
return ", STIBP: disabled";
case SPECTRE_V2_USER_STRICT:
The patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
>From d43e2675e96fc6ae1a633b6a69d296394448cc32 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini(a)redhat.com>
Date: Tue, 19 May 2020 05:34:41 -0400
Subject: [PATCH] KVM: x86: only do L1TF workaround on affected processors
KVM stores the gfn in MMIO SPTEs as a caching optimization. These are split
in two parts, as in "[high 11111 low]", to thwart any attempt to use these bits
in an L1TF attack. This works as long as there are 5 free bits between
MAXPHYADDR and bit 50 (inclusive), leaving bit 51 free so that the MMIO
access triggers a reserved-bit-set page fault.
The bit positions however were computed wrongly for AMD processors that have
encryption support. In this case, x86_phys_bits is reduced (for example
from 48 to 43, to account for the C bit at position 47 and four bits used
internally to store the SEV ASID and other stuff) while x86_cache_bits in
would remain set to 48, and _all_ bits between the reduced MAXPHYADDR
and bit 51 are set. Then low_phys_bits would also cover some of the
bits that are set in the shadow_mmio_value, terribly confusing the gfn
caching mechanism.
To fix this, avoid splitting gfns as long as the processor does not have
the L1TF bug (which includes all AMD processors). When there is no
splitting, low_phys_bits can be set to the reduced MAXPHYADDR removing
the overlap. This fixes "npt=0" operation on EPYC processors.
Thanks to Maxim Levitsky for bisecting this bug.
Cc: stable(a)vger.kernel.org
Fixes: 52918ed5fcf0 ("KVM: SVM: Override default MMIO mask if memory encryption is enabled")
Signed-off-by: Paolo Bonzini <pbonzini(a)redhat.com>
diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
index 8071952e9cf2..86619631ff6a 100644
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -335,6 +335,8 @@ void kvm_mmu_set_mmio_spte_mask(u64 mmio_mask, u64 mmio_value, u64 access_mask)
{
BUG_ON((u64)(unsigned)access_mask != access_mask);
BUG_ON((mmio_mask & mmio_value) != mmio_value);
+ WARN_ON(mmio_value & (shadow_nonpresent_or_rsvd_mask << shadow_nonpresent_or_rsvd_mask_len));
+ WARN_ON(mmio_value & shadow_nonpresent_or_rsvd_lower_gfn_mask);
shadow_mmio_value = mmio_value | SPTE_MMIO_MASK;
shadow_mmio_mask = mmio_mask | SPTE_SPECIAL_MASK;
shadow_mmio_access_mask = access_mask;
@@ -583,16 +585,15 @@ static void kvm_mmu_reset_all_pte_masks(void)
* the most significant bits of legal physical address space.
*/
shadow_nonpresent_or_rsvd_mask = 0;
- low_phys_bits = boot_cpu_data.x86_cache_bits;
- if (boot_cpu_data.x86_cache_bits <
- 52 - shadow_nonpresent_or_rsvd_mask_len) {
+ low_phys_bits = boot_cpu_data.x86_phys_bits;
+ if (boot_cpu_has_bug(X86_BUG_L1TF) &&
+ !WARN_ON_ONCE(boot_cpu_data.x86_cache_bits >=
+ 52 - shadow_nonpresent_or_rsvd_mask_len)) {
+ low_phys_bits = boot_cpu_data.x86_cache_bits
+ - shadow_nonpresent_or_rsvd_mask_len;
shadow_nonpresent_or_rsvd_mask =
- rsvd_bits(boot_cpu_data.x86_cache_bits -
- shadow_nonpresent_or_rsvd_mask_len,
- boot_cpu_data.x86_cache_bits - 1);
- low_phys_bits -= shadow_nonpresent_or_rsvd_mask_len;
- } else
- WARN_ON_ONCE(boot_cpu_has_bug(X86_BUG_L1TF));
+ rsvd_bits(low_phys_bits, boot_cpu_data.x86_cache_bits - 1);
+ }
shadow_nonpresent_or_rsvd_lower_gfn_mask =
GENMASK_ULL(low_phys_bits - 1, PAGE_SHIFT);
stable team,
please consider
commit 49f2d2419d60a103752e5fbaf158cf8d07c0d884
usercopy: mark dma-kmalloc caches as usercopy caches
for stable.
-------- Forwarded Message --------
Subject: [merged] usercopy-mark-dma-kmalloc-caches-as-usercopy-caches.patch removed from -mm tree
Date: Tue, 02 Jun 2020 14:37:44 -0700
From: akpm(a)linux-foundation.org
To: borntraeger(a)de.ibm.com, christoffer.dall(a)linaro.org, cl(a)linux.com, dave.kleikamp(a)oracle.com, dave(a)nullcore.net, davem(a)davemloft.net, hch(a)infradead.org, iamjoonsoo.kim(a)lge.com, jack(a)suse.cz, jannh(a)google.com, jslaby(a)suse.cz, jwi(a)linux.ibm.com, labbott(a)redhat.com, luisbg(a)kernel.org, luto(a)kernel.org, marc.zyngier(a)arm.com, mark.rutland(a)arm.com, martin.petersen(a)oracle.com, mjg59(a)google.com, mkubecek(a)suse.cz, mm-commits(a)vger.kernel.org, pbonzini(a)redhat.com, penberg(a)kernel.org, riel(a)surriel.com, rientjes(a)google.com, torvalds(a)linux-foundation.org, ubraun(a)linux.ibm.com, vbabka(a)suse.cz, viro(a)zeniv.linux.org.uk
The patch titled
Subject: usercopy: mark dma-kmalloc caches as usercopy caches
has been removed from the -mm tree. Its filename was
usercopy-mark-dma-kmalloc-caches-as-usercopy-caches.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Vlastimil Babka <vbabka(a)suse.cz>
Subject: usercopy: mark dma-kmalloc caches as usercopy caches
We have seen a "usercopy: Kernel memory overwrite attempt detected to SLUB
object 'dma-kmalloc-1 k' (offset 0, size 11)!" error on s390x, as IUCV
uses kmalloc() with __GFP_DMA because of memory address restrictions. The
issue has been discussed [2] and it has been noted that if all the kmalloc
caches are marked as usercopy, there's little reason not to mark
dma-kmalloc caches too. The 'dma' part merely means that __GFP_DMA is
used to restrict memory address range.
As Jann Horn put it [3]:
"I think dma-kmalloc slabs should be handled the same way as normal
kmalloc slabs. When a dma-kmalloc allocation is freshly created, it is
just normal kernel memory - even if it might later be used for DMA -, and
it should be perfectly fine to copy_from_user() into such allocations at
that point, and to copy_to_user() out of them at the end. If you look at
the places where such allocations are created, you can see things like
kmemdup(), memcpy() and so on - all normal operations that shouldn't
conceptually be different from usercopy in any relevant way."
Thus this patch marks the dma-kmalloc-* caches as usercopy.
[1] https://bugzilla.suse.com/show_bug.cgi?id=1156053
[2] https://lore.kernel.org/kernel-hardening/bfca96db-bbd0-d958-7732-76e36c667c…
[3] https://lore.kernel.org/kernel-hardening/CAG48ez1a4waGk9kB0WLaSbs4muSoK0AYA…
Link: http://lkml.kernel.org/r/7d810f6d-8085-ea2f-7805-47ba3842dc50@suse.cz
Signed-off-by: Vlastimil Babka <vbabka(a)suse.cz>
Acked-by: Christian Borntraeger <borntraeger(a)de.ibm.com>
Acked-by: Jiri Slaby <jslaby(a)suse.cz>
Cc: Jann Horn <jannh(a)google.com>
Cc: Christoph Hellwig <hch(a)infradead.org>
Cc: Christopher Lameter <cl(a)linux.com>
Cc: Julian Wiedmann <jwi(a)linux.ibm.com>
Cc: Ursula Braun <ubraun(a)linux.ibm.com>
Cc: Alexander Viro <viro(a)zeniv.linux.org.uk>
Cc: David Windsor <dave(a)nullcore.net>
Cc: Pekka Enberg <penberg(a)kernel.org>
Cc: David Rientjes <rientjes(a)google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim(a)lge.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Andy Lutomirski <luto(a)kernel.org>
Cc: "David S. Miller" <davem(a)davemloft.net>
Cc: Laura Abbott <labbott(a)redhat.com>
Cc: Mark Rutland <mark.rutland(a)arm.com>
Cc: "Martin K. Petersen" <martin.petersen(a)oracle.com>
Cc: Paolo Bonzini <pbonzini(a)redhat.com>
Cc: Christoffer Dall <christoffer.dall(a)linaro.org>
Cc: Dave Kleikamp <dave.kleikamp(a)oracle.com>
Cc: Jan Kara <jack(a)suse.cz>
Cc: Luis de Bethencourt <luisbg(a)kernel.org>
Cc: Marc Zyngier <marc.zyngier(a)arm.com>
Cc: Rik van Riel <riel(a)surriel.com>
Cc: Matthew Garrett <mjg59(a)google.com>
Cc: Michal Kubecek <mkubecek(a)suse.cz>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
mm/slab_common.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/mm/slab_common.c~usercopy-mark-dma-kmalloc-caches-as-usercopy-caches
+++ a/mm/slab_common.c
@@ -1303,7 +1303,8 @@ void __init create_kmalloc_caches(slab_f
kmalloc_caches[KMALLOC_DMA][i] = create_kmalloc_cache(
kmalloc_info[i].name[KMALLOC_DMA],
kmalloc_info[i].size,
- SLAB_CACHE_DMA | flags, 0, 0);
+ SLAB_CACHE_DMA | flags, 0,
+ kmalloc_info[i].size);
}
}
#endif
_
Patches currently in -mm which might be from vbabka(a)suse.cz are
kernel-sysctl-support-setting-sysctl-parameters-from-kernel-command-line.patch
kernel-sysctl-support-handling-command-line-aliases.patch
kernel-hung_task-convert-hung_task_panic-boot-parameter-to-sysctl.patch
tools-testing-selftests-sysctl-sysctlsh-support-config_test_sysctl=y.patch
lib-test_sysctl-support-testing-of-sysctl-boot-parameter.patch
lib-test_sysctl-support-testing-of-sysctl-boot-parameter-fix.patch
The following commit has been merged into the x86/urgent branch of tip:
Commit-ID: 5d5103595e9e53048bb7e70ee2673c897ab38300
Gitweb: https://git.kernel.org/tip/5d5103595e9e53048bb7e70ee2673c897ab38300
Author: Sean Christopherson <sean.j.christopherson(a)intel.com>
AuthorDate: Mon, 08 Jun 2020 10:41:34 -07:00
Committer: Borislav Petkov <bp(a)suse.de>
CommitterDate: Mon, 15 Jun 2020 14:18:37 +02:00
x86/cpu: Reinitialize IA32_FEAT_CTL MSR on BSP during wakeup
Reinitialize IA32_FEAT_CTL on the BSP during wakeup to handle the case
where firmware doesn't initialize or save/restore across S3. This fixes
a bug where IA32_FEAT_CTL is left uninitialized and results in VMXON
taking a #GP due to VMX not being fully enabled, i.e. breaks KVM.
Use init_ia32_feat_ctl() to "restore" IA32_FEAT_CTL as it already deals
with the case where the MSR is locked, and because APs already redo
init_ia32_feat_ctl() during suspend by virtue of the SMP boot flow being
used to reinitialize APs upon wakeup. Do the call in the early wakeup
flow to avoid dependencies in the syscore_ops chain, e.g. simply adding
a resume hook is not guaranteed to work, as KVM does VMXON in its own
resume hook, kvm_resume(), when KVM has active guests.
Fixes: 21bd3467a58e ("KVM: VMX: Drop initialization of IA32_FEAT_CTL MSR")
Reported-by: Brad Campbell <lists2009(a)fnarfbargle.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson(a)intel.com>
Signed-off-by: Borislav Petkov <bp(a)suse.de>
Reviewed-by: Liam Merwick <liam.merwick(a)oracle.com>
Reviewed-by: Maxim Levitsky <mlevitsk(a)redhat.com>
Tested-by: Brad Campbell <lists2009(a)fnarfbargle.com>
Cc: stable(a)vger.kernel.org # v5.6
Link: https://lkml.kernel.org/r/20200608174134.11157-1-sean.j.christopherson@inte…
---
arch/x86/include/asm/cpu.h | 5 +++++
arch/x86/kernel/cpu/centaur.c | 1 +
arch/x86/kernel/cpu/cpu.h | 4 ----
arch/x86/kernel/cpu/zhaoxin.c | 1 +
arch/x86/power/cpu.c | 6 ++++++
5 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
index dd17c2d..da78ccb 100644
--- a/arch/x86/include/asm/cpu.h
+++ b/arch/x86/include/asm/cpu.h
@@ -58,4 +58,9 @@ static inline bool handle_guest_split_lock(unsigned long ip)
return false;
}
#endif
+#ifdef CONFIG_IA32_FEAT_CTL
+void init_ia32_feat_ctl(struct cpuinfo_x86 *c);
+#else
+static inline void init_ia32_feat_ctl(struct cpuinfo_x86 *c) {}
+#endif
#endif /* _ASM_X86_CPU_H */
diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c
index 4267925..c5cf336 100644
--- a/arch/x86/kernel/cpu/centaur.c
+++ b/arch/x86/kernel/cpu/centaur.c
@@ -3,6 +3,7 @@
#include <linux/sched.h>
#include <linux/sched/clock.h>
+#include <asm/cpu.h>
#include <asm/cpufeature.h>
#include <asm/e820/api.h>
#include <asm/mtrr.h>
diff --git a/arch/x86/kernel/cpu/cpu.h b/arch/x86/kernel/cpu/cpu.h
index fb538fc..9d03369 100644
--- a/arch/x86/kernel/cpu/cpu.h
+++ b/arch/x86/kernel/cpu/cpu.h
@@ -81,8 +81,4 @@ extern void update_srbds_msr(void);
extern u64 x86_read_arch_cap_msr(void);
-#ifdef CONFIG_IA32_FEAT_CTL
-void init_ia32_feat_ctl(struct cpuinfo_x86 *c);
-#endif
-
#endif /* ARCH_X86_CPU_H */
diff --git a/arch/x86/kernel/cpu/zhaoxin.c b/arch/x86/kernel/cpu/zhaoxin.c
index df1358b..05fa4ef 100644
--- a/arch/x86/kernel/cpu/zhaoxin.c
+++ b/arch/x86/kernel/cpu/zhaoxin.c
@@ -2,6 +2,7 @@
#include <linux/sched.h>
#include <linux/sched/clock.h>
+#include <asm/cpu.h>
#include <asm/cpufeature.h>
#include "cpu.h"
diff --git a/arch/x86/power/cpu.c b/arch/x86/power/cpu.c
index 7c65102..db1378c 100644
--- a/arch/x86/power/cpu.c
+++ b/arch/x86/power/cpu.c
@@ -193,6 +193,8 @@ static void fix_processor_context(void)
*/
static void notrace __restore_processor_state(struct saved_context *ctxt)
{
+ struct cpuinfo_x86 *c;
+
if (ctxt->misc_enable_saved)
wrmsrl(MSR_IA32_MISC_ENABLE, ctxt->misc_enable);
/*
@@ -263,6 +265,10 @@ static void notrace __restore_processor_state(struct saved_context *ctxt)
mtrr_bp_restore();
perf_restore_debug_store();
msr_restore_context(ctxt);
+
+ c = &cpu_data(smp_processor_id());
+ if (cpu_has(c, X86_FEATURE_MSR_IA32_FEAT_CTL))
+ init_ia32_feat_ctl(c);
}
/* Needed by apm.c */
Like other vectors already patched, this one here allows the root user
to load ACPI tables, which enables arbitrary physical address writes,
which in turn makes it possible to disable lockdown. This patch prevents
this by checking the lockdown status before allowing a new ACPI table to be
installed. The link in the trailer shows a PoC of how this might be
used.
Link: https://git.zx2c4.com/american-unsigned-language/tree/american-unsigned-lan…
Cc: stable(a)vger.kernel.org
Signed-off-by: Jason A. Donenfeld <Jason(a)zx2c4.com>
---
drivers/acpi/acpi_configfs.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/acpi/acpi_configfs.c b/drivers/acpi/acpi_configfs.c
index ece8c1a921cc..88c8af455ea3 100644
--- a/drivers/acpi/acpi_configfs.c
+++ b/drivers/acpi/acpi_configfs.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/configfs.h>
#include <linux/acpi.h>
+#include <linux/security.h>
#include "acpica/accommon.h"
#include "acpica/actables.h"
@@ -28,7 +29,10 @@ static ssize_t acpi_table_aml_write(struct config_item *cfg,
{
const struct acpi_table_header *header = data;
struct acpi_table *table;
- int ret;
+ int ret = security_locked_down(LOCKDOWN_ACPI_TABLES);
+
+ if (ret)
+ return ret;
table = container_of(cfg, struct acpi_table, cfg);
--
2.27.0
If interrupt comes late, during probe error path or device remove (could
be triggered with CONFIG_DEBUG_SHIRQ), the interrupt handler
dspi_interrupt() will access registers with the clock being disabled. This
leads to external abort on non-linefetch on Toradex Colibri VF50 module
(with Vybrid VF5xx):
$ echo 4002d000.spi > /sys/devices/platform/soc/40000000.bus/4002d000.spi/driver/unbind
Unhandled fault: external abort on non-linefetch (0x1008) at 0x8887f02c
Internal error: : 1008 [#1] ARM
CPU: 0 PID: 136 Comm: sh Not tainted 5.7.0-next-20200610-00009-g5c913fa0f9c5-dirty #74
Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
(regmap_mmio_read32le) from [<8061885c>] (regmap_mmio_read+0x48/0x68)
(regmap_mmio_read) from [<8060e3b8>] (_regmap_bus_reg_read+0x24/0x28)
(_regmap_bus_reg_read) from [<80611c50>] (_regmap_read+0x70/0x1c0)
(_regmap_read) from [<80611dec>] (regmap_read+0x4c/0x6c)
(regmap_read) from [<80678ca0>] (dspi_interrupt+0x3c/0xa8)
(dspi_interrupt) from [<8017acec>] (free_irq+0x26c/0x3cc)
(free_irq) from [<8017dcec>] (devm_irq_release+0x1c/0x20)
(devm_irq_release) from [<805f98ec>] (release_nodes+0x1e4/0x298)
(release_nodes) from [<805f9ac8>] (devres_release_all+0x40/0x60)
(devres_release_all) from [<805f5134>] (device_release_driver_internal+0x108/0x1ac)
(device_release_driver_internal) from [<805f521c>] (device_driver_detach+0x20/0x24)
The resource-managed framework should not be used for interrupt handling,
because the resource will be released too late - after disabling clocks.
The interrupt handler is not prepared for such case.
Fixes: 349ad66c0ab0 ("spi:Add Freescale DSPI driver for Vybrid VF610 platform")
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzk(a)kernel.org>
---
This is an follow up of my other patch for I2C IMX driver [1]. Let's fix the
issues consistently.
[1] https://lore.kernel.org/lkml/1592130544-19759-2-git-send-email-krzk@kernel.…
---
drivers/spi/spi-fsl-dspi.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
index 58190c94561f..57e7a626ba00 100644
--- a/drivers/spi/spi-fsl-dspi.c
+++ b/drivers/spi/spi-fsl-dspi.c
@@ -1385,8 +1385,8 @@ static int dspi_probe(struct platform_device *pdev)
goto poll_mode;
}
- ret = devm_request_irq(&pdev->dev, dspi->irq, dspi_interrupt,
- IRQF_SHARED, pdev->name, dspi);
+ ret = request_threaded_irq(dspi->irq, dspi_interrupt, NULL,
+ IRQF_SHARED, pdev->name, dspi);
if (ret < 0) {
dev_err(&pdev->dev, "Unable to attach DSPI interrupt\n");
goto out_clk_put;
@@ -1400,7 +1400,7 @@ static int dspi_probe(struct platform_device *pdev)
ret = dspi_request_dma(dspi, res->start);
if (ret < 0) {
dev_err(&pdev->dev, "can't get dma channels\n");
- goto out_clk_put;
+ goto out_free_irq;
}
}
@@ -1415,11 +1415,14 @@ static int dspi_probe(struct platform_device *pdev)
ret = spi_register_controller(ctlr);
if (ret != 0) {
dev_err(&pdev->dev, "Problem registering DSPI ctlr\n");
- goto out_clk_put;
+ goto out_free_irq;
}
return ret;
+out_free_irq:
+ if (dspi->irq > 0)
+ free_irq(dspi->irq, dspi);
out_clk_put:
clk_disable_unprepare(dspi->clk);
out_ctlr_put:
@@ -1435,6 +1438,8 @@ static int dspi_remove(struct platform_device *pdev)
/* Disconnect from the SPI framework */
dspi_release_dma(dspi);
+ if (dspi->irq > 0)
+ free_irq(dspi->irq, dspi);
clk_disable_unprepare(dspi->clk);
spi_unregister_controller(dspi->ctlr);
--
2.7.4
The following commit has been merged into the x86/urgent branch of tip:
Commit-ID: 8e742aa79780b13cd300a42198c1a4cea9c89905
Gitweb: https://git.kernel.org/tip/8e742aa79780b13cd300a42198c1a4cea9c89905
Author: Jiri Slaby <jslaby(a)suse.cz>
AuthorDate: Wed, 10 Jun 2020 13:48:51 +02:00
Committer: Thomas Gleixner <tglx(a)linutronix.de>
CommitterDate: Mon, 15 Jun 2020 11:16:27 +02:00
syscalls: Fix offset type of ksys_ftruncate()
After the commit below, truncate() on x86 32bit uses ksys_ftruncate(). But
ksys_ftruncate() truncates the offset to unsigned long.
Switch the type of offset to loff_t which is what do_sys_ftruncate()
expects.
Fixes: 121b32a58a3a (x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments)
Signed-off-by: Jiri Slaby <jslaby(a)suse.cz>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Reviewed-by: Brian Gerst <brgerst(a)gmail.com>
Cc: stable(a)vger.kernel.org
Link: https://lkml.kernel.org/r/20200610114851.28549-1-jslaby@suse.cz
---
include/linux/syscalls.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 7c354c2..b951a87 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -1360,7 +1360,7 @@ static inline long ksys_lchown(const char __user *filename, uid_t user,
extern long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
-static inline long ksys_ftruncate(unsigned int fd, unsigned long length)
+static inline long ksys_ftruncate(unsigned int fd, loff_t length)
{
return do_sys_ftruncate(fd, length, 1);
}
Previously there were two chunks of code where the logic to receive file
descriptors was duplicated in net. The compat version of copying
file descriptors via SCM_RIGHTS did not have logic to update cgroups.
Logic to change the cgroup data was added in:
commit 48a87cc26c13 ("net: netprio: fd passed in SCM_RIGHTS datagram not set correctly")
commit d84295067fc7 ("net: net_cls: fd passed in SCM_RIGHTS datagram not set correctly")
This was not copied to the compat path. This commit fixes that, and thus
should be cherry-picked into stable.
This introduces a helper (file_receive) which encapsulates the logic for
handling calling security hooks as well as manipulating cgroup information.
This helper can then be used other places in the kernel where file
descriptors are copied between processes
I tested cgroup classid setting on both the compat (x32) path, and the
native path to ensure that when moving the file descriptor the classid
is set.
Signed-off-by: Sargun Dhillon <sargun(a)sargun.me>
Suggested-by: Kees Cook <keescook(a)chromium.org>
Cc: Al Viro <viro(a)zeniv.linux.org.uk>
Cc: Christian Brauner <christian.brauner(a)ubuntu.com>
Cc: Daniel Wagner <daniel.wagner(a)bmw-carit.de>
Cc: David S. Miller <davem(a)davemloft.net>
Cc: Jann Horn <jannh(a)google.com>,
Cc: John Fastabend <john.r.fastabend(a)intel.com>
Cc: Tejun Heo <tj(a)kernel.org>
Cc: Tycho Andersen <tycho(a)tycho.ws>
Cc: stable(a)vger.kernel.org
Cc: cgroups(a)vger.kernel.org
Cc: linux-fsdevel(a)vger.kernel.org
Cc: linux-kernel(a)vger.kernel.org
---
fs/file.c | 35 +++++++++++++++++++++++++++++++++++
include/linux/file.h | 1 +
net/compat.c | 10 +++++-----
net/core/scm.c | 14 ++++----------
4 files changed, 45 insertions(+), 15 deletions(-)
diff --git a/fs/file.c b/fs/file.c
index abb8b7081d7a..5afd76fca8c2 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -18,6 +18,9 @@
#include <linux/bitops.h>
#include <linux/spinlock.h>
#include <linux/rcupdate.h>
+#include <net/sock.h>
+#include <net/netprio_cgroup.h>
+#include <net/cls_cgroup.h>
unsigned int sysctl_nr_open __read_mostly = 1024*1024;
unsigned int sysctl_nr_open_min = BITS_PER_LONG;
@@ -931,6 +934,38 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags)
return err;
}
+/*
+ * File Receive - Receive a file from another process
+ *
+ * This function is designed to receive files from other tasks. It encapsulates
+ * logic around security and cgroups. The file descriptor provided must be a
+ * freshly allocated (unused) file descriptor.
+ *
+ * This helper does not consume a reference to the file, so the caller must put
+ * their reference.
+ *
+ * Returns 0 upon success.
+ */
+int file_receive(int fd, struct file *file)
+{
+ struct socket *sock;
+ int err;
+
+ err = security_file_receive(file);
+ if (err)
+ return err;
+
+ fd_install(fd, get_file(file));
+
+ sock = sock_from_file(file, &err);
+ if (sock) {
+ sock_update_netprioidx(&sock->sk->sk_cgrp_data);
+ sock_update_classid(&sock->sk->sk_cgrp_data);
+ }
+
+ return 0;
+}
+
static int ksys_dup3(unsigned int oldfd, unsigned int newfd, int flags)
{
int err = -EBADF;
diff --git a/include/linux/file.h b/include/linux/file.h
index 142d102f285e..7b56dc23e560 100644
--- a/include/linux/file.h
+++ b/include/linux/file.h
@@ -94,4 +94,5 @@ extern void fd_install(unsigned int fd, struct file *file);
extern void flush_delayed_fput(void);
extern void __fput_sync(struct file *);
+extern int file_receive(int fd, struct file *file);
#endif /* __LINUX_FILE_H */
diff --git a/net/compat.c b/net/compat.c
index 4bed96e84d9a..8ac0e7e09208 100644
--- a/net/compat.c
+++ b/net/compat.c
@@ -293,9 +293,6 @@ void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
for (i = 0, cmfptr = (int __user *) CMSG_COMPAT_DATA(cm); i < fdmax; i++, cmfptr++) {
int new_fd;
- err = security_file_receive(fp[i]);
- if (err)
- break;
err = get_unused_fd_flags(MSG_CMSG_CLOEXEC & kmsg->msg_flags
? O_CLOEXEC : 0);
if (err < 0)
@@ -306,8 +303,11 @@ void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm)
put_unused_fd(new_fd);
break;
}
- /* Bump the usage count and install the file. */
- fd_install(new_fd, get_file(fp[i]));
+ err = file_receive(new_fd, fp[i]);
+ if (err) {
+ put_unused_fd(new_fd);
+ break;
+ }
}
if (i > 0) {
diff --git a/net/core/scm.c b/net/core/scm.c
index dc6fed1f221c..ba93abf2881b 100644
--- a/net/core/scm.c
+++ b/net/core/scm.c
@@ -303,11 +303,7 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
for (i=0, cmfptr=(__force int __user *)CMSG_DATA(cm); i<fdmax;
i++, cmfptr++)
{
- struct socket *sock;
int new_fd;
- err = security_file_receive(fp[i]);
- if (err)
- break;
err = get_unused_fd_flags(MSG_CMSG_CLOEXEC & msg->msg_flags
? O_CLOEXEC : 0);
if (err < 0)
@@ -318,13 +314,11 @@ void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm)
put_unused_fd(new_fd);
break;
}
- /* Bump the usage count and install the file. */
- sock = sock_from_file(fp[i], &err);
- if (sock) {
- sock_update_netprioidx(&sock->sk->sk_cgrp_data);
- sock_update_classid(&sock->sk->sk_cgrp_data);
+ err = file_receive(new_fd, fp[i]);
+ if (err) {
+ put_unused_fd(new_fd);
+ break;
}
- fd_install(new_fd, get_file(fp[i]));
}
if (i > 0)
--
2.25.1
Inode's i_io_list list head is used to attach inode to several different
lists - wb->{b_dirty, b_dirty_time, b_io, b_more_io}. When flush worker
prepares a list of inodes to writeback e.g. for sync(2), it moves inodes
to b_io list. Thus it is critical for sync(2) data integrity guarantees
that inode is not requeued to any other writeback list when inode is
queued for processing by flush worker. That's the reason why
writeback_single_inode() does not touch i_io_list (unless the inode is
completely clean) and why __mark_inode_dirty() does not touch i_io_list
if I_SYNC flag is set.
However there are two flaws in the current logic:
1) When inode has only I_DIRTY_TIME set but it is already queued in b_io
list due to sync(2), concurrent __mark_inode_dirty(inode, I_DIRTY_SYNC)
can still move inode back to b_dirty list resulting in skipping
writeback of inode time stamps during sync(2).
2) When inode is on b_dirty_time list and writeback_single_inode() races
with __mark_inode_dirty() like:
writeback_single_inode() __mark_inode_dirty(inode, I_DIRTY_PAGES)
inode->i_state |= I_SYNC
__writeback_single_inode()
inode->i_state |= I_DIRTY_PAGES;
if (inode->i_state & I_SYNC)
bail
if (!(inode->i_state & I_DIRTY_ALL))
- not true so nothing done
We end up with I_DIRTY_PAGES inode on b_dirty_time list and thus
standard background writeback will not writeback this inode leading to
possible dirty throttling stalls etc. (thanks to Martijn Coenen for this
analysis).
Fix these problems by tracking whether inode is queued in b_io or
b_more_io lists in a new I_SYNC_QUEUED flag. When this flag is set, we
know flush worker has queued inode and we should not touch i_io_list.
On the other hand we also know that once flush worker is done with the
inode it will requeue the inode to appropriate dirty list. When
I_SYNC_QUEUED is not set, __mark_inode_dirty() can (and must) move inode
to appropriate dirty list.
Reported-by: Martijn Coenen <maco(a)android.com>
Fixes: 0ae45f63d4ef ("vfs: add support for a lazytime mount option")
CC: stable(a)vger.kernel.org
Signed-off-by: Jan Kara <jack(a)suse.cz>
---
fs/fs-writeback.c | 17 ++++++++++++-----
include/linux/fs.h | 8 ++++++--
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index ff0b18331590..f470c10641c5 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -146,6 +146,7 @@ static void inode_io_list_del_locked(struct inode *inode,
assert_spin_locked(&wb->list_lock);
assert_spin_locked(&inode->i_lock);
+ inode->i_state &= ~I_SYNC_QUEUED;
list_del_init(&inode->i_io_list);
wb_io_lists_depopulated(wb);
}
@@ -1187,6 +1188,7 @@ static void redirty_tail_locked(struct inode *inode, struct bdi_writeback *wb)
inode->dirtied_when = jiffies;
}
inode_io_list_move_locked(inode, wb, &wb->b_dirty);
+ inode->i_state &= ~I_SYNC_QUEUED;
}
static void redirty_tail(struct inode *inode, struct bdi_writeback *wb)
@@ -1262,8 +1264,11 @@ static int move_expired_inodes(struct list_head *delaying_queue,
break;
list_move(&inode->i_io_list, &tmp);
moved++;
+ spin_lock(&inode->i_lock);
if (flags & EXPIRE_DIRTY_ATIME)
- set_bit(__I_DIRTY_TIME_EXPIRED, &inode->i_state);
+ inode->i_state |= I_DIRTY_TIME_EXPIRED;
+ inode->i_state |= I_SYNC_QUEUED;
+ spin_unlock(&inode->i_lock);
if (sb_is_blkdev_sb(inode->i_sb))
continue;
if (sb && sb != inode->i_sb)
@@ -1438,6 +1443,7 @@ static void requeue_inode(struct inode *inode, struct bdi_writeback *wb,
} else if (inode->i_state & I_DIRTY_TIME) {
inode->dirtied_when = jiffies;
inode_io_list_move_locked(inode, wb, &wb->b_dirty_time);
+ inode->i_state &= ~I_SYNC_QUEUED;
} else {
/* The inode is clean. Remove from writeback lists. */
inode_io_list_del_locked(inode, wb);
@@ -2301,11 +2307,12 @@ void __mark_inode_dirty(struct inode *inode, int flags)
inode->i_state |= flags;
/*
- * If the inode is being synced, just update its dirty state.
- * The unlocker will place the inode on the appropriate
- * superblock list, based upon its state.
+ * If the inode is queued for writeback by flush worker, just
+ * update its dirty state. Once the flush worker is done with
+ * the inode it will place it on the appropriate superblock
+ * list, based upon its state.
*/
- if (inode->i_state & I_SYNC)
+ if (inode->i_state & I_SYNC_QUEUED)
goto out_unlock_inode;
/*
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 19ef6c88c152..48556efcdcf0 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2157,6 +2157,10 @@ static inline void kiocb_clone(struct kiocb *kiocb, struct kiocb *kiocb_src,
*
* I_DONTCACHE Evict inode as soon as it is not used anymore.
*
+ * I_SYNC_QUEUED Inode is queued in b_io or b_more_io writeback lists.
+ * Used to detect that mark_inode_dirty() should not move
+ * inode between dirty lists.
+ *
* Q: What is the difference between I_WILL_FREE and I_FREEING?
*/
#define I_DIRTY_SYNC (1 << 0)
@@ -2174,12 +2178,12 @@ static inline void kiocb_clone(struct kiocb *kiocb, struct kiocb *kiocb_src,
#define I_DIO_WAKEUP (1 << __I_DIO_WAKEUP)
#define I_LINKABLE (1 << 10)
#define I_DIRTY_TIME (1 << 11)
-#define __I_DIRTY_TIME_EXPIRED 12
-#define I_DIRTY_TIME_EXPIRED (1 << __I_DIRTY_TIME_EXPIRED)
+#define I_DIRTY_TIME_EXPIRED (1 << 12)
#define I_WB_SWITCH (1 << 13)
#define I_OVL_INUSE (1 << 14)
#define I_CREATING (1 << 15)
#define I_DONTCACHE (1 << 16)
+#define I_SYNC_QUEUED (1 << 17)
#define I_DIRTY_INODE (I_DIRTY_SYNC | I_DIRTY_DATASYNC)
#define I_DIRTY (I_DIRTY_INODE | I_DIRTY_PAGES)
--
2.16.4
Hello,
I found the following sctp commits:
582eea230536a6f104097dd46205822005d5fe3a ("sctp: fix possibly using a
bad saddr with a given dst")
backported in the following stable versions: v5.6.x, v5.5.x, v4.19.x,
v4.14.x, v4.9.x, v4.4.x.
5c3e82fe159622e46e91458c1a6509c321a62820 ("sctp: fix refcount bug in
sctp_wfree")
backported in the following stable versions: v5.6.x, v5.5.x, v4.19.x,
v4.14.x, v4.9.x
However I cannot find them in v5.4.x yet. I checked stable queue on
netdev side (http://patchwork.ozlabs.org/bundle/davem/stable/?state=*)
but also main stable queue
https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git
I was wondering whether it was an oversight or was it expected?
Sorry for the noise if I'm mistaken.
Best regards,
--
William
Hello,
I found the following commit fbe4e0c1b298b4665ee6915266c9d6c5b934ef4a
("ipv4: fix a RCU-list lock in fib_triestat_seq_show") backported in
the following stable versions: v5.6.x, v5.5.x, v4.19.x, v4.14.x,
v4.9.x, v4.4.x.
However I cannot find it in v5.4.x yet. I checked stable queue on
netdev side (http://patchwork.ozlabs.org/bundle/davem/stable/?state=*)
but also main stable queue
https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git
I was wondering whether it was an oversight or it was expected?
Sorry for the noise if I'm mistaken.
Best regards,
--
William
From: Hans de Goede <hdegoede(a)redhat.com>
Before commit cfc4c189bc70 ("pwm: Read initial hardware state at request
time"), a driver's get_state callback would get called once per PWM from
pwmchip_add().
pwm-lpss' runtime-pm code was relying on this, getting a runtime-pm ref for
PWMs which are enabled at probe time from within its get_state callback,
before enabling runtime-pm.
The change to calling get_state at request time causes a number of
problems:
1. PWMs enabled at probe time may get runtime suspended before they are
requested, causing e.g. a LCD backlight controlled by the PWM to turn off.
2. When the request happens when the PWM has been runtime suspended, the
ctrl register will read all 1 / 0xffffffff, causing get_state to store
bogus values in the pwm_state.
3. get_state was using an async pm_runtime_get() call, because it assumed
that runtime-pm has not been enabled yet. If shortly after the request an
apply call is made, then the pwm_lpss_is_updating() check may trigger
because the resume triggered by the pm_runtime_get() call is not complete
yet, so the ctrl register still reads all 1 / 0xffffffff.
This commit fixes these issues by moving the initial pm_runtime_get() call
for PWMs which are enabled at probe time to the pwm_lpss_probe() function;
and by making get_state take a runtime-pm ref before reading the ctrl reg.
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1828927
Fixes: cfc4c189bc70 ("pwm: Read initial hardware state at request time")
Cc: stable(a)vger.kernel.org
Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Signed-off-by: Thierry Reding <thierry.reding(a)gmail.com>
---
drivers/pwm/pwm-lpss.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/pwm/pwm-lpss.c b/drivers/pwm/pwm-lpss.c
index 75bbfe5f3bc2..9d965ffe66d1 100644
--- a/drivers/pwm/pwm-lpss.c
+++ b/drivers/pwm/pwm-lpss.c
@@ -158,7 +158,6 @@ static int pwm_lpss_apply(struct pwm_chip *chip, struct pwm_device *pwm,
return 0;
}
-/* This function gets called once from pwmchip_add to get the initial state */
static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
struct pwm_state *state)
{
@@ -167,6 +166,8 @@ static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
unsigned long long base_unit, freq, on_time_div;
u32 ctrl;
+ pm_runtime_get_sync(chip->dev);
+
base_unit_range = BIT(lpwm->info->base_unit_bits);
ctrl = pwm_lpss_read(pwm);
@@ -187,8 +188,7 @@ static void pwm_lpss_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
state->polarity = PWM_POLARITY_NORMAL;
state->enabled = !!(ctrl & PWM_ENABLE);
- if (state->enabled)
- pm_runtime_get(chip->dev);
+ pm_runtime_put(chip->dev);
}
static const struct pwm_ops pwm_lpss_ops = {
@@ -202,7 +202,8 @@ struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r,
{
struct pwm_lpss_chip *lpwm;
unsigned long c;
- int ret;
+ int i, ret;
+ u32 ctrl;
if (WARN_ON(info->npwm > MAX_PWMS))
return ERR_PTR(-ENODEV);
@@ -232,6 +233,12 @@ struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, struct resource *r,
return ERR_PTR(ret);
}
+ for (i = 0; i < lpwm->info->npwm; i++) {
+ ctrl = pwm_lpss_read(&lpwm->chip.pwms[i]);
+ if (ctrl & PWM_ENABLE)
+ pm_runtime_get(dev);
+ }
+
return lpwm;
}
EXPORT_SYMBOL_GPL(pwm_lpss_probe);
--
2.20.1
> Fix /proc/bootconfig to show the correctly choose the
> double or single quotes according to the value.
I suggest to improve this wording a bit.
Regards,
Markus
Some of tests in xfstests failed with cifsd kernel server since commit
e80ddeb2f70e. cifsd kernel server validates credit charge from client
by calculating it base on max((InputCount + OutputCount) and
(MaxInputResponse + MaxOutputResponse)) according to specification.
MS-SMB2 specification describe credit charge calculation of smb2 ioctl :
If Connection.SupportsMultiCredit is TRUE, the server MUST validate
CreditCharge based on the maximum of (InputCount + OutputCount) and
(MaxInputResponse + MaxOutputResponse), as specified in section 3.3.5.2.5.
If the validation fails, it MUST fail the IOCTL request with
STATUS_INVALID_PARAMETER.
This patch add indatalen that can be a non-zero value to calculation of
credit charge in SMB2_ioctl_init().
Fixes: e80ddeb2f70e ("smb3: fix incorrect number of credits when ioctl
MaxOutputResponse > 64K")
Cc: Stable <stable(a)vger.kernel.org>
Cc: Aurelien Aptel <aaptel(a)suse.com>
Cc: Steve French <smfrench(a)gmail.com>
Signed-off-by: Namjae Jeon <namjae.jeon(a)samsung.com>
---
fs/cifs/smb2pdu.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index ded96b529a4d..86d894499fbb 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -2973,7 +2973,9 @@ SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server,
* response size smaller.
*/
req->MaxOutputResponse = cpu_to_le32(max_response_size);
- req->sync_hdr.CreditCharge = cpu_to_le16(DIV_ROUND_UP(max_response_size, SMB2_MAX_BUFFER_SIZE));
+ req->sync_hdr.CreditCharge =
+ cpu_to_le16(DIV_ROUND_UP(max(indatalen, max_response_size),
+ SMB2_MAX_BUFFER_SIZE));
if (is_fsctl)
req->Flags = cpu_to_le32(SMB2_0_IOCTL_IS_FSCTL);
else
--
2.17.1
From: "Eric W. Biederman" <ebiederm(a)xmission.com>
Recently syzbot reported that unmounting proc when there is an ongoing
inotify watch on the root directory of proc could result in a use
after free when the watch is removed after the unmount of proc
when the watcher exits.
Commit 69879c01a0c3 ("proc: Remove the now unnecessary internal mount
of proc") made it easier to unmount proc and allowed syzbot to see the
problem, but looking at the code it has been around for a long time.
Looking at the code the fsnotify watch should have been removed by
fsnotify_sb_delete in generic_shutdown_super. Unfortunately the inode
was allocated with new_inode_pseudo instead of new_inode so the inode
was not on the sb->s_inodes list. Which prevented
fsnotify_unmount_inodes from finding the inode and removing the watch
as well as made it so the "VFS: Busy inodes after unmount" warning
could not find the inodes to warn about them.
Make all of the inodes in proc visible to generic_shutdown_super,
and fsnotify_sb_delete by using new_inode instead of new_inode_pseudo.
The only functional difference is that new_inode places the inodes
on the sb->s_inodes list.
I wrote a small test program and I can verify that without changes it
can trigger this issue, and by replacing new_inode_pseudo with
new_inode the issues goes away.
Cc: stable(a)vger.kernel.org
Link: https://lkml.kernel.org/r/000000000000d788c905a7dfa3f4@google.com
Reported-by: syzbot+7d2debdcdb3cb93c1e5e(a)syzkaller.appspotmail.com
Fixes: 0097875bd415 ("proc: Implement /proc/thread-self to point at the directory of the current thread")
Fixes: 021ada7dff22 ("procfs: switch /proc/self away from proc_dir_entry")
Fixes: 51f0885e5415 ("vfs,proc: guarantee unique inodes in /proc")
Signed-off-by: "Eric W. Biederman" <ebiederm(a)xmission.com>
---
fs/proc/inode.c | 2 +-
fs/proc/self.c | 2 +-
fs/proc/thread_self.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index f40c2532c057..28d6105e908e 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -617,7 +617,7 @@ const struct inode_operations proc_link_inode_operations = {
struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)
{
- struct inode *inode = new_inode_pseudo(sb);
+ struct inode *inode = new_inode(sb);
if (inode) {
inode->i_ino = de->low_ino;
diff --git a/fs/proc/self.c b/fs/proc/self.c
index ca5158fa561c..72cd69bcaf4a 100644
--- a/fs/proc/self.c
+++ b/fs/proc/self.c
@@ -43,7 +43,7 @@ int proc_setup_self(struct super_block *s)
inode_lock(root_inode);
self = d_alloc_name(s->s_root, "self");
if (self) {
- struct inode *inode = new_inode_pseudo(s);
+ struct inode *inode = new_inode(s);
if (inode) {
inode->i_ino = self_inum;
inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
diff --git a/fs/proc/thread_self.c b/fs/proc/thread_self.c
index ac284f409568..a553273fbd41 100644
--- a/fs/proc/thread_self.c
+++ b/fs/proc/thread_self.c
@@ -43,7 +43,7 @@ int proc_setup_thread_self(struct super_block *s)
inode_lock(root_inode);
thread_self = d_alloc_name(s->s_root, "thread-self");
if (thread_self) {
- struct inode *inode = new_inode_pseudo(s);
+ struct inode *inode = new_inode(s);
if (inode) {
inode->i_ino = thread_self_inum;
inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
--
2.20.1
The suspend entry and exit code for 32-bit Tegra devices assumes that
the PLLM (which is used to provide the clock for external memory)
is always enabled on entry to suspend. Hence, the current code always
disables the PLLM on entry to suspend and re-enables the PLLM on exit
from suspend.
Since the introduction of the Tegra124 EMC driver by commit 73a7f0a90641
("memory: tegra: Add EMC (external memory controller) driver"), which is
used to scale the EMC frequency, PLLM may not be the current clock
source for the EMC on entry to suspend and hence may not be enabled.
Always enabling the PLLM on exit from suspend can cause the actual
status on the PLL to be different from that reported by the common clock
framework.
On kernels prior to v4.5, the code to set the rate of the PLLM had a
test to verify if the PLL was enabled and if the PLL was enabled,
setting the rate would fail. Since commit 267b62a96951
("clk: tegra: pll: Update PLLM handling") the test to see if PLLM is
enabled was removed.
With these earlier kernels, if the PLLM is disabled on entering suspend
and the EMC driver attempts to set the parent of the EMC clock to the
PLLM on exiting suspend, then the set rate for the PLLM will fail and in
turn cause the resume to fail.
We should not be re-enabling the PLLM on resume from suspend unless it
was enabled on entry to suspend. Therefore, fix this by saving the state
of PLLM on entry to suspend and only re-enable it, if it was already
enabled.
Fixes: 73a7f0a90641 ("memory: tegra: Add EMC (external memory controller) driver")
Cc: stable(a)vger.kernel.org
Signed-off-by: Jon Hunter <jonathanh(a)nvidia.com>
---
arch/arm/mach-tegra/sleep-tegra30.S | 33 +++++++++++++++++++++++------
1 file changed, 27 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-tegra/sleep-tegra30.S b/arch/arm/mach-tegra/sleep-tegra30.S
index 3341a12bbb9c..c2f0793a424f 100644
--- a/arch/arm/mach-tegra/sleep-tegra30.S
+++ b/arch/arm/mach-tegra/sleep-tegra30.S
@@ -337,26 +337,42 @@ ENTRY(tegra30_lp1_reset)
add r1, r1, #2
wait_until r1, r7, r3
- /* enable PLLM via PMC */
+ /* restore PLLM state */
mov32 r2, TEGRA_PMC_BASE
+ adr r7, tegra_pllm_status
+ ldr r1, [r7]
+ cmp r2, #(1 << 12)
+ bne _skip_pllm
+
ldr r1, [r2, #PMC_PLLP_WB0_OVERRIDE]
orr r1, r1, #(1 << 12)
str r1, [r2, #PMC_PLLP_WB0_OVERRIDE]
pll_enable r1, r0, CLK_RESET_PLLM_BASE, 0
+ pll_locked r1, r0, CLK_RESET_PLLM_BASE
+
+_skip_pllm:
pll_enable r1, r0, CLK_RESET_PLLC_BASE, 0
pll_enable r1, r0, CLK_RESET_PLLX_BASE, 0
b _pll_m_c_x_done
_no_pll_iddq_exit:
- /* enable PLLM via PMC */
+ /* restore PLLM state */
mov32 r2, TEGRA_PMC_BASE
+ adr r7, tegra_pllm_status
+ ldr r1, [r7]
+ cmp r2, #(1 << 12)
+ bne _skip_pllm_no_iddq
+
ldr r1, [r2, #PMC_PLLP_WB0_OVERRIDE]
orr r1, r1, #(1 << 12)
str r1, [r2, #PMC_PLLP_WB0_OVERRIDE]
pll_enable r1, r0, CLK_RESET_PLLM_BASE, CLK_RESET_PLLM_MISC
+ pll_locked r1, r0, CLK_RESET_PLLM_BASE
+
+_skip_pllm_no_iddq:
pll_enable r1, r0, CLK_RESET_PLLC_BASE, CLK_RESET_PLLC_MISC
pll_enable r1, r0, CLK_RESET_PLLX_BASE, CLK_RESET_PLLX_MISC
@@ -364,7 +380,6 @@ _pll_m_c_x_done:
pll_enable r1, r0, CLK_RESET_PLLP_BASE, CLK_RESET_PLLP_MISC
pll_enable r1, r0, CLK_RESET_PLLA_BASE, CLK_RESET_PLLA_MISC
- pll_locked r1, r0, CLK_RESET_PLLM_BASE
pll_locked r1, r0, CLK_RESET_PLLP_BASE
pll_locked r1, r0, CLK_RESET_PLLA_BASE
pll_locked r1, r0, CLK_RESET_PLLC_BASE
@@ -526,6 +541,8 @@ __no_dual_emc_chanl:
ENDPROC(tegra30_lp1_reset)
.align L1_CACHE_SHIFT
+tegra_pllm_status:
+ .word 0
tegra30_sdram_pad_address:
.word TEGRA_EMC_BASE + EMC_CFG @0x0
.word TEGRA_EMC_BASE + EMC_ZCAL_INTERVAL @0x4
@@ -624,10 +641,14 @@ tegra30_switch_cpu_to_clk32k:
add r1, r1, #2
wait_until r1, r7, r9
- /* disable PLLM via PMC in LP1 */
+ /* disable PLLM, if enabled, via PMC in LP1 */
+ adr r1, tegra_pllm_status
ldr r0, [r4, #PMC_PLLP_WB0_OVERRIDE]
- bic r0, r0, #(1 << 12)
- str r0, [r4, #PMC_PLLP_WB0_OVERRIDE]
+ and r2, r0, #(1 << 12)
+ str r2, [r1]
+ cmp r2, #(1 << 12)
+ biceq r0, r0, #(1 << 12)
+ streq r0, [r4, #PMC_PLLP_WB0_OVERRIDE]
/* disable PLLP, PLLA, PLLC and PLLX */
ldr r0, [r5, #CLK_RESET_PLLP_BASE]
--
2.17.1
From: Eric Biggers <ebiggers(a)google.com>
When a crypto template needs to be instantiated, CRYPTO_MSG_ALG_REQUEST
is sent to crypto_chain. cryptomgr_schedule_probe() handles this by
starting a thread to instantiate the template, then waiting for this
thread to complete via crypto_larval::completion.
This can deadlock because instantiating the template may require loading
modules, and this (apparently depending on userspace) may need to wait
for the crc-t10dif module (lib/crc-t10dif.c) to be loaded. But
crc-t10dif's module_init function uses crypto_register_notifier() and
therefore takes crypto_chain.rwsem for write. That can't proceed until
the notifier callback has finished, as it holds this semaphore for read.
Fix this by removing the wait on crypto_larval::completion from within
cryptomgr_schedule_probe(). It's actually unnecessary because
crypto_alg_mod_lookup() calls crypto_larval_wait() itself after sending
CRYPTO_MSG_ALG_REQUEST.
This only actually became a problem in v4.20 due to commit b76377543b73
("crc-t10dif: Pick better transform if one becomes available"), but the
unnecessary wait was much older.
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207159
Reported-by: Mike Gerow <gerow(a)google.com>
Fixes: 398710379f51 ("crypto: algapi - Move larval completion into algboss")
Cc: <stable(a)vger.kernel.org> # v3.6+
Cc: Martin K. Petersen <martin.petersen(a)oracle.com>
Signed-off-by: Eric Biggers <ebiggers(a)google.com>
---
crypto/algboss.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/crypto/algboss.c b/crypto/algboss.c
index 535f1f87e6c1..5ebccbd6b74e 100644
--- a/crypto/algboss.c
+++ b/crypto/algboss.c
@@ -178,8 +178,6 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
if (IS_ERR(thread))
goto err_put_larval;
- wait_for_completion_interruptible(&larval->completion);
-
return NOTIFY_STOP;
err_put_larval:
--
2.27.0.rc2.251.g90737beb825-goog
NULL pointer exception happens occasionally on serial output initiated
by login timeout. This was reproduced only if kernel was built with
significant debugging options and EDMA driver is used with serial
console.
col-vf50 login: root
Password:
Login timed out after 60 seconds.
Unable to handle kernel NULL pointer dereference at virtual address 00000044
Internal error: Oops: 5 [#1] ARM
CPU: 0 PID: 157 Comm: login Not tainted 5.7.0-next-20200610-dirty #4
Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
(fsl_edma_tx_handler) from [<8016eb10>] (__handle_irq_event_percpu+0x64/0x304)
(__handle_irq_event_percpu) from [<8016eddc>] (handle_irq_event_percpu+0x2c/0x7c)
(handle_irq_event_percpu) from [<8016ee64>] (handle_irq_event+0x38/0x5c)
(handle_irq_event) from [<801729e4>] (handle_fasteoi_irq+0xa4/0x160)
(handle_fasteoi_irq) from [<8016ddcc>] (generic_handle_irq+0x34/0x44)
(generic_handle_irq) from [<8016e40c>] (__handle_domain_irq+0x54/0xa8)
(__handle_domain_irq) from [<80508bc8>] (gic_handle_irq+0x4c/0x80)
(gic_handle_irq) from [<80100af0>] (__irq_svc+0x70/0x98)
Exception stack(0x8459fe80 to 0x8459fec8)
fe80: 72286b00 e3359f64 00000001 0000412d a0070013 85c98840 85c98840 a0070013
fea0: 8054e0d4 00000000 00000002 00000000 00000002 8459fed0 8081fbe8 8081fbec
fec0: 60070013 ffffffff
(__irq_svc) from [<8081fbec>] (_raw_spin_unlock_irqrestore+0x30/0x58)
(_raw_spin_unlock_irqrestore) from [<8056cb48>] (uart_flush_buffer+0x88/0xf8)
(uart_flush_buffer) from [<80554e60>] (tty_ldisc_hangup+0x38/0x1ac)
(tty_ldisc_hangup) from [<8054c7f4>] (__tty_hangup+0x158/0x2bc)
(__tty_hangup) from [<80557b90>] (disassociate_ctty.part.1+0x30/0x23c)
(disassociate_ctty.part.1) from [<8011fc18>] (do_exit+0x580/0xba0)
(do_exit) from [<801214f8>] (do_group_exit+0x3c/0xb4)
(do_group_exit) from [<80121580>] (__wake_up_parent+0x0/0x14)
Issue looks like race condition between interrupt handler fsl_edma_tx_handler()
(called as result of fsl_edma_xfer_desc()) and terminating the transfer with
fsl_edma_terminate_all().
The fsl_edma_tx_handler() handles interrupt for a transfer with already freed
edesc and idle==true.
Fixes: d6be34fbd39b ("dma: Add Freescale eDMA engine driver support")
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Krzysztof Kozlowski <krzk(a)kernel.org>
---
drivers/dma/fsl-edma.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/dma/fsl-edma.c b/drivers/dma/fsl-edma.c
index eff7ebd8cf35..90bb72af306c 100644
--- a/drivers/dma/fsl-edma.c
+++ b/drivers/dma/fsl-edma.c
@@ -45,6 +45,13 @@ static irqreturn_t fsl_edma_tx_handler(int irq, void *dev_id)
fsl_chan = &fsl_edma->chans[ch];
spin_lock(&fsl_chan->vchan.lock);
+
+ if (!fsl_chan->edesc) {
+ /* terminate_all called before */
+ spin_unlock(&fsl_chan->vchan.lock);
+ continue;
+ }
+
if (!fsl_chan->edesc->iscyclic) {
list_del(&fsl_chan->edesc->vdesc.node);
vchan_cookie_complete(&fsl_chan->edesc->vdesc);
--
2.7.4
Hi,
I suggest to include the commit: 594cc251fdd0 make 'user_access_begin()'
do 'access_ok()' for CVE-2018-20669.
stable version to apply to: kernel-4.14.y and kernel-4.19.y.
From the discussion below, I checked the latest kernel and found that we
should also apply other 4 patches. (total 5 patches)
https://lkml.org/lkml/2020/5/12/943
patch list:
commit ab10ae1c3bef lib: Reduce user_access_begin() boundaries in
strncpy_from_user() and strnlen_user()
commit 6e693b3ffecb x86: uaccess: Inhibit speculation past access_ok()
in user_access_begin()
commit 9cb2feb4d21d arch/openrisc: Fix issues with access_ok()
commit 94bd8a05cd4d Fix 'acccess_ok()' on alpha and SH
commit 594cc251fdd0 make 'user_access_begin()' do 'access_ok()'
Where only commit 6e693b3ffecb does not need backport modifications.
I attach my backport patches in this email.
I merged the patches with kernel-4.19.127 and kernel-4.14.183 without
conflicts.
Build with arm64 defconfig and bootup on arm64 QEMU environment.
cheers,
Miles
From: Dave Rodgman <dave.rodgman(a)arm.com>
Subject: lib/lzo: fix ambiguous encoding bug in lzo-rle
In some rare cases, for input data over 32 KB, lzo-rle could encode two
different inputs to the same compressed representation, so that
decompression is then ambiguous (i.e. data may be corrupted - although
zram is not affected because it operates over 4 KB pages).
This modifies the compressor without changing the decompressor or the
bitstream format, such that:
- there is no change to how data produced by the old compressor is
decompressed
- an old decompressor will correctly decode data from the updated
compressor
- performance and compression ratio are not affected
- we avoid introducing a new bitstream format
In testing over 12.8M real-world files totalling 903 GB, three files were
affected by this bug. I also constructed 37M semi-random 64 KB files
totalling 2.27 TB, and saw no affected files. Finally I tested over files
constructed to contain each of the ~1024 possible bad input sequences; for
all of these cases, updated lzo-rle worked correctly.
There is no significant impact to performance or compression ratio.
Link: http://lkml.kernel.org/r/20200507100203.29785-1-dave.rodgman@arm.com
Signed-off-by: Dave Rodgman <dave.rodgman(a)arm.com>
Cc: Mark Rutland <mark.rutland(a)arm.com>
Cc: Dave Rodgman <dave.rodgman(a)arm.com>
Cc: Willy Tarreau <w(a)1wt.eu>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work(a)gmail.com>
Cc: Markus F.X.J. Oberhumer <markus(a)oberhumer.com>
Cc: Minchan Kim <minchan(a)kernel.org>
Cc: Nitin Gupta <ngupta(a)vflare.org>
Cc: Chao Yu <yuchao0(a)huawei.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
Documentation/lzo.txt | 8 ++++++--
lib/lzo/lzo1x_compress.c | 13 +++++++++++++
2 files changed, 19 insertions(+), 2 deletions(-)
--- a/Documentation/lzo.txt~lib-lzo-fix-ambiguous-encoding-bug-in-lzo-rle
+++ a/Documentation/lzo.txt
@@ -159,11 +159,15 @@ Byte sequences
distance = 16384 + (H << 14) + D
state = S (copy S literals after this block)
End of stream is reached if distance == 16384
+ In version 1 only, to prevent ambiguity with the RLE case when
+ ((distance & 0x803f) == 0x803f) && (261 <= length <= 264), the
+ compressor must not emit block copies where distance and length
+ meet these conditions.
In version 1 only, this instruction is also used to encode a run of
- zeros if distance = 0xbfff, i.e. H = 1 and the D bits are all 1.
+ zeros if distance = 0xbfff, i.e. H = 1 and the D bits are all 1.
In this case, it is followed by a fourth byte, X.
- run length = ((X << 3) | (0 0 0 0 0 L L L)) + 4.
+ run length = ((X << 3) | (0 0 0 0 0 L L L)) + 4
0 0 1 L L L L L (32..63)
Copy of small block within 16kB distance (preferably less than 34B)
--- a/lib/lzo/lzo1x_compress.c~lib-lzo-fix-ambiguous-encoding-bug-in-lzo-rle
+++ a/lib/lzo/lzo1x_compress.c
@@ -268,6 +268,19 @@ m_len_done:
*op++ = (M4_MARKER | ((m_off >> 11) & 8)
| (m_len - 2));
else {
+ if (unlikely(((m_off & 0x403f) == 0x403f)
+ && (m_len >= 261)
+ && (m_len <= 264))
+ && likely(bitstream_version)) {
+ // Under lzo-rle, block copies
+ // for 261 <= length <= 264 and
+ // (distance & 0x80f3) == 0x80f3
+ // can result in ambiguous
+ // output. Adjust length
+ // to 260 to prevent ambiguity.
+ ip -= m_len - 260;
+ m_len = 260;
+ }
m_len -= M4_MAX_LEN;
*op++ = (M4_MARKER | ((m_off >> 11) & 8));
while (unlikely(m_len > 255)) {
_
From: Dave Rodgman <dave.rodgman(a)arm.com>
Subject: lib/lzo: fix ambiguous encoding bug in lzo-rle
In some rare cases, for input data over 32 KB, lzo-rle could encode two
different inputs to the same compressed representation, so that
decompression is then ambiguous (i.e. data may be corrupted - although
zram is not affected because it operates over 4 KB pages).
This modifies the compressor without changing the decompressor or the
bitstream format, such that:
- there is no change to how data produced by the old compressor is
decompressed
- an old decompressor will correctly decode data from the updated
compressor
- performance and compression ratio are not affected
- we avoid introducing a new bitstream format
In testing over 12.8M real-world files totalling 903 GB, three files were
affected by this bug. I also constructed 37M semi-random 64 KB files
totalling 2.27 TB, and saw no affected files. Finally I tested over files
constructed to contain each of the ~1024 possible bad input sequences; for
all of these cases, updated lzo-rle worked correctly.
There is no significant impact to performance or compression ratio.
Link: http://lkml.kernel.org/r/20200507100203.29785-1-dave.rodgman@arm.com
Signed-off-by: Dave Rodgman <dave.rodgman(a)arm.com>
Cc: Mark Rutland <mark.rutland(a)arm.com>
Cc: Dave Rodgman <dave.rodgman(a)arm.com>
Cc: Willy Tarreau <w(a)1wt.eu>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work(a)gmail.com>
Cc: Markus F.X.J. Oberhumer <markus(a)oberhumer.com>
Cc: Minchan Kim <minchan(a)kernel.org>
Cc: Nitin Gupta <ngupta(a)vflare.org>
Cc: Chao Yu <yuchao0(a)huawei.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
Documentation/lzo.txt | 8 ++++++--
lib/lzo/lzo1x_compress.c | 13 +++++++++++++
2 files changed, 19 insertions(+), 2 deletions(-)
--- a/Documentation/lzo.txt~lib-lzo-fix-ambiguous-encoding-bug-in-lzo-rle
+++ a/Documentation/lzo.txt
@@ -159,11 +159,15 @@ Byte sequences
distance = 16384 + (H << 14) + D
state = S (copy S literals after this block)
End of stream is reached if distance == 16384
+ In version 1 only, to prevent ambiguity with the RLE case when
+ ((distance & 0x803f) == 0x803f) && (261 <= length <= 264), the
+ compressor must not emit block copies where distance and length
+ meet these conditions.
In version 1 only, this instruction is also used to encode a run of
- zeros if distance = 0xbfff, i.e. H = 1 and the D bits are all 1.
+ zeros if distance = 0xbfff, i.e. H = 1 and the D bits are all 1.
In this case, it is followed by a fourth byte, X.
- run length = ((X << 3) | (0 0 0 0 0 L L L)) + 4.
+ run length = ((X << 3) | (0 0 0 0 0 L L L)) + 4
0 0 1 L L L L L (32..63)
Copy of small block within 16kB distance (preferably less than 34B)
--- a/lib/lzo/lzo1x_compress.c~lib-lzo-fix-ambiguous-encoding-bug-in-lzo-rle
+++ a/lib/lzo/lzo1x_compress.c
@@ -268,6 +268,19 @@ m_len_done:
*op++ = (M4_MARKER | ((m_off >> 11) & 8)
| (m_len - 2));
else {
+ if (unlikely(((m_off & 0x403f) == 0x403f)
+ && (m_len >= 261)
+ && (m_len <= 264))
+ && likely(bitstream_version)) {
+ // Under lzo-rle, block copies
+ // for 261 <= length <= 264 and
+ // (distance & 0x80f3) == 0x80f3
+ // can result in ambiguous
+ // output. Adjust length
+ // to 260 to prevent ambiguity.
+ ip -= m_len - 260;
+ m_len = 260;
+ }
m_len -= M4_MAX_LEN;
*op++ = (M4_MARKER | ((m_off >> 11) & 8));
while (unlikely(m_len > 255)) {
_
The patch titled
Subject: lib: fix bitmap_parse() on 64-bit big endian archs
has been removed from the -mm tree. Its filename was
lib-fix-bitmap_parse-on-64-bit-big-endian-archs.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Alexander Gordeev <agordeev(a)linux.ibm.com>
Subject: lib: fix bitmap_parse() on 64-bit big endian archs
Commit 2d6261583be0 ("lib: rework bitmap_parse()") does not take into
account order of halfwords on 64-bit big endian architectures. As result
(at least) Receive Packet Steering, IRQ affinity masks and runtime kernel
test "test_bitmap" get broken on s390.
[andriy.shevchenko(a)linux.intel.com: convert infinite while loop to a for loop]
Link: http://lkml.kernel.org/r/20200609140535.87160-1-andriy.shevchenko@linux.int…
Link: http://lkml.kernel.org/r/1591634471-17647-1-git-send-email-agordeev@linux.i…
Fixes: 2d6261583be0 ("lib: rework bitmap_parse()")
Signed-off-by: Alexander Gordeev <agordeev(a)linux.ibm.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko(a)linux.intel.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko(a)gmail.com>
Cc: Yury Norov <yury.norov(a)gmail.com>
Cc: Amritha Nambiar <amritha.nambiar(a)intel.com>
Cc: Arnaldo Carvalho de Melo <acme(a)redhat.com>
Cc: Chris Wilson <chris(a)chris-wilson.co.uk>
Cc: Kees Cook <keescook(a)chromium.org>
Cc: Matthew Wilcox <willy(a)infradead.org>
Cc: Miklos Szeredi <mszeredi(a)redhat.com>
Cc: Rasmus Villemoes <linux(a)rasmusvillemoes.dk>
Cc: Steffen Klassert <steffen.klassert(a)secunet.com>
Cc: "Tobin C . Harding" <tobin(a)kernel.org>
Cc: Vineet Gupta <vineet.gupta1(a)synopsys.com>
Cc: Will Deacon <will.deacon(a)arm.com>
Cc: Willem de Bruijn <willemb(a)google.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
lib/bitmap.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
--- a/lib/bitmap.c~lib-fix-bitmap_parse-on-64-bit-big-endian-archs
+++ a/lib/bitmap.c
@@ -741,8 +741,9 @@ int bitmap_parse(const char *start, unsi
int chunks = BITS_TO_U32(nmaskbits);
u32 *bitmap = (u32 *)maskp;
int unset_bit;
+ int chunk;
- while (1) {
+ for (chunk = 0; ; chunk++) {
end = bitmap_find_region_reverse(start, end);
if (start > end)
break;
@@ -750,7 +751,11 @@ int bitmap_parse(const char *start, unsi
if (!chunks--)
return -EOVERFLOW;
- end = bitmap_get_x32_reverse(start, end, bitmap++);
+#if defined(CONFIG_64BIT) && defined(__BIG_ENDIAN)
+ end = bitmap_get_x32_reverse(start, end, &bitmap[chunk ^ 1]);
+#else
+ end = bitmap_get_x32_reverse(start, end, &bitmap[chunk]);
+#endif
if (IS_ERR(end))
return PTR_ERR(end);
}
_
Patches currently in -mm which might be from agordeev(a)linux.ibm.com are
The patch titled
Subject: nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
has been removed from the -mm tree. Its filename was
nilfs2-fix-null-pointer-dereference-at-nilfs_segctor_do_construct.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Subject: nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
After commit c3aab9a0bd91 ("mm/filemap.c: don't initiate writeback if
mapping has no dirty pages"), the following null pointer dereference has
been reported on nilfs2:
BUG: kernel NULL pointer dereference, address: 00000000000000a8
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
Oops: 0000 [#1] SMP PTI
...
RIP: 0010:percpu_counter_add_batch+0xa/0x60
...
Call Trace:
__test_set_page_writeback+0x2d3/0x330
nilfs_segctor_do_construct+0x10d3/0x2110 [nilfs2]
nilfs_segctor_construct+0x168/0x260 [nilfs2]
nilfs_segctor_thread+0x127/0x3b0 [nilfs2]
kthread+0xf8/0x130
...
This crash turned out to be caused by set_page_writeback() call for
segment summary buffers at nilfs_segctor_prepare_write().
set_page_writeback() can call inc_wb_stat(inode_to_wb(inode),
WB_WRITEBACK) where inode_to_wb(inode) is NULL if the inode of
underlying block device does not have an associated wb.
This fixes the issue by calling inode_attach_wb() in advance to ensure
to associate the bdev inode with its wb.
Link: http://lkml.kernel.org/r/20200608.011819.1399059588922299158.konishi.ryusuk…
Fixes: c3aab9a0bd91 ("mm/filemap.c: don't initiate writeback if mapping has no dirty pages")
Signed-off-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke(a)gmail.com>
Reported-by: Walton Hoops <me(a)waltonhoops.com>
Reported-by: Tomas Hlavaty <tom(a)logand.com>
Reported-by: ARAI Shun-ichi <hermes(a)ceres.dti.ne.jp>
Reported-by: Hideki EIRAKU <hdk1983(a)gmail.com>
Cc: <stable(a)vger.kernel.org> [5.4+]
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
fs/nilfs2/segment.c | 2 ++
1 file changed, 2 insertions(+)
--- a/fs/nilfs2/segment.c~nilfs2-fix-null-pointer-dereference-at-nilfs_segctor_do_construct
+++ a/fs/nilfs2/segment.c
@@ -2780,6 +2780,8 @@ int nilfs_attach_log_writer(struct super
if (!nilfs->ns_writer)
return -ENOMEM;
+ inode_attach_wb(nilfs->ns_bdev->bd_inode, NULL);
+
err = nilfs_segctor_start_thread(nilfs->ns_writer);
if (err) {
kfree(nilfs->ns_writer);
_
Patches currently in -mm which might be from konishi.ryusuke(a)gmail.com are
stable/linux-3.16.y build: 149 builds: 10 failed, 139 passed, 7 errors, 3102 warnings (v3.16.85)
Full Build Summary: https://kernelci.org/build/stable/branch/linux-3.16.y/kernel/v3.16.85/
Tree: stable
Branch: linux-3.16.y
Git Describe: v3.16.85
Git Commit: 16f3f0d74b2069038a24f69952f0c19ad7c48d9a
Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
Built: 6 unique architectures
Build Failures Detected:
arc:
fpga_defconfig: (gcc-8) FAIL
arm:
kzm9g_defconfig: (gcc-8) FAIL
mips:
cavium_octeon_defconfig: (gcc-8) FAIL
lemote2f_defconfig: (gcc-8) FAIL
malta_kvm_defconfig: (gcc-8) FAIL
nlm_xlp_defconfig: (gcc-8) FAIL
nlm_xlr_defconfig: (gcc-8) FAIL
rt305x_defconfig: (gcc-8) FAIL
sead3micro_defconfig: (gcc-8) FAIL
xway_defconfig: (gcc-8) FAIL
Errors and Warnings Detected:
arc:
fpga_defconfig (gcc-8): 3 warnings
arm64:
allnoconfig (gcc-8): 2 warnings
defconfig (gcc-8): 40 warnings
arm:
acs5k_defconfig (gcc-8): 7 warnings
acs5k_tiny_defconfig (gcc-8): 6 warnings
am200epdkit_defconfig (gcc-8): 12 warnings
ape6evm_defconfig (gcc-8): 29 warnings
armadillo800eva_defconfig (gcc-8): 5 warnings
at91_dt_defconfig (gcc-8): 6 warnings
at91rm9200_defconfig (gcc-8): 15 warnings
at91sam9261_9g10_defconfig (gcc-8): 14 warnings
at91sam9263_defconfig (gcc-8): 12 warnings
at91sam9g45_defconfig (gcc-8): 5 warnings
at91sam9rl_defconfig (gcc-8): 8 warnings
at91x40_defconfig (gcc-8): 4 warnings
axm55xx_defconfig (gcc-8): 19 warnings
badge4_defconfig (gcc-8): 17 warnings
bcm2835_defconfig (gcc-8): 5 warnings
bockw_defconfig (gcc-8): 9 warnings
cerfcube_defconfig (gcc-8): 6 warnings
clps711x_defconfig (gcc-8): 10 warnings
cm_x2xx_defconfig (gcc-8): 14 warnings
cm_x300_defconfig (gcc-8): 16 warnings
colibri_pxa270_defconfig (gcc-8): 19 warnings
colibri_pxa300_defconfig (gcc-8): 14 warnings
collie_defconfig (gcc-8): 5 warnings
corgi_defconfig (gcc-8): 20 warnings
ebsa110_defconfig (gcc-8): 7 warnings
efm32_defconfig (gcc-8): 3 warnings
ep93xx_defconfig (gcc-8): 8 warnings
eseries_pxa_defconfig (gcc-8): 17 warnings
ezx_defconfig (gcc-8): 17 warnings
footbridge_defconfig (gcc-8): 10 warnings
genmai_defconfig (gcc-8): 3 warnings
h3600_defconfig (gcc-8): 10 warnings
hackkit_defconfig (gcc-8): 6 warnings
imote2_defconfig (gcc-8): 15 warnings
imx_v6_v7_defconfig (gcc-8): 26 warnings
iop13xx_defconfig (gcc-8): 13 warnings
iop32x_defconfig (gcc-8): 13 warnings
iop33x_defconfig (gcc-8): 8 warnings
keystone_defconfig (gcc-8): 36 warnings
kirkwood_defconfig (gcc-8): 17 warnings
ks8695_defconfig (gcc-8): 7 warnings
kzm9g_defconfig (gcc-8): 1 error, 9 warnings
lager_defconfig (gcc-8): 4 warnings
lart_defconfig (gcc-8): 11 warnings
lpc32xx_defconfig (gcc-8): 6 warnings
lpd270_defconfig (gcc-8): 6 warnings
lubbock_defconfig (gcc-8): 7 warnings
magician_defconfig (gcc-8): 19 warnings
mainstone_defconfig (gcc-8): 6 warnings
marzen_defconfig (gcc-8): 10 warnings
mini2440_defconfig (gcc-8): 17 warnings
mmp2_defconfig (gcc-8): 9 warnings
moxart_defconfig (gcc-8): 7 warnings
multi_v5_defconfig (gcc-8): 19 warnings
multi_v7_defconfig (gcc-8): 25 warnings
mv78xx0_defconfig (gcc-8): 34 warnings
mvebu_v7_defconfig (gcc-8): 17 warnings
mxs_defconfig (gcc-8): 36 warnings
neponset_defconfig (gcc-8): 8 warnings
netwinder_defconfig (gcc-8): 5 warnings
netx_defconfig (gcc-8): 12 warnings
nhk8815_defconfig (gcc-8): 17 warnings
nuc910_defconfig (gcc-8): 6 warnings
nuc950_defconfig (gcc-8): 6 warnings
nuc960_defconfig (gcc-8): 6 warnings
omap1_defconfig (gcc-8): 17 warnings
orion5x_defconfig (gcc-8): 16 warnings
palmz72_defconfig (gcc-8): 6 warnings
pcm027_defconfig (gcc-8): 8 warnings
pleb_defconfig (gcc-8): 6 warnings
prima2_defconfig (gcc-8): 9 warnings
pxa168_defconfig (gcc-8): 6 warnings
pxa255-idp_defconfig (gcc-8): 6 warnings
pxa3xx_defconfig (gcc-8): 6 warnings
pxa910_defconfig (gcc-8): 6 warnings
raumfeld_defconfig (gcc-8): 15 warnings
realview-smp_defconfig (gcc-8): 6 warnings
rpc_defconfig (gcc-8): 9 warnings
s3c2410_defconfig (gcc-8): 21 warnings
s5pc100_defconfig (gcc-8): 5 warnings
s5pv210_defconfig (gcc-8): 7 warnings
shannon_defconfig (gcc-8): 6 warnings
shmobile_defconfig (gcc-8): 5 warnings
simpad_defconfig (gcc-8): 16 warnings
socfpga_defconfig (gcc-8): 29 warnings
spear13xx_defconfig (gcc-8): 9 warnings
spear3xx_defconfig (gcc-8): 7 warnings
spear6xx_defconfig (gcc-8): 7 warnings
spitz_defconfig (gcc-8): 20 warnings
sunxi_defconfig (gcc-8): 11 warnings
tct_hammer_defconfig (gcc-8): 7 warnings
trizeps4_defconfig (gcc-8): 20 warnings
u8500_defconfig (gcc-8): 19 warnings
versatile_defconfig (gcc-8): 6 warnings
vexpress_defconfig (gcc-8): 12 warnings
viper_defconfig (gcc-8): 14 warnings
vt8500_v6_v7_defconfig (gcc-8): 12 warnings
xcep_defconfig (gcc-8): 6 warnings
i386:
i386_defconfig (gcc-8): 5 warnings
mips:
ar7_defconfig (gcc-8): 29 warnings
ath79_defconfig (gcc-8): 31 warnings
bcm47xx_defconfig (gcc-8): 43 warnings
bcm63xx_defconfig (gcc-8): 28 warnings
bigsur_defconfig (gcc-8): 86 warnings
capcella_defconfig (gcc-8): 29 warnings
cavium_octeon_defconfig (gcc-8): 50 warnings
cobalt_defconfig (gcc-8): 29 warnings
db1xxx_defconfig (gcc-8): 29 warnings
e55_defconfig (gcc-8): 29 warnings
fuloong2e_defconfig (gcc-8): 59 warnings
gpr_defconfig (gcc-8): 29 warnings
ip22_defconfig (gcc-8): 30 warnings
ip27_defconfig (gcc-8): 73 warnings
ip28_defconfig (gcc-8): 51 warnings
ip32_defconfig (gcc-8): 59 warnings
jazz_defconfig (gcc-8): 29 warnings
jmr3927_defconfig (gcc-8): 28 warnings
lemote2f_defconfig (gcc-8): 1 error, 4 warnings
loongson3_defconfig (gcc-8): 329 warnings
ls1b_defconfig (gcc-8): 29 warnings
malta_defconfig (gcc-8): 31 warnings
malta_kvm_defconfig (gcc-8): 2 errors, 4 warnings
malta_kvm_guest_defconfig (gcc-8): 31 warnings
maltasmvp_defconfig (gcc-8): 34 warnings
maltasmvp_eva_defconfig (gcc-8): 34 warnings
maltaup_defconfig (gcc-8): 31 warnings
markeins_defconfig (gcc-8): 29 warnings
mips_paravirt_defconfig (gcc-8): 50 warnings
mpc30x_defconfig (gcc-8): 29 warnings
msp71xx_defconfig (gcc-8): 31 warnings
mtx1_defconfig (gcc-8): 35 warnings
nlm_xlp_defconfig (gcc-8): 77 warnings
nlm_xlr_defconfig (gcc-8): 1 error, 2 warnings
qi_lb60_defconfig (gcc-8): 30 warnings
rb532_defconfig (gcc-8): 29 warnings
rm200_defconfig (gcc-8): 29 warnings
rt305x_defconfig (gcc-8): 31 warnings
sb1250_swarm_defconfig (gcc-8): 48 warnings
sead3micro_defconfig (gcc-8): 2 errors, 2 warnings
tb0219_defconfig (gcc-8): 29 warnings
tb0226_defconfig (gcc-8): 29 warnings
tb0287_defconfig (gcc-8): 29 warnings
workpad_defconfig (gcc-8): 29 warnings
xway_defconfig (gcc-8): 31 warnings
x86_64:
allnoconfig (gcc-8): 2 warnings
x86_64_defconfig (gcc-8): 63 warnings
Errors summary:
2 include/linux/kern_levels.h:4:18: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘u64’ {aka ‘long long unsigned int’} [-Werror=format=]
1 arch/mips/loongson/common/cs5536/cs5536_ohci.c:141:25: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
1 arch/mips/kernel/genex.S:234: Error: branch to a symbol in another ISA mode
1 arch/mips/kernel/genex.S:152: Error: branch to a symbol in another ISA mode
1 arch/mips/include/asm/netlogic/xlr/fmn.h:304:22: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
1 arch/arm/mach-shmobile/board-kzm9g.c:734:13: error: initializer element is not computable at load time
Warnings summary:
861 arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
331 <stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
246 arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
101 fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
92 lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
90 fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
83 net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
56 include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
56 include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
48 drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
48 drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
39 crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
39 crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
39 crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
39 crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
39 crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
29 drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
27 net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
24 net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
21 fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
19 fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
19 fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
14 drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
12 net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
12 net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
12 net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
12 net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
12 net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
12 net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
12 net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
12 net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
12 net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
12 net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
12 include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
12 include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
11 net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
9 fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
8 include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
5 drivers/net/irda/irtty-sir.c:405:3: warning: ‘strncpy’ output may be truncated copying 5 bytes from a string of length 15 [-Wstringop-truncation]
4 {standard input}:1462: Warning: the `msa' extension requires 64-bit FPRs
4 fs/cifs/cifsencrypt.c:309:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
4 drivers/video/hdmi.c:163:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
4 drivers/video/hdmi.c:162:2: warning: ‘strncpy’ specified bound 8 equals destination size [-Wstringop-truncation]
4 drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:3598:2: warning: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation]
3 sound/pci/au88x0/au88x0_core.c:2303:58: warning: ‘src[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
3 sound/pci/au88x0/au88x0_core.c:2302:59: warning: ‘mix[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
3 drivers/video/fbdev/mx3fb.c:748:2: warning: ‘strncpy’ output truncated before terminating nul copying 8 bytes from a string of the same length [-Wstringop-truncation]
3 drivers/net/wireless/hostap/hostap_ioctl.c:3614:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
3 cc1: all warnings being treated as errors
3 arc-elf32-gcc: warning: ‘-mno-mpy’ is deprecated
2 {standard input}:1715: Warning: the `msa' extension requires 64-bit FPRs
2 {standard input}:1498: Warning: the `msa' extension requires 64-bit FPRs
2 drivers/net/wireless/prism54/isl_ioctl.c:284:2: warning: ‘strncpy’ output may be truncated copying 16 bytes from a string of length 28 [-Wstringop-truncation]
2 drivers/net/ethernet/seeq/sgiseeq.c:804:26: warning: passing argument 5 of ‘dma_free_attrs’ makes pointer from integer without a cast [-Wint-conversion]
2 drivers/misc/eeprom/at25.c:311:2: warning: ‘strncpy’ specified bound 10 equals destination size [-Wstringop-truncation]
2 drivers/mfd/db8500-prcmu.c:2721:2: warning: ‘strncpy’ specified bound 20 equals destination size [-Wstringop-truncation]
2 drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 8 [-Wpacked-not-aligned]
2 arch/x86/kernel/rtc.c:173:29: warning: duplicate ‘const’ declaration specifier [-Wduplicate-decl-specifier]
2 arch/mips/kernel/cps-vec.S:384: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
2 arch/mips/kernel/cps-vec.S:352: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
2 arch/mips/kernel/cps-vec.S:232: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
1 {standard input}:900: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1953: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1882: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1822: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1821: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1668: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1664: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1655: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1525: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1431: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1395: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1359: Warning: the `msa' extension requires 64-bit FPRs
1 {standard input}:1257: Warning: the `msa' extension requires 64-bit FPRs
1 net/caif/cfctrl.c:261:3: warning: ‘strncpy’ output may be truncated copying 15 bytes from a string of length 15 [-Wstringop-truncation]
1 kernel/debug/kdb/kdb_support.c:132:4: warning: ‘memcpy’ accessing 396 bytes at offsets 0 and 4 overlaps 392 bytes at offset 4 [-Wrestrict]
1 fs/xfs/xfs_xattr.c:159:2: warning: ‘strncpy’ output may be truncated copying between 5 and 9 bytes from a string of length 9 [-Wstringop-truncation]
1 drivers/scsi/scsi_tgt_if.c:192:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
1 drivers/scsi/pmcraid.h:1059:1: warning: alignment 1 of ‘struct pmcraid_passthrough_ioctl_buffer’ is less than 4 [-Wpacked-not-aligned]
1 drivers/scsi/pmcraid.h:1059:1: warning: alignment 1 of ‘struct pmcraid_passthrough_ioctl_buffer’ is less than 32 [-Wpacked-not-aligned]
1 drivers/scsi/pmcraid.h:1056:24: warning: ‘ioarcb’ offset 16 in ‘struct pmcraid_passthrough_ioctl_buffer’ isn’t aligned to 32 [-Wpacked-not-aligned]
1 drivers/net/wireless/rtlwifi/rtl8192cu/hw.c:1363:22: warning: bitwise comparison always evaluates to false [-Wtautological-compare]
1 drivers/net/wireless/mwl8k.c:805:1: warning: alignment 1 of ‘struct mwl8k_dma_data’ is less than 2 [-Wpacked-not-aligned]
1 drivers/gpu/drm/i915/intel_tv.c:1422:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
1 cc1: warning: switch -mcpu=cortex-a9 conflicts with -march=armv7-a switch
1 arch/x86/power/hibernate_64.c:129:2: warning: ‘memcpy’ forming offset [2, 4096] is out of the bounds [0, 1] of object ‘core_restore_code’ with type ‘char’ [-Warray-bounds]
1 arch/x86/kernel/head_32.S:672: Warning: ignoring fill value in section `.bss..page_aligned'
1 arch/x86/kernel/head_32.S:670: Warning: ignoring fill value in section `.bss..page_aligned'
1 arch/x86/kernel/head_32.S:665: Warning: ignoring fill value in section `.bss..page_aligned'
1 arch/x86/kernel/apic/apic.c:138:13: warning: ‘nox2apic’ defined but not used [-Wunused-variable]
================================================================================
Detailed per-defconfig build reports:
--------------------------------------------------------------------------------
acs5k_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/wireless/prism54/isl_ioctl.c:284:2: warning: ‘strncpy’ output may be truncated copying 16 bytes from a string of length 28 [-Wstringop-truncation]
--------------------------------------------------------------------------------
acs5k_tiny_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
allnoconfig (x86_64, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
allnoconfig (arm64, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
am200epdkit_defconfig (arm, gcc-8) — PASS, 0 errors, 12 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
ape6evm_defconfig (arm, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ar7_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
armadillo800eva_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91_dt_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/wireless/rtlwifi/rtl8192cu/hw.c:1363:22: warning: bitwise comparison always evaluates to false [-Wtautological-compare]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91rm9200_defconfig (arm, gcc-8) — PASS, 0 errors, 15 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91sam9261_9g10_defconfig (arm, gcc-8) — PASS, 0 errors, 14 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91sam9263_defconfig (arm, gcc-8) — PASS, 0 errors, 12 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91sam9g45_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91sam9rl_defconfig (arm, gcc-8) — PASS, 0 errors, 8 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
at91x40_defconfig (arm, gcc-8) — PASS, 0 errors, 4 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
ath79_defconfig (mips, gcc-8) — PASS, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1359: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:900: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
axm55xx_defconfig (arm, gcc-8) — PASS, 0 errors, 19 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/misc/eeprom/at25.c:311:2: warning: ‘strncpy’ specified bound 10 equals destination size [-Wstringop-truncation]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
badge4_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
bcm2835_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
kernel/debug/kdb/kdb_support.c:132:4: warning: ‘memcpy’ accessing 396 bytes at offsets 0 and 4 overlaps 392 bytes at offset 4 [-Wrestrict]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
bcm47xx_defconfig (mips, gcc-8) — PASS, 0 errors, 43 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
drivers/net/wireless/brcm80211/brcmsmac/d11.h:786:1: warning: alignment 1 of ‘struct d11txh’ is less than 2 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
bcm63xx_defconfig (mips, gcc-8) — PASS, 0 errors, 28 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
--------------------------------------------------------------------------------
bigsur_defconfig (mips, gcc-8) — PASS, 0 errors, 86 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
bockw_defconfig (arm, gcc-8) — PASS, 0 errors, 9 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
capcella_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
cavium_octeon_defconfig (mips, gcc-8) — FAIL, 0 errors, 50 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
cerfcube_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
clps711x_defconfig (arm, gcc-8) — PASS, 0 errors, 10 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/net/irda/irtty-sir.c:405:3: warning: ‘strncpy’ output may be truncated copying 5 bytes from a string of length 15 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
cm_x2xx_defconfig (arm, gcc-8) — PASS, 0 errors, 14 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
--------------------------------------------------------------------------------
cm_x300_defconfig (arm, gcc-8) — PASS, 0 errors, 16 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/cifs/cifsencrypt.c:309:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
--------------------------------------------------------------------------------
cobalt_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
colibri_pxa270_defconfig (arm, gcc-8) — PASS, 0 errors, 19 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/net/wireless/hostap/hostap_ioctl.c:3614:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/irda/irtty-sir.c:405:3: warning: ‘strncpy’ output may be truncated copying 5 bytes from a string of length 15 [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
--------------------------------------------------------------------------------
colibri_pxa300_defconfig (arm, gcc-8) — PASS, 0 errors, 14 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
collie_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
corgi_defconfig (arm, gcc-8) — PASS, 0 errors, 20 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
db1xxx_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
--------------------------------------------------------------------------------
defconfig (arm64, gcc-8) — PASS, 0 errors, 40 warnings, 0 section mismatches
Warnings:
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 8 [-Wpacked-not-aligned]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
--------------------------------------------------------------------------------
e55_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ebsa110_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
efm32_defconfig (arm, gcc-8) — PASS, 0 errors, 3 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ep93xx_defconfig (arm, gcc-8) — PASS, 0 errors, 8 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
eseries_pxa_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
--------------------------------------------------------------------------------
ezx_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/cifs/cifsencrypt.c:309:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
fs/xfs/xfs_xattr.c:159:2: warning: ‘strncpy’ output may be truncated copying between 5 and 9 bytes from a string of length 9 [-Wstringop-truncation]
--------------------------------------------------------------------------------
footbridge_defconfig (arm, gcc-8) — PASS, 0 errors, 10 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
fpga_defconfig (arc, gcc-8) — FAIL, 0 errors, 3 warnings, 0 section mismatches
Warnings:
arc-elf32-gcc: warning: ‘-mno-mpy’ is deprecated
arc-elf32-gcc: warning: ‘-mno-mpy’ is deprecated
arc-elf32-gcc: warning: ‘-mno-mpy’ is deprecated
--------------------------------------------------------------------------------
fuloong2e_defconfig (mips, gcc-8) — PASS, 0 errors, 59 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
genmai_defconfig (arm, gcc-8) — PASS, 0 errors, 3 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
gpr_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
h3600_defconfig (arm, gcc-8) — PASS, 0 errors, 10 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
hackkit_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
i386_defconfig (i386, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
arch/x86/kernel/rtc.c:173:29: warning: duplicate ‘const’ declaration specifier [-Wduplicate-decl-specifier]
arch/x86/kernel/apic/apic.c:138:13: warning: ‘nox2apic’ defined but not used [-Wunused-variable]
arch/x86/kernel/head_32.S:665: Warning: ignoring fill value in section `.bss..page_aligned'
arch/x86/kernel/head_32.S:670: Warning: ignoring fill value in section `.bss..page_aligned'
arch/x86/kernel/head_32.S:672: Warning: ignoring fill value in section `.bss..page_aligned'
--------------------------------------------------------------------------------
imote2_defconfig (arm, gcc-8) — PASS, 0 errors, 15 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/cifs/cifsencrypt.c:309:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
--------------------------------------------------------------------------------
imx_v6_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 26 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/misc/eeprom/at25.c:311:2: warning: ‘strncpy’ specified bound 10 equals destination size [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
drivers/video/hdmi.c:162:2: warning: ‘strncpy’ specified bound 8 equals destination size [-Wstringop-truncation]
drivers/video/hdmi.c:163:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
drivers/video/fbdev/mx3fb.c:748:2: warning: ‘strncpy’ output truncated before terminating nul copying 8 bytes from a string of the same length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:3598:2: warning: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation]
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:3598:2: warning: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
iop13xx_defconfig (arm, gcc-8) — PASS, 0 errors, 13 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
iop32x_defconfig (arm, gcc-8) — PASS, 0 errors, 13 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
iop33x_defconfig (arm, gcc-8) — PASS, 0 errors, 8 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ip22_defconfig (mips, gcc-8) — PASS, 0 errors, 30 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/ethernet/seeq/sgiseeq.c:804:26: warning: passing argument 5 of ‘dma_free_attrs’ makes pointer from integer without a cast [-Wint-conversion]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ip27_defconfig (mips, gcc-8) — PASS, 0 errors, 73 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
drivers/net/wireless/mwl8k.c:805:1: warning: alignment 1 of ‘struct mwl8k_dma_data’ is less than 2 [-Wpacked-not-aligned]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
drivers/scsi/pmcraid.h:1059:1: warning: alignment 1 of ‘struct pmcraid_passthrough_ioctl_buffer’ is less than 32 [-Wpacked-not-aligned]
drivers/scsi/pmcraid.h:1056:24: warning: ‘ioarcb’ offset 16 in ‘struct pmcraid_passthrough_ioctl_buffer’ isn’t aligned to 32 [-Wpacked-not-aligned]
drivers/scsi/pmcraid.h:1059:1: warning: alignment 1 of ‘struct pmcraid_passthrough_ioctl_buffer’ is less than 4 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ip28_defconfig (mips, gcc-8) — PASS, 0 errors, 51 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
drivers/net/ethernet/seeq/sgiseeq.c:804:26: warning: passing argument 5 of ‘dma_free_attrs’ makes pointer from integer without a cast [-Wint-conversion]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ip32_defconfig (mips, gcc-8) — PASS, 0 errors, 59 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
jazz_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
jmr3927_defconfig (mips, gcc-8) — PASS, 0 errors, 28 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
--------------------------------------------------------------------------------
keystone_defconfig (arm, gcc-8) — PASS, 0 errors, 36 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
kirkwood_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ks8695_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/wireless/prism54/isl_ioctl.c:284:2: warning: ‘strncpy’ output may be truncated copying 16 bytes from a string of length 28 [-Wstringop-truncation]
--------------------------------------------------------------------------------
kzm9g_defconfig (arm, gcc-8) — FAIL, 1 error, 9 warnings, 0 section mismatches
Errors:
arch/arm/mach-shmobile/board-kzm9g.c:734:13: error: initializer element is not computable at load time
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
include/linux/sh_intc.h:99:63: warning: division ‘sizeof (void *) / sizeof (void)’ does not compute the number of array elements [-Wsizeof-pointer-div]
--------------------------------------------------------------------------------
lager_defconfig (arm, gcc-8) — PASS, 0 errors, 4 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
lart_defconfig (arm, gcc-8) — PASS, 0 errors, 11 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
--------------------------------------------------------------------------------
lemote2f_defconfig (mips, gcc-8) — FAIL, 1 error, 4 warnings, 0 section mismatches
Errors:
arch/mips/loongson/common/cs5536/cs5536_ohci.c:141:25: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
cc1: all warnings being treated as errors
--------------------------------------------------------------------------------
loongson3_defconfig (mips, gcc-8) — PASS, 0 errors, 329 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
lpc32xx_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
lpd270_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
ls1b_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
lubbock_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
magician_defconfig (arm, gcc-8) — PASS, 0 errors, 19 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/net/irda/irtty-sir.c:405:3: warning: ‘strncpy’ output may be truncated copying 5 bytes from a string of length 15 [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
mainstone_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
malta_defconfig (mips, gcc-8) — PASS, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1498: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1715: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
malta_kvm_defconfig (mips, gcc-8) — FAIL, 2 errors, 4 warnings, 0 section mismatches
Errors:
include/linux/kern_levels.h:4:18: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘u64’ {aka ‘long long unsigned int’} [-Werror=format=]
include/linux/kern_levels.h:4:18: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘u64’ {aka ‘long long unsigned int’} [-Werror=format=]
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1498: Warning: the `msa' extension requires 64-bit FPRs
cc1: all warnings being treated as errors
{standard input}:1953: Warning: the `msa' extension requires 64-bit FPRs
--------------------------------------------------------------------------------
malta_kvm_guest_defconfig (mips, gcc-8) — PASS, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1462: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1664: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltasmvp_defconfig (mips, gcc-8) — PASS, 0 errors, 34 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1462: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1715: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/kernel/cps-vec.S:232: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
arch/mips/kernel/cps-vec.S:352: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
arch/mips/kernel/cps-vec.S:384: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltasmvp_eva_defconfig (mips, gcc-8) — PASS, 0 errors, 34 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1462: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1822: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/kernel/cps-vec.S:232: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
arch/mips/kernel/cps-vec.S:352: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
arch/mips/kernel/cps-vec.S:384: Warning: tried to set unrecognized symbol: MIPS_ISA_LEVEL_RAW
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltaup_defconfig (mips, gcc-8) — PASS, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1462: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1668: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
markeins_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
marzen_defconfig (arm, gcc-8) — PASS, 0 errors, 10 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
drivers/video/hdmi.c:162:2: warning: ‘strncpy’ specified bound 8 equals destination size [-Wstringop-truncation]
drivers/video/hdmi.c:163:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
mini2440_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/net/wireless/hostap/hostap_ioctl.c:3614:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
--------------------------------------------------------------------------------
mips_paravirt_defconfig (mips, gcc-8) — PASS, 0 errors, 50 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
mmp2_defconfig (arm, gcc-8) — PASS, 0 errors, 9 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
moxart_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
mpc30x_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
msp71xx_defconfig (mips, gcc-8) — PASS, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1655: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1882: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
mtx1_defconfig (mips, gcc-8) — PASS, 0 errors, 35 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
sound/pci/au88x0/au88x0_core.c:2302:59: warning: ‘mix[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
sound/pci/au88x0/au88x0_core.c:2303:58: warning: ‘src[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
sound/pci/au88x0/au88x0_core.c:2302:59: warning: ‘mix[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
sound/pci/au88x0/au88x0_core.c:2303:58: warning: ‘src[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
sound/pci/au88x0/au88x0_core.c:2302:59: warning: ‘mix[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
sound/pci/au88x0/au88x0_core.c:2303:58: warning: ‘src[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
multi_v5_defconfig (arm, gcc-8) — PASS, 0 errors, 19 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
drivers/video/fbdev/mx3fb.c:748:2: warning: ‘strncpy’ output truncated before terminating nul copying 8 bytes from a string of the same length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
multi_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 25 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
cc1: warning: switch -mcpu=cortex-a9 conflicts with -march=armv7-a switch
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/mfd/db8500-prcmu.c:2721:2: warning: ‘strncpy’ specified bound 20 equals destination size [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
drivers/video/hdmi.c:162:2: warning: ‘strncpy’ specified bound 8 equals destination size [-Wstringop-truncation]
drivers/video/hdmi.c:163:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
drivers/video/fbdev/mx3fb.c:748:2: warning: ‘strncpy’ output truncated before terminating nul copying 8 bytes from a string of the same length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:3598:2: warning: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation]
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c:3598:2: warning: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
mv78xx0_defconfig (arm, gcc-8) — PASS, 0 errors, 34 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
--------------------------------------------------------------------------------
mvebu_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
mxs_defconfig (arm, gcc-8) — PASS, 0 errors, 36 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
neponset_defconfig (arm, gcc-8) — PASS, 0 errors, 8 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
--------------------------------------------------------------------------------
netwinder_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
netx_defconfig (arm, gcc-8) — PASS, 0 errors, 12 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
--------------------------------------------------------------------------------
nhk8815_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/cifs/cifsencrypt.c:309:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
nlm_xlp_defconfig (mips, gcc-8) — FAIL, 0 errors, 77 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
nlm_xlr_defconfig (mips, gcc-8) — FAIL, 1 error, 2 warnings, 0 section mismatches
Errors:
arch/mips/include/asm/netlogic/xlr/fmn.h:304:22: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
cc1: all warnings being treated as errors
--------------------------------------------------------------------------------
nuc910_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
--------------------------------------------------------------------------------
nuc950_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
nuc960_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
--------------------------------------------------------------------------------
omap1_defconfig (arm, gcc-8) — PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
orion5x_defconfig (arm, gcc-8) — PASS, 0 errors, 16 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
--------------------------------------------------------------------------------
palmz72_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
pcm027_defconfig (arm, gcc-8) — PASS, 0 errors, 8 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
pleb_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
prima2_defconfig (arm, gcc-8) — PASS, 0 errors, 9 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
pxa168_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
pxa255-idp_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
pxa3xx_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
pxa910_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
qi_lb60_defconfig (mips, gcc-8) — PASS, 0 errors, 30 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
raumfeld_defconfig (arm, gcc-8) — PASS, 0 errors, 15 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
rb532_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
realview-smp_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
rm200_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
rpc_defconfig (arm, gcc-8) — PASS, 0 errors, 9 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
--------------------------------------------------------------------------------
rt305x_defconfig (mips, gcc-8) — FAIL, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1431: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1257: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
s3c2410_defconfig (arm, gcc-8) — PASS, 0 errors, 21 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/scsi/scsi_tgt_if.c:192:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
fs/udf/super.c:933:4: warning: ‘strncpy’ output may be truncated copying between 0 and 31 bytes from a string of length 253 [-Wstringop-truncation]
--------------------------------------------------------------------------------
s5pc100_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
s5pv210_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
sb1250_swarm_defconfig (mips, gcc-8) — PASS, 0 errors, 48 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
sead3micro_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
arch/mips/kernel/genex.S:152: Error: branch to a symbol in another ISA mode
arch/mips/kernel/genex.S:234: Error: branch to a symbol in another ISA mode
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1395: Warning: the `msa' extension requires 64-bit FPRs
--------------------------------------------------------------------------------
shannon_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
shmobile_defconfig (arm, gcc-8) — PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
simpad_defconfig (arm, gcc-8) — PASS, 0 errors, 16 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/irda/irtty-sir.c:405:3: warning: ‘strncpy’ output may be truncated copying 5 bytes from a string of length 15 [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
socfpga_defconfig (arm, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
spear13xx_defconfig (arm, gcc-8) — PASS, 0 errors, 9 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
spear3xx_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
spear6xx_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
spitz_defconfig (arm, gcc-8) — PASS, 0 errors, 20 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
sunxi_defconfig (arm, gcc-8) — PASS, 0 errors, 11 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
tb0219_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
tb0226_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
tb0287_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
tct_hammer_defconfig (arm, gcc-8) — PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
--------------------------------------------------------------------------------
trizeps4_defconfig (arm, gcc-8) — PASS, 0 errors, 20 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/net/wireless/hostap/hostap_ioctl.c:3614:3: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
drivers/net/irda/irtty-sir.c:405:3: warning: ‘strncpy’ output may be truncated copying 5 bytes from a string of length 15 [-Wstringop-truncation]
net/bluetooth/hidp/core.c:779:2: warning: ‘strncpy’ output may be truncated copying 127 bytes from a string of length 127 [-Wstringop-truncation]
net/irda/irlmp.c:870:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/irlmp.c:1107:2: warning: ‘strncpy’ output may be truncated copying 21 bytes from a string of length 64 [-Wstringop-truncation]
net/irda/af_irda.c:481:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
net/irda/ircomm/ircomm_param.c:260:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
u8500_defconfig (arm, gcc-8) — PASS, 0 errors, 19 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
net/caif/cfctrl.c:261:3: warning: ‘strncpy’ output may be truncated copying 15 bytes from a string of length 15 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/mfd/db8500-prcmu.c:2721:2: warning: ‘strncpy’ specified bound 20 equals destination size [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
versatile_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
vexpress_defconfig (arm, gcc-8) — PASS, 0 errors, 12 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
viper_defconfig (arm, gcc-8) — PASS, 0 errors, 14 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/configfs/symlink.c:67:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
--------------------------------------------------------------------------------
vt8500_v6_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 12 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/base/regmap/regcache-rbtree.c:36:1: warning: alignment 1 of ‘struct regcache_rbtree_node’ is less than 4 [-Wpacked-not-aligned]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
workpad_defconfig (mips, gcc-8) — PASS, 0 errors, 29 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
x86_64_defconfig (x86_64, gcc-8) — PASS, 0 errors, 63 warnings, 0 section mismatches
Warnings:
arch/x86/kernel/rtc.c:173:29: warning: duplicate ‘const’ declaration specifier [-Wduplicate-decl-specifier]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:212:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:118:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:78:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:49:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:493:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:292:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:245:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:162:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
include/trace/events/writeback.h:564:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:310:2: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
fs/ext4/super.c:314:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:384:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/ablkcipher.c:466:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/blkcipher.c:516:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:121:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
crypto/aead.c:206:2: warning: ‘strncpy’ specified bound 64 equals destination size [-Wstringop-truncation]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
arch/x86/power/hibernate_64.c:129:2: warning: ‘memcpy’ forming offset [2, 4096] is out of the bounds [0, 1] of object ‘core_restore_code’ with type ‘char’ [-Warray-bounds]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
include/uapi/linux/sctp.h:239:1: warning: alignment 4 of ‘struct sctp_paddr_change’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:513:1: warning: alignment 4 of ‘struct sctp_setpeerprim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:512:26: warning: ‘sspp_addr’ offset 4 in ‘struct sctp_setpeerprim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:526:1: warning: alignment 4 of ‘struct sctp_prim’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:525:26: warning: ‘ssp_addr’ offset 4 in ‘struct sctp_prim’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:573:1: warning: alignment 4 of ‘struct sctp_paddrparams’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:567:26: warning: ‘spp_address’ offset 4 in ‘struct sctp_paddrparams’ isn’t aligned to 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:680:1: warning: alignment 4 of ‘struct sctp_paddrinfo’ is less than 8 [-Wpacked-not-aligned]
include/uapi/linux/sctp.h:674:26: warning: ‘spinfo_address’ offset 4 in ‘struct sctp_paddrinfo’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/ipv4/ip_tunnel.c:312:3: warning: ‘strncat’ specified bound 2 equals source length [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
drivers/gpu/drm/i915/intel_tv.c:1422:3: warning: ‘strncpy’ specified bound 32 equals destination size [-Wstringop-truncation]
net/compat.c:548:1: warning: alignment 4 of ‘struct compat_group_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:546:35: warning: ‘gr_group’ offset 4 in ‘struct compat_group_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:552:35: warning: ‘gsr_group’ offset 4 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:556:1: warning: alignment 4 of ‘struct compat_group_source_req’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:554:35: warning: ‘gsr_source’ offset 132 in ‘struct compat_group_source_req’ isn’t aligned to 8 [-Wpacked-not-aligned]
net/compat.c:566:1: warning: alignment 4 of ‘struct compat_group_filter’ is less than 8 [-Wpacked-not-aligned]
net/compat.c:560:35: warning: ‘gf_group’ offset 4 in ‘struct compat_group_filter’ isn’t aligned to 8 [-Wpacked-not-aligned]
drivers/scsi/scsi_devinfo.c:293:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
drivers/scsi/scsi_devinfo.c:304:4: warning: ‘strncpy’ output truncated copying between 0 and 16 bytes from a string of length 16 [-Wstringop-truncation]
drivers/video/hdmi.c:162:2: warning: ‘strncpy’ specified bound 8 equals destination size [-Wstringop-truncation]
drivers/video/hdmi.c:163:2: warning: ‘strncpy’ specified bound 16 equals destination size [-Wstringop-truncation]
--------------------------------------------------------------------------------
xcep_defconfig (arm, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
fs/exec.c:1069:32: warning: argument to ‘sizeof’ in ‘strncpy’ call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
fs/kernfs/symlink.c:91:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
net/socket.c:490:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
lib/kobject.c:130:3: warning: ‘strncpy’ output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
--------------------------------------------------------------------------------
xway_defconfig (mips, gcc-8) — FAIL, 0 errors, 31 warnings, 0 section mismatches
Warnings:
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
{standard input}:1525: Warning: the `msa' extension requires 64-bit FPRs
{standard input}:1821: Warning: the `msa' extension requires 64-bit FPRs
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:679:36: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
arch/mips/math-emu/cp1emu.c:684:14: warning: ‘~’ on a boolean expression [-Wbool-operation]
<stdin>:1238:2: warning: #warning syscall seccomp not implemented [-Wcpp]
---
For more info write to <info(a)kernelci.org>
From: Chiawei Wang <chiaweiwang(a)google.com>
CLOCK_REALTIME in vdso data won't be updated if
__arch_use_vsyscall() returns false. It will let time()
return an incorrect time value. Since time() is designed
to return the seconds since the Epoch, using
CLOCK_REALTIME_COARSE can still fulfill the request and
never fails.
Signed-off-by: Chiawei Wang <chiaweiwang(a)google.com>
Signed-off-by: Mark Salyzyn <salyzyn(a)android.com>
Cc: linux-kernel(a)vger.kernel.org
Cc: kernel-team(a)android.com
Cc: stable(a)vger.kernel.org # 5.4+
---
lib/vdso/gettimeofday.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/vdso/gettimeofday.c b/lib/vdso/gettimeofday.c
index a2909af4b924..7ea22096cbe2 100644
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -324,7 +324,7 @@ __cvdso_time_data(const struct vdso_data *vd, __kernel_old_time_t *time)
vd->clock_mode == VDSO_CLOCKMODE_TIMENS)
vd = __arch_get_timens_vdso_data();
- t = READ_ONCE(vd[CS_HRES_COARSE].basetime[CLOCK_REALTIME].sec);
+ t = READ_ONCE(vd[CS_HRES_COARSE].basetime[CLOCK_REALTIME_COARSE].sec);
if (time)
*time = t;
--
2.27.0.278.ge193c7cf3a9-goog
The flag indicating a watchdog timeout having occurred normally persists
till Power-On Reset of the Fintek Super I/O chip. The user can clear it
by writing a `1' to the bit.
The driver doesn't offer a restart method, so regular system reboot
might not reset the Super I/O and if the watchdog isn't enabled, we
won't touch the register containing the bit on the next boot.
In this case all subsequent regular reboots will be wrongly flagged
by the driver as being caused by the watchdog.
Fix this by having the flag cleared after read. This is also done by
other drivers like those for the i6300esb and mpc8xxx_wdt.
Fixes: b97cb21a4634 ("watchdog: f71808e_wdt: Fix WDTMOUT_STS register read")
Cc: stable(a)vger.kernel.org
Signed-off-by: Ahmad Fatoum <a.fatoum(a)pengutronix.de>
---
drivers/watchdog/f71808e_wdt.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/watchdog/f71808e_wdt.c b/drivers/watchdog/f71808e_wdt.c
index 8e5584c54423..26bf366aebc2 100644
--- a/drivers/watchdog/f71808e_wdt.c
+++ b/drivers/watchdog/f71808e_wdt.c
@@ -706,6 +706,13 @@ static int __init watchdog_init(int sioaddr)
wdt_conf = superio_inb(sioaddr, F71808FG_REG_WDT_CONF);
watchdog.caused_reboot = wdt_conf & BIT(F71808FG_FLAG_WDTMOUT_STS);
+ /*
+ * We don't want WDTMOUT_STS to stick around till regular reboot.
+ * Write 1 to the bit to clear it to zero.
+ */
+ superio_outb(sioaddr, F71808FG_REG_WDT_CONF,
+ wdt_conf | BIT(F71808FG_FLAG_WDTMOUT_STS));
+
superio_exit(sioaddr);
err = watchdog_set_timeout(timeout);
--
2.27.0
The flags that should be or-ed into the watchdog_info.options by drivers
all start with WDIOF_, e.g. WDIOF_SETTIMEOUT, which indicates that the
driver's watchdog_ops has a usable set_timeout.
WDIOC_SETTIMEOUT was used instead, which expands to 0xc0045706, which
equals:
WDIOF_FANFAULT | WDIOF_EXTERN1 | WDIOF_PRETIMEOUT | WDIOF_ALARMONLY |
WDIOF_MAGICCLOSE | 0xc0045000
These were so far indicated to userspace on WDIOC_GETSUPPORT.
As the driver has not yet been migrated to the new watchdog kernel API,
the constant can just be dropped without substitute.
Fixes: 96cb4eb019ce ("watchdog: f71808e_wdt: new watchdog driver for
Fintek F71808E and F71882FG")
Cc: stable(a)vger.kernel.org
Signed-off-by: Ahmad Fatoum <a.fatoum(a)pengutronix.de>
---
drivers/watchdog/f71808e_wdt.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/watchdog/f71808e_wdt.c b/drivers/watchdog/f71808e_wdt.c
index c8ce80c13403..8e5584c54423 100644
--- a/drivers/watchdog/f71808e_wdt.c
+++ b/drivers/watchdog/f71808e_wdt.c
@@ -690,8 +690,7 @@ static int __init watchdog_init(int sioaddr)
* into the module have been registered yet.
*/
watchdog.sioaddr = sioaddr;
- watchdog.ident.options = WDIOC_SETTIMEOUT
- | WDIOF_MAGICCLOSE
+ watchdog.ident.options = WDIOF_MAGICCLOSE
| WDIOF_KEEPALIVEPING
| WDIOF_CARDRESET;
--
2.27.0
This is an automatic generated email to let you know that the following patch were queued:
Subject: media: videobuf2-dma-contig: fix bad kfree in vb2_dma_contig_clear_max_seg_size
Author: Tomi Valkeinen <tomi.valkeinen(a)ti.com>
Date: Wed May 27 10:23:34 2020 +0200
Commit 9495b7e92f716ab2bd6814fab5e97ab4a39adfdd ("driver core: platform:
Initialize dma_parms for platform devices") in v5.7-rc5 causes
vb2_dma_contig_clear_max_seg_size() to kfree memory that was not
allocated by vb2_dma_contig_set_max_seg_size().
The assumption in vb2_dma_contig_set_max_seg_size() seems to be that
dev->dma_parms is always NULL when the driver is probed, and the case
where dev->dma_parms has bee initialized by someone else than the driver
(by calling vb2_dma_contig_set_max_seg_size) will cause a failure.
All the current users of these functions are platform devices, which now
always have dma_parms set by the driver core. To fix the issue for v5.7,
make vb2_dma_contig_set_max_seg_size() return an error if dma_parms is
NULL to be on the safe side, and remove the kfree code from
vb2_dma_contig_clear_max_seg_size().
For v5.8 we should remove the two functions and move the
dma_set_max_seg_size() calls into the drivers.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen(a)ti.com>
Fixes: 9495b7e92f71 ("driver core: platform: Initialize dma_parms for platform devices")
Cc: stable(a)vger.kernel.org
Acked-by: Marek Szyprowski <m.szyprowski(a)samsung.com>
Reviewed-by: Ulf Hansson <ulf.hansson(a)linaro.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco(a)xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei(a)kernel.org>
.../media/common/videobuf2/videobuf2-dma-contig.c | 20 ++------------------
include/media/videobuf2-dma-contig.h | 2 +-
2 files changed, 3 insertions(+), 19 deletions(-)
---
diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
index d3a3ee5b597b..f4b4a7c135eb 100644
--- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
+++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
@@ -726,9 +726,8 @@ EXPORT_SYMBOL_GPL(vb2_dma_contig_memops);
int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size)
{
if (!dev->dma_parms) {
- dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL);
- if (!dev->dma_parms)
- return -ENOMEM;
+ dev_err(dev, "Failed to set max_seg_size: dma_parms is NULL\n");
+ return -ENODEV;
}
if (dma_get_max_seg_size(dev) < size)
return dma_set_max_seg_size(dev, size);
@@ -737,21 +736,6 @@ int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size)
}
EXPORT_SYMBOL_GPL(vb2_dma_contig_set_max_seg_size);
-/*
- * vb2_dma_contig_clear_max_seg_size() - release resources for DMA parameters
- * @dev: device for configuring DMA parameters
- *
- * This function releases resources allocated to configure DMA parameters
- * (see vb2_dma_contig_set_max_seg_size() function). It should be called from
- * device drivers on driver remove.
- */
-void vb2_dma_contig_clear_max_seg_size(struct device *dev)
-{
- kfree(dev->dma_parms);
- dev->dma_parms = NULL;
-}
-EXPORT_SYMBOL_GPL(vb2_dma_contig_clear_max_seg_size);
-
MODULE_DESCRIPTION("DMA-contig memory handling routines for videobuf2");
MODULE_AUTHOR("Pawel Osciak <pawel(a)osciak.com>");
MODULE_LICENSE("GPL");
diff --git a/include/media/videobuf2-dma-contig.h b/include/media/videobuf2-dma-contig.h
index 5604818d137e..5be313cbf7d7 100644
--- a/include/media/videobuf2-dma-contig.h
+++ b/include/media/videobuf2-dma-contig.h
@@ -25,7 +25,7 @@ vb2_dma_contig_plane_dma_addr(struct vb2_buffer *vb, unsigned int plane_no)
}
int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size);
-void vb2_dma_contig_clear_max_seg_size(struct device *dev);
+static inline void vb2_dma_contig_clear_max_seg_size(struct device *dev) { }
extern const struct vb2_mem_ops vb2_dma_contig_memops;
This is an automatic generated email to let you know that the following patch were queued:
Subject: media: cedrus: Program output format during each run
Author: Samuel Holland <samuel(a)sholland.org>
Date: Sat May 9 22:06:42 2020 +0200
Previously, the output format was programmed as part of the ioctl()
handler. However, this has two problems:
1) If there are multiple active streams with different output
formats, the hardware will use whichever format was set last
for both streams. Similarly, an ioctl() done in an inactive
context will wrongly affect other active contexts.
2) The registers are written while the device is not actively
streaming. To enable runtime PM tied to the streaming state,
all hardware access needs to be moved inside cedrus_device_run().
The call to cedrus_dst_format_set() is now placed just before the
codec-specific callback that programs the hardware.
Cc: <stable(a)vger.kernel.org>
Fixes: 50e761516f2b ("media: platform: Add Cedrus VPU decoder driver")
Suggested-by: Jernej Skrabec <jernej.skrabec(a)siol.net>
Suggested-by: Paul Kocialkowski <paul.kocialkowski(a)bootlin.com>
Signed-off-by: Samuel Holland <samuel(a)sholland.org>
Tested-by: Jernej Skrabec <jernej.skrabec(a)siol.net>
Reviewed-by: Jernej Skrabec <jernej.skrabec(a)siol.net>
Reviewed-by: Ezequiel Garcia <ezequiel(a)collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco(a)xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei(a)kernel.org>
drivers/staging/media/sunxi/cedrus/cedrus_dec.c | 2 ++
drivers/staging/media/sunxi/cedrus/cedrus_video.c | 3 ---
2 files changed, 2 insertions(+), 3 deletions(-)
---
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c
index 4a2fc33a1d79..58c48e4fdfe9 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c
@@ -74,6 +74,8 @@ void cedrus_device_run(void *priv)
v4l2_m2m_buf_copy_metadata(run.src, run.dst, true);
+ cedrus_dst_format_set(dev, &ctx->dst_fmt);
+
dev->dec_ops[ctx->current_codec]->setup(ctx, &run);
/* Complete request(s) controls if needed. */
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_video.c b/drivers/staging/media/sunxi/cedrus/cedrus_video.c
index 15cf1f10221b..ed3f511f066f 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c
@@ -273,7 +273,6 @@ static int cedrus_s_fmt_vid_cap(struct file *file, void *priv,
struct v4l2_format *f)
{
struct cedrus_ctx *ctx = cedrus_file2ctx(file);
- struct cedrus_dev *dev = ctx->dev;
struct vb2_queue *vq;
int ret;
@@ -287,8 +286,6 @@ static int cedrus_s_fmt_vid_cap(struct file *file, void *priv,
ctx->dst_fmt = f->fmt.pix;
- cedrus_dst_format_set(dev, &ctx->dst_fmt);
-
return 0;
}
RESEND the patchset because I forgot to add the first two patches
to the set
The first two patches in this patchset are two bug fixes related to the enumeration and
settings of the sink format of the resizer entity.
The next 3 patches are renaming/removing macros and variables.
patch 6 adds documentation to the struct rkisp1_isp_mbus_info
changes from v2:
- patch 3 is new - remove macro RKISP1_DIR_SINK_SRC since the code is more readable without it.
- patch 5 - rename 'direction' to 'isp_pads_mask' instead of 'isp_pads_flags'
- patch 6 is new - add documentation of the struct 'rkisp1_isp_mbus_info'
changes from v1:
- added "Fixes: 56e3b29f9f6b "media: staging: rkisp1: add streaming paths"
to the commit log of the first two patches.
- added two patches. One patch rename the macros "RKISP1_DIR_*"
to "RKISP1_ISP_SD_*", another that rename the field 'direction'
in 'struct rkisp1_isp_mbus_info' to 'isp_pads_flags'
Dafna Hirschfeld (6):
media: staging: rkisp1: rsz: supported formats are the isp's src
formats, not sink formats
media: staging: rkisp1: rsz: set default format if the given format is
not RKISP1_DIR_SRC
media: staging: rkisp1: remove macro RKISP1_DIR_SINK_SRC
media: staging: rkisp1: rename macros 'RKISP1_DIR_*' to
'RKISP1_ISP_SD_*'
media: staging: rkisp1: rename the field 'direction' in
'rkisp1_isp_mbus_info' to 'isp_pads_mask'
media: staging: rkisp1: common: add documentation for struct
rkisp1_isp_mbus_info
drivers/staging/media/rkisp1/rkisp1-common.h | 18 ++++++-
drivers/staging/media/rkisp1/rkisp1-isp.c | 50 +++++++++----------
drivers/staging/media/rkisp1/rkisp1-resizer.c | 6 +--
3 files changed, 43 insertions(+), 31 deletions(-)
--
2.17.1
The following commit has been merged into the x86/urgent branch of tip:
Commit-ID: 21998a351512eba4ed5969006f0c55882d995ada
Gitweb: https://git.kernel.org/tip/21998a351512eba4ed5969006f0c55882d995ada
Author: Anthony Steinhauser <asteinhauser(a)google.com>
AuthorDate: Tue, 19 May 2020 06:40:42 -07:00
Committer: Thomas Gleixner <tglx(a)linutronix.de>
CommitterDate: Tue, 09 Jun 2020 10:50:54 +02:00
x86/speculation: Avoid force-disabling IBPB based on STIBP and enhanced IBRS.
When STIBP is unavailable or enhanced IBRS is available, Linux
force-disables the IBPB mitigation of Spectre-BTB even when simultaneous
multithreading is disabled. While attempts to enable IBPB using
prctl(PR_SET_SPECULATION_CTRL, PR_SPEC_INDIRECT_BRANCH, ...) fail with
EPERM, the seccomp syscall (or its prctl(PR_SET_SECCOMP, ...) equivalent)
which are used e.g. by Chromium or OpenSSH succeed with no errors but the
application remains silently vulnerable to cross-process Spectre v2 attacks
(classical BTB poisoning). At the same time the SYSFS reporting
(/sys/devices/system/cpu/vulnerabilities/spectre_v2) displays that IBPB is
conditionally enabled when in fact it is unconditionally disabled.
STIBP is useful only when SMT is enabled. When SMT is disabled and STIBP is
unavailable, it makes no sense to force-disable also IBPB, because IBPB
protects against cross-process Spectre-BTB attacks regardless of the SMT
state. At the same time since missing STIBP was only observed on AMD CPUs,
AMD does not recommend using STIBP, but recommends using IBPB, so disabling
IBPB because of missing STIBP goes directly against AMD's advice:
https://developer.amd.com/wp-content/resources/Architecture_Guidelines_Upda…
Similarly, enhanced IBRS is designed to protect cross-core BTB poisoning
and BTB-poisoning attacks from user space against kernel (and
BTB-poisoning attacks from guest against hypervisor), it is not designed
to prevent cross-process (or cross-VM) BTB poisoning between processes (or
VMs) running on the same core. Therefore, even with enhanced IBRS it is
necessary to flush the BTB during context-switches, so there is no reason
to force disable IBPB when enhanced IBRS is available.
Enable the prctl control of IBPB even when STIBP is unavailable or enhanced
IBRS is available.
Fixes: 7cc765a67d8e ("x86/speculation: Enable prctl mode for spectre_v2_user")
Signed-off-by: Anthony Steinhauser <asteinhauser(a)google.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
---
arch/x86/kernel/cpu/bugs.c | 87 +++++++++++++++++++++----------------
1 file changed, 50 insertions(+), 37 deletions(-)
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index ed54b3b..8d57562 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -495,7 +495,9 @@ early_param("nospectre_v1", nospectre_v1_cmdline);
static enum spectre_v2_mitigation spectre_v2_enabled __ro_after_init =
SPECTRE_V2_NONE;
-static enum spectre_v2_user_mitigation spectre_v2_user __ro_after_init =
+static enum spectre_v2_user_mitigation spectre_v2_user_stibp __ro_after_init =
+ SPECTRE_V2_USER_NONE;
+static enum spectre_v2_user_mitigation spectre_v2_user_ibpb __ro_after_init =
SPECTRE_V2_USER_NONE;
#ifdef CONFIG_RETPOLINE
@@ -641,15 +643,6 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
break;
}
- /*
- * At this point, an STIBP mode other than "off" has been set.
- * If STIBP support is not being forced, check if STIBP always-on
- * is preferred.
- */
- if (mode != SPECTRE_V2_USER_STRICT &&
- boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
- mode = SPECTRE_V2_USER_STRICT_PREFERRED;
-
/* Initialize Indirect Branch Prediction Barrier */
if (boot_cpu_has(X86_FEATURE_IBPB)) {
setup_force_cpu_cap(X86_FEATURE_USE_IBPB);
@@ -672,23 +665,36 @@ spectre_v2_user_select_mitigation(enum spectre_v2_mitigation_cmd v2_cmd)
pr_info("mitigation: Enabling %s Indirect Branch Prediction Barrier\n",
static_key_enabled(&switch_mm_always_ibpb) ?
"always-on" : "conditional");
+
+ spectre_v2_user_ibpb = mode;
}
- /* If enhanced IBRS is enabled no STIBP required */
- if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
+ /*
+ * If enhanced IBRS is enabled or SMT impossible, STIBP is not
+ * required.
+ */
+ if (!smt_possible || spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return;
/*
- * If SMT is not possible or STIBP is not available clear the STIBP
- * mode.
+ * At this point, an STIBP mode other than "off" has been set.
+ * If STIBP support is not being forced, check if STIBP always-on
+ * is preferred.
+ */
+ if (mode != SPECTRE_V2_USER_STRICT &&
+ boot_cpu_has(X86_FEATURE_AMD_STIBP_ALWAYS_ON))
+ mode = SPECTRE_V2_USER_STRICT_PREFERRED;
+
+ /*
+ * If STIBP is not available, clear the STIBP mode.
*/
- if (!smt_possible || !boot_cpu_has(X86_FEATURE_STIBP))
+ if (!boot_cpu_has(X86_FEATURE_STIBP))
mode = SPECTRE_V2_USER_NONE;
+
+ spectre_v2_user_stibp = mode;
+
set_mode:
- spectre_v2_user = mode;
- /* Only print the STIBP mode when SMT possible */
- if (smt_possible)
- pr_info("%s\n", spectre_v2_user_strings[mode]);
+ pr_info("%s\n", spectre_v2_user_strings[mode]);
}
static const char * const spectre_v2_strings[] = {
@@ -921,7 +927,7 @@ void cpu_bugs_smt_update(void)
{
mutex_lock(&spec_ctrl_mutex);
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
break;
case SPECTRE_V2_USER_STRICT:
@@ -1164,14 +1170,16 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
{
switch (ctrl) {
case PR_SPEC_ENABLE:
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return 0;
/*
* Indirect branch speculation is always disabled in strict
* mode.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return -EPERM;
task_clear_spec_ib_disable(task);
task_update_spec_tif(task);
@@ -1182,10 +1190,12 @@ static int ib_prctl_set(struct task_struct *task, unsigned long ctrl)
* Indirect branch speculation is always allowed when
* mitigation is force disabled.
*/
- if (spectre_v2_user == SPECTRE_V2_USER_NONE)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return -EPERM;
- if (spectre_v2_user == SPECTRE_V2_USER_STRICT ||
- spectre_v2_user == SPECTRE_V2_USER_STRICT_PREFERRED)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
return 0;
task_set_spec_ib_disable(task);
if (ctrl == PR_SPEC_FORCE_DISABLE)
@@ -1216,7 +1226,8 @@ void arch_seccomp_spec_mitigate(struct task_struct *task)
{
if (ssb_mode == SPEC_STORE_BYPASS_SECCOMP)
ssb_prctl_set(task, PR_SPEC_FORCE_DISABLE);
- if (spectre_v2_user == SPECTRE_V2_USER_SECCOMP)
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP)
ib_prctl_set(task, PR_SPEC_FORCE_DISABLE);
}
#endif
@@ -1247,22 +1258,24 @@ static int ib_prctl_get(struct task_struct *task)
if (!boot_cpu_has_bug(X86_BUG_SPECTRE_V2))
return PR_SPEC_NOT_AFFECTED;
- switch (spectre_v2_user) {
- case SPECTRE_V2_USER_NONE:
+ if (spectre_v2_user_ibpb == SPECTRE_V2_USER_NONE &&
+ spectre_v2_user_stibp == SPECTRE_V2_USER_NONE)
return PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_PRCTL:
- case SPECTRE_V2_USER_SECCOMP:
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_STRICT_PREFERRED)
+ return PR_SPEC_DISABLE;
+ else if (spectre_v2_user_ibpb == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_ibpb == SPECTRE_V2_USER_SECCOMP ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_PRCTL ||
+ spectre_v2_user_stibp == SPECTRE_V2_USER_SECCOMP) {
if (task_spec_ib_force_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_FORCE_DISABLE;
if (task_spec_ib_disable(task))
return PR_SPEC_PRCTL | PR_SPEC_DISABLE;
return PR_SPEC_PRCTL | PR_SPEC_ENABLE;
- case SPECTRE_V2_USER_STRICT:
- case SPECTRE_V2_USER_STRICT_PREFERRED:
- return PR_SPEC_DISABLE;
- default:
+ } else
return PR_SPEC_NOT_AFFECTED;
- }
}
int arch_prctl_spec_ctrl_get(struct task_struct *task, unsigned long which)
@@ -1501,7 +1514,7 @@ static char *stibp_state(void)
if (spectre_v2_enabled == SPECTRE_V2_IBRS_ENHANCED)
return "";
- switch (spectre_v2_user) {
+ switch (spectre_v2_user_stibp) {
case SPECTRE_V2_USER_NONE:
return ", STIBP: disabled";
case SPECTRE_V2_USER_STRICT:
The first two patches in this patchset are two bug fixes related to the enumeration and
settings of the sink format of the resizer entity.
The next 3 patches are renaming/removing of macros and variables.
patch 6 adds documentation to the struct rkisp1_isp_mbus_info
changes from v2:
- patch 3 is new - remove macro RKISP1_DIR_SINK_SRC since the code is more readable without it.
- patch 5 - rename 'direction' to 'isp_pads_mask' instead of 'isp_pads_flags'
- patch 6 is new - add documentation of the struct 'rkisp1_isp_mbus_info'
changes from v1:
- added "Fixes: 56e3b29f9f6b "media: staging: rkisp1: add streaming paths"
to the commit log of the first two patches.
- added two patches. One patch rename the macros "RKISP1_DIR_*"
to "RKISP1_ISP_SD_*", another that rename the field 'direction'
in 'struct rkisp1_isp_mbus_info' to 'isp_pads_flags'
Dafna Hirschfeld (4):
media: staging: rkisp1: remove macro RKISP1_DIR_SINK_SRC
media: staging: rkisp1: rename macros 'RKISP1_DIR_*' to
'RKISP1_ISP_SD_*'
media: staging: rkisp1: rename the field 'direction' in
'rkisp1_isp_mbus_info' to 'isp_pads_mask'
media: staging: rkisp1: common: add documentation for struct
rkisp1_isp_mbus_info
drivers/staging/media/rkisp1/rkisp1-common.h | 20 ++++++--
drivers/staging/media/rkisp1/rkisp1-isp.c | 46 +++++++++----------
drivers/staging/media/rkisp1/rkisp1-resizer.c | 2 +-
3 files changed, 40 insertions(+), 28 deletions(-)
--
2.17.1
From: Eric Biggers <ebiggers(a)google.com>
If the dentry name passed to ->d_compare() fits in dentry::d_iname, then
it may be concurrently modified by a rename. This can cause undefined
behavior (possibly out-of-bounds memory accesses or crashes) in
utf8_strncasecmp(), since fs/unicode/ isn't written to handle strings
that may be concurrently modified.
Fix this by first copying the filename to a stack buffer if needed.
This way we get a stable snapshot of the filename.
Fixes: b886ee3e778e ("ext4: Support case-insensitive file name lookups")
Cc: <stable(a)vger.kernel.org> # v5.2+
Cc: Al Viro <viro(a)zeniv.linux.org.uk>
Cc: Daniel Rosenberg <drosen(a)google.com>
Cc: Gabriel Krisman Bertazi <krisman(a)collabora.co.uk>
Signed-off-by: Eric Biggers <ebiggers(a)google.com>
---
v2: use memcpy() + barrier() instead of a byte-by-byte copy.
fs/ext4/dir.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c
index c654205f648dd..1d82336b1cd45 100644
--- a/fs/ext4/dir.c
+++ b/fs/ext4/dir.c
@@ -675,6 +675,7 @@ static int ext4_d_compare(const struct dentry *dentry, unsigned int len,
struct qstr qstr = {.name = str, .len = len };
const struct dentry *parent = READ_ONCE(dentry->d_parent);
const struct inode *inode = READ_ONCE(parent->d_inode);
+ char strbuf[DNAME_INLINE_LEN];
if (!inode || !IS_CASEFOLDED(inode) ||
!EXT4_SB(inode->i_sb)->s_encoding) {
@@ -683,6 +684,21 @@ static int ext4_d_compare(const struct dentry *dentry, unsigned int len,
return memcmp(str, name->name, len);
}
+ /*
+ * If the dentry name is stored in-line, then it may be concurrently
+ * modified by a rename. If this happens, the VFS will eventually retry
+ * the lookup, so it doesn't matter what ->d_compare() returns.
+ * However, it's unsafe to call utf8_strncasecmp() with an unstable
+ * string. Therefore, we have to copy the name into a temporary buffer.
+ */
+ if (len <= DNAME_INLINE_LEN - 1) {
+ memcpy(strbuf, str, len);
+ strbuf[len] = 0;
+ qstr.name = strbuf;
+ /* prevent compiler from optimizing out the temporary buffer */
+ barrier();
+ }
+
return ext4_ci_compare(inode, name, &qstr, false);
}
--
2.26.2
Le 11/06/2020 à 13:21, gregkh(a)linuxfoundation.org a écrit :
>
> This is a note to let you know that I've just added the patch titled
>
> crypto: talitos - fix ECB and CBC algs ivsize
>
> to the 4.9-stable tree which can be found at:
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=sum…
>
> The filename of the patch is:
> crypto-talitos-fix-ecb-and-cbc-algs-ivsize.patch
> and it can be found in the queue-4.9 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable(a)vger.kernel.org> know about it.
As far as I can see, the faulty commit e1de42fdfc6a ("crypto: talitos -
fix ECB algs ivsize") only removed .ivsize = AES_BLOCK_SIZE at a wrong
place.
The other changes (removal of .ivsize = DES_BLOCK_SIZE and .ivsize =
DES3_EDE_BLOCK_SIZE) are not from the faulty patch.
Christophe
>
>
> From cantona(a)cantona.net Thu Jun 11 12:53:25 2020
> From: Su Kang Yin <cantona(a)cantona.net>
> Date: Thu, 11 Jun 2020 18:07:45 +0800
> Subject: crypto: talitos - fix ECB and CBC algs ivsize
> To: gregkh(a)linuxfoundation.org, linux-crypto(a)vger.kernel.org, christophe.leroy(a)c-s.fr
> Cc: Su Kang Yin <cantona(a)cantona.net>, Herbert Xu <herbert(a)gondor.apana.org.au>, "David S. Miller" <davem(a)davemloft.net>, linux-kernel(a)vger.kernel.org
> Message-ID: <20200611100745.6513-1-cantona(a)cantona.net>
>
> From: Su Kang Yin <cantona(a)cantona.net>
>
> Patch for 4.9 upstream:
>
> commit e1de42fdfc6a ("crypto: talitos - fix ECB algs ivsize")
> wrongly modified CBC algs ivsize instead of ECB aggs ivsize.
>
> This restore the CBC algs original ivsize of removes ECB's ones.
>
> Signed-off-by: Su Kang Yin <cantona(a)cantona.net>
> Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
> ---
> drivers/crypto/talitos.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> --- a/drivers/crypto/talitos.c
> +++ b/drivers/crypto/talitos.c
> @@ -2636,7 +2636,6 @@ static struct talitos_alg_template drive
> .cra_ablkcipher = {
> .min_keysize = AES_MIN_KEY_SIZE,
> .max_keysize = AES_MAX_KEY_SIZE,
> - .ivsize = AES_BLOCK_SIZE,
> }
> },
> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
> @@ -2670,6 +2669,7 @@ static struct talitos_alg_template drive
> .cra_ablkcipher = {
> .min_keysize = AES_MIN_KEY_SIZE,
> .max_keysize = AES_MAX_KEY_SIZE,
> + .ivsize = AES_BLOCK_SIZE,
> .setkey = ablkcipher_aes_setkey,
> }
> },
> @@ -2687,7 +2687,6 @@ static struct talitos_alg_template drive
> .cra_ablkcipher = {
> .min_keysize = DES_KEY_SIZE,
> .max_keysize = DES_KEY_SIZE,
> - .ivsize = DES_BLOCK_SIZE,
> }
> },
> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
> @@ -2720,7 +2719,6 @@ static struct talitos_alg_template drive
> .cra_ablkcipher = {
> .min_keysize = DES3_EDE_KEY_SIZE,
> .max_keysize = DES3_EDE_KEY_SIZE,
> - .ivsize = DES3_EDE_BLOCK_SIZE,
> }
> },
> .desc_hdr_template = DESC_HDR_TYPE_COMMON_NONSNOOP_NO_AFEU |
>
>
> Patches currently in stable-queue which might be from cantona(a)cantona.net are
>
> queue-4.9/crypto-talitos-fix-ecb-and-cbc-algs-ivsize.patch
>
CVE Description:
NVD Site Link: https://nvd.nist.gov/vuln/detail?vulnId=CVE-2019-18885
It was discovered that the btrfs file system in the Linux kernel did not
properly validate metadata, leading to a NULL pointer dereference. An
attacker could use this to specially craft a file system image that, when
mounted, could cause a denial of service (system crash).
[PATCH v4.19.y 1/2]:
Backporting of upsream commit 09ba3bc9dd15:
btrfs: merge btrfs_find_device and find_device
[PATCH v4.19.y 2/2]:
Backporting of upstream commit 62fdaa52a3d0:
btrfs: Detect unbalanced tree with empty leaf before crashing
On NVD site link of "commit 09ba3bc9dd150457c506e4661380a6183af651c1"
was given as the fix for this CVE. But the issue was still reproducible.
So had to apply patch "Commit 62fdaa52a3d00a875da771719b6dc537ca79fce1"
to fix the issue.
From: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
commit 1866541492641c02874bf51f9d8712b5510f2c64 upstream
When using RS485 half duplex the Transmitter Complete irq is needed to
determine the moment when the transmitter can be disabled. When using
DMA this irq must only be enabled when DMA has completed to transfer all
data. Otherwise the CPU might busily trigger this irq which is not
properly handled and so the also pending irq for the DMA transfer cannot
trigger.
Cc: <stable(a)vger.kernel.org> # v4.14.x
Signed-off-by: Uwe Kleine-König <u.kleine-koenig(a)pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
[Backport to v4.14]
Signed-off-by: Frieder Schrempf <frieder.schrempf(a)kontron.de>
---
When using RS485 with DMA enabled simply transmitting some data on our
i.MX6ULL based boards often freezes the system completely. The higher
the baudrate, the easier it is to reproduce the issue. To test this I
simply used:
stty -F /dev/ttymxc1 speed 115200
while true; do echo TEST > /dev/ttymxc1; done
Without the patch this leads to an almost immediate system freeze,
with the patch applied, everything keeps working as expected.
---
drivers/tty/serial/imx.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 3f2605edd855..70c737236870 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -538,6 +538,11 @@ static void dma_tx_callback(void *data)
if (!uart_circ_empty(xmit) && !uart_tx_stopped(&sport->port))
imx_dma_tx(sport);
+ else if (sport->port.rs485.flags & SER_RS485_ENABLED) {
+ temp = readl(sport->port.membase + UCR4);
+ temp |= UCR4_TCEN;
+ writel(temp, sport->port.membase + UCR4);
+ }
spin_unlock_irqrestore(&sport->port.lock, flags);
}
@@ -555,6 +560,10 @@ static void imx_dma_tx(struct imx_port *sport)
if (sport->dma_is_txing)
return;
+ temp = readl(sport->port.membase + UCR4);
+ temp &= ~UCR4_TCEN;
+ writel(temp, sport->port.membase + UCR4);
+
sport->tx_bytes = uart_circ_chars_pending(xmit);
if (xmit->tail < xmit->head || xmit->head == 0) {
@@ -617,10 +626,15 @@ static void imx_start_tx(struct uart_port *port)
if (!(port->rs485.flags & SER_RS485_RX_DURING_TX))
imx_stop_rx(port);
- /* enable transmitter and shifter empty irq */
- temp = readl(port->membase + UCR4);
- temp |= UCR4_TCEN;
- writel(temp, port->membase + UCR4);
+ /*
+ * Enable transmitter and shifter empty irq only if DMA is off.
+ * In the DMA case this is done in the tx-callback.
+ */
+ if (!sport->dma_is_enabled) {
+ temp = readl(port->membase + UCR4);
+ temp |= UCR4_TCEN;
+ writel(temp, port->membase + UCR4);
+ }
}
if (!sport->dma_is_enabled) {
--
2.17.1
Hi,
Please apply upstream commit 7b06a6909555 ("igb: improve handling of
disconnected adapters") to v4.4.y and to v4.9.y. It fixes a kernel
panic observed in chromeos-4.4.
Thanks,
Jeff
From: Stefan Agner <stefan(a)agner.ch>
commit ad06fdeeef1cbadf86ebbe510e8079abada8b44e upstream.
Use flat regmap cache to avoid lockdep warning at probe:
[ 0.697285] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2755 lockdep_trace_alloc+0x15c/0x160()
[ 0.697449] DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
The RB-tree regmap cache needs to allocate new space on first writes.
However, allocations in an atomic context (e.g. when a spinlock is held)
are not allowed. The function regmap_write calls map->lock, which
acquires a spinlock in the fast_io case. Since the pwm-fsl-ftm driver
uses MMIO, the regmap bus of type regmap_mmio is being used which has
fast_io set to true.
The MMIO space of the pwm-fsl-ftm driver is reasonable condense, hence
using the much faster flat regmap cache is anyway the better choice.
Signed-off-by: Stefan Agner <stefan(a)agner.ch>
Cc: Mark Brown <broonie(a)kernel.org>
Signed-off-by: Thierry Reding <thierry.reding(a)gmail.com>
Signed-off-by: Krzysztof Kozlowski <krzk(a)kernel.org>
---
Fixes lockdep warning. Apply to v4.4 and newer.
---
drivers/pwm/pwm-fsl-ftm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pwm/pwm-fsl-ftm.c b/drivers/pwm/pwm-fsl-ftm.c
index 7225ac6b3df5..fad968eb75f6 100644
--- a/drivers/pwm/pwm-fsl-ftm.c
+++ b/drivers/pwm/pwm-fsl-ftm.c
@@ -392,7 +392,7 @@ static const struct regmap_config fsl_pwm_regmap_config = {
.max_register = FTM_PWMLOAD,
.volatile_reg = fsl_pwm_volatile_reg,
- .cache_type = REGCACHE_RBTREE,
+ .cache_type = REGCACHE_FLAT,
};
static int fsl_pwm_probe(struct platform_device *pdev)
--
2.17.1
On Wed, Jun 10, 2020 at 01:41:59PM -0700, Jian Cai wrote:
> Hello,
>
> @Nick Desaulniers <ndesaulniers(a)google.com> made a patch
> (51da9dfb7f20911ae4e79e9b412a9c2d4c373d4b) and it was accepted to mainline
> as part of ClangBuiltLinux project to make the kernel compatible with
> Clang's integrated assembler. Please consider cherry picking it back to 5.4
> so that we can use Clang's integrated assembler to assemble ChromeOS' Linux
> kernels.
>
>
> commit 51da9dfb7f20911ae4e79e9b412a9c2d4c373d4b
> Author: Nick Desaulniers <ndesaulniers(a)google.com>
> Date: Thu Jun 4 16:50:49 2020 -0700
>
> elfnote: mark all .note sections SHF_ALLOC
>
Now queued up,t hanks.
greg k-h
On a VHE system, the EL1 state is left in the CPU most of the time,
and only syncronized back to memory when vcpu_put() is called (most
of the time on preemption).
Which means that when injecting an exception, we'd better have a way
to either:
(1) write directly to the EL1 sysregs
(2) synchronize the state back to memory, and do the changes there
For an AArch64, we already do (1), so we are safe. Unfortunately,
doing the same thing for AArch32 would be pretty invasive. Instead,
we can easily implement (2) by calling the put/load architectural
backends, and keep preemption disabled. We can then reload the
state back into EL1.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
---
arch/arm64/kvm/aarch32.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/arch/arm64/kvm/aarch32.c b/arch/arm64/kvm/aarch32.c
index 0a356aa91aa1..40a62a99fbf8 100644
--- a/arch/arm64/kvm/aarch32.c
+++ b/arch/arm64/kvm/aarch32.c
@@ -33,6 +33,26 @@ static const u8 return_offsets[8][2] = {
[7] = { 4, 4 }, /* FIQ, unused */
};
+static bool pre_fault_synchronize(struct kvm_vcpu *vcpu)
+{
+ preempt_disable();
+ if (vcpu->arch.sysregs_loaded_on_cpu) {
+ kvm_arch_vcpu_put(vcpu);
+ return true;
+ }
+
+ preempt_enable();
+ return false;
+}
+
+static void post_fault_synchronize(struct kvm_vcpu *vcpu, bool loaded)
+{
+ if (loaded) {
+ kvm_arch_vcpu_load(vcpu, smp_processor_id());
+ preempt_enable();
+ }
+}
+
/*
* When an exception is taken, most CPSR fields are left unchanged in the
* handler. However, some are explicitly overridden (e.g. M[4:0]).
@@ -155,7 +175,10 @@ static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
void kvm_inject_undef32(struct kvm_vcpu *vcpu)
{
+ bool loaded = pre_fault_synchronize(vcpu);
+
prepare_fault32(vcpu, PSR_AA32_MODE_UND, 4);
+ post_fault_synchronize(vcpu, loaded);
}
/*
@@ -168,6 +191,9 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
u32 vect_offset;
u32 *far, *fsr;
bool is_lpae;
+ bool loaded;
+
+ loaded = pre_fault_synchronize(vcpu);
if (is_pabt) {
vect_offset = 12;
@@ -191,6 +217,8 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
/* no need to shuffle FS[4] into DFSR[10] as its 0 */
*fsr = DFSR_FSC_EXTABT_nLPAE;
}
+
+ post_fault_synchronize(vcpu, loaded);
}
void kvm_inject_dabt32(struct kvm_vcpu *vcpu, unsigned long addr)
--
2.26.2
AArch32 CP1x registers are overlayed on their AArch64 counterparts
in the vcpu struct. This leads to an interesting problem as they
are stored in their CPU-local format, and thus a CP1x register
doesn't "hit" the lower 32bit portion of the AArch64 register on
a BE host.
To workaround this unfortunate situation, introduce a bias trick
in the vcpu_cp1x() accessors which picks the correct half of the
64bit register.
Cc: stable(a)vger.kernel.org
Reported-by: James Morse <james.morse(a)arm.com>
Tested-by: James Morse <james.morse(a)arm.com>
Acked-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
---
arch/arm64/include/asm/kvm_host.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 59029e90b557..521eaedfdcc3 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -404,8 +404,10 @@ void vcpu_write_sys_reg(struct kvm_vcpu *vcpu, u64 val, int reg);
* CP14 and CP15 live in the same array, as they are backed by the
* same system registers.
*/
-#define vcpu_cp14(v,r) ((v)->arch.ctxt.copro[(r)])
-#define vcpu_cp15(v,r) ((v)->arch.ctxt.copro[(r)])
+#define CPx_BIAS IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)
+
+#define vcpu_cp14(v,r) ((v)->arch.ctxt.copro[(r) ^ CPx_BIAS])
+#define vcpu_cp15(v,r) ((v)->arch.ctxt.copro[(r) ^ CPx_BIAS])
struct kvm_vm_stat {
ulong remote_tlb_flush;
--
2.26.2
From: James Morse <james.morse(a)arm.com>
aarch32 has pairs of registers to access the high and low parts of 64bit
registers. KVM has a union of 64bit sys_regs[] and 32bit copro[]. The
32bit accessors read the high or low part of the 64bit sys_reg[] value
through the union.
Both sys_reg_descs[] and cp15_regs[] list access_csselr() as the accessor
for CSSELR{,_EL1}. access_csselr() is only aware of the 64bit sys_regs[],
and expects r->reg to be 'CSSELR_EL1' in the enum, index 2 of the 64bit
array.
cp15_regs[] uses the 32bit copro[] alias of sys_regs[]. Here CSSELR is
c0_CSSELR which is the same location in sys_reg[]. r->reg is 'c0_CSSELR',
index 4 in the 32bit array.
access_csselr() uses the 32bit r->reg value to access the 64bit array,
so reads and write the wrong value. sys_regs[4], is ACTLR_EL1, which
is subsequently save/restored when we enter the guest.
ACTLR_EL1 is supposed to be read-only for the guest. This register
only affects execution at EL1, and the host's value is restored before
we return to host EL1.
Convert the 32bit register index back to the 64bit version.
Suggested-by: Marc Zyngier <maz(a)kernel.org>
Signed-off-by: James Morse <james.morse(a)arm.com>
Signed-off-by: Marc Zyngier <maz(a)kernel.org>
Cc: stable(a)vger.kernel.org
Link: https://lore.kernel.org/r/20200529150656.7339-2-james.morse@arm.com
---
arch/arm64/kvm/sys_regs.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index ad1d57501d6d..12f8d57a3cb8 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -1319,10 +1319,16 @@ static bool access_clidr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
static bool access_csselr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
const struct sys_reg_desc *r)
{
+ int reg = r->reg;
+
+ /* See the 32bit mapping in kvm_host.h */
+ if (p->is_aarch32)
+ reg = r->reg / 2;
+
if (p->is_write)
- vcpu_write_sys_reg(vcpu, p->regval, r->reg);
+ vcpu_write_sys_reg(vcpu, p->regval, reg);
else
- p->regval = vcpu_read_sys_reg(vcpu, r->reg);
+ p->regval = vcpu_read_sys_reg(vcpu, reg);
return true;
}
--
2.26.2
This is the start of the stable review cycle for the 5.7.2 release.
There are 24 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Linux 5.7.2-rc1
Oleg Nesterov <oleg(a)redhat.com>
uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
Josh Poimboeuf <jpoimboe(a)redhat.com>
x86/speculation: Add Ivy Bridge to affected list
Mark Gross <mgross(a)linux.intel.com>
x86/speculation: Add SRBDS vulnerability and mitigation documentation
Mark Gross <mgross(a)linux.intel.com>
x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
Mark Gross <mgross(a)linux.intel.com>
x86/cpu: Add 'table' argument to cpu_matches()
Mark Gross <mgross(a)linux.intel.com>
x86/cpu: Add a steppings field to struct x86_cpu_id
Srinivas Kandagatla <srinivas.kandagatla(a)linaro.org>
nvmem: qfprom: remove incorrect write support
Oliver Neukum <oneukum(a)suse.com>
CDC-ACM: heed quirk also in error handling
Pascal Terjan <pterjan(a)google.com>
staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
Jiri Slaby <jslaby(a)suse.cz>
tty: hvc_console, fix crashes on parallel open/close
Dmitry Torokhov <dmitry.torokhov(a)gmail.com>
vt: keyboard: avoid signed integer overflow in k_ascii
Josh Triplett <josh(a)joshtriplett.org>
serial: 8250: Enable 16550A variants by default on non-x86
Paul Cercueil <paul(a)crapouillou.net>
usb: musb: jz4740: Prevent lockup when CONFIG_SMP is set
Dinghao Liu <dinghao.liu(a)zju.edu.cn>
usb: musb: Fix runtime PM imbalance on error
Bin Liu <b-liu(a)ti.com>
usb: musb: start session in resume for host port
Fabrice Gasnier <fabrice.gasnier(a)st.com>
iio: adc: stm32-adc: fix a wrong error message when probing interrupts
Jonathan Cameron <Jonathan.Cameron(a)huawei.com>
iio:chemical:pms7003: Fix timestamp alignment and prevent data leak.
Mathieu Othacehe <m.othacehe(a)gmail.com>
iio: vcnl4000: Fix i2c swapped word reading.
Jonathan Cameron <Jonathan.Cameron(a)huawei.com>
iio:chemical:sps30: Fix timestamp alignment
Johan Hovold <johan(a)kernel.org>
USB: serial: ch341: fix lockup of devices with limited prescaler
Michael Hanselmann <public(a)hansmi.ch>
USB: serial: ch341: add basis for quirk detection
Daniele Palmas <dnlplm(a)gmail.com>
USB: serial: option: add Telit LE910C1-EUX compositions
Bin Liu <b-liu(a)ti.com>
USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
Matt Jolly <Kangie(a)footclan.ninja>
USB: serial: qcserial: add DW5816e QDL support
-------------
Diffstat:
Documentation/ABI/testing/sysfs-devices-system-cpu | 1 +
Documentation/admin-guide/hw-vuln/index.rst | 1 +
.../special-register-buffer-data-sampling.rst | 149 +++++++++++++++++++++
Documentation/admin-guide/kernel-parameters.txt | 20 +++
Makefile | 4 +-
arch/x86/include/asm/cpu_device_id.h | 27 +++-
arch/x86/include/asm/cpufeatures.h | 2 +
arch/x86/include/asm/msr-index.h | 4 +
arch/x86/kernel/cpu/bugs.c | 106 +++++++++++++++
arch/x86/kernel/cpu/common.c | 56 ++++++--
arch/x86/kernel/cpu/cpu.h | 1 +
arch/x86/kernel/cpu/match.c | 7 +-
drivers/base/cpu.c | 8 ++
drivers/iio/adc/stm32-adc-core.c | 34 ++---
drivers/iio/chemical/pms7003.c | 17 ++-
drivers/iio/chemical/sps30.c | 9 +-
drivers/iio/light/vcnl4000.c | 6 +-
drivers/nvmem/qfprom.c | 14 --
drivers/staging/rtl8712/wifi.h | 9 +-
drivers/tty/hvc/hvc_console.c | 23 ++--
drivers/tty/serial/8250/Kconfig | 1 +
drivers/tty/vt/keyboard.c | 26 ++--
drivers/usb/class/cdc-acm.c | 2 +-
drivers/usb/musb/jz4740.c | 4 +-
drivers/usb/musb/musb_core.c | 7 +
drivers/usb/musb/musb_debugfs.c | 10 +-
drivers/usb/serial/ch341.c | 68 +++++++++-
drivers/usb/serial/option.c | 4 +
drivers/usb/serial/qcserial.c | 1 +
drivers/usb/serial/usb_wwan.c | 4 +
include/linux/mod_devicetable.h | 2 +
kernel/events/uprobes.c | 16 ++-
32 files changed, 532 insertions(+), 111 deletions(-)
From: Johannes Thumshirn <jthumshirn(a)suse.de>
commit e7661a8e5ce10b5321882d0bbaf3f81070903319 upstream.
When instrumenting the SCSI layer to run into the
!blk_rq_nr_phys_segments(rq) case the following warning emitted from the
block layer:
blk_peek_request: bad return=-22
This happens because since commit fd3fc0b4d730 ("scsi: don't BUG_ON()
empty DMA transfers") we return the wrong error value from
scsi_prep_fn() back to the block layer.
[mkp: silenced checkpatch]
Signed-off-by: Johannes Thumshirn <jthumshirn(a)suse.de>
Fixes: fd3fc0b4d730 scsi: don't BUG_ON() empty DMA transfers
Cc: <stable(a)vger.kernel.org>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Reviewed-by: Hannes Reinecke <hare(a)suse.com>
Reviewed-by: Bart Van Assche <bart.vanassche(a)sandisk.com>
Signed-off-by: Martin K. Petersen <martin.petersen(a)oracle.com>
[iwamatsu: - backport for 4.4.y and 4.9.y
- Use rq->nr_phys_segments instead of blk_rq_nr_phys_segments]
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu(a)toshiba.co.jp>
---
drivers/scsi/scsi_lib.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 887045ae5d10a..269198b46adbb 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1118,10 +1118,10 @@ int scsi_init_io(struct scsi_cmnd *cmd)
struct scsi_device *sdev = cmd->device;
struct request *rq = cmd->request;
bool is_mq = (rq->mq_ctx != NULL);
- int error;
+ int error = BLKPREP_KILL;
if (WARN_ON_ONCE(!rq->nr_phys_segments))
- return -EINVAL;
+ goto err_exit;
error = scsi_init_sgtable(rq, &cmd->sdb);
if (error)
--
2.27.0