From d0f417bb9d9d9bfa77f7206a8e5752762b640e22 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 4 Jun 2020 21:12:19 -0400 Subject: [PATCH] Fixes for 5.4 Signed-off-by: Sasha Levin --- ...rc-fix-iccm-dccm-runtime-size-checks.patch | 54 +++++++++++ ...nps-restrict-to-config_isa_arcompact.patch | 38 ++++++++ ...dd-oculus-rift-s-to-non-desktop-list.patch | 40 ++++++++ .../evm-fix-rcu-list-related-warnings.patch | 93 +++++++++++++++++++ ...race-between-xfer_msg-and-isr-thread.patch | 93 +++++++++++++++++++ ...ring-initialize-ctx-sqo_wait-earlier.patch | 76 +++++++++++++++ ...mac-fix-read-of-mac-address-from-rom.patch | 43 +++++++++ ...escale-rework-quiesce-activate-for-u.patch | 78 ++++++++++++++++ ...mac-enable-interface-clocks-on-probe.patch | 62 +++++++++++++ ...1x-fix-runtime-pm-imbalance-on-error.patch | 63 +++++++++++++ ...k-return-error-for-invalid-zone-size.patch | 65 +++++++++++++ ...m-fix-set_huge_pte_at-for-empty-ptes.patch | 58 ++++++++++++ ...pm_only-counter-of-request-queue-dur.patch | 83 +++++++++++++++++ ...qos_mc_aware-specify-arping-timeout-.patch | 45 +++++++++ queue-5.4/series | 15 +++ ...e-cpumask_available-for-cpumask_var_.patch | 67 +++++++++++++ 16 files changed, 973 insertions(+) create mode 100644 queue-5.4/arc-fix-iccm-dccm-runtime-size-checks.patch create mode 100644 queue-5.4/arc-plat-eznps-restrict-to-config_isa_arcompact.patch create mode 100644 queue-5.4/drm-edid-add-oculus-rift-s-to-non-desktop-list.patch create mode 100644 queue-5.4/evm-fix-rcu-list-related-warnings.patch create mode 100644 queue-5.4/i2c-altera-fix-race-between-xfer_msg-and-isr-thread.patch create mode 100644 queue-5.4/io_uring-initialize-ctx-sqo_wait-earlier.patch create mode 100644 queue-5.4/net-bmac-fix-read-of-mac-address-from-rom.patch create mode 100644 queue-5.4/net-ethernet-freescale-rework-quiesce-activate-for-u.patch create mode 100644 queue-5.4/net-ethernet-stmmac-enable-interface-clocks-on-probe.patch create mode 100644 queue-5.4/net-smsc911x-fix-runtime-pm-imbalance-on-error.patch create mode 100644 queue-5.4/null_blk-return-error-for-invalid-zone-size.patch create mode 100644 queue-5.4/s390-mm-fix-set_huge_pte_at-for-empty-ptes.patch create mode 100644 queue-5.4/scsi-pm-balance-pm_only-counter-of-request-queue-dur.patch create mode 100644 queue-5.4/selftests-mlxsw-qos_mc_aware-specify-arping-timeout-.patch create mode 100644 queue-5.4/x86-mmiotrace-use-cpumask_available-for-cpumask_var_.patch diff --git a/queue-5.4/arc-fix-iccm-dccm-runtime-size-checks.patch b/queue-5.4/arc-fix-iccm-dccm-runtime-size-checks.patch new file mode 100644 index 00000000000..01686b55b1e --- /dev/null +++ b/queue-5.4/arc-fix-iccm-dccm-runtime-size-checks.patch @@ -0,0 +1,54 @@ +From 6fd266aa538b2e56b020cad795593debc2eb492d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 2 Apr 2020 20:54:28 +0300 +Subject: ARC: Fix ICCM & DCCM runtime size checks + +From: Eugeniy Paltsev + +[ Upstream commit 43900edf67d7ef3ac8909854d75b8a1fba2d570c ] + +As of today the ICCM and DCCM size checks are incorrectly using +mismatched units (KiB checked against bytes). The CONFIG_ARC_DCCM_SZ +and CONFIG_ARC_ICCM_SZ are in KiB, but the size calculated in +runtime and stored in cpu->dccm.sz and cpu->iccm.sz is in bytes. + +Fix that. + +Reported-by: Paul Greco +Signed-off-by: Eugeniy Paltsev +Signed-off-by: Vineet Gupta +Signed-off-by: Sasha Levin +--- + arch/arc/kernel/setup.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c +index 7ee89dc61f6e..23dc002aa574 100644 +--- a/arch/arc/kernel/setup.c ++++ b/arch/arc/kernel/setup.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -409,12 +410,12 @@ static void arc_chk_core_config(void) + if ((unsigned int)__arc_dccm_base != cpu->dccm.base_addr) + panic("Linux built with incorrect DCCM Base address\n"); + +- if (CONFIG_ARC_DCCM_SZ != cpu->dccm.sz) ++ if (CONFIG_ARC_DCCM_SZ * SZ_1K != cpu->dccm.sz) + panic("Linux built with incorrect DCCM Size\n"); + #endif + + #ifdef CONFIG_ARC_HAS_ICCM +- if (CONFIG_ARC_ICCM_SZ != cpu->iccm.sz) ++ if (CONFIG_ARC_ICCM_SZ * SZ_1K != cpu->iccm.sz) + panic("Linux built with incorrect ICCM Size\n"); + #endif + +-- +2.25.1 + diff --git a/queue-5.4/arc-plat-eznps-restrict-to-config_isa_arcompact.patch b/queue-5.4/arc-plat-eznps-restrict-to-config_isa_arcompact.patch new file mode 100644 index 00000000000..751c1880f6e --- /dev/null +++ b/queue-5.4/arc-plat-eznps-restrict-to-config_isa_arcompact.patch @@ -0,0 +1,38 @@ +From deca0580e3a9b32270cba71d14c3367d1e001168 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 14 Apr 2020 11:41:51 -0700 +Subject: ARC: [plat-eznps]: Restrict to CONFIG_ISA_ARCOMPACT + +From: Vineet Gupta + +[ Upstream commit 799587d5731db9dcdafaac4002463aa7d9cd6cf7 ] + +Elide invalid configuration EZNPS + ARCv2, triggered by a +make allyesconfig build. + +Granted the root cause is in source code (asm/barrier.h) where we check +for ARCv2 before PLAT_EZNPS, but it is better to avoid such combinations +at onset rather then baking subtle nuances into code. + +Reported-by: kbuild test robot +Signed-off-by: Vineet Gupta +Signed-off-by: Sasha Levin +--- + arch/arc/plat-eznps/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arc/plat-eznps/Kconfig b/arch/arc/plat-eznps/Kconfig +index a931d0a256d0..a645bca5899a 100644 +--- a/arch/arc/plat-eznps/Kconfig ++++ b/arch/arc/plat-eznps/Kconfig +@@ -6,6 +6,7 @@ + + menuconfig ARC_PLAT_EZNPS + bool "\"EZchip\" ARC dev platform" ++ depends on ISA_ARCOMPACT + select CPU_BIG_ENDIAN + select CLKSRC_NPS if !PHYS_ADDR_T_64BIT + select EZNPS_GIC +-- +2.25.1 + diff --git a/queue-5.4/drm-edid-add-oculus-rift-s-to-non-desktop-list.patch b/queue-5.4/drm-edid-add-oculus-rift-s-to-non-desktop-list.patch new file mode 100644 index 00000000000..0876fa0d5d9 --- /dev/null +++ b/queue-5.4/drm-edid-add-oculus-rift-s-to-non-desktop-list.patch @@ -0,0 +1,40 @@ +From 59f6a1bb6bce211168327a27e8ff821bb88533c8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 8 May 2020 04:06:28 +1000 +Subject: drm/edid: Add Oculus Rift S to non-desktop list + +From: Jan Schmidt + +[ Upstream commit 5a3f610877e9d08968ea7237551049581f02b163 ] + +Add a quirk for the Oculus Rift S OVR0012 display so +it shows up as a non-desktop display. + +Signed-off-by: Jan Schmidt +Signed-off-by: Dave Airlie +Link: https://patchwork.freedesktop.org/patch/msgid/20200507180628.740936-1-jan@centricular.com +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/drm_edid.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c +index ea2849338d6c..9b69e55ad701 100644 +--- a/drivers/gpu/drm/drm_edid.c ++++ b/drivers/gpu/drm/drm_edid.c +@@ -191,10 +191,11 @@ static const struct edid_quirk { + { "HVR", 0xaa01, EDID_QUIRK_NON_DESKTOP }, + { "HVR", 0xaa02, EDID_QUIRK_NON_DESKTOP }, + +- /* Oculus Rift DK1, DK2, and CV1 VR Headsets */ ++ /* Oculus Rift DK1, DK2, CV1 and Rift S VR Headsets */ + { "OVR", 0x0001, EDID_QUIRK_NON_DESKTOP }, + { "OVR", 0x0003, EDID_QUIRK_NON_DESKTOP }, + { "OVR", 0x0004, EDID_QUIRK_NON_DESKTOP }, ++ { "OVR", 0x0012, EDID_QUIRK_NON_DESKTOP }, + + /* Windows Mixed Reality Headsets */ + { "ACR", 0x7fce, EDID_QUIRK_NON_DESKTOP }, +-- +2.25.1 + diff --git a/queue-5.4/evm-fix-rcu-list-related-warnings.patch b/queue-5.4/evm-fix-rcu-list-related-warnings.patch new file mode 100644 index 00000000000..bb5c5701f2b --- /dev/null +++ b/queue-5.4/evm-fix-rcu-list-related-warnings.patch @@ -0,0 +1,93 @@ +From 5de89c8fd6d799a9d7b582e93c2c7d01d29ef6d3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 30 Apr 2020 21:32:05 +0530 +Subject: evm: Fix RCU list related warnings + +From: Madhuparna Bhowmik + +[ Upstream commit 770f60586d2af0590be263f55fd079226313922c ] + +This patch fixes the following warning and few other instances of +traversal of evm_config_xattrnames list: + +[ 32.848432] ============================= +[ 32.848707] WARNING: suspicious RCU usage +[ 32.848966] 5.7.0-rc1-00006-ga8d5875ce5f0b #1 Not tainted +[ 32.849308] ----------------------------- +[ 32.849567] security/integrity/evm/evm_main.c:231 RCU-list traversed in non-reader section!! + +Since entries are only added to the list and never deleted, use +list_for_each_entry_lockless() instead of list_for_each_entry_rcu for +traversing the list. Also, add a relevant comment in evm_secfs.c to +indicate this fact. + +Reported-by: kernel test robot +Suggested-by: Paul E. McKenney +Signed-off-by: Madhuparna Bhowmik +Acked-by: Paul E. McKenney (RCU viewpoint) +Signed-off-by: Mimi Zohar +Signed-off-by: Sasha Levin +--- + security/integrity/evm/evm_crypto.c | 2 +- + security/integrity/evm/evm_main.c | 4 ++-- + security/integrity/evm/evm_secfs.c | 9 ++++++++- + 3 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c +index cc826c2767a3..fbc2ee6d46fc 100644 +--- a/security/integrity/evm/evm_crypto.c ++++ b/security/integrity/evm/evm_crypto.c +@@ -209,7 +209,7 @@ static int evm_calc_hmac_or_hash(struct dentry *dentry, + data->hdr.length = crypto_shash_digestsize(desc->tfm); + + error = -ENODATA; +- list_for_each_entry_rcu(xattr, &evm_config_xattrnames, list) { ++ list_for_each_entry_lockless(xattr, &evm_config_xattrnames, list) { + bool is_ima = false; + + if (strcmp(xattr->name, XATTR_NAME_IMA) == 0) +diff --git a/security/integrity/evm/evm_main.c b/security/integrity/evm/evm_main.c +index f9a81b187fae..a2c393385db0 100644 +--- a/security/integrity/evm/evm_main.c ++++ b/security/integrity/evm/evm_main.c +@@ -99,7 +99,7 @@ static int evm_find_protected_xattrs(struct dentry *dentry) + if (!(inode->i_opflags & IOP_XATTR)) + return -EOPNOTSUPP; + +- list_for_each_entry_rcu(xattr, &evm_config_xattrnames, list) { ++ list_for_each_entry_lockless(xattr, &evm_config_xattrnames, list) { + error = __vfs_getxattr(dentry, inode, xattr->name, NULL, 0); + if (error < 0) { + if (error == -ENODATA) +@@ -230,7 +230,7 @@ static int evm_protected_xattr(const char *req_xattr_name) + struct xattr_list *xattr; + + namelen = strlen(req_xattr_name); +- list_for_each_entry_rcu(xattr, &evm_config_xattrnames, list) { ++ list_for_each_entry_lockless(xattr, &evm_config_xattrnames, list) { + if ((strlen(xattr->name) == namelen) + && (strncmp(req_xattr_name, xattr->name, namelen) == 0)) { + found = 1; +diff --git a/security/integrity/evm/evm_secfs.c b/security/integrity/evm/evm_secfs.c +index c11c1f7b3ddd..0f37ef27268d 100644 +--- a/security/integrity/evm/evm_secfs.c ++++ b/security/integrity/evm/evm_secfs.c +@@ -234,7 +234,14 @@ static ssize_t evm_write_xattrs(struct file *file, const char __user *buf, + goto out; + } + +- /* Guard against races in evm_read_xattrs */ ++ /* ++ * xattr_list_mutex guards against races in evm_read_xattrs(). ++ * Entries are only added to the evm_config_xattrnames list ++ * and never deleted. Therefore, the list is traversed ++ * using list_for_each_entry_lockless() without holding ++ * the mutex in evm_calc_hmac_or_hash(), evm_find_protected_xattrs() ++ * and evm_protected_xattr(). ++ */ + mutex_lock(&xattr_list_mutex); + list_for_each_entry(tmp, &evm_config_xattrnames, list) { + if (strcmp(xattr->name, tmp->name) == 0) { +-- +2.25.1 + diff --git a/queue-5.4/i2c-altera-fix-race-between-xfer_msg-and-isr-thread.patch b/queue-5.4/i2c-altera-fix-race-between-xfer_msg-and-isr-thread.patch new file mode 100644 index 00000000000..f817e469f2c --- /dev/null +++ b/queue-5.4/i2c-altera-fix-race-between-xfer_msg-and-isr-thread.patch @@ -0,0 +1,93 @@ +From 7377206938c81a85bb81db23179efb87e0f244de Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 8 May 2020 22:12:48 +0900 +Subject: i2c: altera: Fix race between xfer_msg and isr thread + +From: Atsushi Nemoto + +[ Upstream commit 5d4c7977499a736f3f80826bdc9744344ad55589 ] + +Use a mutex to protect access to idev->msg_len, idev->buf, etc. which +are modified by both altr_i2c_xfer_msg() and altr_i2c_isr(). + +This is the minimal fix for easy backporting. A cleanup to remove the +spinlock will be added later. + +Signed-off-by: Atsushi Nemoto +Acked-by: Thor Thayer +[wsa: updated commit message] +Signed-off-by: Wolfram Sang +Signed-off-by: Sasha Levin +--- + drivers/i2c/busses/i2c-altera.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/drivers/i2c/busses/i2c-altera.c b/drivers/i2c/busses/i2c-altera.c +index 92d2c706c2a7..a60042431370 100644 +--- a/drivers/i2c/busses/i2c-altera.c ++++ b/drivers/i2c/busses/i2c-altera.c +@@ -70,6 +70,7 @@ + * @isr_mask: cached copy of local ISR enables. + * @isr_status: cached copy of local ISR status. + * @lock: spinlock for IRQ synchronization. ++ * @isr_mutex: mutex for IRQ thread. + */ + struct altr_i2c_dev { + void __iomem *base; +@@ -86,6 +87,7 @@ struct altr_i2c_dev { + u32 isr_mask; + u32 isr_status; + spinlock_t lock; /* IRQ synchronization */ ++ struct mutex isr_mutex; + }; + + static void +@@ -245,10 +247,11 @@ static irqreturn_t altr_i2c_isr(int irq, void *_dev) + struct altr_i2c_dev *idev = _dev; + u32 status = idev->isr_status; + ++ mutex_lock(&idev->isr_mutex); + if (!idev->msg) { + dev_warn(idev->dev, "unexpected interrupt\n"); + altr_i2c_int_clear(idev, ALTR_I2C_ALL_IRQ); +- return IRQ_HANDLED; ++ goto out; + } + read = (idev->msg->flags & I2C_M_RD) != 0; + +@@ -301,6 +304,8 @@ static irqreturn_t altr_i2c_isr(int irq, void *_dev) + complete(&idev->msg_complete); + dev_dbg(idev->dev, "Message Complete\n"); + } ++out: ++ mutex_unlock(&idev->isr_mutex); + + return IRQ_HANDLED; + } +@@ -312,6 +317,7 @@ static int altr_i2c_xfer_msg(struct altr_i2c_dev *idev, struct i2c_msg *msg) + u32 value; + u8 addr = i2c_8bit_addr_from_msg(msg); + ++ mutex_lock(&idev->isr_mutex); + idev->msg = msg; + idev->msg_len = msg->len; + idev->buf = msg->buf; +@@ -336,6 +342,7 @@ static int altr_i2c_xfer_msg(struct altr_i2c_dev *idev, struct i2c_msg *msg) + altr_i2c_int_enable(idev, imask, true); + altr_i2c_fill_tx_fifo(idev); + } ++ mutex_unlock(&idev->isr_mutex); + + time_left = wait_for_completion_timeout(&idev->msg_complete, + ALTR_I2C_XFER_TIMEOUT); +@@ -409,6 +416,7 @@ static int altr_i2c_probe(struct platform_device *pdev) + idev->dev = &pdev->dev; + init_completion(&idev->msg_complete); + spin_lock_init(&idev->lock); ++ mutex_init(&idev->isr_mutex); + + ret = device_property_read_u32(idev->dev, "fifo-size", + &idev->fifo_size); +-- +2.25.1 + diff --git a/queue-5.4/io_uring-initialize-ctx-sqo_wait-earlier.patch b/queue-5.4/io_uring-initialize-ctx-sqo_wait-earlier.patch new file mode 100644 index 00000000000..dc5ba0bb196 --- /dev/null +++ b/queue-5.4/io_uring-initialize-ctx-sqo_wait-earlier.patch @@ -0,0 +1,76 @@ +From b005c481fb3fa7ef4b29062e5a67eee0047a3152 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 17 May 2020 09:20:00 -0600 +Subject: io_uring: initialize ctx->sqo_wait earlier + +From: Jens Axboe + +[ Upstream commit 583863ed918136412ddf14de2e12534f17cfdc6f ] + +Ensure that ctx->sqo_wait is initialized as soon as the ctx is allocated, +instead of deferring it to the offload setup. This fixes a syzbot +reported lockdep complaint, which is really due to trying to wake_up +on an uninitialized wait queue: + +RSP: 002b:00007fffb1fb9aa8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9 +RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000441319 +RDX: 0000000000000001 RSI: 0000000020000140 RDI: 000000000000047b +RBP: 0000000000010475 R08: 0000000000000001 R09: 00000000004002c8 +R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000402260 +R13: 00000000004022f0 R14: 0000000000000000 R15: 0000000000000000 +INFO: trying to register non-static key. +the code is fine but needs lockdep annotation. +turning off the locking correctness validator. +CPU: 1 PID: 7090 Comm: syz-executor222 Not tainted 5.7.0-rc1-next-20200415-syzkaller #0 +Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 +Call Trace: + __dump_stack lib/dump_stack.c:77 [inline] + dump_stack+0x188/0x20d lib/dump_stack.c:118 + assign_lock_key kernel/locking/lockdep.c:913 [inline] + register_lock_class+0x1664/0x1760 kernel/locking/lockdep.c:1225 + __lock_acquire+0x104/0x4c50 kernel/locking/lockdep.c:4234 + lock_acquire+0x1f2/0x8f0 kernel/locking/lockdep.c:4934 + __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] + _raw_spin_lock_irqsave+0x8c/0xbf kernel/locking/spinlock.c:159 + __wake_up_common_lock+0xb4/0x130 kernel/sched/wait.c:122 + io_cqring_ev_posted+0xa5/0x1e0 fs/io_uring.c:1160 + io_poll_remove_all fs/io_uring.c:4357 [inline] + io_ring_ctx_wait_and_kill+0x2bc/0x5a0 fs/io_uring.c:7305 + io_uring_create fs/io_uring.c:7843 [inline] + io_uring_setup+0x115e/0x22b0 fs/io_uring.c:7870 + do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295 + entry_SYSCALL_64_after_hwframe+0x49/0xb3 +RIP: 0033:0x441319 +Code: e8 5c ae 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 bb 0a fc ff c3 66 2e 0f 1f 84 00 00 00 00 +RSP: 002b:00007fffb1fb9aa8 EFLAGS: 00000246 ORIG_RAX: 00000000000001a9 + +Reported-by: syzbot+8c91f5d054e998721c57@syzkaller.appspotmail.com +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + fs/io_uring.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/io_uring.c b/fs/io_uring.c +index b2ccb908f6b6..2050100e6e84 100644 +--- a/fs/io_uring.c ++++ b/fs/io_uring.c +@@ -409,6 +409,7 @@ static struct io_ring_ctx *io_ring_ctx_alloc(struct io_uring_params *p) + } + + ctx->flags = p->flags; ++ init_waitqueue_head(&ctx->sqo_wait); + init_waitqueue_head(&ctx->cq_wait); + init_completion(&ctx->ctx_done); + init_completion(&ctx->sqo_thread_started); +@@ -3237,7 +3238,6 @@ static int io_sq_offload_start(struct io_ring_ctx *ctx, + { + int ret; + +- init_waitqueue_head(&ctx->sqo_wait); + mmgrab(current->mm); + ctx->sqo_mm = current->mm; + +-- +2.25.1 + diff --git a/queue-5.4/net-bmac-fix-read-of-mac-address-from-rom.patch b/queue-5.4/net-bmac-fix-read-of-mac-address-from-rom.patch new file mode 100644 index 00000000000..a8a787477bd --- /dev/null +++ b/queue-5.4/net-bmac-fix-read-of-mac-address-from-rom.patch @@ -0,0 +1,43 @@ +From 0006b76d8cf9300b0fd58659241d77bb1ffb18cd Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 19 May 2020 09:05:58 +0800 +Subject: net: bmac: Fix read of MAC address from ROM + +From: Jeremy Kerr + +[ Upstream commit ef01cee2ee1b369c57a936166483d40942bcc3e3 ] + +In bmac_get_station_address, We're reading two bytes at a time from ROM, +but we do that six times, resulting in 12 bytes of read & writes. This +means we will write off the end of the six-byte destination buffer. + +This change fixes the for-loop to only read/write six bytes. + +Based on a proposed fix from Finn Thain . + +Signed-off-by: Jeremy Kerr +Reported-by: Stan Johnson +Tested-by: Stan Johnson +Reported-by: Finn Thain +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/apple/bmac.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/apple/bmac.c b/drivers/net/ethernet/apple/bmac.c +index a58185b1d8bf..3e3711b60d01 100644 +--- a/drivers/net/ethernet/apple/bmac.c ++++ b/drivers/net/ethernet/apple/bmac.c +@@ -1182,7 +1182,7 @@ bmac_get_station_address(struct net_device *dev, unsigned char *ea) + int i; + unsigned short data; + +- for (i = 0; i < 6; i++) ++ for (i = 0; i < 3; i++) + { + reset_and_select_srom(dev); + data = read_srom(dev, i + EnetAddressOffset/2, SROMAddressBits); +-- +2.25.1 + diff --git a/queue-5.4/net-ethernet-freescale-rework-quiesce-activate-for-u.patch b/queue-5.4/net-ethernet-freescale-rework-quiesce-activate-for-u.patch new file mode 100644 index 00000000000..c31f97d6295 --- /dev/null +++ b/queue-5.4/net-ethernet-freescale-rework-quiesce-activate-for-u.patch @@ -0,0 +1,78 @@ +From 71ddf9a42193f5c75e9cb2e22c961b03989cd0f8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 20 May 2020 17:53:50 +0200 +Subject: net/ethernet/freescale: rework quiesce/activate for ucc_geth + +From: Valentin Longchamp + +[ Upstream commit 79dde73cf9bcf1dd317a2667f78b758e9fe139ed ] + +ugeth_quiesce/activate are used to halt the controller when there is a +link change that requires to reconfigure the mac. + +The previous implementation called netif_device_detach(). This however +causes the initial activation of the netdevice to fail precisely because +it's detached. For details, see [1]. + +A possible workaround was the revert of commit +net: linkwatch: add check for netdevice being present to linkwatch_do_dev +However, the check introduced in the above commit is correct and shall be +kept. + +The netif_device_detach() is thus replaced with +netif_tx_stop_all_queues() that prevents any tranmission. This allows to +perform mac config change required by the link change, without detaching +the corresponding netdevice and thus not preventing its initial +activation. + +[1] https://lists.openwall.net/netdev/2020/01/08/201 + +Signed-off-by: Valentin Longchamp +Acked-by: Matteo Ghidoni +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/freescale/ucc_geth.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c +index f839fa94ebdd..d3b8ce734c1b 100644 +--- a/drivers/net/ethernet/freescale/ucc_geth.c ++++ b/drivers/net/ethernet/freescale/ucc_geth.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + + #include "ucc_geth.h" + +@@ -1548,11 +1549,8 @@ static int ugeth_disable(struct ucc_geth_private *ugeth, enum comm_dir mode) + + static void ugeth_quiesce(struct ucc_geth_private *ugeth) + { +- /* Prevent any further xmits, plus detach the device. */ +- netif_device_detach(ugeth->ndev); +- +- /* Wait for any current xmits to finish. */ +- netif_tx_disable(ugeth->ndev); ++ /* Prevent any further xmits */ ++ netif_tx_stop_all_queues(ugeth->ndev); + + /* Disable the interrupt to avoid NAPI rescheduling. */ + disable_irq(ugeth->ug_info->uf_info.irq); +@@ -1565,7 +1563,10 @@ static void ugeth_activate(struct ucc_geth_private *ugeth) + { + napi_enable(&ugeth->napi); + enable_irq(ugeth->ug_info->uf_info.irq); +- netif_device_attach(ugeth->ndev); ++ ++ /* allow to xmit again */ ++ netif_tx_wake_all_queues(ugeth->ndev); ++ __netdev_watchdog_up(ugeth->ndev); + } + + /* Called every time the controller might need to be made +-- +2.25.1 + diff --git a/queue-5.4/net-ethernet-stmmac-enable-interface-clocks-on-probe.patch b/queue-5.4/net-ethernet-stmmac-enable-interface-clocks-on-probe.patch new file mode 100644 index 00000000000..209d904d42a --- /dev/null +++ b/queue-5.4/net-ethernet-stmmac-enable-interface-clocks-on-probe.patch @@ -0,0 +1,62 @@ +From b9f0b18e9e698e25ecf10b25324fe49d92633245 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 21 May 2020 12:49:34 +0100 +Subject: net: ethernet: stmmac: Enable interface clocks on probe for IPQ806x + +From: Jonathan McDowell + +[ Upstream commit a96ac8a0045e3cbe3e5af6d1b3c78c6c2065dec5 ] + +The ipq806x_gmac_probe() function enables the PTP clock but not the +appropriate interface clocks. This means that if the bootloader hasn't +done so attempting to bring up the interface will fail with an error +like: + +[ 59.028131] ipq806x-gmac-dwmac 37600000.ethernet: Failed to reset the dma +[ 59.028196] ipq806x-gmac-dwmac 37600000.ethernet eth1: stmmac_hw_setup: DMA engine initialization failed +[ 59.034056] ipq806x-gmac-dwmac 37600000.ethernet eth1: stmmac_open: Hw setup failed + +This patch, a slightly cleaned up version of one posted by Sergey +Sergeev in: + +https://forum.openwrt.org/t/support-for-mikrotik-rb3011uias-rm/4064/257 + +correctly enables the clock; we have already configured the source just +before this. + +Tested on a MikroTik RB3011. + +Signed-off-by: Jonathan McDowell +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +index 0d21082ceb93..4d75158c64b2 100644 +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +@@ -318,6 +318,19 @@ static int ipq806x_gmac_probe(struct platform_device *pdev) + /* Enable PTP clock */ + regmap_read(gmac->nss_common, NSS_COMMON_CLK_GATE, &val); + val |= NSS_COMMON_CLK_GATE_PTP_EN(gmac->id); ++ switch (gmac->phy_mode) { ++ case PHY_INTERFACE_MODE_RGMII: ++ val |= NSS_COMMON_CLK_GATE_RGMII_RX_EN(gmac->id) | ++ NSS_COMMON_CLK_GATE_RGMII_TX_EN(gmac->id); ++ break; ++ case PHY_INTERFACE_MODE_SGMII: ++ val |= NSS_COMMON_CLK_GATE_GMII_RX_EN(gmac->id) | ++ NSS_COMMON_CLK_GATE_GMII_TX_EN(gmac->id); ++ break; ++ default: ++ /* We don't get here; the switch above will have errored out */ ++ unreachable(); ++ } + regmap_write(gmac->nss_common, NSS_COMMON_CLK_GATE, val); + + if (gmac->phy_mode == PHY_INTERFACE_MODE_SGMII) { +-- +2.25.1 + diff --git a/queue-5.4/net-smsc911x-fix-runtime-pm-imbalance-on-error.patch b/queue-5.4/net-smsc911x-fix-runtime-pm-imbalance-on-error.patch new file mode 100644 index 00000000000..1c6afe8a512 --- /dev/null +++ b/queue-5.4/net-smsc911x-fix-runtime-pm-imbalance-on-error.patch @@ -0,0 +1,63 @@ +From fdabbc8d9f637ad0bf924c80ceb8d58b39b2b6e3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 23 May 2020 16:08:20 +0800 +Subject: net: smsc911x: Fix runtime PM imbalance on error + +From: Dinghao Liu + +[ Upstream commit 539d39ad0c61b35f69565a037d7586deaf6d6166 ] + +Remove runtime PM usage counter decrement when the +increment function has not been called to keep the +counter balanced. + +Signed-off-by: Dinghao Liu +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/smsc/smsc911x.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c +index 38068fc34141..c7bdada4d1b9 100644 +--- a/drivers/net/ethernet/smsc/smsc911x.c ++++ b/drivers/net/ethernet/smsc/smsc911x.c +@@ -2502,20 +2502,20 @@ static int smsc911x_drv_probe(struct platform_device *pdev) + + retval = smsc911x_init(dev); + if (retval < 0) +- goto out_disable_resources; ++ goto out_init_fail; + + netif_carrier_off(dev); + + retval = smsc911x_mii_init(pdev, dev); + if (retval) { + SMSC_WARN(pdata, probe, "Error %i initialising mii", retval); +- goto out_disable_resources; ++ goto out_init_fail; + } + + retval = register_netdev(dev); + if (retval) { + SMSC_WARN(pdata, probe, "Error %i registering device", retval); +- goto out_disable_resources; ++ goto out_init_fail; + } else { + SMSC_TRACE(pdata, probe, + "Network interface: \"%s\"", dev->name); +@@ -2556,9 +2556,10 @@ static int smsc911x_drv_probe(struct platform_device *pdev) + + return 0; + +-out_disable_resources: ++out_init_fail: + pm_runtime_put(&pdev->dev); + pm_runtime_disable(&pdev->dev); ++out_disable_resources: + (void)smsc911x_disable_resources(pdev); + out_enable_resources_fail: + smsc911x_free_resources(pdev); +-- +2.25.1 + diff --git a/queue-5.4/null_blk-return-error-for-invalid-zone-size.patch b/queue-5.4/null_blk-return-error-for-invalid-zone-size.patch new file mode 100644 index 00000000000..a5f52b8784d --- /dev/null +++ b/queue-5.4/null_blk-return-error-for-invalid-zone-size.patch @@ -0,0 +1,65 @@ +From e5d2394e9295e4ea095558422af2071be342a5ea Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 20 May 2020 16:01:51 -0700 +Subject: null_blk: return error for invalid zone size + +From: Chaitanya Kulkarni + +[ Upstream commit e274832590211c4b1b1e807ca66fad8b5bb8b328 ] + +In null_init_zone_dev() check if the zone size is larger than device +capacity, return error if needed. + +This also fixes the following oops :- + +null_blk: changed the number of conventional zones to 4294967295 +BUG: kernel NULL pointer dereference, address: 0000000000000010 +PGD 7d76c5067 P4D 7d76c5067 PUD 7d240c067 PMD 0 +Oops: 0002 [#1] SMP NOPTI +CPU: 4 PID: 5508 Comm: nullbtests.sh Tainted: G OE 5.7.0-rc4lblk-fnext0 +Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e4 +RIP: 0010:null_init_zoned_dev+0x17a/0x27f [null_blk] +RSP: 0018:ffffc90007007e00 EFLAGS: 00010246 +RAX: 0000000000000020 RBX: ffff8887fb3f3c00 RCX: 0000000000000007 +RDX: 0000000000000000 RSI: ffff8887ca09d688 RDI: ffff888810fea510 +RBP: 0000000000000010 R08: ffff8887ca09d688 R09: 0000000000000000 +R10: 0000000000000000 R11: 0000000000000000 R12: ffff8887c26e8000 +R13: ffffffffa05e9390 R14: 0000000000000000 R15: 0000000000000001 +FS: 00007fcb5256f740(0000) GS:ffff888810e00000(0000) knlGS:0000000000000000 +CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +CR2: 0000000000000010 CR3: 000000081e8fe000 CR4: 00000000003406e0 +Call Trace: + null_add_dev+0x534/0x71b [null_blk] + nullb_device_power_store.cold.41+0x8/0x2e [null_blk] + configfs_write_file+0xe6/0x150 + vfs_write+0xba/0x1e0 + ksys_write+0x5f/0xe0 + do_syscall_64+0x60/0x250 + entry_SYSCALL_64_after_hwframe+0x49/0xb3 +RIP: 0033:0x7fcb51c71840 + +Signed-off-by: Chaitanya Kulkarni +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + drivers/block/null_blk_zoned.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/block/null_blk_zoned.c b/drivers/block/null_blk_zoned.c +index 3d7fdea872f8..2553e05e0725 100644 +--- a/drivers/block/null_blk_zoned.c ++++ b/drivers/block/null_blk_zoned.c +@@ -20,6 +20,10 @@ int null_zone_init(struct nullb_device *dev) + pr_err("zone_size must be power-of-two\n"); + return -EINVAL; + } ++ if (dev->zone_size > dev->size) { ++ pr_err("Zone size larger than device capacity\n"); ++ return -EINVAL; ++ } + + dev->zone_size_sects = dev->zone_size << ZONE_SIZE_SHIFT; + dev->nr_zones = dev_size >> +-- +2.25.1 + diff --git a/queue-5.4/s390-mm-fix-set_huge_pte_at-for-empty-ptes.patch b/queue-5.4/s390-mm-fix-set_huge_pte_at-for-empty-ptes.patch new file mode 100644 index 00000000000..3e96caf1cc7 --- /dev/null +++ b/queue-5.4/s390-mm-fix-set_huge_pte_at-for-empty-ptes.patch @@ -0,0 +1,58 @@ +From a23f7d7fb18c9cfe20d3521b487c5b60613cf66a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 6 May 2020 13:04:07 +0200 +Subject: s390/mm: fix set_huge_pte_at() for empty ptes + +From: Gerald Schaefer + +[ Upstream commit ac8372f3b4e41015549b331a4f350224661e7fc6 ] + +On s390, the layout of normal and large ptes (i.e. pmds/puds) differs. +Therefore, set_huge_pte_at() does a conversion from a normal pte to +the corresponding large pmd/pud. So, when converting an empty pte, this +should result in an empty pmd/pud, which would return true for +pmd/pud_none(). + +However, after conversion we also mark the pmd/pud as large, and +therefore present. For empty ptes, this will result in an empty pmd/pud +that is also marked as large, and pmd/pud_none() would not return true. + +There is currently no issue with this behaviour, as set_huge_pte_at() +does not seem to be called for empty ptes. It would be valid though, so +let's fix this by not marking empty ptes as large in set_huge_pte_at(). + +This was found by testing a patch from from Anshuman Khandual, which is +currently discussed on LKML ("mm/debug: Add more arch page table helper +tests"). + +Signed-off-by: Gerald Schaefer +Signed-off-by: Vasily Gorbik +Signed-off-by: Sasha Levin +--- + arch/s390/mm/hugetlbpage.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c +index 5674710a4841..7dfae86afa47 100644 +--- a/arch/s390/mm/hugetlbpage.c ++++ b/arch/s390/mm/hugetlbpage.c +@@ -159,10 +159,13 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, + rste &= ~_SEGMENT_ENTRY_NOEXEC; + + /* Set correct table type for 2G hugepages */ +- if ((pte_val(*ptep) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3) +- rste |= _REGION_ENTRY_TYPE_R3 | _REGION3_ENTRY_LARGE; +- else ++ if ((pte_val(*ptep) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3) { ++ if (likely(pte_present(pte))) ++ rste |= _REGION3_ENTRY_LARGE; ++ rste |= _REGION_ENTRY_TYPE_R3; ++ } else if (likely(pte_present(pte))) + rste |= _SEGMENT_ENTRY_LARGE; ++ + clear_huge_pte_skeys(mm, rste); + pte_val(*ptep) = rste; + } +-- +2.25.1 + diff --git a/queue-5.4/scsi-pm-balance-pm_only-counter-of-request-queue-dur.patch b/queue-5.4/scsi-pm-balance-pm_only-counter-of-request-queue-dur.patch new file mode 100644 index 00000000000..cfffe3e008b --- /dev/null +++ b/queue-5.4/scsi-pm-balance-pm_only-counter-of-request-queue-dur.patch @@ -0,0 +1,83 @@ +From 714bd6cdc71bf075f0d0d65d9314108e82bf541b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 5 May 2020 21:55:35 -0700 +Subject: scsi: pm: Balance pm_only counter of request queue during system + resume + +From: Can Guo + +[ Upstream commit 05d18ae1cc8a0308b12f37b4ab94afce3535fac9 ] + +During system resume, scsi_resume_device() decreases a request queue's +pm_only counter if the scsi device was quiesced before. But after that, if +the scsi device's RPM status is RPM_SUSPENDED, the pm_only counter is still +held (non-zero). Current SCSI resume hook only sets the RPM status of the +scsi_device and its request queue to RPM_ACTIVE, but leaves the pm_only +counter unchanged. This may make the request queue's pm_only counter remain +non-zero after resume hook returns, hence those who are waiting on the +mq_freeze_wq would never be woken up. Fix this by calling +blk_post_runtime_resume() if a sdev's RPM status was RPM_SUSPENDED. + +(struct request_queue)0xFFFFFF815B69E938 + pm_only = (counter = 2), + rpm_status = 0, + dev = 0xFFFFFF815B0511A0, + +((struct device)0xFFFFFF815B0511A0)).power + is_suspended = FALSE, + runtime_status = RPM_ACTIVE, + +(struct scsi_device)0xffffff815b051000 + request_queue = 0xFFFFFF815B69E938, + sdev_state = SDEV_RUNNING, + quiesced_by = 0x0, + +B::v.f_/task_0xFFFFFF810C246940 +-000|__switch_to(prev = 0xFFFFFF810C246940, next = 0xFFFFFF80A49357C0) +-001|context_switch(inline) +-001|__schedule(?) +-002|schedule() +-003|blk_queue_enter(q = 0xFFFFFF815B69E938, flags = 0) +-004|generic_make_request(?) +-005|submit_bio(bio = 0xFFFFFF80A8195B80) + +Link: https://lore.kernel.org/r/1588740936-28846-1-git-send-email-cang@codeaurora.org +Reviewed-by: Bart Van Assche +Signed-off-by: Can Guo +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/scsi_pm.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c +index 3717eea37ecb..5f0ad8b32e3a 100644 +--- a/drivers/scsi/scsi_pm.c ++++ b/drivers/scsi/scsi_pm.c +@@ -80,6 +80,10 @@ static int scsi_dev_type_resume(struct device *dev, + dev_dbg(dev, "scsi resume: %d\n", err); + + if (err == 0) { ++ bool was_runtime_suspended; ++ ++ was_runtime_suspended = pm_runtime_suspended(dev); ++ + pm_runtime_disable(dev); + err = pm_runtime_set_active(dev); + pm_runtime_enable(dev); +@@ -93,8 +97,10 @@ static int scsi_dev_type_resume(struct device *dev, + */ + if (!err && scsi_is_sdev_device(dev)) { + struct scsi_device *sdev = to_scsi_device(dev); +- +- blk_set_runtime_active(sdev->request_queue); ++ if (was_runtime_suspended) ++ blk_post_runtime_resume(sdev->request_queue, 0); ++ else ++ blk_set_runtime_active(sdev->request_queue); + } + } + +-- +2.25.1 + diff --git a/queue-5.4/selftests-mlxsw-qos_mc_aware-specify-arping-timeout-.patch b/queue-5.4/selftests-mlxsw-qos_mc_aware-specify-arping-timeout-.patch new file mode 100644 index 00000000000..725bf0e09e8 --- /dev/null +++ b/queue-5.4/selftests-mlxsw-qos_mc_aware-specify-arping-timeout-.patch @@ -0,0 +1,45 @@ +From 8d10cda38790d483a2e5783884735637e24d9084 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 21 May 2020 15:11:45 +0300 +Subject: selftests: mlxsw: qos_mc_aware: Specify arping timeout as an integer + +From: Amit Cohen + +[ Upstream commit 46ca11177ed593f39d534f8d2c74ec5344e90c11 ] + +Starting from iputils s20190709 (used in Fedora 31), arping does not +support timeout being specified as a decimal: + +$ arping -c 1 -I swp1 -b 192.0.2.66 -q -w 0.1 +arping: invalid argument: '0.1' + +Previously, such timeouts were rounded to an integer. + +Fix this by specifying the timeout as an integer. + +Fixes: a5ee171d087e ("selftests: mlxsw: qos_mc_aware: Add a test for UC awareness") +Signed-off-by: Amit Cohen +Reviewed-by: Petr Machata +Signed-off-by: Ido Schimmel +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh b/tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh +index 24dd8ed48580..b025daea062d 100755 +--- a/tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh ++++ b/tools/testing/selftests/drivers/net/mlxsw/qos_mc_aware.sh +@@ -300,7 +300,7 @@ test_uc_aware() + local i + + for ((i = 0; i < attempts; ++i)); do +- if $ARPING -c 1 -I $h1 -b 192.0.2.66 -q -w 0.1; then ++ if $ARPING -c 1 -I $h1 -b 192.0.2.66 -q -w 1; then + ((passes++)) + fi + +-- +2.25.1 + diff --git a/queue-5.4/series b/queue-5.4/series index e6c6c8f1850..44f5a5561d0 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -8,3 +8,18 @@ asoc-intel-fix-the-card-names.patch s390-ftrace-save-traced-function-caller.patch rdma-qedr-fix-qpids-xarray-api-used.patch rdma-qedr-fix-synchronization-methods-and-memory-lea.patch +arc-fix-iccm-dccm-runtime-size-checks.patch +arc-plat-eznps-restrict-to-config_isa_arcompact.patch +evm-fix-rcu-list-related-warnings.patch +scsi-pm-balance-pm_only-counter-of-request-queue-dur.patch +i2c-altera-fix-race-between-xfer_msg-and-isr-thread.patch +io_uring-initialize-ctx-sqo_wait-earlier.patch +x86-mmiotrace-use-cpumask_available-for-cpumask_var_.patch +net-bmac-fix-read-of-mac-address-from-rom.patch +drm-edid-add-oculus-rift-s-to-non-desktop-list.patch +s390-mm-fix-set_huge_pte_at-for-empty-ptes.patch +null_blk-return-error-for-invalid-zone-size.patch +net-ethernet-freescale-rework-quiesce-activate-for-u.patch +net-ethernet-stmmac-enable-interface-clocks-on-probe.patch +selftests-mlxsw-qos_mc_aware-specify-arping-timeout-.patch +net-smsc911x-fix-runtime-pm-imbalance-on-error.patch diff --git a/queue-5.4/x86-mmiotrace-use-cpumask_available-for-cpumask_var_.patch b/queue-5.4/x86-mmiotrace-use-cpumask_available-for-cpumask_var_.patch new file mode 100644 index 00000000000..833ae4818ca --- /dev/null +++ b/queue-5.4/x86-mmiotrace-use-cpumask_available-for-cpumask_var_.patch @@ -0,0 +1,67 @@ +From 7a277ab824e2d9078749aaae87cb0aece6b60181 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 8 Apr 2020 13:53:23 -0700 +Subject: x86/mmiotrace: Use cpumask_available() for cpumask_var_t variables + +From: Nathan Chancellor + +[ Upstream commit d7110a26e5905ec2fe3fc88bc6a538901accb72b ] + +When building with Clang + -Wtautological-compare and +CONFIG_CPUMASK_OFFSTACK unset: + + arch/x86/mm/mmio-mod.c:375:6: warning: comparison of array 'downed_cpus' + equal to a null pointer is always false [-Wtautological-pointer-compare] + if (downed_cpus == NULL && + ^~~~~~~~~~~ ~~~~ + arch/x86/mm/mmio-mod.c:405:6: warning: comparison of array 'downed_cpus' + equal to a null pointer is always false [-Wtautological-pointer-compare] + if (downed_cpus == NULL || cpumask_weight(downed_cpus) == 0) + ^~~~~~~~~~~ ~~~~ + 2 warnings generated. + +Commit + + f7e30f01a9e2 ("cpumask: Add helper cpumask_available()") + +added cpumask_available() to fix warnings of this nature. Use that here +so that clang does not warn regardless of CONFIG_CPUMASK_OFFSTACK's +value. + +Reported-by: Sedat Dilek +Signed-off-by: Nathan Chancellor +Signed-off-by: Borislav Petkov +Reviewed-by: Nick Desaulniers +Acked-by: Steven Rostedt (VMware) +Link: https://github.com/ClangBuiltLinux/linux/issues/982 +Link: https://lkml.kernel.org/r/20200408205323.44490-1-natechancellor@gmail.com +Signed-off-by: Sasha Levin +--- + arch/x86/mm/mmio-mod.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/mm/mmio-mod.c b/arch/x86/mm/mmio-mod.c +index b8ef8557d4b3..2a36902d418c 100644 +--- a/arch/x86/mm/mmio-mod.c ++++ b/arch/x86/mm/mmio-mod.c +@@ -372,7 +372,7 @@ static void enter_uniprocessor(void) + int cpu; + int err; + +- if (downed_cpus == NULL && ++ if (!cpumask_available(downed_cpus) && + !alloc_cpumask_var(&downed_cpus, GFP_KERNEL)) { + pr_notice("Failed to allocate mask\n"); + goto out; +@@ -402,7 +402,7 @@ static void leave_uniprocessor(void) + int cpu; + int err; + +- if (downed_cpus == NULL || cpumask_weight(downed_cpus) == 0) ++ if (!cpumask_available(downed_cpus) || cpumask_weight(downed_cpus) == 0) + return; + pr_notice("Re-enabling CPUs...\n"); + for_each_cpu(cpu, downed_cpus) { +-- +2.25.1 + -- 2.47.3