Detect when a directory entry is (possibly partially) beyond directory
size and return EIO in that case since it means the filesystem is
corrupted. Otherwise directory operations can further corrupt the
directory and possibly also oops the kernel.
CC: Anatoly Trosinenko <anatoly.trosinenko(a)gmail.com>
CC: stable(a)vger.kernel.org
Reported-by: Anatoly Trosinenko <anatoly.trosinenko(a)gmail.com>
Signed-off-by: Jan Kara <jack(a)suse.cz>
---
fs/udf/directory.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/udf/directory.c b/fs/udf/directory.c
index 0a98a2369738..3835f983cc99 100644
--- a/fs/udf/directory.c
+++ b/fs/udf/directory.c
@@ -152,6 +152,9 @@ struct fileIdentDesc *udf_fileident_read(struct inode *dir, loff_t *nf_pos,
sizeof(struct fileIdentDesc));
}
}
+ /* Got last entry outside of dir size - fs is corrupted! */
+ if (*nf_pos > dir->i_size)
+ return NULL;
return fi;
}
--
2.16.4
SysRq-L and RCU stall detector call arch_trigger_cpumask_backtrace() to
trigger other CPU's backtrace, but its behavior is totally broken. The
root cause is arch_trigger_cpumask_backtrace() use call-function IPI in
irq context, which trigger deadlocks in smp_call_function_single() and
smp_call_function_many().
This patch fix arch_trigger_cpumask_backtrace() by:
1, Use a dedecated IPI (SMP_CPU_BACKTRACE) to trigger backtraces;
2, If myself is in target cpumask, do backtrace and clear myself;
3, Use a spinlock to avoid parallel backtrace output;
4, Handle SMP_CPU_BACKTRACE IPI for Loongson-3.
I have attempted to implement SMP_CPU_BACKTRACE for all MIPS CPUs, but I
failed because some of their IPIs are not extensible. :(
Cc: stable(a)vger.kernel.org
Signed-off-by: Huacai Chen <chenhc(a)lemote.com>
---
arch/mips/include/asm/smp.h | 3 +++
arch/mips/kernel/process.c | 23 ++++++++++++++++++-----
arch/mips/loongson64/loongson-3/smp.c | 6 ++++++
3 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/arch/mips/include/asm/smp.h b/arch/mips/include/asm/smp.h
index 88ebd83..b0521f4 100644
--- a/arch/mips/include/asm/smp.h
+++ b/arch/mips/include/asm/smp.h
@@ -43,6 +43,7 @@ extern int __cpu_logical_map[NR_CPUS];
/* Octeon - Tell another core to flush its icache */
#define SMP_ICACHE_FLUSH 0x4
#define SMP_ASK_C0COUNT 0x8
+#define SMP_CPU_BACKTRACE 0x10
/* Mask of CPUs which are currently definitely operating coherently */
extern cpumask_t cpu_coherent_mask;
@@ -81,6 +82,8 @@ static inline void __cpu_die(unsigned int cpu)
extern void play_dead(void);
#endif
+void arch_dump_stack(void);
+
/*
* This function will set up the necessary IPIs for Linux to communicate
* with the CPUs in mask.
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 57028d4..647e15d 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -655,26 +655,39 @@ unsigned long arch_align_stack(unsigned long sp)
return sp & ALMASK;
}
-static void arch_dump_stack(void *info)
+void arch_dump_stack(void)
{
struct pt_regs *regs;
+ static arch_spinlock_t lock = __ARCH_SPIN_LOCK_UNLOCKED;
+ arch_spin_lock(&lock);
regs = get_irq_regs();
if (regs)
show_regs(regs);
dump_stack();
+ arch_spin_unlock(&lock);
}
void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
{
long this_cpu = get_cpu();
+ struct cpumask backtrace_mask;
+ extern const struct plat_smp_ops *mp_ops;
+
+ cpumask_copy(&backtrace_mask, mask);
+ if (cpumask_test_cpu(this_cpu, mask)) {
+ if (!exclude_self) {
+ struct pt_regs *regs = get_irq_regs();
+ if (regs)
+ show_regs(regs);
+ dump_stack();
+ }
+ cpumask_clear_cpu(this_cpu, &backtrace_mask);
+ }
- if (cpumask_test_cpu(this_cpu, mask) && !exclude_self)
- dump_stack();
-
- smp_call_function_many(mask, arch_dump_stack, NULL, 1);
+ mp_ops->send_ipi_mask(&backtrace_mask, SMP_CPU_BACKTRACE);
put_cpu();
}
diff --git a/arch/mips/loongson64/loongson-3/smp.c b/arch/mips/loongson64/loongson-3/smp.c
index 8501109..0655114 100644
--- a/arch/mips/loongson64/loongson-3/smp.c
+++ b/arch/mips/loongson64/loongson-3/smp.c
@@ -291,6 +291,12 @@ void loongson3_ipi_interrupt(struct pt_regs *regs)
__wbflush(); /* Let others see the result ASAP */
}
+ if (action & SMP_CPU_BACKTRACE) {
+ irq_enter();
+ arch_dump_stack();
+ irq_exit();
+ }
+
if (irqs) {
int irq;
while ((irq = ffs(irqs))) {
--
2.7.0
The patch titled
Subject: slub: fix failure when we delete and create a slab cache
has been added to the -mm tree. Its filename is
slub-fix-failure-when-we-delete-and-create-a-slab-cache.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/slub-fix-failure-when-we-delete-an…
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/slub-fix-failure-when-we-delete-an…
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Mikulas Patocka <mpatocka(a)redhat.com>
Subject: slub: fix failure when we delete and create a slab cache
In kernel 4.17 I removed some code from dm-bufio that did slab cache
merging (21bb13276768) - both slab and slub support merging caches with
identical attributes, so dm-bufio now just calls kmem_cache_create and
relies on implicit merging.
This uncovered a bug in the slub subsystem - if we delete a cache and
immediatelly create another cache with the same attributes, it fails
because of duplicate filename in /sys/kernel/slab/. The slub subsystem
offloads freeing the cache to a workqueue - and if we create the new cache
before the workqueue runs, it complains because of duplicate filename in
sysfs.
This patch fixes the bug by moving the call of kobject_del from
sysfs_slab_remove_workfn to shutdown_cache. kobject_del must be called
while we hold slab_mutex - so that the sysfs entry is deleted before a
cache with the same attributes could be created.
Running device-mapper-test-suite with:
dmtest run --suite thin-provisioning -n /commit_failure_causes_fallback/
triggers:
[ 119.618958] Buffer I/O error on dev dm-0, logical block 1572848, async page read
[ 119.686224] device-mapper: thin: 253:1: metadata operation 'dm_pool_alloc_data_block' failed: error = -5
[ 119.695821] device-mapper: thin: 253:1: aborting current metadata transaction
[ 119.703255] sysfs: cannot create duplicate filename '/kernel/slab/:a-0000144'
[ 119.710394] CPU: 2 PID: 1037 Comm: kworker/u48:1 Not tainted 4.17.0.snitm+ #25
[ 119.717608] Hardware name: Supermicro SYS-1029P-WTR/X11DDW-L, BIOS 2.0a 12/06/2017
[ 119.725177] Workqueue: dm-thin do_worker [dm_thin_pool]
[ 119.730401] Call Trace:
[ 119.732856] dump_stack+0x5a/0x73
[ 119.736173] sysfs_warn_dup+0x58/0x70
[ 119.739839] sysfs_create_dir_ns+0x77/0x80
[ 119.743939] kobject_add_internal+0xba/0x2e0
[ 119.748210] kobject_init_and_add+0x70/0xb0
[ 119.752399] ? sysfs_slab_add+0x101/0x250
[ 119.756409] sysfs_slab_add+0xb1/0x250
[ 119.760161] __kmem_cache_create+0x116/0x150
[ 119.764436] ? number+0x2fb/0x340
[ 119.767755] ? _cond_resched+0x15/0x30
[ 119.771508] create_cache+0xd9/0x1f0
[ 119.775085] kmem_cache_create_usercopy+0x1c1/0x250
[ 119.779965] kmem_cache_create+0x18/0x20
[ 119.783894] dm_bufio_client_create+0x1ae/0x410 [dm_bufio]
[ 119.789380] ? dm_block_manager_alloc_callback+0x20/0x20 [dm_persistent_data]
[ 119.796509] ? kmem_cache_alloc_trace+0xae/0x1d0
[ 119.801131] dm_block_manager_create+0x5e/0x90 [dm_persistent_data]
[ 119.807397] __create_persistent_data_objects+0x38/0x940 [dm_thin_pool]
[ 119.814008] dm_pool_abort_metadata+0x64/0x90 [dm_thin_pool]
[ 119.819669] metadata_operation_failed+0x59/0x100 [dm_thin_pool]
[ 119.825673] alloc_data_block.isra.53+0x86/0x180 [dm_thin_pool]
[ 119.831592] process_cell+0x2a3/0x550 [dm_thin_pool]
[ 119.836558] ? mempool_alloc+0x6f/0x180
[ 119.840400] ? u32_swap+0x10/0x10
[ 119.843717] ? sort+0x17b/0x270
[ 119.846863] ? u32_swap+0x10/0x10
[ 119.850181] do_worker+0x28d/0x8f0 [dm_thin_pool]
[ 119.854890] ? move_linked_works+0x6f/0xa0
[ 119.858989] process_one_work+0x171/0x370
[ 119.862999] worker_thread+0x49/0x3f0
[ 119.866669] kthread+0xf8/0x130
[ 119.869813] ? max_active_store+0x80/0x80
[ 119.873827] ? kthread_bind+0x10/0x10
[ 119.877493] ret_from_fork+0x35/0x40
[ 119.881076] kobject_add_internal failed for :a-0000144 with -EEXIST, don't try to register things with the same name in the same directory.
[ 119.893580] kmem_cache_create(dm_bufio_buffer-16) failed with error -17
Link: http://lkml.kernel.org/r/alpine.LRH.2.02.1806151817130.6333@file01.intranet…
Signed-off-by: Mikulas Patocka <mpatocka(a)redhat.com>
Reported-by: Mike Snitzer <snitzer(a)redhat.com>
Tested-by: Mike Snitzer <snitzer(a)redhat.com>
Cc: Christoph Lameter <cl(a)linux.com>
Cc: Pekka Enberg <penberg(a)kernel.org>
Cc: David Rientjes <rientjes(a)google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim(a)lge.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
include/linux/slub_def.h | 4 ++++
mm/slab_common.c | 4 ++++
mm/slub.c | 7 ++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff -puN include/linux/slub_def.h~slub-fix-failure-when-we-delete-and-create-a-slab-cache include/linux/slub_def.h
--- a/include/linux/slub_def.h~slub-fix-failure-when-we-delete-and-create-a-slab-cache
+++ a/include/linux/slub_def.h
@@ -155,8 +155,12 @@ struct kmem_cache {
#ifdef CONFIG_SYSFS
#define SLAB_SUPPORTS_SYSFS
+void sysfs_slab_unlink(struct kmem_cache *);
void sysfs_slab_release(struct kmem_cache *);
#else
+static inline void sysfs_slab_unlink(struct kmem_cache *s)
+{
+}
static inline void sysfs_slab_release(struct kmem_cache *s)
{
}
diff -puN mm/slab_common.c~slub-fix-failure-when-we-delete-and-create-a-slab-cache mm/slab_common.c
--- a/mm/slab_common.c~slub-fix-failure-when-we-delete-and-create-a-slab-cache
+++ a/mm/slab_common.c
@@ -567,10 +567,14 @@ static int shutdown_cache(struct kmem_ca
list_del(&s->list);
if (s->flags & SLAB_TYPESAFE_BY_RCU) {
+#ifdef SLAB_SUPPORTS_SYSFS
+ sysfs_slab_unlink(s);
+#endif
list_add_tail(&s->list, &slab_caches_to_rcu_destroy);
schedule_work(&slab_caches_to_rcu_destroy_work);
} else {
#ifdef SLAB_SUPPORTS_SYSFS
+ sysfs_slab_unlink(s);
sysfs_slab_release(s);
#else
slab_kmem_cache_release(s);
diff -puN mm/slub.c~slub-fix-failure-when-we-delete-and-create-a-slab-cache mm/slub.c
--- a/mm/slub.c~slub-fix-failure-when-we-delete-and-create-a-slab-cache
+++ a/mm/slub.c
@@ -5667,7 +5667,6 @@ static void sysfs_slab_remove_workfn(str
kset_unregister(s->memcg_kset);
#endif
kobject_uevent(&s->kobj, KOBJ_REMOVE);
- kobject_del(&s->kobj);
out:
kobject_put(&s->kobj);
}
@@ -5752,6 +5751,12 @@ static void sysfs_slab_remove(struct kme
schedule_work(&s->kobj_remove_work);
}
+void sysfs_slab_unlink(struct kmem_cache *s)
+{
+ if (slab_state >= FULL)
+ kobject_del(&s->kobj);
+}
+
void sysfs_slab_release(struct kmem_cache *s)
{
if (slab_state >= FULL)
_
Patches currently in -mm which might be from mpatocka(a)redhat.com are
slub-fix-failure-when-we-delete-and-create-a-slab-cache.patch
The patch titled
Subject: mm: fix devmem_is_allowed() for sub-page System RAM intersections
has been removed from the -mm tree. Its filename was
mm-fix-devmem_is_allowed-for-sub-page-system-ram-intersections.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Dan Williams <dan.j.williams(a)intel.com>
Subject: mm: fix devmem_is_allowed() for sub-page System RAM intersections
Hussam reports:
I was poking around and for no real reason, I did cat /dev/mem and
strings /dev/mem. Then I saw the following warning in dmesg. I saved it
and rebooted immediately.
memremap attempted on mixed range 0x000000000009c000 size: 0x1000
------------[ cut here ]------------
WARNING: CPU: 0 PID: 11810 at kernel/memremap.c:98 memremap+0x104/0x170
[..]
Call Trace:
xlate_dev_mem_ptr+0x25/0x40
read_mem+0x89/0x1a0
__vfs_read+0x36/0x170
The memremap() implementation checks for attempts to remap System RAM with
MEMREMAP_WB and instead redirects those mapping attempts to the linear
map. However, that only works if the physical address range being
remapped is page aligned. In low memory we have situations like the
following:
00000000-00000fff : Reserved
00001000-0009fbff : System RAM
0009fc00-0009ffff : Reserved
...where System RAM intersects Reserved ranges on a sub-page page
granularity.
Given that devmem_is_allowed() special cases any attempt to map System RAM
in the first 1MB of memory, replace page_is_ram() with the more precise
region_intersects() to trap attempts to map disallowed ranges.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=199999
Link: http://lkml.kernel.org/r/152856436164.18127.2847888121707136898.stgit@dwill…
Fixes: 92281dee825f ("arch: introduce memremap()")
Signed-off-by: Dan Williams <dan.j.williams(a)intel.com>
Reported-by: Hussam Al-Tayeb <me(a)hussam.eu.org>
Tested-by: Hussam Al-Tayeb <me(a)hussam.eu.org>
Cc: Christoph Hellwig <hch(a)lst.de>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
arch/x86/mm/init.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff -puN arch/x86/mm/init.c~mm-fix-devmem_is_allowed-for-sub-page-system-ram-intersections arch/x86/mm/init.c
--- a/arch/x86/mm/init.c~mm-fix-devmem_is_allowed-for-sub-page-system-ram-intersections
+++ a/arch/x86/mm/init.c
@@ -706,7 +706,9 @@ void __init init_mem_mapping(void)
*/
int devmem_is_allowed(unsigned long pagenr)
{
- if (page_is_ram(pagenr)) {
+ if (region_intersects(PFN_PHYS(pagenr), PAGE_SIZE,
+ IORESOURCE_SYSTEM_RAM, IORES_DESC_NONE)
+ != REGION_DISJOINT) {
/*
* For disallowed memory regions in the low 1MB range,
* request that the page be shown as all zeros.
_
Patches currently in -mm which might be from dan.j.williams(a)intel.com are
mm-devm_memremap_pages-mark-devm_memremap_pages-export_symbol_gpl.patch
mm-devm_memremap_pages-handle-errors-allocating-final-devres-action.patch
mm-hmm-use-devm-semantics-for-hmm_devmem_add-remove.patch
mm-hmm-replace-hmm_devmem_pages_create-with-devm_memremap_pages.patch
mm-hmm-mark-hmm_devmem_add-add_resource-export_symbol_gpl.patch
The patch titled
Subject: mm/ksm.c: ignore STABLE_FLAG of rmap_item->address in rmap_walk_ksm()
has been removed from the -mm tree. Its filename was
mm-ksm-ignore-stable_flag-of-rmap_item-address-in-rmap_walk_ksm.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Jia He <jia.he(a)hxt-semitech.com>
Subject: mm/ksm.c: ignore STABLE_FLAG of rmap_item->address in rmap_walk_ksm()
In our armv8a server(QDF2400), I noticed lots of WARN_ON caused by
PAGE_SIZE unaligned for rmap_item->address under memory pressure
tests(start 20 guests and run memhog in the host).
--------------------------begin--------------------------------------
[ 410.853828] WARNING: CPU: 4 PID: 4641 at
arch/arm64/kvm/../../../virt/kvm/arm/mmu.c:1826
kvm_age_hva_handler+0xc0/0xc8
[ 410.864518] Modules linked in: vhost_net vhost tap xt_CHECKSUM
ipt_MASQUERADE nf_nat_masquerade_ipv4 ip6t_rpfilter ipt_REJECT
nf_reject_ipv4 ip6t_REJECT nf_reject_ipv6 xt_conntrack ip_set nfnetlink
ebtable_nat ebtable_broute bridge stp llc ip6table_nat nf_conntrack_ipv6
nf_defrag_ipv6 nf_nat_ipv6 ip6table_mangle ip6table_security
ip6table_raw iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4
nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw
ebtable_filter ebtables ip6table_filter ip6_tables iptable_filter
rpcrdma ib_isert iscsi_target_mod ib_iser libiscsi scsi_transport_iscsi
ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib rdma_ucm
ib_ucm ib_umad rdma_cm ib_cm iw_cm mlx5_ib vfat fat ib_uverbs dm_mirror
dm_region_hash ib_core dm_log dm_mod crc32_ce ipmi_ssif sg nfsd
[ 410.935101] auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs
libcrc32c mlx5_core ixgbe mlxfw devlink mdio ahci_platform
libahci_platform qcom_emac libahci hdma hdma_mgmt i2c_qup
[ 410.951369] CPU: 4 PID: 4641 Comm: memhog Tainted: G W
4.17.0-rc3+ #8
[ 410.959104] Hardware name: <snip for confidential issues>
[ 410.969791] pstate: 80400005 (Nzcv daif +PAN -UAO)
[ 410.974575] pc : kvm_age_hva_handler+0xc0/0xc8
[ 410.979012] lr : handle_hva_to_gpa+0xa8/0xe0
[ 410.983274] sp : ffff801761553290
[ 410.986581] x29: ffff801761553290 x28: 0000000000000000
[ 410.991888] x27: 0000000000000002 x26: 0000000000000000
[ 410.997195] x25: ffff801765430058 x24: ffff0000080b5608
[ 411.002501] x23: 0000000000000000 x22: ffff8017ccb84000
[ 411.007807] x21: 0000000003ff0000 x20: ffff8017ccb84000
[ 411.013113] x19: 000000000000fe00 x18: ffff000008fb3c08
[ 411.018419] x17: 0000000000000000 x16: 0060001645820bd3
[ 411.023725] x15: ffff80176aacbc08 x14: 0000000000000000
[ 411.029031] x13: 0000000000000040 x12: 0000000000000228
[ 411.034337] x11: 0000000000000000 x10: 0000000000000000
[ 411.039643] x9 : 0000000000000010 x8 : 0000000000000004
[ 411.044949] x7 : 0000000000000000 x6 : 00008017f0770000
[ 411.050255] x5 : 0000fffda59f0200 x4 : 0000000000000000
[ 411.055561] x3 : 0000000000000000 x2 : 000000000000fe00
[ 411.060867] x1 : 0000000003ff0000 x0 : 0000000020000000
[ 411.066173] Call trace:
[ 411.068614] kvm_age_hva_handler+0xc0/0xc8
[ 411.072703] handle_hva_to_gpa+0xa8/0xe0
[ 411.076619] kvm_age_hva+0x4c/0xe8
[ 411.080014] kvm_mmu_notifier_clear_flush_young+0x54/0x98
[ 411.085408] __mmu_notifier_clear_flush_young+0x6c/0xa0
[ 411.090627] page_referenced_one+0x154/0x1d8
[ 411.094890] rmap_walk_ksm+0x12c/0x1d0
[ 411.098632] rmap_walk+0x94/0xa0
[ 411.101854] page_referenced+0x194/0x1b0
[ 411.105770] shrink_page_list+0x674/0xc28
[ 411.109772] shrink_inactive_list+0x26c/0x5b8
[ 411.114122] shrink_node_memcg+0x35c/0x620
[ 411.118211] shrink_node+0x100/0x430
[ 411.121778] do_try_to_free_pages+0xe0/0x3a8
[ 411.126041] try_to_free_pages+0xe4/0x230
[ 411.130045] __alloc_pages_nodemask+0x564/0xdc0
[ 411.134569] alloc_pages_vma+0x90/0x228
[ 411.138398] do_anonymous_page+0xc8/0x4d0
[ 411.142400] __handle_mm_fault+0x4a0/0x508
[ 411.146489] handle_mm_fault+0xf8/0x1b0
[ 411.150321] do_page_fault+0x218/0x4b8
[ 411.154064] do_translation_fault+0x90/0xa0
[ 411.158239] do_mem_abort+0x68/0xf0
[ 411.161721] el0_da+0x24/0x28
---------------------------end---------------------------------------
In rmap_walk_ksm, the rmap_item->address might still have the STABLE_FLAG,
then the start and end in handle_hva_to_gpa might not be PAGE_SIZE
aligned. Thus it will cause exceptions in handle_hva_to_gpa on arm64.
This patch fixes it by ignoring (not removing) the low bits of address
when doing rmap_walk_ksm.
IMO, it should be backported to stable tree. the stom of WARN_ONs is
very easy for me to reproduce. More than that, I watched a panic (not
reproducible) as follows:
[35380.805825] page:ffff7fe003742d80 count:-4871 mapcount:-2126053375
mapping: (null) index:0x0
[35380.815024] flags: 0x1fffc00000000000()
[35380.818845] raw: 1fffc00000000000 0000000000000000 0000000000000000
ffffecf981470000
[35380.826569] raw: dead000000000100 dead000000000200 ffff8017c001c000
0000000000000000
[35380.834294] page dumped because: nonzero _refcount
[35380.839069] Modules linked in: vhost_net vhost tap ebtable_filter ebtables
ip6table_filter ip6_tables iptable_filter fcoe libfcoe libfc 8021q garp mrp stp
llc scsi_transport_fc openvswitch nf_conntrack_ipv6 nf_nat_ipv6
nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_defrag_ipv6 nf_nat nf_conntrack
vfat fat rpcrdma ib_isert iscsi_target_mod ib_iser libiscsi scsi_transport_iscsi
ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib rdma_ucm ib_ucm
ib_uverbs ib_umad rdma_cm ib_cm iw_cm mlx5_ib ib_core crc32_ce ipmi_ssif tpm_tis
tpm_tis_core sg nfsd auth_rpcgss nfs_acl lockd grace sunrpc dm_multipath
ip_tables xfs libcrc32c mlx5_core mlxfw devlink ahci_platform libahci_platform
libahci qcom_emac sdhci_acpi sdhci hdma mmc_core hdma_mgmt i2c_qup dm_mirror
dm_region_hash dm_log dm_mod
[35380.908341] CPU: 29 PID: 18323 Comm: qemu-kvm Tainted: G W
4.14.15-5.hxt.aarch64 #1
[35380.917107] Hardware name: <snip for confidential issues>
[35380.930909] Call trace:
[35380.933345] [<ffff000008088f00>] dump_backtrace+0x0/0x22c
[35380.938723] [<ffff000008089150>] show_stack+0x24/0x2c
[35380.943759] [<ffff00000893c078>] dump_stack+0x8c/0xb0
[35380.948794] [<ffff00000820ab50>] bad_page+0xf4/0x154
[35380.953740] [<ffff000008211ce8>] free_pages_check_bad+0x90/0x9c
[35380.959642] [<ffff00000820c430>] free_pcppages_bulk+0x464/0x518
[35380.965545] [<ffff00000820db98>] free_hot_cold_page+0x22c/0x300
[35380.971448] [<ffff0000082176fc>] __put_page+0x54/0x60
[35380.976484] [<ffff0000080b1164>] unmap_stage2_range+0x170/0x2b4
[35380.982385] [<ffff0000080b12d8>] kvm_unmap_hva_handler+0x30/0x40
[35380.988375] [<ffff0000080b0104>] handle_hva_to_gpa+0xb0/0xec
[35380.994016] [<ffff0000080b2644>] kvm_unmap_hva_range+0x5c/0xd0
[35380.999833] [<ffff0000080a8054>]
I even injected a fault on purpose in kvm_unmap_hva_range by seting
size=size-0x200, the call trace is similar as above. So I thought the
panic is similarly caused by the root cause of WARN_ON.
Andrea said:
: It looks a straightforward safe fix, on x86 hva_to_gfn_memslot would
: zap those bits and hide the misalignment caused by the low metadata
: bits being erroneously left set in the address, but the arm code
: notices when that's the last page in the memslot and the hva_end is
: getting aligned and the size is below one page.
:
: I think the problem triggers in the addr += PAGE_SIZE of
: unmap_stage2_ptes that never matches end because end is aligned but
: addr is not.
:
: } while (pte++, addr += PAGE_SIZE, addr != end);
:
: x86 again only works on hva_start/hva_end after converting it to
: gfn_start/end and that being in pfn units the bits are zapped before
: they risk to cause trouble.
Jia He said:
: I've tested by myself in arm64 server (QDF2400,46 cpus,96G mem) Without
: this patch, the WARN_ON is very easy for reproducing. After this patch, I
: have run the same benchmarch for a whole day without any WARN_ONs
Link: http://lkml.kernel.org/r/1525403506-6750-1-git-send-email-hejianet@gmail.com
Signed-off-by: Jia He <jia.he(a)hxt-semitech.com>
Reviewed-by: Andrea Arcangeli <aarcange(a)redhat.com>
Tested-by: Jia He <hejianet(a)gmail.com>
Cc: Suzuki K Poulose <Suzuki.Poulose(a)arm.com>
Cc: Minchan Kim <minchan(a)kernel.org>
Cc: Claudio Imbrenda <imbrenda(a)linux.vnet.ibm.com>
Cc: Arvind Yadav <arvind.yadav.cs(a)gmail.com>
Cc: Mike Rapoport <rppt(a)linux.vnet.ibm.com>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
---
mm/ksm.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff -puN mm/ksm.c~mm-ksm-ignore-stable_flag-of-rmap_item-address-in-rmap_walk_ksm mm/ksm.c
--- a/mm/ksm.c~mm-ksm-ignore-stable_flag-of-rmap_item-address-in-rmap_walk_ksm
+++ a/mm/ksm.c
@@ -216,6 +216,8 @@ struct rmap_item {
#define SEQNR_MASK 0x0ff /* low bits of unstable tree seqnr */
#define UNSTABLE_FLAG 0x100 /* is a node of the unstable tree */
#define STABLE_FLAG 0x200 /* is listed from the stable tree */
+#define KSM_FLAG_MASK (SEQNR_MASK|UNSTABLE_FLAG|STABLE_FLAG)
+ /* to mask all the flags */
/* The stable and unstable tree heads */
static struct rb_root one_stable_tree[1] = { RB_ROOT };
@@ -2598,10 +2600,15 @@ again:
anon_vma_lock_read(anon_vma);
anon_vma_interval_tree_foreach(vmac, &anon_vma->rb_root,
0, ULONG_MAX) {
+ unsigned long addr;
+
cond_resched();
vma = vmac->vma;
- if (rmap_item->address < vma->vm_start ||
- rmap_item->address >= vma->vm_end)
+
+ /* Ignore the stable/unstable/sqnr flags */
+ addr = rmap_item->address & ~KSM_FLAG_MASK;
+
+ if (addr < vma->vm_start || addr >= vma->vm_end)
continue;
/*
* Initially we examine only the vma which covers this
@@ -2615,8 +2622,7 @@ again:
if (rwc->invalid_vma && rwc->invalid_vma(vma, rwc->arg))
continue;
- if (!rwc->rmap_one(page, vma,
- rmap_item->address, rwc->arg)) {
+ if (!rwc->rmap_one(page, vma, addr, rwc->arg)) {
anon_vma_unlock_read(anon_vma);
return;
}
_
Patches currently in -mm which might be from jia.he(a)hxt-semitech.com are
Tree/Branch: v4.4.137
Git describe: v4.4.137
Commit: ed90fd0cfe Linux 4.4.137
Build Time: 63 min 2 sec
Passed: 10 / 10 (100.00 %)
Failed: 0 / 10 ( 0.00 %)
Errors: 0
Warnings: 31
Section Mismatches: 0
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
19 warnings 0 mismatches : arm64-allmodconfig
17 warnings 0 mismatches : x86_64-allmodconfig
-------------------------------------------------------------------------------
Warnings Summary: 31
3 warning: (IMA) selects TCG_CRB which has unmet direct dependencies (TCG_TPM && X86 && ACPI)
2 ../drivers/media/dvb-frontends/stv090x.c:4250:1: warning: the frame size of 4832 bytes is larger than 2048 bytes [-Wframe-larger-than=]
2 ../drivers/media/dvb-frontends/stv090x.c:1211:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
2 ../drivers/media/dvb-frontends/stv090x.c:1168:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/net/ethernet/rocker/rocker.c:2172:1: warning: the frame size of 2752 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/net/ethernet/rocker/rocker.c:2172:1: warning: the frame size of 2720 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:4759:1: warning: the frame size of 2056 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:4565:1: warning: the frame size of 2096 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:4565:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:3436:1: warning: the frame size of 6784 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:3436:1: warning: the frame size of 5280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:3095:1: warning: the frame size of 5864 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:3095:1: warning: the frame size of 5840 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:2513:1: warning: the frame size of 2304 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:2513:1: warning: the frame size of 2288 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:2141:1: warning: the frame size of 2104 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:2141:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:2073:1: warning: the frame size of 2552 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:2073:1: warning: the frame size of 2544 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:1956:1: warning: the frame size of 3264 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:1956:1: warning: the frame size of 3248 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:1858:1: warning: the frame size of 3008 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:1858:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:1599:1: warning: the frame size of 5296 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv090x.c:1599:1: warning: the frame size of 5280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv0367.c:3147:1: warning: the frame size of 4144 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/stv0367.c:2490:1: warning: the frame size of 3424 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2984 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2976 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4328 bytes is larger than 2048 bytes [-Wframe-larger-than=]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm64-allmodconfig : PASS, 0 errors, 19 warnings, 0 section mismatches
Warnings:
warning: (IMA) selects TCG_CRB which has unmet direct dependencies (TCG_TPM && X86 && ACPI)
warning: (IMA) selects TCG_CRB which has unmet direct dependencies (TCG_TPM && X86 && ACPI)
warning: (IMA) selects TCG_CRB which has unmet direct dependencies (TCG_TPM && X86 && ACPI)
../drivers/media/dvb-frontends/stv090x.c:1858:1: warning: the frame size of 2992 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:2141:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:2513:1: warning: the frame size of 2288 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:4565:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1956:1: warning: the frame size of 3248 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1599:1: warning: the frame size of 5280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1211:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:4250:1: warning: the frame size of 4832 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1168:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:2073:1: warning: the frame size of 2544 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:3095:1: warning: the frame size of 5840 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:3436:1: warning: the frame size of 6784 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv0367.c:2490:1: warning: the frame size of 3424 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2976 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4336 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/net/ethernet/rocker/rocker.c:2172:1: warning: the frame size of 2720 bytes is larger than 2048 bytes [-Wframe-larger-than=]
-------------------------------------------------------------------------------
x86_64-allmodconfig : PASS, 0 errors, 17 warnings, 0 section mismatches
Warnings:
../drivers/media/dvb-frontends/stv090x.c:1858:1: warning: the frame size of 3008 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:2141:1: warning: the frame size of 2104 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:2513:1: warning: the frame size of 2304 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:4565:1: warning: the frame size of 2096 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1956:1: warning: the frame size of 3264 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1599:1: warning: the frame size of 5296 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1211:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:4250:1: warning: the frame size of 4832 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:4759:1: warning: the frame size of 2056 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:1168:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:2073:1: warning: the frame size of 2552 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:3095:1: warning: the frame size of 5864 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv090x.c:3436:1: warning: the frame size of 5280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/stv0367.c:3147:1: warning: the frame size of 4144 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/cxd2841er.c:2401:1: warning: the frame size of 2984 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/media/dvb-frontends/cxd2841er.c:2282:1: warning: the frame size of 4328 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/net/ethernet/rocker/rocker.c:2172:1: warning: the frame size of 2752 bytes is larger than 2048 bytes [-Wframe-larger-than=]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
arm64-allnoconfig
arm-multi_v5_defconfig
arm-multi_v7_defconfig
x86_64-defconfig
arm-allmodconfig
arm-allnoconfig
x86_64-allnoconfig
arm64-defconfig
This is the start of the stable review cycle for the 4.17.2 release.
There are 45 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 Sat Jun 16 13:21:05 UTC 2018.
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.17.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-4.17.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.17.2-rc1
Bin Liu <b-liu(a)ti.com>
crypto: omap-sham - fix memleak
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES XTS init
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES init routines
Jan Glauber <jglauber(a)cavium.com>
crypto: cavium - Limit result reading attempts
Jan Glauber <jglauber(a)cavium.com>
crypto: cavium - Fix fallout from CONFIG_VMAP_STACK
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix size of RSA prime factor q
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam/qi - fix IV DMA mapping and updating
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix IV DMA mapping and updating
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix DMA mapping dir for generated IV
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - strip input zeros from RSA input buffer
Johannes Wienke <languitar(a)semipol.de>
Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID
Ethan Lee <flibitijibibo(a)gmail.com>
Input: goodix - add new ACPI id for GPD Win 2 touch screen
Gilad Ben-Yossef <gilad(a)benyossef.com>
crypto: ccree - correct host regs offset
Dave Martin <Dave.Martin(a)arm.com>
tty: pl011: Avoid spuriously stuck-off interrupts
Sean Wang <sean.wang(a)mediatek.com>
arm64: defconfig: Enable CONFIG_PINCTRL_MT7622 by default
Stephen Hemminger <stephen(a)networkplumber.org>
doc: fix sysfs ABI documentation
Gil Kupfer <gilkup(a)gmail.com>
vmw_balloon: fixing double free when batching mode is off
Tony Lindgren <tony(a)atomide.com>
serial: 8250: omap: Fix idling of clocks for unused uarts
Marek Szyprowski <m.szyprowski(a)samsung.com>
serial: samsung: fix maxburst parameter for DMA transactions
Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
tty/serial: atmel: use port->name as name in request_irq()
Geert Uytterhoeven <geert+renesas(a)glider.be>
serial: sh-sci: Stop using printk format %pCr
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: disable the controller's irqs for reconnecting
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should fail if devm_phy_get() returns error
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add udc
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should remove debugfs
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: fix double phy_put()
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: function: printer: avoid wrong list handling in printer_write()
Heikki Krogerus <heikki.krogerus(a)linux.intel.com>
usb: typec: wcove: Remove dependency on HW FSM
Ruslan Bilovol <ruslan.bilovol(a)gmail.com>
usb: core: message: remove extra endianness conversion in usb_set_isoch_delay
Manu Gautam <mgautam(a)codeaurora.org>
phy: qcom-qusb2: Fix crash if nvmem cell not specified
Ethan Lee <flibitijibibo(a)gmail.com>
Input: xpad - add GPD Win 2 Controller USB IDs
Alexander Kappner <agk(a)godking.net>
usb-storage: Add compatibility quirk flags for G-Technologies G-Drive
Alexander Kappner <agk(a)godking.net>
usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
usbip: vhci_sysfs: fix potential Spectre v1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
NFC: pn533: don't send USB data off of the stack
Laura Abbott <labbott(a)redhat.com>
staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy
Paolo Bonzini <pbonzini(a)redhat.com>
kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and kvm_write_guest_virt_system
Felix Wilhelm <fwilhelm(a)google.com>
kvm: nVMX: Enforce cpl=0 for VMX instructions
Michael S. Tsirkin <mst(a)redhat.com>
kvm: fix typo in flag name
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: introduce linear_{read,write}_system
Wanpeng Li <wanpengli(a)tencent.com>
KVM: X86: Fix reserved bits check for MOV to CR3
Bart Van Assche <bart.vanassche(a)wdc.com>
blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers
Atul Gupta <atul.gupta(a)chelsio.com>
crypto: chelsio - request to HW should wrap
-------------
Diffstat:
Documentation/ABI/stable/sysfs-bus-vmbus | 40 +++---
Makefile | 4 +-
arch/arm64/configs/defconfig | 1 +
arch/x86/include/asm/kvm_emulate.h | 6 +-
arch/x86/kvm/emulate.c | 76 +++++-----
arch/x86/kvm/vmx.c | 38 +++--
arch/x86/kvm/x86.c | 61 +++++---
arch/x86/kvm/x86.h | 4 +-
block/blk-zoned.c | 8 +-
drivers/crypto/caam/caamalg.c | 231 ++++++++++++++-----------------
drivers/crypto/caam/caamalg_qi.c | 227 +++++++++++++++---------------
drivers/crypto/caam/caampkc.c | 62 ++++++++-
drivers/crypto/caam/caampkc.h | 8 ++
drivers/crypto/cavium/zip/common.h | 21 +++
drivers/crypto/cavium/zip/zip_crypto.c | 22 +--
drivers/crypto/cavium/zip/zip_deflate.c | 4 +-
drivers/crypto/cavium/zip/zip_inflate.c | 4 +-
drivers/crypto/ccree/cc_debugfs.c | 7 +-
drivers/crypto/ccree/cc_driver.c | 8 +-
drivers/crypto/ccree/cc_driver.h | 2 +
drivers/crypto/ccree/cc_host_regs.h | 6 +-
drivers/crypto/chelsio/chcr_ipsec.c | 35 +++--
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/vmx/aes.c | 2 -
drivers/crypto/vmx/aes_cbc.c | 3 -
drivers/crypto/vmx/aes_ctr.c | 2 -
drivers/crypto/vmx/aes_xts.c | 2 -
drivers/crypto/vmx/ghash.c | 2 -
drivers/input/joystick/xpad.c | 2 +
drivers/input/mouse/elan_i2c_core.c | 1 +
drivers/input/touchscreen/goodix.c | 1 +
drivers/misc/vmw_balloon.c | 23 +--
drivers/nfc/pn533/usb.c | 42 ++++--
drivers/phy/qualcomm/phy-qcom-qusb2.c | 4 +
drivers/staging/android/ion/ion.c | 5 +-
drivers/tty/serial/8250/8250_omap.c | 16 ++-
drivers/tty/serial/amba-pl011.c | 16 +++
drivers/tty/serial/atmel_serial.c | 5 +-
drivers/tty/serial/samsung.c | 7 +-
drivers/tty/serial/sh-sci.c | 4 +-
drivers/usb/core/message.c | 2 +-
drivers/usb/gadget/function/f_printer.c | 6 +-
drivers/usb/gadget/udc/renesas_usb3.c | 37 +++--
drivers/usb/storage/uas.c | 6 +
drivers/usb/storage/unusual_devs.h | 9 ++
drivers/usb/storage/unusual_uas.h | 9 ++
drivers/usb/typec/typec_wcove.c | 30 +++-
drivers/usb/usbip/vhci_sysfs.c | 24 ++--
include/uapi/linux/kvm.h | 4 +-
tools/include/uapi/linux/kvm.h | 4 +-
50 files changed, 685 insertions(+), 460 deletions(-)
This is the start of the stable review cycle for the 4.16.16 release.
There are 43 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 Sat Jun 16 13:21:17 UTC 2018.
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.16.16-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.16.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.16.16-rc1
Bin Liu <b-liu(a)ti.com>
crypto: omap-sham - fix memleak
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES XTS init
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES init routines
Jan Glauber <jglauber(a)cavium.com>
crypto: cavium - Limit result reading attempts
Jan Glauber <jglauber(a)cavium.com>
crypto: cavium - Fix fallout from CONFIG_VMAP_STACK
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix size of RSA prime factor q
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam/qi - fix IV DMA mapping and updating
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix IV DMA mapping and updating
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix DMA mapping dir for generated IV
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - strip input zeros from RSA input buffer
Johannes Wienke <languitar(a)semipol.de>
Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID
Ethan Lee <flibitijibibo(a)gmail.com>
Input: goodix - add new ACPI id for GPD Win 2 touch screen
Paolo Bonzini <pbonzini(a)redhat.com>
kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access
Dave Martin <Dave.Martin(a)arm.com>
tty: pl011: Avoid spuriously stuck-off interrupts
Gil Kupfer <gilkup(a)gmail.com>
vmw_balloon: fixing double free when batching mode is off
Tony Lindgren <tony(a)atomide.com>
serial: 8250: omap: Fix idling of clocks for unused uarts
Marek Szyprowski <m.szyprowski(a)samsung.com>
serial: samsung: fix maxburst parameter for DMA transactions
Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
tty/serial: atmel: use port->name as name in request_irq()
Geert Uytterhoeven <geert+renesas(a)glider.be>
serial: sh-sci: Stop using printk format %pCr
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: disable the controller's irqs for reconnecting
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should fail if devm_phy_get() returns error
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add udc
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: should remove debugfs
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: fix double phy_put()
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: function: printer: avoid wrong list handling in printer_write()
Heikki Krogerus <heikki.krogerus(a)linux.intel.com>
usb: typec: wcove: Remove dependency on HW FSM
Ruslan Bilovol <ruslan.bilovol(a)gmail.com>
usb: core: message: remove extra endianness conversion in usb_set_isoch_delay
Manu Gautam <mgautam(a)codeaurora.org>
phy: qcom-qusb2: Fix crash if nvmem cell not specified
Ethan Lee <flibitijibibo(a)gmail.com>
Input: xpad - add GPD Win 2 Controller USB IDs
Alexander Kappner <agk(a)godking.net>
usb-storage: Add compatibility quirk flags for G-Technologies G-Drive
Alexander Kappner <agk(a)godking.net>
usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
usbip: vhci_sysfs: fix potential Spectre v1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
NFC: pn533: don't send USB data off of the stack
Laura Abbott <labbott(a)redhat.com>
staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and kvm_write_guest_virt_system
Felix Wilhelm <fwilhelm(a)google.com>
kvm: nVMX: Enforce cpl=0 for VMX instructions
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: introduce linear_{read,write}_system
Wanpeng Li <wanpengli(a)tencent.com>
KVM: X86: Fix reserved bits check for MOV to CR3
Kevin Easton <kevin(a)guarana.org>
af_key: Always verify length of provided sadb_key
Bart Van Assche <bart.vanassche(a)wdc.com>
blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers
Atul Gupta <atul.gupta(a)chelsio.com>
crypto: chelsio - request to HW should wrap
Taehee Yoo <ap420073(a)gmail.com>
netfilter: nf_tables: fix NULL pointer dereference on nft_ct_helper_obj_dump()
-------------
Diffstat:
Makefile | 4 +-
arch/x86/include/asm/kvm_emulate.h | 6 +-
arch/x86/kvm/emulate.c | 76 ++++++-----
arch/x86/kvm/vmx.c | 38 +++---
arch/x86/kvm/x86.c | 53 +++++---
arch/x86/kvm/x86.h | 4 +-
block/blk-zoned.c | 8 +-
drivers/crypto/caam/caamalg.c | 231 ++++++++++++++------------------
drivers/crypto/caam/caamalg_qi.c | 227 ++++++++++++++++---------------
drivers/crypto/caam/caampkc.c | 62 ++++++++-
drivers/crypto/caam/caampkc.h | 8 ++
drivers/crypto/cavium/zip/common.h | 21 +++
drivers/crypto/cavium/zip/zip_crypto.c | 22 +--
drivers/crypto/cavium/zip/zip_deflate.c | 4 +-
drivers/crypto/cavium/zip/zip_inflate.c | 4 +-
drivers/crypto/chelsio/chcr_ipsec.c | 35 +++--
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/vmx/aes.c | 2 -
drivers/crypto/vmx/aes_cbc.c | 3 -
drivers/crypto/vmx/aes_ctr.c | 2 -
drivers/crypto/vmx/aes_xts.c | 2 -
drivers/crypto/vmx/ghash.c | 2 -
drivers/input/joystick/xpad.c | 2 +
drivers/input/mouse/elan_i2c_core.c | 1 +
drivers/input/touchscreen/goodix.c | 1 +
drivers/misc/vmw_balloon.c | 23 +---
drivers/nfc/pn533/usb.c | 42 ++++--
drivers/phy/qualcomm/phy-qcom-qusb2.c | 4 +
drivers/staging/android/ion/ion.c | 5 +-
drivers/tty/serial/8250/8250_omap.c | 16 ++-
drivers/tty/serial/amba-pl011.c | 16 +++
drivers/tty/serial/atmel_serial.c | 5 +-
drivers/tty/serial/samsung.c | 7 +-
drivers/tty/serial/sh-sci.c | 4 +-
drivers/usb/core/message.c | 2 +-
drivers/usb/gadget/function/f_printer.c | 6 +-
drivers/usb/gadget/udc/renesas_usb3.c | 37 +++--
drivers/usb/storage/uas.c | 6 +
drivers/usb/storage/unusual_devs.h | 9 ++
drivers/usb/storage/unusual_uas.h | 9 ++
drivers/usb/typec/typec_wcove.c | 30 ++++-
drivers/usb/usbip/vhci_sysfs.c | 24 ++--
net/key/af_key.c | 45 +++++--
net/netfilter/nft_ct.c | 20 +--
44 files changed, 686 insertions(+), 444 deletions(-)
This is the start of the stable review cycle for the 4.14.50 release.
There are 36 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 Sat Jun 16 13:21:44 UTC 2018.
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.14.50-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.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.14.50-rc1
Bin Liu <b-liu(a)ti.com>
crypto: omap-sham - fix memleak
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES XTS init
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES init routines
Jan Glauber <jglauber(a)cavium.com>
crypto: cavium - Limit result reading attempts
Jan Glauber <jglauber(a)cavium.com>
crypto: cavium - Fix fallout from CONFIG_VMAP_STACK
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix size of RSA prime factor q
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam/qi - fix IV DMA mapping and updating
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix IV DMA mapping and updating
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - fix DMA mapping dir for generated IV
Horia Geantă <horia.geanta(a)nxp.com>
crypto: caam - strip input zeros from RSA input buffer
Johannes Wienke <languitar(a)semipol.de>
Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID
Ethan Lee <flibitijibibo(a)gmail.com>
Input: goodix - add new ACPI id for GPD Win 2 touch screen
Paolo Bonzini <pbonzini(a)redhat.com>
kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access
Dave Martin <Dave.Martin(a)arm.com>
tty: pl011: Avoid spuriously stuck-off interrupts
Gil Kupfer <gilkup(a)gmail.com>
vmw_balloon: fixing double free when batching mode is off
Tony Lindgren <tony(a)atomide.com>
serial: 8250: omap: Fix idling of clocks for unused uarts
Marek Szyprowski <m.szyprowski(a)samsung.com>
serial: samsung: fix maxburst parameter for DMA transactions
Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
tty/serial: atmel: use port->name as name in request_irq()
Geert Uytterhoeven <geert+renesas(a)glider.be>
serial: sh-sci: Stop using printk format %pCr
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: disable the controller's irqs for reconnecting
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: function: printer: avoid wrong list handling in printer_write()
Manu Gautam <mgautam(a)codeaurora.org>
phy: qcom-qusb2: Fix crash if nvmem cell not specified
Ethan Lee <flibitijibibo(a)gmail.com>
Input: xpad - add GPD Win 2 Controller USB IDs
Alexander Kappner <agk(a)godking.net>
usb-storage: Add compatibility quirk flags for G-Technologies G-Drive
Alexander Kappner <agk(a)godking.net>
usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
usbip: vhci_sysfs: fix potential Spectre v1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
NFC: pn533: don't send USB data off of the stack
Laura Abbott <labbott(a)redhat.com>
staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and kvm_write_guest_virt_system
Felix Wilhelm <fwilhelm(a)google.com>
kvm: nVMX: Enforce cpl=0 for VMX instructions
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: introduce linear_{read,write}_system
Wanpeng Li <wanpengli(a)tencent.com>
KVM: X86: Fix reserved bits check for MOV to CR3
Linus Walleij <linus.walleij(a)linaro.org>
gpio: No NULL owner
Kevin Easton <kevin(a)guarana.org>
af_key: Always verify length of provided sadb_key
Bart Van Assche <bart.vanassche(a)wdc.com>
blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers
Taehee Yoo <ap420073(a)gmail.com>
netfilter: nf_tables: fix NULL pointer dereference on nft_ct_helper_obj_dump()
-------------
Diffstat:
Makefile | 4 +-
arch/x86/include/asm/kvm_emulate.h | 6 +-
arch/x86/kvm/emulate.c | 76 ++++++-----
arch/x86/kvm/vmx.c | 38 +++---
arch/x86/kvm/x86.c | 53 +++++---
arch/x86/kvm/x86.h | 4 +-
block/blk-zoned.c | 8 +-
drivers/crypto/caam/caamalg.c | 231 ++++++++++++++------------------
drivers/crypto/caam/caamalg_qi.c | 227 ++++++++++++++++---------------
drivers/crypto/caam/caampkc.c | 62 ++++++++-
drivers/crypto/caam/caampkc.h | 8 ++
drivers/crypto/cavium/zip/common.h | 21 +++
drivers/crypto/cavium/zip/zip_crypto.c | 22 +--
drivers/crypto/cavium/zip/zip_deflate.c | 4 +-
drivers/crypto/cavium/zip/zip_inflate.c | 4 +-
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/vmx/aes.c | 2 -
drivers/crypto/vmx/aes_cbc.c | 3 -
drivers/crypto/vmx/aes_ctr.c | 2 -
drivers/crypto/vmx/aes_xts.c | 2 -
drivers/crypto/vmx/ghash.c | 2 -
drivers/gpio/gpiolib.c | 9 +-
drivers/input/joystick/xpad.c | 2 +
drivers/input/mouse/elan_i2c_core.c | 1 +
drivers/input/touchscreen/goodix.c | 1 +
drivers/misc/vmw_balloon.c | 23 +---
drivers/nfc/pn533/usb.c | 42 ++++--
drivers/phy/qualcomm/phy-qcom-qusb2.c | 4 +
drivers/staging/android/ion/ion.c | 5 +-
drivers/tty/serial/8250/8250_omap.c | 16 ++-
drivers/tty/serial/amba-pl011.c | 16 +++
drivers/tty/serial/atmel_serial.c | 5 +-
drivers/tty/serial/samsung.c | 7 +-
drivers/tty/serial/sh-sci.c | 4 +-
drivers/usb/gadget/function/f_printer.c | 6 +-
drivers/usb/gadget/udc/renesas_usb3.c | 7 +
drivers/usb/storage/uas.c | 6 +
drivers/usb/storage/unusual_devs.h | 9 ++
drivers/usb/storage/unusual_uas.h | 9 ++
drivers/usb/usbip/vhci_sysfs.c | 24 ++--
net/key/af_key.c | 45 +++++--
net/netfilter/nft_ct.c | 20 +--
42 files changed, 629 insertions(+), 413 deletions(-)
This is the start of the stable review cycle for the 4.9.109 release.
There are 30 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 Sat Jun 16 13:25:48 UTC 2018.
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.9.109-rc…
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.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.9.109-rc1
Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
perf: sync up x86/.../cpufeatures.h
Bin Liu <b-liu(a)ti.com>
crypto: omap-sham - fix memleak
Michael Ellerman <mpe(a)ellerman.id.au>
crypto: vmx - Remove overly verbose printk from AES init routines
Johannes Wienke <languitar(a)semipol.de>
Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID
Ethan Lee <flibitijibibo(a)gmail.com>
Input: goodix - add new ACPI id for GPD Win 2 touch screen
Paolo Bonzini <pbonzini(a)redhat.com>
kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access
Dave Martin <Dave.Martin(a)arm.com>
tty: pl011: Avoid spuriously stuck-off interrupts
Gil Kupfer <gilkup(a)gmail.com>
vmw_balloon: fixing double free when batching mode is off
Tony Lindgren <tony(a)atomide.com>
serial: 8250: omap: Fix idling of clocks for unused uarts
Marek Szyprowski <m.szyprowski(a)samsung.com>
serial: samsung: fix maxburst parameter for DMA transactions
Sebastian Andrzej Siewior <bigeasy(a)linutronix.de>
tty/serial: atmel: use port->name as name in request_irq()
Geert Uytterhoeven <geert+renesas(a)glider.be>
serial: sh-sci: Stop using printk format %pCr
Yoshihiro Shimoda <yoshihiro.shimoda.uh(a)renesas.com>
usb: gadget: udc: renesas_usb3: disable the controller's irqs for reconnecting
Alexander Kappner <agk(a)godking.net>
usb-storage: Add compatibility quirk flags for G-Technologies G-Drive
Alexander Kappner <agk(a)godking.net>
usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver
Gustavo A. R. Silva <gustavo(a)embeddedor.com>
usbip: vhci_sysfs: fix potential Spectre v1
Laura Abbott <labbott(a)redhat.com>
staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and kvm_write_guest_virt_system
Paolo Bonzini <pbonzini(a)redhat.com>
KVM: x86: introduce linear_{read,write}_system
Linus Walleij <linus.walleij(a)linaro.org>
gpio: No NULL owner
Martin Wilck <mwilck(a)suse.com>
nvmet: don't overwrite identify sn/fr with 0-bytes
Martin Wilck <mwilck(a)suse.com>
nvmet: don't report 0-bytes in serial number
Johannes Thumshirn <jthumshirn(a)suse.de>
nvmet: Move serial number from controller to subsystem
Andy Lutomirski <luto(a)kernel.org>
x86/crypto, x86/fpu: Remove X86_FEATURE_EAGER_FPU #ifdef from the crc32c code
Kevin Easton <kevin(a)guarana.org>
af_key: Always verify length of provided sadb_key
Keith Busch <keith.busch(a)intel.com>
nvme-pci: initialize queue memory before interrupts
Andreas Born <futur.andy(a)googlemail.com>
bonding: require speed/duplex only for 802.3ad, alb and tlb
Mahesh Bandewar <maheshb(a)google.com>
bonding: fix active-backup transition
Mahesh Bandewar <maheshb(a)google.com>
bonding: correctly update link status during mii-commit phase
Andy Lutomirski <luto(a)kernel.org>
x86/fpu: Hard-disable lazy FPU mode
-------------
Diffstat:
Makefile | 4 +-
arch/x86/crypto/crc32c-intel_glue.c | 5 --
arch/x86/include/asm/cpufeatures.h | 2 +-
arch/x86/include/asm/fpu/internal.h | 2 +-
arch/x86/include/asm/kvm_emulate.h | 6 ++-
arch/x86/kernel/fpu/init.c | 91 ++------------------------------
arch/x86/kvm/emulate.c | 72 ++++++++++++-------------
arch/x86/kvm/vmx.c | 23 ++++----
arch/x86/kvm/x86.c | 51 +++++++++++++-----
arch/x86/kvm/x86.h | 4 +-
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/vmx/aes.c | 2 -
drivers/crypto/vmx/aes_cbc.c | 2 -
drivers/crypto/vmx/aes_ctr.c | 2 -
drivers/crypto/vmx/ghash.c | 2 -
drivers/gpio/gpiolib.c | 9 +++-
drivers/input/mouse/elan_i2c_core.c | 1 +
drivers/input/touchscreen/goodix.c | 1 +
drivers/misc/vmw_balloon.c | 23 +++-----
drivers/net/bonding/bond_main.c | 22 ++++----
drivers/nvme/host/pci.c | 4 +-
drivers/nvme/target/admin-cmd.c | 22 +++++---
drivers/nvme/target/core.c | 5 +-
drivers/nvme/target/nvmet.h | 2 +-
drivers/staging/android/ion/ion.c | 5 +-
drivers/tty/serial/8250/8250_omap.c | 16 +++++-
drivers/tty/serial/amba-pl011.c | 16 ++++++
drivers/tty/serial/atmel_serial.c | 5 +-
drivers/tty/serial/samsung.c | 7 +--
drivers/tty/serial/sh-sci.c | 4 +-
drivers/usb/gadget/udc/renesas_usb3.c | 7 +++
drivers/usb/storage/uas.c | 6 +++
drivers/usb/storage/unusual_devs.h | 9 ++++
drivers/usb/storage/unusual_uas.h | 9 ++++
drivers/usb/usbip/vhci_sysfs.c | 24 ++++++---
include/net/bonding.h | 5 ++
net/key/af_key.c | 45 ++++++++++++----
tools/arch/x86/include/asm/cpufeatures.h | 2 +-
38 files changed, 274 insertions(+), 245 deletions(-)
32bit UML used to define PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP
own its own because many years ago not all libcs had these request codes
in their UAPI.
These days PTRACE_SYSEMU/_SINGLESTEP is well known and part of glibc
and our own define becomes problematic.
With change c48831d0eebf ("linux/x86: sync sys/ptrace.h with Linux 4.14
[BZ #22433]") glibc turned PTRACE_SYSEMU/_SINGLESTEP into a enum and
UML failed to build.
Let's drop our define and rely on the fact that every libc has
PTRACE_SYSEMU/_SINGLESTEP.
Cc: <stable(a)vger.kernel.org>
Cc: Ritesh Raj Sarraf <rrs(a)researchut.com>
Reported-and-tested-by: Ritesh Raj Sarraf <rrs(a)researchut.com>
Signed-off-by: Richard Weinberger <richard(a)nod.at>
---
arch/x86/um/shared/sysdep/ptrace_32.h | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/arch/x86/um/shared/sysdep/ptrace_32.h b/arch/x86/um/shared/sysdep/ptrace_32.h
index b94a108de1dc..ae00d22bce02 100644
--- a/arch/x86/um/shared/sysdep/ptrace_32.h
+++ b/arch/x86/um/shared/sysdep/ptrace_32.h
@@ -10,20 +10,10 @@
static inline void update_debugregs(int seq) {}
-/* syscall emulation path in ptrace */
-
-#ifndef PTRACE_SYSEMU
-#define PTRACE_SYSEMU 31
-#endif
-
void set_using_sysemu(int value);
int get_using_sysemu(void);
extern int sysemu_supported;
-#ifndef PTRACE_SYSEMU_SINGLESTEP
-#define PTRACE_SYSEMU_SINGLESTEP 32
-#endif
-
#define UPT_SYSCALL_ARG1(r) UPT_BX(r)
#define UPT_SYSCALL_ARG2(r) UPT_CX(r)
#define UPT_SYSCALL_ARG3(r) UPT_DX(r)
--
2.13.6
Yu,
Regarding your patch to disable AVX with eager fpu disabled in the 4.4
stable queue:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/tre…
Why would this be necessary? In the Intel SDM Vol 2, Chapter 2.4,
FPU/SIMD instructions are grouped into different classes and for all of
them CR0.TS triggers a #NM exception in all modes but real mode and
virtual 8086 mode.
It seems to me lazy context switching of AVX is perfectly functional
(disregarding the recently disclosed security issue). Am I missing
something?
Julian
Tree/Branch: v4.1.52
Git describe: v4.1.52
Commit: c4ff7514e7 Linux 4.1.52
Build Time: 50 min 6 sec
Passed: 10 / 10 (100.00 %)
Failed: 0 / 10 ( 0.00 %)
Errors: 0
Warnings: 61
Section Mismatches: 1
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
30 warnings 3 mismatches : arm64-allmodconfig
2 warnings 0 mismatches : arm-multi_v5_defconfig
6 warnings 0 mismatches : arm-multi_v7_defconfig
8 warnings 0 mismatches : x86_64-defconfig
32 warnings 0 mismatches : arm-allmodconfig
46 warnings 0 mismatches : x86_64-allmodconfig
1 warnings 0 mismatches : arm64-defconfig
-------------------------------------------------------------------------------
Warnings Summary: 61
8 ../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
5 ../net/ipv6/esp6.c:386:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
5 ../net/ipv6/esp6.c:234:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
5 ../net/ipv6/ah6.c:604:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
5 ../net/ipv6/ah6.c:426:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
5 ../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
4 ../drivers/net/virtio_net.c:553:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
3 ../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
3 ../net/ipv4/esp4.c:432:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
3 ../net/ipv4/esp4.c:242:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
3 ../net/ipv4/ah4.c:394:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
3 ../net/ipv4/ah4.c:223:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
3 ../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
3 ../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
3 ../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
3 ../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
3 ../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
3 ../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
3 ../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
3 ../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
2 ../drivers/usb/renesas_usbhs/common.c:492:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
2 ../drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
2 ../drivers/mmc/host/sh_mmcif.c:402:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
2 ../drivers/mmc/host/sh_mmcif.c:401:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
2 ../drivers/iommu/intel-iommu.c:3800:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
2 ../drivers/iommu/dmar.c:1849:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
2 ../drivers/hid/hid-input.c:1171:67: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
2 ../arch/x86/include/asm/msr.h:209:23: warning: right shift count >= width of type [-Wshift-count-overflow]
1 ../net/caif/cfpkt_skbuff.c:282:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../include/trace/ftrace.h:28:0: warning: "TRACE_SYSTEM_STRING" redefined
1 ../drivers/xen/swiotlb-xen.c:704:27: warning: passing argument 6 of '__generic_dma_ops(dev)->mmap' makes pointer from integer without a cast [-Wint-conversion]
1 ../drivers/staging/unisys/visorutil/periodic_work.c:91:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
1 ../drivers/staging/unisys/visorutil/periodic_work.c:122:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
1 ../drivers/staging/rtl8723au/core/rtw_wlan_util.c:525:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/iio/adc/ad7192.c:236:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/staging/i2o/i2o_config.c:952:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 ../drivers/staging/i2o/i2o_config.c:892:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 ../drivers/scsi/storvsc_drv.c:1676:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/megaraid/megaraid_sas_fusion.c:1723:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/bfa/bfa_ioc.c:3673:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/bfa/bfa_ioc.c:3665:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not properly converted to the DMA API [-Wcpp]
1 ../drivers/rtc/rtc-pcf8563.c:444:5: warning: 'alm_pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../drivers/rtc/rtc-armada38x.c:91:22: warning: unused variable 'flags' [-Wunused-variable]
1 ../drivers/net/wireless/iwlegacy/3945.c:1022:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
1 ../drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../drivers/net/ethernet/dec/tulip/uli526x.c:1086:4: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
1 ../drivers/mtd/mtd_blkdevs.c:100:2: warning: switch condition has boolean value [-Wswitch-bool]
1 ../drivers/media/usb/cx231xx/cx231xx-cards.c:1110:1: warning: the frame size of 2064 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 ../drivers/media/platform/coda/./trace.h:12:0: warning: "TRACE_SYSTEM_STRING" redefined
1 ../drivers/media/platform/am437x/am437x-vpfe.c:1723:27: warning: self-comparison always evaluates to true [-Wtautological-compare]
1 ../drivers/infiniband/hw/qib/qib_qp.c:44:0: warning: "BITS_PER_PAGE" redefined
1 ../drivers/infiniband/hw/cxgb4/mem.c:147:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 ../drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c:975:1: warning: the frame size of 1192 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 ../drivers/gpu/drm/gma500/cdv_intel_dp.c:869:2: warning: 'i2c_dp_aux_add_bus' is deprecated [-Wdeprecated-declarations]
1 ../drivers/block/hd.c:630:3: warning: switch condition has boolean value [-Wswitch-bool]
1 ../drivers/atm/iphase.c:1176:12: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
1 ../arch/x86/xen/mmu.c:1105:57: warning: array subscript is above array bounds [-Warray-bounds]
1 ../arch/arm64/xen/../../arm/xen/mm.c:183:10: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
1 ../arch/arm/mach-cns3xxx/pcie.c:266:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 ../arch/arm/include/asm/cmpxchg.h:205:3: warning: value computed is not used [-Wunused-value]
Section Mismatch Summary: 1
3 WARNING: drivers/staging/fsl-mc/bus/mc-bus-driver.o(.init.text+0xb0): Section mismatch in reference from the function init_module() to the function .exit.text:dprc_driver_exit()
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm64-allmodconfig : PASS, 0 errors, 30 warnings, 3 section mismatches
Warnings:
../arch/arm64/xen/../../arm/xen/mm.c:183:10: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../net/ipv6/ah6.c:426:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/ah6.c:604:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:234:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:386:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/ah4.c:223:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/ah4.c:394:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/esp4.c:242:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/esp4.c:432:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../drivers/infiniband/hw/qib/qib_qp.c:44:0: warning: "BITS_PER_PAGE" redefined
../drivers/mmc/host/sh_mmcif.c:401:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/mmc/host/sh_mmcif.c:402:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/net/virtio_net.c:553:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../drivers/usb/renesas_usbhs/common.c:492:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
../drivers/xen/swiotlb-xen.c:704:27: warning: passing argument 6 of '__generic_dma_ops(dev)->mmap' makes pointer from integer without a cast [-Wint-conversion]
Section Mismatches:
WARNING: drivers/staging/fsl-mc/bus/mc-bus-driver.o(.init.text+0xb0): Section mismatch in reference from the function init_module() to the function .exit.text:dprc_driver_exit()
WARNING: drivers/staging/fsl-mc/bus/mc-bus-driver.o(.init.text+0xb0): Section mismatch in reference from the function init_module() to the function .exit.text:dprc_driver_exit()
WARNING: drivers/staging/fsl-mc/bus/mc-bus-driver.o(.init.text+0xb0): Section mismatch in reference from the function init_module() to the function .exit.text:dprc_driver_exit()
-------------------------------------------------------------------------------
arm-multi_v5_defconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/rtc/rtc-pcf8563.c:444:5: warning: 'alm_pending' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
arm-multi_v7_defconfig : PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
../net/ipv6/ah6.c:426:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/ah6.c:604:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:234:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:386:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
x86_64-defconfig : PASS, 0 errors, 8 warnings, 0 section mismatches
Warnings:
../arch/x86/include/asm/msr.h:209:23: warning: right shift count >= width of type [-Wshift-count-overflow]
../net/ipv6/ah6.c:426:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/ah6.c:604:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:234:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:386:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../drivers/hid/hid-input.c:1171:67: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/iommu/dmar.c:1849:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/iommu/intel-iommu.c:3800:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
-------------------------------------------------------------------------------
arm-allmodconfig : PASS, 0 errors, 32 warnings, 0 section mismatches
Warnings:
../arch/arm/mach-cns3xxx/pcie.c:266:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../arch/arm/include/asm/cmpxchg.h:205:3: warning: value computed is not used [-Wunused-value]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../net/ipv4/ah4.c:223:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/ah4.c:394:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/esp4.c:242:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/esp4.c:432:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/ah6.c:426:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/ah6.c:604:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:234:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:386:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm204.c:975:1: warning: the frame size of 1192 bytes is larger than 1024 bytes [-Wframe-larger-than=]
../drivers/infiniband/hw/cxgb4/mem.c:147:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../include/linux/blkdev.h:624:26: warning: switch condition has boolean value [-Wswitch-bool]
../include/trace/ftrace.h:28:0: warning: "TRACE_SYSTEM_STRING" redefined
../drivers/media/platform/coda/./trace.h:12:0: warning: "TRACE_SYSTEM_STRING" redefined
../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/rtc/rtc-armada38x.c:91:22: warning: unused variable 'flags' [-Wunused-variable]
../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../include/linux/kernel.h:723:17: warning: comparison of distinct pointer types lacks a cast
../drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
../drivers/net/virtio_net.c:553:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
-------------------------------------------------------------------------------
x86_64-allmodconfig : PASS, 0 errors, 46 warnings, 0 section mismatches
Warnings:
../arch/x86/include/asm/msr.h:209:23: warning: right shift count >= width of type [-Wshift-count-overflow]
../arch/x86/xen/mmu.c:1105:57: warning: array subscript is above array bounds [-Warray-bounds]
../drivers/atm/iphase.c:1176:12: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../net/caif/cfpkt_skbuff.c:282:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/ata/pata_hpt366.c:376:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:379:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/ata/pata_hpt366.c:382:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
../drivers/block/hd.c:630:3: warning: switch condition has boolean value [-Wswitch-bool]
../sound/pci/oxygen/oxygen_mixer.c:91:43: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../net/ipv6/ah6.c:426:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/ah6.c:604:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:234:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv6/esp6.c:386:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/ah4.c:223:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/ah4.c:394:2: warning: ignoring return value of 'skb_to_sgvec_nomark', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/esp4.c:242:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../net/ipv4/esp4.c:432:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
../drivers/gpu/drm/gma500/cdv_intel_dp.c:869:2: warning: 'i2c_dp_aux_add_bus' is deprecated [-Wdeprecated-declarations]
../drivers/hid/hid-input.c:1171:67: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/iommu/dmar.c:1849:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/iommu/intel-iommu.c:3800:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/mmc/host/sh_mmcif.c:401:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/mmc/host/sh_mmcif.c:402:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/mtd/mtd_blkdevs.c:100:2: warning: switch condition has boolean value [-Wswitch-bool]
../drivers/media/platform/am437x/am437x-vpfe.c:1723:27: warning: self-comparison always evaluates to true [-Wtautological-compare]
../drivers/media/platform/s3c-camif/camif-capture.c:118:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/media/platform/s3c-camif/camif-capture.c:134:10: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/net/ethernet/dec/tulip/uli526x.c:1086:4: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/media/usb/cx231xx/cx231xx-cards.c:1110:1: warning: the frame size of 2064 bytes is larger than 2048 bytes [-Wframe-larger-than=]
../drivers/scsi/be2iscsi/be_main.c:3168:18: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
../drivers/scsi/bfa/bfa_ioc.c:3665:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/bfa/bfa_ioc.c:3673:4: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/i2o/i2o_config.c:892:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/staging/i2o/i2o_config.c:952:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../drivers/scsi/megaraid/megaraid_sas_fusion.c:1723:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/iio/adc/ad7192.c:236:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/scsi/qla2xxx/qla_target.c:3086:6: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type 'uint32_t {aka unsigned int}' [-Wformat=]
../drivers/scsi/qla2xxx/qla_target.c:3083:17: warning: unused variable 'se_cmd' [-Wunused-variable]
../drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not properly converted to the DMA API [-Wcpp]
../drivers/scsi/storvsc_drv.c:1676:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
../drivers/net/wireless/iwlegacy/3945.c:1022:5: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
../drivers/usb/renesas_usbhs/common.c:492:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
../drivers/staging/rtl8723au/core/rtw_wlan_util.c:525:2: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
../drivers/staging/unisys/visorutil/periodic_work.c:91:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
../drivers/staging/unisys/visorutil/periodic_work.c:122:31: warning: comparison of constant '0' with boolean expression is always false [-Wbool-compare]
../drivers/net/virtio_net.c:553:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
-------------------------------------------------------------------------------
arm64-defconfig : PASS, 0 errors, 1 warnings, 0 section mismatches
Warnings:
../drivers/net/virtio_net.c:553:2: warning: ignoring return value of 'skb_to_sgvec', declared with attribute warn_unused_result [-Wunused-result]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
x86_64-allnoconfig
arm64-allnoconfig
arm-allnoconfig
From: Alan Jenkins <alan.christopher.jenkins(a)gmail.com>
BugLink: http://bugs.launchpad.net/bugs/1776887
When blk_queue_enter() waits for a queue to unfreeze, or unset the
PREEMPT_ONLY flag, do not allow it to be interrupted by a signal.
The PREEMPT_ONLY flag was introduced later in commit 3a0a529971ec
("block, scsi: Make SCSI quiesce and resume work reliably"). Note the SCSI
device is resumed asynchronously, i.e. after un-freezing userspace tasks.
So that commit exposed the bug as a regression in v4.15. A mysterious
SIGBUS (or -EIO) sometimes happened during the time the device was being
resumed. Most frequently, there was no kernel log message, and we saw Xorg
or Xwayland killed by SIGBUS.[1]
[1] E.g. https://bugzilla.redhat.com/show_bug.cgi?id=1553979
Without this fix, I get an IO error in this test:
# dd if=/dev/sda of=/dev/null iflag=direct & \
while killall -SIGUSR1 dd; do sleep 0.1; done & \
echo mem > /sys/power/state ; \
sleep 5; killall dd # stop after 5 seconds
The interruptible wait was added to blk_queue_enter in
commit 3ef28e83ab15 ("block: generic request_queue reference counting").
Before then, the interruptible wait was only in blk-mq, but I don't think
it could ever have been correct.
Reviewed-by: Bart Van Assche <bart.vanassche(a)wdc.com>
Cc: stable(a)vger.kernel.org
Signed-off-by: Alan Jenkins <alan.christopher.jenkins(a)gmail.com>
Signed-off-by: Jens Axboe <axboe(a)kernel.dk>
(cherry-picked from 1dc3039bc87ae7d19a990c3ee71cfd8a9068f428)
Signed-off-by: Khalid Elmously <khalid.elmously(a)canonical.com>
---
block/blk-core.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index fc0666354af3..59c91e345eea 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -821,7 +821,6 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags)
while (true) {
bool success = false;
- int ret;
rcu_read_lock();
if (percpu_ref_tryget_live(&q->q_usage_counter)) {
@@ -853,14 +852,12 @@ int blk_queue_enter(struct request_queue *q, blk_mq_req_flags_t flags)
*/
smp_rmb();
- ret = wait_event_interruptible(q->mq_freeze_wq,
- (atomic_read(&q->mq_freeze_depth) == 0 &&
- (preempt || !blk_queue_preempt_only(q))) ||
- blk_queue_dying(q));
+ wait_event(q->mq_freeze_wq,
+ (atomic_read(&q->mq_freeze_depth) == 0 &&
+ (preempt || !blk_queue_preempt_only(q))) ||
+ blk_queue_dying(q));
if (blk_queue_dying(q))
return -ENODEV;
- if (ret)
- return ret;
}
}
--
2.17.1
Tree/Branch: v3.2.102
Git describe: v3.2.102
Commit: f63b2b3204 Linux 3.2.102
Build Time: 0 min 3 sec
Passed: 0 / 5 ( 0.00 %)
Failed: 5 / 5 (100.00 %)
Errors: 6
Warnings: 20
Section Mismatches: 0
Failed defconfigs:
x86_64-allnoconfig
arm-allmodconfig
arm-allnoconfig
x86_64-allmodconfig
x86_64-defconfig
Errors:
x86_64-allnoconfig
/home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
/home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
arm-allnoconfig
/home/broonie/build/linux-stable/arch/arm/include/asm/div64.h:77:7: error: '__LINUX_ARM_ARCH__' undeclared (first use in this function)
/home/broonie/build/linux-stable/arch/arm/include/asm/glue-cache.h:129:2: error: #error Unknown cache maintenance model
/home/broonie/build/linux-stable/arch/arm/include/asm/glue-df.h:107:2: error: #error Unknown data abort handler type
/home/broonie/build/linux-stable/arch/arm/include/asm/glue-pf.h:54:2: error: #error Unknown prefetch abort handler type
x86_64-allmodconfig
/home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
/home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
x86_64-defconfig
/home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
/home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
2 warnings 0 mismatches : arm-allmodconfig
19 warnings 0 mismatches : arm-allnoconfig
-------------------------------------------------------------------------------
Errors summary: 6
3 /home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
3 /home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
1 /home/broonie/build/linux-stable/arch/arm/include/asm/glue-pf.h:54:2: error: #error Unknown prefetch abort handler type
1 /home/broonie/build/linux-stable/arch/arm/include/asm/glue-df.h:107:2: error: #error Unknown data abort handler type
1 /home/broonie/build/linux-stable/arch/arm/include/asm/glue-cache.h:129:2: error: #error Unknown cache maintenance model
1 /home/broonie/build/linux-stable/arch/arm/include/asm/div64.h:77:7: error: '__LINUX_ARM_ARCH__' undeclared (first use in this function)
Warnings Summary: 20
2 .config:27:warning: symbol value '' invalid for PHYS_OFFSET
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:342:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:272:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:265:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:131:35: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:127:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:121:3: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:120:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/system.h:114:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/swab.h:25:28: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/processor.h:82:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/processor.h:102:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/irqflags.h:11:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/fpstate.h:32:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/cachetype.h:33:7: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/cachetype.h:28:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/cacheflush.h:196:7: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/cacheflush.h:194:7: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/bitops.h:217:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
1 /home/broonie/build/linux-stable/arch/arm/include/asm/atomic.h:30:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
x86_64-allnoconfig : FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
/home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
/home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
-------------------------------------------------------------------------------
arm-allmodconfig : FAIL, 0 errors, 2 warnings, 0 section mismatches
Warnings:
.config:27:warning: symbol value '' invalid for PHYS_OFFSET
.config:27:warning: symbol value '' invalid for PHYS_OFFSET
-------------------------------------------------------------------------------
arm-allnoconfig : FAIL, 4 errors, 19 warnings, 0 section mismatches
Errors:
/home/broonie/build/linux-stable/arch/arm/include/asm/div64.h:77:7: error: '__LINUX_ARM_ARCH__' undeclared (first use in this function)
/home/broonie/build/linux-stable/arch/arm/include/asm/glue-cache.h:129:2: error: #error Unknown cache maintenance model
/home/broonie/build/linux-stable/arch/arm/include/asm/glue-df.h:107:2: error: #error Unknown data abort handler type
/home/broonie/build/linux-stable/arch/arm/include/asm/glue-pf.h:54:2: error: #error Unknown prefetch abort handler type
Warnings:
/home/broonie/build/linux-stable/arch/arm/include/asm/irqflags.h:11:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:114:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:120:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:121:3: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:127:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:131:35: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:265:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:272:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/system.h:342:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/bitops.h:217:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/swab.h:25:28: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/fpstate.h:32:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/processor.h:82:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/processor.h:102:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/atomic.h:30:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/cachetype.h:28:5: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/cachetype.h:33:7: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/cacheflush.h:194:7: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
/home/broonie/build/linux-stable/arch/arm/include/asm/cacheflush.h:196:7: warning: "__LINUX_ARM_ARCH__" is not defined [-Wundef]
-------------------------------------------------------------------------------
x86_64-allmodconfig : FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
/home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
/home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
-------------------------------------------------------------------------------
x86_64-defconfig : FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
/home/broonie/build/linux-stable/scripts/mod/empty.c:1:0: error: code model kernel does not support PIC mode
/home/broonie/build/linux-stable/kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
This reverts commit 186a6519dc94964a4c5c68fca482f20f71551f26.
This commit used an incorrect log message.
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
---
fs/btrfs/raid56.c | 18 ++++--------------
fs/btrfs/volumes.c | 9 +--------
2 files changed, 5 insertions(+), 22 deletions(-)
diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c
index af6a776fa18c..d016d4a79864 100644
--- a/fs/btrfs/raid56.c
+++ b/fs/btrfs/raid56.c
@@ -2161,21 +2161,11 @@ int raid56_parity_recover(struct btrfs_root *root, struct bio *bio,
}
/*
- * Loop retry:
- * for 'mirror == 2', reconstruct from all other stripes.
- * for 'mirror_num > 2', select a stripe to fail on every retry.
+ * reconstruct from the q stripe if they are
+ * asking for mirror 3
*/
- if (mirror_num > 2) {
- /*
- * 'mirror == 3' is to fail the p stripe and
- * reconstruct from the q stripe. 'mirror > 3' is to
- * fail a data stripe and reconstruct from p+q stripe.
- */
- rbio->failb = rbio->real_stripes - (mirror_num - 1);
- ASSERT(rbio->failb > 0);
- if (rbio->failb <= rbio->faila)
- rbio->failb--;
- }
+ if (mirror_num == 3)
+ rbio->failb = rbio->real_stripes - 2;
ret = lock_stripe_add(rbio);
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 76017e1b3c0f..c2495cde26f6 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -5186,14 +5186,7 @@ int btrfs_num_copies(struct btrfs_fs_info *fs_info, u64 logical, u64 len)
else if (map->type & BTRFS_BLOCK_GROUP_RAID5)
ret = 2;
else if (map->type & BTRFS_BLOCK_GROUP_RAID6)
- /*
- * There could be two corrupted data stripes, we need
- * to loop retry in order to rebuild the correct data.
- *
- * Fail a stripe at a time on every retry except the
- * stripe under reconstruction.
- */
- ret = map->num_stripes;
+ ret = 3;
else
ret = 1;
free_extent_map(em);
--
2.17.1
This reverts commit d91bb7c6988bd6450284c762b33f2e1ea3fe7c97.
This commit used an incorrect log message.
Signed-off-by: Sasha Levin <alexander.levin(a)microsoft.com>
---
fs/btrfs/raid56.c | 18 ++++--------------
fs/btrfs/volumes.c | 9 +--------
2 files changed, 5 insertions(+), 22 deletions(-)
diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c
index 2e995e565633..d1bda68a3386 100644
--- a/fs/btrfs/raid56.c
+++ b/fs/btrfs/raid56.c
@@ -2172,21 +2172,11 @@ int raid56_parity_recover(struct btrfs_fs_info *fs_info, struct bio *bio,
}
/*
- * Loop retry:
- * for 'mirror == 2', reconstruct from all other stripes.
- * for 'mirror_num > 2', select a stripe to fail on every retry.
+ * reconstruct from the q stripe if they are
+ * asking for mirror 3
*/
- if (mirror_num > 2) {
- /*
- * 'mirror == 3' is to fail the p stripe and
- * reconstruct from the q stripe. 'mirror > 3' is to
- * fail a data stripe and reconstruct from p+q stripe.
- */
- rbio->failb = rbio->real_stripes - (mirror_num - 1);
- ASSERT(rbio->failb > 0);
- if (rbio->failb <= rbio->faila)
- rbio->failb--;
- }
+ if (mirror_num == 3)
+ rbio->failb = rbio->real_stripes - 2;
ret = lock_stripe_add(rbio);
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 08afafb6ecf7..69bc37a87c5a 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -5110,14 +5110,7 @@ int btrfs_num_copies(struct btrfs_fs_info *fs_info, u64 logical, u64 len)
else if (map->type & BTRFS_BLOCK_GROUP_RAID5)
ret = 2;
else if (map->type & BTRFS_BLOCK_GROUP_RAID6)
- /*
- * There could be two corrupted data stripes, we need
- * to loop retry in order to rebuild the correct data.
- *
- * Fail a stripe at a time on every retry except the
- * stripe under reconstruction.
- */
- ret = map->num_stripes;
+ ret = 3;
else
ret = 1;
free_extent_map(em);
--
2.17.1