From 6cb6092f4fd53e60d45f20f72a5e9d3d83789c62 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Fri, 29 May 2020 11:05:01 -0400 Subject: [PATCH] Fixes for 4.14 Signed-off-by: Sasha Levin --- ...chip-fix-phy-nodename-for-rk3228-evb.patch | 49 +++++++ ...-fix-pinctrl-sub-nodename-for-spi-in.patch | 61 +++++++++ ...ip-swap-interrupts-interrupt-names-r.patch | 49 +++++++ ...ace-between-read_waiter-and-read_cop.patch | 126 ++++++++++++++++++ ...-fix-null-pointer-check-in-cifs_read.patch | 36 +++++ ...quota_unhold-if-quotas-are-not-locke.patch | 46 +++++++ ...eged-user-check-to-gfs2_quota_lock_c.patch | 57 ++++++++ ...a-mask-gpio-irqs-during-irq-shutdown.patch | 39 ++++++ ...select-config_fixed_phy-where-needed.patch | 66 +++++++++ ...p-encx24j600-add-missed-kthread_stop.patch | 53 ++++++++ queue-4.14/samples-bpf-fix-build-error.patch | 42 ++++++ queue-4.14/series | 12 ++ ...y-fix-redundant-initialization-warni.patch | 63 +++++++++ 13 files changed, 699 insertions(+) create mode 100644 queue-4.14/arm-dts-rockchip-fix-phy-nodename-for-rk3228-evb.patch create mode 100644 queue-4.14/arm-dts-rockchip-fix-pinctrl-sub-nodename-for-spi-in.patch create mode 100644 queue-4.14/arm64-dts-rockchip-swap-interrupts-interrupt-names-r.patch create mode 100644 queue-4.14/cachefiles-fix-race-between-read_waiter-and-read_cop.patch create mode 100644 queue-4.14/cifs-fix-null-pointer-check-in-cifs_read.patch create mode 100644 queue-4.14/gfs2-don-t-call-quota_unhold-if-quotas-are-not-locke.patch create mode 100644 queue-4.14/gfs2-move-privileged-user-check-to-gfs2_quota_lock_c.patch create mode 100644 queue-4.14/gpio-tegra-mask-gpio-irqs-during-irq-shutdown.patch create mode 100644 queue-4.14/net-freescale-select-config_fixed_phy-where-needed.patch create mode 100644 queue-4.14/net-microchip-encx24j600-add-missed-kthread_stop.patch create mode 100644 queue-4.14/samples-bpf-fix-build-error.patch create mode 100644 queue-4.14/usb-gadget-legacy-fix-redundant-initialization-warni.patch diff --git a/queue-4.14/arm-dts-rockchip-fix-phy-nodename-for-rk3228-evb.patch b/queue-4.14/arm-dts-rockchip-fix-phy-nodename-for-rk3228-evb.patch new file mode 100644 index 00000000000..5f906f3e520 --- /dev/null +++ b/queue-4.14/arm-dts-rockchip-fix-phy-nodename-for-rk3228-evb.patch @@ -0,0 +1,49 @@ +From 731c2967517c5aa6e8c24f84dc84a4a207667179 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 16 Apr 2020 19:03:20 +0200 +Subject: ARM: dts: rockchip: fix phy nodename for rk3228-evb + +From: Johan Jonker + +[ Upstream commit 287e0d538fcec2f6e8eb1e565bf0749f3b90186d ] + +A test with the command below gives for example this error: + +arch/arm/boot/dts/rk3228-evb.dt.yaml: phy@0: +'#phy-cells' is a required property + +The phy nodename is normally used by a phy-handle. +This node is however compatible with +"ethernet-phy-id1234.d400", "ethernet-phy-ieee802.3-c22" +which is just been added to 'ethernet-phy.yaml'. +So change nodename to 'ethernet-phy' for which '#phy-cells' +is not a required property + +make ARCH=arm dtbs_check +DT_SCHEMA_FILES=~/.local/lib/python3.5/site-packages/dtschema/schemas/ +phy/phy-provider.yaml + +Signed-off-by: Johan Jonker +Signed-off-by: Heiko Stuebner +Link: https://lore.kernel.org/r/20200416170321.4216-1-jbx6244@gmail.com +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/rk3228-evb.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/rk3228-evb.dts b/arch/arm/boot/dts/rk3228-evb.dts +index 1be9daacc4f9..b69c842d8306 100644 +--- a/arch/arm/boot/dts/rk3228-evb.dts ++++ b/arch/arm/boot/dts/rk3228-evb.dts +@@ -84,7 +84,7 @@ + #address-cells = <1>; + #size-cells = <0>; + +- phy: phy@0 { ++ phy: ethernet-phy@0 { + compatible = "ethernet-phy-id1234.d400", "ethernet-phy-ieee802.3-c22"; + reg = <0>; + clocks = <&cru SCLK_MAC_PHY>; +-- +2.25.1 + diff --git a/queue-4.14/arm-dts-rockchip-fix-pinctrl-sub-nodename-for-spi-in.patch b/queue-4.14/arm-dts-rockchip-fix-pinctrl-sub-nodename-for-spi-in.patch new file mode 100644 index 00000000000..d070ccc60d6 --- /dev/null +++ b/queue-4.14/arm-dts-rockchip-fix-pinctrl-sub-nodename-for-spi-in.patch @@ -0,0 +1,61 @@ +From 6094b28cce2f72829730618b23ad29b1218c1adc Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 24 Apr 2020 14:39:23 +0200 +Subject: ARM: dts: rockchip: fix pinctrl sub nodename for spi in rk322x.dtsi + +From: Johan Jonker + +[ Upstream commit 855bdca1781c79eb661f89c8944c4a719ce720e8 ] + +A test with the command below gives these errors: + +arch/arm/boot/dts/rk3229-evb.dt.yaml: spi-0: +'#address-cells' is a required property +arch/arm/boot/dts/rk3229-evb.dt.yaml: spi-1: +'#address-cells' is a required property +arch/arm/boot/dts/rk3229-xms6.dt.yaml: spi-0: +'#address-cells' is a required property +arch/arm/boot/dts/rk3229-xms6.dt.yaml: spi-1: +'#address-cells' is a required property + +The $nodename pattern for spi nodes is +"^spi(@.*|-[0-9a-f])*$". To prevent warnings rename +'spi-0' and 'spi-1' pinctrl sub nodenames to +'spi0' and 'spi1' in 'rk322x.dtsi'. + +make ARCH=arm dtbs_check +DT_SCHEMA_FILES=Documentation/devicetree/bindings/spi/spi-controller.yaml + +Signed-off-by: Johan Jonker +Link: https://lore.kernel.org/r/20200424123923.8192-1-jbx6244@gmail.com +Signed-off-by: Heiko Stuebner +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/rk322x.dtsi | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/boot/dts/rk322x.dtsi b/arch/arm/boot/dts/rk322x.dtsi +index f59f7cc62be6..0c60dbc4b46a 100644 +--- a/arch/arm/boot/dts/rk322x.dtsi ++++ b/arch/arm/boot/dts/rk322x.dtsi +@@ -950,7 +950,7 @@ + }; + }; + +- spi-0 { ++ spi0 { + spi0_clk: spi0-clk { + rockchip,pins = <0 9 RK_FUNC_2 &pcfg_pull_up>; + }; +@@ -968,7 +968,7 @@ + }; + }; + +- spi-1 { ++ spi1 { + spi1_clk: spi1-clk { + rockchip,pins = <0 23 RK_FUNC_2 &pcfg_pull_up>; + }; +-- +2.25.1 + diff --git a/queue-4.14/arm64-dts-rockchip-swap-interrupts-interrupt-names-r.patch b/queue-4.14/arm64-dts-rockchip-swap-interrupts-interrupt-names-r.patch new file mode 100644 index 00000000000..68727aa1574 --- /dev/null +++ b/queue-4.14/arm64-dts-rockchip-swap-interrupts-interrupt-names-r.patch @@ -0,0 +1,49 @@ +From 2b309c44ef587e6021c30d7f79cbd7a06b9227c8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 25 Apr 2020 16:38:37 +0200 +Subject: arm64: dts: rockchip: swap interrupts interrupt-names rk3399 gpu node + +From: Johan Jonker + +[ Upstream commit c604fd810bda667bdc20b2c041917baa7803e0fb ] + +Dts files with Rockchip rk3399 'gpu' nodes were manually verified. +In order to automate this process arm,mali-midgard.txt +has been converted to yaml. In the new setup dtbs_check with +arm,mali-midgard.yaml expects interrupts and interrupt-names values +in the same order. Fix this for rk3399. + +make ARCH=arm64 dtbs_check +DT_SCHEMA_FILES=Documentation/devicetree/bindings/gpu/ +arm,mali-midgard.yaml + +Signed-off-by: Johan Jonker +Link: https://lore.kernel.org/r/20200425143837.18706-1-jbx6244@gmail.com +Signed-off-by: Heiko Stuebner +Signed-off-by: Sasha Levin +--- + arch/arm64/boot/dts/rockchip/rk3399.dtsi | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi +index ff8df7fd44a7..b63d9653ff55 100644 +--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi ++++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi +@@ -1691,10 +1691,10 @@ + gpu: gpu@ff9a0000 { + compatible = "rockchip,rk3399-mali", "arm,mali-t860"; + reg = <0x0 0xff9a0000 0x0 0x10000>; +- interrupts = , +- , +- ; +- interrupt-names = "gpu", "job", "mmu"; ++ interrupts = , ++ , ++ ; ++ interrupt-names = "job", "mmu", "gpu"; + clocks = <&cru ACLK_GPU>; + power-domains = <&power RK3399_PD_GPU>; + status = "disabled"; +-- +2.25.1 + diff --git a/queue-4.14/cachefiles-fix-race-between-read_waiter-and-read_cop.patch b/queue-4.14/cachefiles-fix-race-between-read_waiter-and-read_cop.patch new file mode 100644 index 00000000000..d9a0bbf9ad2 --- /dev/null +++ b/queue-4.14/cachefiles-fix-race-between-read_waiter-and-read_cop.patch @@ -0,0 +1,126 @@ +From cc5836561572c52ece95cddd1dfac92746c8d52d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 7 May 2020 08:50:22 -0400 +Subject: cachefiles: Fix race between read_waiter and read_copier involving + op->to_do + +From: Lei Xue + +[ Upstream commit 7bb0c5338436dae953622470d52689265867f032 ] + +There is a potential race in fscache operation enqueuing for reading and +copying multiple pages from cachefiles to netfs. The problem can be seen +easily on a heavy loaded system (for example many processes reading files +continually on an NFS share covered by fscache triggered this problem within +a few minutes). + +The race is due to cachefiles_read_waiter() adding the op to the monitor +to_do list and then then drop the object->work_lock spinlock before +completing fscache_enqueue_operation(). Once the lock is dropped, +cachefiles_read_copier() grabs the op, completes processing it, and +makes it through fscache_retrieval_complete() which sets the op->state to +the final state of FSCACHE_OP_ST_COMPLETE(4). When cachefiles_read_waiter() +finally gets through the remainder of fscache_enqueue_operation() +it sees the invalid state, and hits the ASSERTCMP and the following +oops is seen: +[ 2259.612361] FS-Cache: +[ 2259.614785] FS-Cache: Assertion failed +[ 2259.618639] FS-Cache: 4 == 5 is false +[ 2259.622456] ------------[ cut here ]------------ +[ 2259.627190] kernel BUG at fs/fscache/operation.c:70! +... +[ 2259.791675] RIP: 0010:[] [] fscache_enqueue_operation+0xff/0x170 [fscache] +[ 2259.802059] RSP: 0000:ffffa0263d543be0 EFLAGS: 00010046 +[ 2259.807521] RAX: 0000000000000019 RBX: ffffa01a4d390480 RCX: 0000000000000006 +[ 2259.814847] RDX: 0000000000000000 RSI: 0000000000000046 RDI: ffffa0263d553890 +[ 2259.822176] RBP: ffffa0263d543be8 R08: 0000000000000000 R09: ffffa0263c2d8708 +[ 2259.829502] R10: 0000000000001e7f R11: 0000000000000000 R12: ffffa01a4d390480 +[ 2259.844483] R13: ffff9fa9546c5920 R14: ffffa0263d543c80 R15: ffffa0293ff9bf10 +[ 2259.859554] FS: 00007f4b6efbd700(0000) GS:ffffa0263d540000(0000) knlGS:0000000000000000 +[ 2259.875571] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +[ 2259.889117] CR2: 00007f49e1624ff0 CR3: 0000012b38b38000 CR4: 00000000007607e0 +[ 2259.904015] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +[ 2259.918764] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +[ 2259.933449] PKRU: 55555554 +[ 2259.943654] Call Trace: +[ 2259.953592] +[ 2259.955577] [] cachefiles_read_waiter+0x92/0xf0 [cachefiles] +[ 2259.978039] [] __wake_up_common+0x82/0x120 +[ 2259.991392] [] __wake_up_common_lock+0x83/0xc0 +[ 2260.004930] [] ? task_rq_unlock+0x20/0x20 +[ 2260.017863] [] __wake_up+0x13/0x20 +[ 2260.030230] [] __wake_up_bit+0x50/0x70 +[ 2260.042535] [] unlock_page+0x2b/0x30 +[ 2260.054495] [] page_endio+0x29/0x90 +[ 2260.066184] [] mpage_end_io+0x51/0x80 + +CPU1 +cachefiles_read_waiter() + 20 static int cachefiles_read_waiter(wait_queue_entry_t *wait, unsigned mode, + 21 int sync, void *_key) + 22 { +... + 61 spin_lock(&object->work_lock); + 62 list_add_tail(&monitor->op_link, &op->to_do); + 63 spin_unlock(&object->work_lock); + + 64 + 65 fscache_enqueue_retrieval(op); +182 static inline void fscache_enqueue_retrieval(struct fscache_retrieval *op) +183 { +184 fscache_enqueue_operation(&op->op); +185 } + 58 void fscache_enqueue_operation(struct fscache_operation *op) + 59 { + 60 struct fscache_cookie *cookie = op->object->cookie; + 61 + 62 _enter("{OBJ%x OP%x,%u}", + 63 op->object->debug_id, op->debug_id, atomic_read(&op->usage)); + 64 + 65 ASSERT(list_empty(&op->pend_link)); + 66 ASSERT(op->processor != NULL); + 67 ASSERT(fscache_object_is_available(op->object)); + 68 ASSERTCMP(atomic_read(&op->usage), >, 0); + + +CPU2 +cachefiles_read_copier() +168 while (!list_empty(&op->to_do)) { +... +202 fscache_end_io(op, monitor->netfs_page, error); +203 put_page(monitor->netfs_page); +204 fscache_retrieval_complete(op, 1); + +CPU1 + 58 void fscache_enqueue_operation(struct fscache_operation *op) + 59 { +... + 69 ASSERTIFCMP(op->state != FSCACHE_OP_ST_IN_PROGRESS, + 70 op->state, ==, FSCACHE_OP_ST_CANCELLED); + +Signed-off-by: Lei Xue +Signed-off-by: Dave Wysochanski +Signed-off-by: David Howells +Signed-off-by: Sasha Levin +--- + fs/cachefiles/rdwr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/cachefiles/rdwr.c b/fs/cachefiles/rdwr.c +index 5e9176ec0d3a..c073a0f680fd 100644 +--- a/fs/cachefiles/rdwr.c ++++ b/fs/cachefiles/rdwr.c +@@ -64,9 +64,9 @@ static int cachefiles_read_waiter(wait_queue_entry_t *wait, unsigned mode, + object = container_of(op->op.object, struct cachefiles_object, fscache); + spin_lock(&object->work_lock); + list_add_tail(&monitor->op_link, &op->to_do); ++ fscache_enqueue_retrieval(op); + spin_unlock(&object->work_lock); + +- fscache_enqueue_retrieval(op); + fscache_put_retrieval(op); + return 0; + } +-- +2.25.1 + diff --git a/queue-4.14/cifs-fix-null-pointer-check-in-cifs_read.patch b/queue-4.14/cifs-fix-null-pointer-check-in-cifs_read.patch new file mode 100644 index 00000000000..448a3632c34 --- /dev/null +++ b/queue-4.14/cifs-fix-null-pointer-check-in-cifs_read.patch @@ -0,0 +1,36 @@ +From cc4d9f227e3768981a238ef37c944b9f1b443be7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 13 May 2020 10:27:16 -0500 +Subject: cifs: Fix null pointer check in cifs_read + +From: Steve French + +[ Upstream commit 9bd21d4b1a767c3abebec203342f3820dcb84662 ] + +Coverity scan noted a redundant null check + +Coverity-id: 728517 +Reported-by: Coverity +Signed-off-by: Steve French +Reviewed-by: Shyam Prasad N +Signed-off-by: Sasha Levin +--- + fs/cifs/file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/cifs/file.c b/fs/cifs/file.c +index 662977b8d6ae..72e7cbfb325a 100644 +--- a/fs/cifs/file.c ++++ b/fs/cifs/file.c +@@ -3496,7 +3496,7 @@ cifs_read(struct file *file, char *read_data, size_t read_size, loff_t *offset) + * than it negotiated since it will refuse the read + * then. + */ +- if ((tcon->ses) && !(tcon->ses->capabilities & ++ if (!(tcon->ses->capabilities & + tcon->ses->server->vals->cap_large_files)) { + current_read_size = min_t(uint, + current_read_size, CIFSMaxBufSize); +-- +2.25.1 + diff --git a/queue-4.14/gfs2-don-t-call-quota_unhold-if-quotas-are-not-locke.patch b/queue-4.14/gfs2-don-t-call-quota_unhold-if-quotas-are-not-locke.patch new file mode 100644 index 00000000000..d7cc2538a61 --- /dev/null +++ b/queue-4.14/gfs2-don-t-call-quota_unhold-if-quotas-are-not-locke.patch @@ -0,0 +1,46 @@ +From 4f58b38db0717747cfedde54215fd2cc6aed4af4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 5 May 2020 11:55:03 -0500 +Subject: gfs2: don't call quota_unhold if quotas are not locked + +From: Bob Peterson + +[ Upstream commit c9cb9e381985bbbe8acd2695bbe6bd24bf06b81c ] + +Before this patch, function gfs2_quota_unlock checked if quotas are +turned off, and if so, it branched to label out, which called +gfs2_quota_unhold. With the new system of gfs2_qa_get and put, we +no longer want to call gfs2_quota_unhold or we won't balance our +gets and puts. + +Signed-off-by: Bob Peterson +Signed-off-by: Andreas Gruenbacher +Signed-off-by: Sasha Levin +--- + fs/gfs2/quota.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c +index a833e2e07167..d34a668a432f 100644 +--- a/fs/gfs2/quota.c ++++ b/fs/gfs2/quota.c +@@ -1112,7 +1112,7 @@ void gfs2_quota_unlock(struct gfs2_inode *ip) + int found; + + if (!test_and_clear_bit(GIF_QD_LOCKED, &ip->i_flags)) +- goto out; ++ return; + + for (x = 0; x < ip->i_qadata->qa_qd_num; x++) { + struct gfs2_quota_data *qd; +@@ -1149,7 +1149,6 @@ void gfs2_quota_unlock(struct gfs2_inode *ip) + qd_unlock(qda[x]); + } + +-out: + gfs2_quota_unhold(ip); + } + +-- +2.25.1 + diff --git a/queue-4.14/gfs2-move-privileged-user-check-to-gfs2_quota_lock_c.patch b/queue-4.14/gfs2-move-privileged-user-check-to-gfs2_quota_lock_c.patch new file mode 100644 index 00000000000..a2894f33141 --- /dev/null +++ b/queue-4.14/gfs2-move-privileged-user-check-to-gfs2_quota_lock_c.patch @@ -0,0 +1,57 @@ +From ebac9224c1056033ae9b9d113d821d8938b66ef3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 5 May 2020 11:53:21 -0500 +Subject: gfs2: move privileged user check to gfs2_quota_lock_check + +From: Bob Peterson + +[ Upstream commit 4ed0c30811cb4d30ef89850b787a53a84d5d2bcb ] + +Before this patch, function gfs2_quota_lock checked if it was called +from a privileged user, and if so, it bypassed the quota check: +superuser can operate outside the quotas. +That's the wrong place for the check because the lock/unlock functions +are separate from the lock_check function, and you can do lock and +unlock without actually checking the quotas. + +This patch moves the check to gfs2_quota_lock_check. + +Signed-off-by: Bob Peterson +Signed-off-by: Andreas Gruenbacher +Signed-off-by: Sasha Levin +--- + fs/gfs2/quota.c | 3 +-- + fs/gfs2/quota.h | 3 ++- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c +index e700fb162664..a833e2e07167 100644 +--- a/fs/gfs2/quota.c ++++ b/fs/gfs2/quota.c +@@ -1039,8 +1039,7 @@ int gfs2_quota_lock(struct gfs2_inode *ip, kuid_t uid, kgid_t gid) + u32 x; + int error = 0; + +- if (capable(CAP_SYS_RESOURCE) || +- sdp->sd_args.ar_quota != GFS2_QUOTA_ON) ++ if (sdp->sd_args.ar_quota != GFS2_QUOTA_ON) + return 0; + + error = gfs2_quota_hold(ip, uid, gid); +diff --git a/fs/gfs2/quota.h b/fs/gfs2/quota.h +index 836f29480be6..e3a6e2404d11 100644 +--- a/fs/gfs2/quota.h ++++ b/fs/gfs2/quota.h +@@ -47,7 +47,8 @@ static inline int gfs2_quota_lock_check(struct gfs2_inode *ip, + int ret; + + ap->allowed = UINT_MAX; /* Assume we are permitted a whole lot */ +- if (sdp->sd_args.ar_quota == GFS2_QUOTA_OFF) ++ if (capable(CAP_SYS_RESOURCE) || ++ sdp->sd_args.ar_quota == GFS2_QUOTA_OFF) + return 0; + ret = gfs2_quota_lock(ip, NO_UID_QUOTA_CHANGE, NO_GID_QUOTA_CHANGE); + if (ret) +-- +2.25.1 + diff --git a/queue-4.14/gpio-tegra-mask-gpio-irqs-during-irq-shutdown.patch b/queue-4.14/gpio-tegra-mask-gpio-irqs-during-irq-shutdown.patch new file mode 100644 index 00000000000..d818a6f039d --- /dev/null +++ b/queue-4.14/gpio-tegra-mask-gpio-irqs-during-irq-shutdown.patch @@ -0,0 +1,39 @@ +From 3a3404daa713762bdb30ad0db64dd5f1b1d97d87 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 27 Apr 2020 17:26:05 -0600 +Subject: gpio: tegra: mask GPIO IRQs during IRQ shutdown + +From: Stephen Warren + +[ Upstream commit 0cf253eed5d2bdf7bb3152457b38f39b012955f7 ] + +The driver currently leaves GPIO IRQs unmasked even when the GPIO IRQ +client has released the GPIO IRQ. This allows the HW to raise IRQs, and +SW to process them, after shutdown. Fix this by masking the IRQ when it's +shut down. This is usually taken care of by the irqchip core, but since +this driver has a custom irq_shutdown implementation, it must do this +explicitly itself. + +Signed-off-by: Stephen Warren +Link: https://lore.kernel.org/r/20200427232605.11608-1-swarren@wwwdotorg.org +Signed-off-by: Linus Walleij +Signed-off-by: Sasha Levin +--- + drivers/gpio/gpio-tegra.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c +index 1eb857e2f62f..dd801f5d5253 100644 +--- a/drivers/gpio/gpio-tegra.c ++++ b/drivers/gpio/gpio-tegra.c +@@ -356,6 +356,7 @@ static void tegra_gpio_irq_shutdown(struct irq_data *d) + struct tegra_gpio_info *tgi = bank->tgi; + unsigned int gpio = d->hwirq; + ++ tegra_gpio_irq_mask(d); + gpiochip_unlock_as_irq(&tgi->gc, gpio); + } + +-- +2.25.1 + diff --git a/queue-4.14/net-freescale-select-config_fixed_phy-where-needed.patch b/queue-4.14/net-freescale-select-config_fixed_phy-where-needed.patch new file mode 100644 index 00000000000..e24b7d4d27d --- /dev/null +++ b/queue-4.14/net-freescale-select-config_fixed_phy-where-needed.patch @@ -0,0 +1,66 @@ +From 93a8a3e858e6fddcddf6ec654c8f439f67d254ca Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 9 May 2020 14:04:52 +0200 +Subject: net: freescale: select CONFIG_FIXED_PHY where needed + +From: Arnd Bergmann + +[ Upstream commit 99352c79af3e5f2e4724abf37fa5a2a3299b1c81 ] + +I ran into a randconfig build failure with CONFIG_FIXED_PHY=m +and CONFIG_GIANFAR=y: + +x86_64-linux-ld: drivers/net/ethernet/freescale/gianfar.o:(.rodata+0x418): undefined reference to `fixed_phy_change_carrier' + +It seems the same thing can happen with dpaa and ucc_geth, so change +all three to do an explicit 'select FIXED_PHY'. + +The fixed-phy driver actually has an alternative stub function that +theoretically allows building network drivers when fixed-phy is +disabled, but I don't see how that would help here, as the drivers +presumably would not work then. + +Signed-off-by: Arnd Bergmann +Acked-by: Florian Fainelli +Signed-off-by: Jakub Kicinski +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/freescale/Kconfig | 2 ++ + drivers/net/ethernet/freescale/dpaa/Kconfig | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/drivers/net/ethernet/freescale/Kconfig b/drivers/net/ethernet/freescale/Kconfig +index 6e490fd2345d..71f0640200bc 100644 +--- a/drivers/net/ethernet/freescale/Kconfig ++++ b/drivers/net/ethernet/freescale/Kconfig +@@ -76,6 +76,7 @@ config UCC_GETH + depends on QUICC_ENGINE + select FSL_PQ_MDIO + select PHYLIB ++ select FIXED_PHY + ---help--- + This driver supports the Gigabit Ethernet mode of the QUICC Engine, + which is available on some Freescale SOCs. +@@ -89,6 +90,7 @@ config GIANFAR + depends on HAS_DMA + select FSL_PQ_MDIO + select PHYLIB ++ select FIXED_PHY + select CRC32 + ---help--- + This driver supports the Gigabit TSEC on the MPC83xx, MPC85xx, +diff --git a/drivers/net/ethernet/freescale/dpaa/Kconfig b/drivers/net/ethernet/freescale/dpaa/Kconfig +index a654736237a9..8fec41e57178 100644 +--- a/drivers/net/ethernet/freescale/dpaa/Kconfig ++++ b/drivers/net/ethernet/freescale/dpaa/Kconfig +@@ -2,6 +2,7 @@ menuconfig FSL_DPAA_ETH + tristate "DPAA Ethernet" + depends on FSL_DPAA && FSL_FMAN + select PHYLIB ++ select FIXED_PHY + select FSL_FMAN_MAC + ---help--- + Data Path Acceleration Architecture Ethernet driver, +-- +2.25.1 + diff --git a/queue-4.14/net-microchip-encx24j600-add-missed-kthread_stop.patch b/queue-4.14/net-microchip-encx24j600-add-missed-kthread_stop.patch new file mode 100644 index 00000000000..d0b8be8a028 --- /dev/null +++ b/queue-4.14/net-microchip-encx24j600-add-missed-kthread_stop.patch @@ -0,0 +1,53 @@ +From bdcf1b56292a430bc5a8bd10b0e26696801b70dc Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 7 May 2020 23:13:20 +0800 +Subject: net: microchip: encx24j600: add missed kthread_stop + +From: Chuhong Yuan + +[ Upstream commit ff8ce319e9c25e920d994cc35236f0bb32dfc8f3 ] + +This driver calls kthread_run() in probe, but forgets to call +kthread_stop() in probe failure and remove. +Add the missed kthread_stop() to fix it. + +Signed-off-by: Chuhong Yuan +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/microchip/encx24j600.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/microchip/encx24j600.c b/drivers/net/ethernet/microchip/encx24j600.c +index f831238d9793..84b6ad76f5bc 100644 +--- a/drivers/net/ethernet/microchip/encx24j600.c ++++ b/drivers/net/ethernet/microchip/encx24j600.c +@@ -1075,7 +1075,7 @@ static int encx24j600_spi_probe(struct spi_device *spi) + if (unlikely(ret)) { + netif_err(priv, probe, ndev, "Error %d initializing card encx24j600 card\n", + ret); +- goto out_free; ++ goto out_stop; + } + + eidled = encx24j600_read_reg(priv, EIDLED); +@@ -1093,6 +1093,8 @@ static int encx24j600_spi_probe(struct spi_device *spi) + + out_unregister: + unregister_netdev(priv->ndev); ++out_stop: ++ kthread_stop(priv->kworker_task); + out_free: + free_netdev(ndev); + +@@ -1105,6 +1107,7 @@ static int encx24j600_spi_remove(struct spi_device *spi) + struct encx24j600_priv *priv = dev_get_drvdata(&spi->dev); + + unregister_netdev(priv->ndev); ++ kthread_stop(priv->kworker_task); + + free_netdev(priv->ndev); + +-- +2.25.1 + diff --git a/queue-4.14/samples-bpf-fix-build-error.patch b/queue-4.14/samples-bpf-fix-build-error.patch new file mode 100644 index 00000000000..24b908cb2d8 --- /dev/null +++ b/queue-4.14/samples-bpf-fix-build-error.patch @@ -0,0 +1,42 @@ +From 2d01f001659c8abf0ec974a1de6e47d3c016dc05 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 11 May 2020 13:32:34 +0200 +Subject: samples: bpf: Fix build error + +From: Matteo Croce + +[ Upstream commit 23ad04669f81f958e9a4121b0266228d2eb3c357 ] + +GCC 10 is very strict about symbol clash, and lwt_len_hist_user contains +a symbol which clashes with libbpf: + +/usr/bin/ld: samples/bpf/lwt_len_hist_user.o:(.bss+0x0): multiple definition of `bpf_log_buf'; samples/bpf/bpf_load.o:(.bss+0x8c0): first defined here +collect2: error: ld returned 1 exit status + +bpf_log_buf here seems to be a leftover, so removing it. + +Signed-off-by: Matteo Croce +Signed-off-by: Alexei Starovoitov +Acked-by: Yonghong Song +Link: https://lore.kernel.org/bpf/20200511113234.80722-1-mcroce@redhat.com +Signed-off-by: Sasha Levin +--- + samples/bpf/lwt_len_hist_user.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/samples/bpf/lwt_len_hist_user.c b/samples/bpf/lwt_len_hist_user.c +index 7fcb94c09112..965108527a4f 100644 +--- a/samples/bpf/lwt_len_hist_user.c ++++ b/samples/bpf/lwt_len_hist_user.c +@@ -15,8 +15,6 @@ + #define MAX_INDEX 64 + #define MAX_STARS 38 + +-char bpf_log_buf[BPF_LOG_BUF_SIZE]; +- + static void stars(char *str, long val, long max, int width) + { + int i; +-- +2.25.1 + diff --git a/queue-4.14/series b/queue-4.14/series index 7b54ed5a204..a06f61ba096 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -9,3 +9,15 @@ net-mlx5e-update-netdev-txq-on-completions-during-closure.patch net-qrtr-fix-passing-invalid-reference-to-qrtr_local_enqueue.patch net-sun-fix-missing-release-regions-in-cas_init_one.patch net-mlx4_core-fix-a-memory-leak-bug.patch +arm-dts-rockchip-fix-phy-nodename-for-rk3228-evb.patch +arm64-dts-rockchip-swap-interrupts-interrupt-names-r.patch +arm-dts-rockchip-fix-pinctrl-sub-nodename-for-spi-in.patch +gpio-tegra-mask-gpio-irqs-during-irq-shutdown.patch +net-microchip-encx24j600-add-missed-kthread_stop.patch +gfs2-move-privileged-user-check-to-gfs2_quota_lock_c.patch +gfs2-don-t-call-quota_unhold-if-quotas-are-not-locke.patch +cachefiles-fix-race-between-read_waiter-and-read_cop.patch +usb-gadget-legacy-fix-redundant-initialization-warni.patch +net-freescale-select-config_fixed_phy-where-needed.patch +cifs-fix-null-pointer-check-in-cifs_read.patch +samples-bpf-fix-build-error.patch diff --git a/queue-4.14/usb-gadget-legacy-fix-redundant-initialization-warni.patch b/queue-4.14/usb-gadget-legacy-fix-redundant-initialization-warni.patch new file mode 100644 index 00000000000..5fba771eec2 --- /dev/null +++ b/queue-4.14/usb-gadget-legacy-fix-redundant-initialization-warni.patch @@ -0,0 +1,63 @@ +From 8d191a403650cd416971dea840da47df6bc9c741 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 3 Apr 2020 22:16:51 +0900 +Subject: usb: gadget: legacy: fix redundant initialization warnings + +From: Masahiro Yamada + +[ Upstream commit d13cce757954fa663c69845611957396843ed87a ] + +Fix the following cppcheck warnings: + +drivers/usb/gadget/legacy/inode.c:1364:8: style: Redundant initialization for 'value'. The initialized value is overwritten$ + value = -EOPNOTSUPP; + ^ +drivers/usb/gadget/legacy/inode.c:1331:15: note: value is initialized + int value = -EOPNOTSUPP; + ^ +drivers/usb/gadget/legacy/inode.c:1364:8: note: value is overwritten + value = -EOPNOTSUPP; + ^ +drivers/usb/gadget/legacy/inode.c:1817:8: style: Redundant initialization for 'value'. The initialized value is overwritten$ + value = -EINVAL; + ^ +drivers/usb/gadget/legacy/inode.c:1787:18: note: value is initialized + ssize_t value = len, length = len; + ^ +drivers/usb/gadget/legacy/inode.c:1817:8: note: value is overwritten + value = -EINVAL; + ^ +Acked-by: Alan Stern +Reported-by: kbuild test robot +Signed-off-by: Masahiro Yamada +Signed-off-by: Felipe Balbi + +Signed-off-by: Sasha Levin +--- + drivers/usb/gadget/legacy/inode.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c +index 5c28bee327e1..e431a8bc3a9d 100644 +--- a/drivers/usb/gadget/legacy/inode.c ++++ b/drivers/usb/gadget/legacy/inode.c +@@ -1364,7 +1364,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) + + req->buf = dev->rbuf; + req->context = NULL; +- value = -EOPNOTSUPP; + switch (ctrl->bRequest) { + + case USB_REQ_GET_DESCRIPTOR: +@@ -1788,7 +1787,7 @@ static ssize_t + dev_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) + { + struct dev_data *dev = fd->private_data; +- ssize_t value = len, length = len; ++ ssize_t value, length = len; + unsigned total; + u32 tag; + char *kbuf; +-- +2.25.1 + -- 2.47.3