From b2afb4b480884137fe7ea3ae2719e14861b52b9c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 6 May 2023 15:51:53 +0900 Subject: [PATCH] 5.15-stable patches added patches: i2c-omap-fix-standard-mode-false-ack-readings.patch igc-read-before-write-to-srrctl-register.patch iommu-amd-fix-guest-virtual-apic-table-root-pointer-configuration-in-irte.patch ksmbd-call-rcu_barrier-in-ksmbd_server_exit.patch ksmbd-fix-memleak-in-session-setup.patch ksmbd-fix-null-pointer-dereference-in-smb2_get_info_filesystem.patch riscv-mm-remove-redundant-parameter-of-create_fdt_early_page_table.patch tracing-fix-permissions-for-the-buffer_percent-file.patch --- ...fix-standard-mode-false-ack-readings.patch | 37 ++++++++ ...read-before-write-to-srrctl-register.patch | 89 +++++++++++++++++++ ...e-root-pointer-configuration-in-irte.patch | 50 +++++++++++ ...all-rcu_barrier-in-ksmbd_server_exit.patch | 34 +++++++ .../ksmbd-fix-memleak-in-session-setup.patch | 37 ++++++++ ...eference-in-smb2_get_info_filesystem.patch | 33 +++++++ ...meter-of-create_fdt_early_page_table.patch | 47 ++++++++++ queue-5.15/series | 8 ++ ...missions-for-the-buffer_percent-file.patch | 37 ++++++++ ...-fix-null-ptr-deref-write-in-bdi_spl.patch | 17 ++-- 10 files changed, 377 insertions(+), 12 deletions(-) create mode 100644 queue-5.15/i2c-omap-fix-standard-mode-false-ack-readings.patch create mode 100644 queue-5.15/igc-read-before-write-to-srrctl-register.patch create mode 100644 queue-5.15/iommu-amd-fix-guest-virtual-apic-table-root-pointer-configuration-in-irte.patch create mode 100644 queue-5.15/ksmbd-call-rcu_barrier-in-ksmbd_server_exit.patch create mode 100644 queue-5.15/ksmbd-fix-memleak-in-session-setup.patch create mode 100644 queue-5.15/ksmbd-fix-null-pointer-dereference-in-smb2_get_info_filesystem.patch create mode 100644 queue-5.15/riscv-mm-remove-redundant-parameter-of-create_fdt_early_page_table.patch create mode 100644 queue-5.15/tracing-fix-permissions-for-the-buffer_percent-file.patch diff --git a/queue-5.15/i2c-omap-fix-standard-mode-false-ack-readings.patch b/queue-5.15/i2c-omap-fix-standard-mode-false-ack-readings.patch new file mode 100644 index 00000000000..fb8ac377411 --- /dev/null +++ b/queue-5.15/i2c-omap-fix-standard-mode-false-ack-readings.patch @@ -0,0 +1,37 @@ +From c770657bd2611b077ec1e7b1fe6aa92f249399bd Mon Sep 17 00:00:00 2001 +From: Reid Tonking +Date: Wed, 26 Apr 2023 14:49:56 -0500 +Subject: i2c: omap: Fix standard mode false ACK readings + +From: Reid Tonking + +commit c770657bd2611b077ec1e7b1fe6aa92f249399bd upstream. + +Using standard mode, rare false ACK responses were appearing with +i2cdetect tool. This was happening due to NACK interrupt triggering +ISR thread before register access interrupt was ready. Removing the +NACK interrupt's ability to trigger ISR thread lets register access +ready interrupt do this instead. + +Cc: # v3.7+ +Fixes: 3b2f8f82dad7 ("i2c: omap: switch to threaded IRQ support") +Signed-off-by: Reid Tonking +Acked-by: Vignesh Raghavendra +Reviewed-by: Tony Lindgren +Signed-off-by: Wolfram Sang +Signed-off-by: Greg Kroah-Hartman +--- + drivers/i2c/busses/i2c-omap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/i2c/busses/i2c-omap.c ++++ b/drivers/i2c/busses/i2c-omap.c +@@ -1058,7 +1058,7 @@ omap_i2c_isr(int irq, void *dev_id) + u16 stat; + + stat = omap_i2c_read_reg(omap, OMAP_I2C_STAT_REG); +- mask = omap_i2c_read_reg(omap, OMAP_I2C_IE_REG); ++ mask = omap_i2c_read_reg(omap, OMAP_I2C_IE_REG) & ~OMAP_I2C_STAT_NACK; + + if (stat & mask) + ret = IRQ_WAKE_THREAD; diff --git a/queue-5.15/igc-read-before-write-to-srrctl-register.patch b/queue-5.15/igc-read-before-write-to-srrctl-register.patch new file mode 100644 index 00000000000..3babe07a881 --- /dev/null +++ b/queue-5.15/igc-read-before-write-to-srrctl-register.patch @@ -0,0 +1,89 @@ +From 3ce29c17dc847bf4245e16aad78a7617afa96297 Mon Sep 17 00:00:00 2001 +From: Song Yoong Siang +Date: Tue, 2 May 2023 08:48:06 -0700 +Subject: igc: read before write to SRRCTL register + +From: Song Yoong Siang + +commit 3ce29c17dc847bf4245e16aad78a7617afa96297 upstream. + +igc_configure_rx_ring() function will be called as part of XDP program +setup. If Rx hardware timestamp is enabled prio to XDP program setup, +this timestamp enablement will be overwritten when buffer size is +written into SRRCTL register. + +Thus, this commit read the register value before write to SRRCTL +register. This commit is tested by using xdp_hw_metadata bpf selftest +tool. The tool enables Rx hardware timestamp and then attach XDP program +to igc driver. It will display hardware timestamp of UDP packet with +port number 9092. Below are detail of test steps and results. + +Command on DUT: + sudo ./xdp_hw_metadata + +Command on Link Partner: + echo -n skb | nc -u -q1 9092 + +Result before this patch: + skb hwtstamp is not found! + +Result after this patch: + found skb hwtstamp = 1677800973.642836757 + +Optionally, read PHC to confirm the values obtained are almost the same: +Command: + sudo ./testptp -d /dev/ptp0 -g +Result: + clock time: 1677800973.913598978 or Fri Mar 3 07:49:33 2023 + +Fixes: fc9df2a0b520 ("igc: Enable RX via AF_XDP zero-copy") +Cc: # 5.14+ +Signed-off-by: Song Yoong Siang +Reviewed-by: Jacob Keller +Reviewed-by: Jesper Dangaard Brouer +Tested-by: Jesper Dangaard Brouer +Tested-by: Naama Meir +Signed-off-by: Tony Nguyen +Reviewed-by: Leon Romanovsky +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/intel/igc/igc_base.h | 11 ++++++++--- + drivers/net/ethernet/intel/igc/igc_main.c | 7 +++++-- + 2 files changed, 13 insertions(+), 5 deletions(-) + +--- a/drivers/net/ethernet/intel/igc/igc_base.h ++++ b/drivers/net/ethernet/intel/igc/igc_base.h +@@ -85,8 +85,13 @@ union igc_adv_rx_desc { + #define IGC_RXDCTL_SWFLUSH 0x04000000 /* Receive Software Flush */ + + /* SRRCTL bit definitions */ +-#define IGC_SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */ +-#define IGC_SRRCTL_BSIZEHDRSIZE_SHIFT 2 /* Shift _left_ */ +-#define IGC_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000 ++#define IGC_SRRCTL_BSIZEPKT_MASK GENMASK(6, 0) ++#define IGC_SRRCTL_BSIZEPKT(x) FIELD_PREP(IGC_SRRCTL_BSIZEPKT_MASK, \ ++ (x) / 1024) /* in 1 KB resolution */ ++#define IGC_SRRCTL_BSIZEHDR_MASK GENMASK(13, 8) ++#define IGC_SRRCTL_BSIZEHDR(x) FIELD_PREP(IGC_SRRCTL_BSIZEHDR_MASK, \ ++ (x) / 64) /* in 64 bytes resolution */ ++#define IGC_SRRCTL_DESCTYPE_MASK GENMASK(27, 25) ++#define IGC_SRRCTL_DESCTYPE_ADV_ONEBUF FIELD_PREP(IGC_SRRCTL_DESCTYPE_MASK, 1) + + #endif /* _IGC_BASE_H */ +--- a/drivers/net/ethernet/intel/igc/igc_main.c ++++ b/drivers/net/ethernet/intel/igc/igc_main.c +@@ -640,8 +640,11 @@ static void igc_configure_rx_ring(struct + else + buf_size = IGC_RXBUFFER_2048; + +- srrctl = IGC_RX_HDR_LEN << IGC_SRRCTL_BSIZEHDRSIZE_SHIFT; +- srrctl |= buf_size >> IGC_SRRCTL_BSIZEPKT_SHIFT; ++ srrctl = rd32(IGC_SRRCTL(reg_idx)); ++ srrctl &= ~(IGC_SRRCTL_BSIZEPKT_MASK | IGC_SRRCTL_BSIZEHDR_MASK | ++ IGC_SRRCTL_DESCTYPE_MASK); ++ srrctl |= IGC_SRRCTL_BSIZEHDR(IGC_RX_HDR_LEN); ++ srrctl |= IGC_SRRCTL_BSIZEPKT(buf_size); + srrctl |= IGC_SRRCTL_DESCTYPE_ADV_ONEBUF; + + wr32(IGC_SRRCTL(reg_idx), srrctl); diff --git a/queue-5.15/iommu-amd-fix-guest-virtual-apic-table-root-pointer-configuration-in-irte.patch b/queue-5.15/iommu-amd-fix-guest-virtual-apic-table-root-pointer-configuration-in-irte.patch new file mode 100644 index 00000000000..3086fa26c27 --- /dev/null +++ b/queue-5.15/iommu-amd-fix-guest-virtual-apic-table-root-pointer-configuration-in-irte.patch @@ -0,0 +1,50 @@ +From ccc62b827775915a9b82db42a29813d04f92df7a Mon Sep 17 00:00:00 2001 +From: Kishon Vijay Abraham I +Date: Wed, 5 Apr 2023 13:03:17 +0000 +Subject: iommu/amd: Fix "Guest Virtual APIC Table Root Pointer" configuration in IRTE + +From: Kishon Vijay Abraham I + +commit ccc62b827775915a9b82db42a29813d04f92df7a upstream. + +commit b9c6ff94e43a ("iommu/amd: Re-factor guest virtual APIC +(de-)activation code") while refactoring guest virtual APIC +activation/de-activation code, stored information for activate/de-activate +in "struct amd_ir_data". It used 32-bit integer data type for storing the +"Guest Virtual APIC Table Root Pointer" (ga_root_ptr), though the +"ga_root_ptr" is actually a 40-bit field in IRTE (Interrupt Remapping +Table Entry). + +This causes interrupts from PCIe devices to not reach the guest in the case +of PCIe passthrough with SME (Secure Memory Encryption) enabled as _SME_ +bit in the "ga_root_ptr" is lost before writing it to the IRTE. + +Fix it by using 64-bit data type for storing the "ga_root_ptr". While at +that also change the data type of "ga_tag" to u32 in order to match +the IOMMU spec. + +Fixes: b9c6ff94e43a ("iommu/amd: Re-factor guest virtual APIC (de-)activation code") +Cc: stable@vger.kernel.org # v5.4+ +Reported-by: Alejandro Jimenez +Reviewed-by: Suravee Suthikulpanit +Signed-off-by: Kishon Vijay Abraham I +Link: https://lore.kernel.org/r/20230405130317.9351-1-kvijayab@amd.com +Signed-off-by: Joerg Roedel +Signed-off-by: Greg Kroah-Hartman +--- + drivers/iommu/amd/amd_iommu_types.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/iommu/amd/amd_iommu_types.h ++++ b/drivers/iommu/amd/amd_iommu_types.h +@@ -918,8 +918,8 @@ struct amd_ir_data { + */ + struct irq_cfg *cfg; + int ga_vector; +- int ga_root_ptr; +- int ga_tag; ++ u64 ga_root_ptr; ++ u32 ga_tag; + }; + + struct amd_irte_ops { diff --git a/queue-5.15/ksmbd-call-rcu_barrier-in-ksmbd_server_exit.patch b/queue-5.15/ksmbd-call-rcu_barrier-in-ksmbd_server_exit.patch new file mode 100644 index 00000000000..3d12b3a71ad --- /dev/null +++ b/queue-5.15/ksmbd-call-rcu_barrier-in-ksmbd_server_exit.patch @@ -0,0 +1,34 @@ +From eb307d09fe15844fdaebeb8cc8c9b9e925430aa5 Mon Sep 17 00:00:00 2001 +From: Namjae Jeon +Date: Wed, 3 May 2023 08:51:51 +0900 +Subject: ksmbd: call rcu_barrier() in ksmbd_server_exit() + +From: Namjae Jeon + +commit eb307d09fe15844fdaebeb8cc8c9b9e925430aa5 upstream. + +racy issue is triggered the bug by racing between closing a connection +and rmmod. In ksmbd, rcu_barrier() is not called at module unload time, +so nothing prevents ksmbd from getting unloaded while it still has RCU +callbacks pending. It leads to trigger unintended execution of kernel +code locally and use to defeat protections such as Kernel Lockdown + +Cc: stable@vger.kernel.org +Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-20477 +Signed-off-by: Namjae Jeon +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman +--- + fs/ksmbd/server.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/ksmbd/server.c ++++ b/fs/ksmbd/server.c +@@ -611,6 +611,7 @@ err_unregister: + static void __exit ksmbd_server_exit(void) + { + ksmbd_server_shutdown(); ++ rcu_barrier(); + ksmbd_release_inode_hash(); + } + diff --git a/queue-5.15/ksmbd-fix-memleak-in-session-setup.patch b/queue-5.15/ksmbd-fix-memleak-in-session-setup.patch new file mode 100644 index 00000000000..7cc322cff42 --- /dev/null +++ b/queue-5.15/ksmbd-fix-memleak-in-session-setup.patch @@ -0,0 +1,37 @@ +From 6d7cb549c2ca20e1f07593f15e936fd54b763028 Mon Sep 17 00:00:00 2001 +From: Namjae Jeon +Date: Wed, 3 May 2023 08:26:45 +0900 +Subject: ksmbd: fix memleak in session setup + +From: Namjae Jeon + +commit 6d7cb549c2ca20e1f07593f15e936fd54b763028 upstream. + +If client send session setup request with unknown NTLMSSP message type, +session that does not included channel can be created. It will cause +session memleak. because ksmbd_sessions_deregister() does not destroy +session if channel is not included. This patch return error response if +client send the request unknown NTLMSSP message type. + +Cc: stable@vger.kernel.org +Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-20593 +Signed-off-by: Namjae Jeon +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman +--- + fs/ksmbd/smb2pdu.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/fs/ksmbd/smb2pdu.c ++++ b/fs/ksmbd/smb2pdu.c +@@ -1786,6 +1786,10 @@ int smb2_sess_setup(struct ksmbd_work *w + } + kfree(sess->Preauth_HashValue); + sess->Preauth_HashValue = NULL; ++ } else { ++ pr_info_ratelimited("Unknown NTLMSSP message type : 0x%x\n", ++ le32_to_cpu(negblob->MessageType)); ++ rc = -EINVAL; + } + } else { + /* TODO: need one more negotiation */ diff --git a/queue-5.15/ksmbd-fix-null-pointer-dereference-in-smb2_get_info_filesystem.patch b/queue-5.15/ksmbd-fix-null-pointer-dereference-in-smb2_get_info_filesystem.patch new file mode 100644 index 00000000000..917dc0b12e8 --- /dev/null +++ b/queue-5.15/ksmbd-fix-null-pointer-dereference-in-smb2_get_info_filesystem.patch @@ -0,0 +1,33 @@ +From 3ac00a2ab69b34189942afa9e862d5170cdcb018 Mon Sep 17 00:00:00 2001 +From: Namjae Jeon +Date: Wed, 3 May 2023 08:38:33 +0900 +Subject: ksmbd: fix NULL pointer dereference in smb2_get_info_filesystem() + +From: Namjae Jeon + +commit 3ac00a2ab69b34189942afa9e862d5170cdcb018 upstream. + +If share is , share->path is NULL and it cause NULL pointer +dereference issue. + +Cc: stable@vger.kernel.org +Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-20479 +Signed-off-by: Namjae Jeon +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman +--- + fs/ksmbd/smb2pdu.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/fs/ksmbd/smb2pdu.c ++++ b/fs/ksmbd/smb2pdu.c +@@ -4879,6 +4879,9 @@ static int smb2_get_info_filesystem(stru + int rc = 0, len; + int fs_infoclass_size = 0; + ++ if (!share->path) ++ return -EIO; ++ + rc = kern_path(share->path, LOOKUP_NO_SYMLINKS, &path); + if (rc) { + pr_err("cannot create vfs path\n"); diff --git a/queue-5.15/riscv-mm-remove-redundant-parameter-of-create_fdt_early_page_table.patch b/queue-5.15/riscv-mm-remove-redundant-parameter-of-create_fdt_early_page_table.patch new file mode 100644 index 00000000000..2cf76868a0c --- /dev/null +++ b/queue-5.15/riscv-mm-remove-redundant-parameter-of-create_fdt_early_page_table.patch @@ -0,0 +1,47 @@ +From e4ef93edd4e0b022529303db1915766ff9de450e Mon Sep 17 00:00:00 2001 +From: Song Shuai +Date: Wed, 26 Apr 2023 18:00:09 +0800 +Subject: riscv: mm: remove redundant parameter of create_fdt_early_page_table + +From: Song Shuai + +commit e4ef93edd4e0b022529303db1915766ff9de450e upstream. + +create_fdt_early_page_table() explicitly uses early_pg_dir for +32-bit fdt mapping and the pgdir parameter is redundant here. +So remove it and its caller. + +Reviewed-by: Alexandre Ghiti +Signed-off-by: Song Shuai +Reviewed-by: Conor Dooley +Fixes: ef69d2559fe9 ("riscv: Move early dtb mapping into the fixmap region") +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20230426100009.685435-1-suagrfillet@gmail.com +Signed-off-by: Palmer Dabbelt +Signed-off-by: Greg Kroah-Hartman +--- + arch/riscv/mm/init.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/arch/riscv/mm/init.c ++++ b/arch/riscv/mm/init.c +@@ -569,8 +569,7 @@ static void __init create_kernel_page_ta + * this means 2 PMD entries whereas for 32-bit kernel, this is only 1 PGDIR + * entry. + */ +-static void __init create_fdt_early_page_table(pgd_t *pgdir, +- uintptr_t fix_fdt_va, ++static void __init create_fdt_early_page_table(uintptr_t fix_fdt_va, + uintptr_t dtb_pa) + { + uintptr_t pa = dtb_pa & ~(PMD_SIZE - 1); +@@ -678,8 +677,7 @@ asmlinkage void __init setup_vm(uintptr_ + create_kernel_page_table(early_pg_dir, true); + + /* Setup early mapping for FDT early scan */ +- create_fdt_early_page_table(early_pg_dir, +- __fix_to_virt(FIX_FDT), dtb_pa); ++ create_fdt_early_page_table(__fix_to_virt(FIX_FDT), dtb_pa); + + /* + * Bootime fixmap only can handle PMD_SIZE mapping. Thus, boot-ioremap diff --git a/queue-5.15/series b/queue-5.15/series index 5f7de04d876..ae2a3dfd040 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -43,3 +43,11 @@ reiserfs-add-security-prefix-to-xattr-name-in-reiserfs_security_write.patch kvm-nvmx-emulate-nops-in-l2-and-pause-if-it-s-not-intercepted.patch relayfs-fix-out-of-bounds-access-in-relay_file_read.patch writeback-cgroup-fix-null-ptr-deref-write-in-bdi_spl.patch +ksmbd-call-rcu_barrier-in-ksmbd_server_exit.patch +ksmbd-fix-null-pointer-dereference-in-smb2_get_info_filesystem.patch +ksmbd-fix-memleak-in-session-setup.patch +igc-read-before-write-to-srrctl-register.patch +i2c-omap-fix-standard-mode-false-ack-readings.patch +riscv-mm-remove-redundant-parameter-of-create_fdt_early_page_table.patch +tracing-fix-permissions-for-the-buffer_percent-file.patch +iommu-amd-fix-guest-virtual-apic-table-root-pointer-configuration-in-irte.patch diff --git a/queue-5.15/tracing-fix-permissions-for-the-buffer_percent-file.patch b/queue-5.15/tracing-fix-permissions-for-the-buffer_percent-file.patch new file mode 100644 index 00000000000..6c6a9af28d2 --- /dev/null +++ b/queue-5.15/tracing-fix-permissions-for-the-buffer_percent-file.patch @@ -0,0 +1,37 @@ +From 4f94559f40ad06d627c0fdfc3319cec778a2845b Mon Sep 17 00:00:00 2001 +From: Ondrej Mosnacek +Date: Wed, 3 May 2023 16:01:14 +0200 +Subject: tracing: Fix permissions for the buffer_percent file + +From: Ondrej Mosnacek + +commit 4f94559f40ad06d627c0fdfc3319cec778a2845b upstream. + +This file defines both read and write operations, yet it is being +created as read-only. This means that it can't be written to without the +CAP_DAC_OVERRIDE capability. Fix the permissions to allow root to write +to it without the need to override DAC perms. + +Link: https://lore.kernel.org/linux-trace-kernel/20230503140114.3280002-1-omosnace@redhat.com + +Cc: stable@vger.kernel.org +Cc: Masami Hiramatsu +Fixes: 03329f993978 ("tracing: Add tracefs file buffer_percentage") +Signed-off-by: Ondrej Mosnacek +Signed-off-by: Steven Rostedt (Google) +Signed-off-by: Greg Kroah-Hartman +--- + kernel/trace/trace.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -9565,7 +9565,7 @@ init_tracer_tracefs(struct trace_array * + + tr->buffer_percent = 50; + +- trace_create_file("buffer_percent", TRACE_MODE_READ, d_tracer, ++ trace_create_file("buffer_percent", TRACE_MODE_WRITE, d_tracer, + tr, &buffer_percent_fops); + + create_trace_options_dir(tr); diff --git a/queue-5.15/writeback-cgroup-fix-null-ptr-deref-write-in-bdi_spl.patch b/queue-5.15/writeback-cgroup-fix-null-ptr-deref-write-in-bdi_spl.patch index 7a24a69a5ef..0316419587c 100644 --- a/queue-5.15/writeback-cgroup-fix-null-ptr-deref-write-in-bdi_spl.patch +++ b/queue-5.15/writeback-cgroup-fix-null-ptr-deref-write-in-bdi_spl.patch @@ -102,15 +102,13 @@ Cc: Signed-off-by: Andrew Morton Signed-off-by: Sasha Levin --- - fs/fs-writeback.c | 17 ++++++++++------- - mm/backing-dev.c | 12 ++++++++++-- + fs/fs-writeback.c | 17 ++++++++++------- + mm/backing-dev.c | 12 ++++++++++-- 2 files changed, 20 insertions(+), 9 deletions(-) -diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c -index f4a5a0c2858a1..fbc3f0ef38c02 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c -@@ -1009,6 +1009,16 @@ static void bdi_split_work_to_wbs(struct backing_dev_info *bdi, +@@ -1009,6 +1009,16 @@ restart: continue; } @@ -127,7 +125,7 @@ index f4a5a0c2858a1..fbc3f0ef38c02 100644 /* alloc failed, execute synchronously using on-stack fallback */ work = &fallback_work; *work = *base_work; -@@ -1017,13 +1027,6 @@ static void bdi_split_work_to_wbs(struct backing_dev_info *bdi, +@@ -1017,13 +1027,6 @@ restart: work->done = &fallback_work_done; wb_queue_work(wb, work); @@ -141,8 +139,6 @@ index f4a5a0c2858a1..fbc3f0ef38c02 100644 last_wb = wb; rcu_read_unlock(); -diff --git a/mm/backing-dev.c b/mm/backing-dev.c -index 142e118ade87a..afdd132768455 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -385,6 +385,15 @@ static LIST_HEAD(offline_cgwbs); @@ -161,7 +157,7 @@ index 142e118ade87a..afdd132768455 100644 static void cgwb_release_workfn(struct work_struct *work) { struct bdi_writeback *wb = container_of(work, struct bdi_writeback, -@@ -407,10 +416,9 @@ static void cgwb_release_workfn(struct work_struct *work) +@@ -407,10 +416,9 @@ static void cgwb_release_workfn(struct w list_del(&wb->offline_node); spin_unlock_irq(&cgwb_lock); @@ -173,6 +169,3 @@ index 142e118ade87a..afdd132768455 100644 } static void cgwb_release(struct percpu_ref *refcnt) --- -2.39.2 - -- 2.47.3