From: Greg Kroah-Hartman Date: Tue, 28 Nov 2023 09:47:56 +0000 (+0000) Subject: drop gpio patches from 5.10 and 5.15 X-Git-Tag: v4.14.331~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3a4675938f4738ddc6232e62dfd4e86d18517c78;p=thirdparty%2Fkernel%2Fstable-queue.git drop gpio patches from 5.10 and 5.15 Not needed, they snuck back in :( --- diff --git a/queue-5.10/gpio-add-helpers-to-ease-the-transition-towards-immu.patch b/queue-5.10/gpio-add-helpers-to-ease-the-transition-towards-immu.patch deleted file mode 100644 index 948e651a55f..00000000000 --- a/queue-5.10/gpio-add-helpers-to-ease-the-transition-towards-immu.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 1eba62c924331931f0a4b3e6d59c433bd8131417 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Apr 2022 15:18:39 +0100 -Subject: gpio: Add helpers to ease the transition towards immutable irq_chip - -From: Marc Zyngier - -[ Upstream commit 36b78aae4bfee749bbde73be570796bfd0f56bec ] - -Add a couple of new helpers to make it slightly simpler to convert -drivers to immutable irq_chip structures: - -- GPIOCHIP_IRQ_RESOURCE_HELPERS populates the irq_chip structure - with the resource management callbacks - -- gpio_irq_chip_set_chip() populates the gpio_irq_chip.chip - structure, avoiding the proliferation of ugly casts - -Reviewed-by: Andy Shevchenko -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Marc Zyngier -Link: https://lore.kernel.org/r/20220419141846.598305-4-maz@kernel.org -Stable-dep-of: dc3115e6c5d9 ("hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip") -Signed-off-by: Sasha Levin ---- - include/linux/gpio/driver.h | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h -index 38df53b541d53..897fc150552a2 100644 ---- a/include/linux/gpio/driver.h -+++ b/include/linux/gpio/driver.h -@@ -595,6 +595,18 @@ void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset); - int gpiochip_irq_reqres(struct irq_data *data); - void gpiochip_irq_relres(struct irq_data *data); - -+/* Paste this in your irq_chip structure */ -+#define GPIOCHIP_IRQ_RESOURCE_HELPERS \ -+ .irq_request_resources = gpiochip_irq_reqres, \ -+ .irq_release_resources = gpiochip_irq_relres -+ -+static inline void gpio_irq_chip_set_chip(struct gpio_irq_chip *girq, -+ const struct irq_chip *chip) -+{ -+ /* Yes, dropping const is ugly, but it isn't like we have a choice */ -+ girq->chip = (struct irq_chip *)chip; -+} -+ - /* Line status inquiry for drivers */ - bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset); - bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset); --- -2.42.0 - diff --git a/queue-5.10/gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch b/queue-5.10/gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch deleted file mode 100644 index 05659d88c21..00000000000 --- a/queue-5.10/gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 17498acb96a91afb269eaff98a1af5b57dc06309 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Apr 2022 15:18:37 +0100 -Subject: gpio: Don't fiddle with irqchips marked as immutable - -From: Marc Zyngier - -[ Upstream commit 6c846d026d490b2383d395bc8e7b06336219667b ] - -In order to move away from gpiolib messing with the internals of -unsuspecting irqchips, add a flag by which irqchips advertise -that they are not to be messed with, and do solemnly swear that -they correctly call into the gpiolib helpers when required. - -Also nudge the users into converting their drivers to the -new model. - -Reviewed-by: Andy Shevchenko -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Marc Zyngier -Link: https://lore.kernel.org/r/20220419141846.598305-2-maz@kernel.org -Stable-dep-of: dc3115e6c5d9 ("hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpiolib.c | 7 ++++++- - include/linux/irq.h | 2 ++ - kernel/irq/debugfs.c | 1 + - 3 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index d10f621085e2e..8a6510d0fe5fc 100644 ---- a/drivers/gpio/gpiolib.c -+++ b/drivers/gpio/gpiolib.c -@@ -1491,6 +1491,11 @@ static void gpiochip_set_irq_hooks(struct gpio_chip *gc) - { - struct irq_chip *irqchip = gc->irq.chip; - -+ if (irqchip->flags & IRQCHIP_IMMUTABLE) -+ return; -+ -+ chip_warn(gc, "not an immutable chip, please consider fixing it!\n"); -+ - if (!irqchip->irq_request_resources && - !irqchip->irq_release_resources) { - irqchip->irq_request_resources = gpiochip_irq_reqres; -@@ -1667,7 +1672,7 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gc) - irq_domain_remove(gc->irq.domain); - } - -- if (irqchip) { -+ if (irqchip && !(irqchip->flags & IRQCHIP_IMMUTABLE)) { - if (irqchip->irq_request_resources == gpiochip_irq_reqres) { - irqchip->irq_request_resources = NULL; - irqchip->irq_release_resources = NULL; -diff --git a/include/linux/irq.h b/include/linux/irq.h -index b89a8ac83d1bc..da4cd9fb3e5f3 100644 ---- a/include/linux/irq.h -+++ b/include/linux/irq.h -@@ -568,6 +568,7 @@ struct irq_chip { - * IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND: Invokes __enable_irq()/__disable_irq() for wake irqs - * in the suspend path if they are in disabled state - * IRQCHIP_AFFINITY_PRE_STARTUP: Default affinity update before startup -+ * IRQCHIP_IMMUTABLE: Don't ever change anything in this chip - */ - enum { - IRQCHIP_SET_TYPE_MASKED = (1 << 0), -@@ -581,6 +582,7 @@ enum { - IRQCHIP_SUPPORTS_NMI = (1 << 8), - IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = (1 << 9), - IRQCHIP_AFFINITY_PRE_STARTUP = (1 << 10), -+ IRQCHIP_IMMUTABLE = (1 << 11), - }; - - #include -diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c -index e4cff358b437e..7ff52d94b42c0 100644 ---- a/kernel/irq/debugfs.c -+++ b/kernel/irq/debugfs.c -@@ -58,6 +58,7 @@ static const struct irq_bit_descr irqchip_flags[] = { - BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI), - BIT_MASK_DESCR(IRQCHIP_SUPPORTS_NMI), - BIT_MASK_DESCR(IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND), -+ BIT_MASK_DESCR(IRQCHIP_IMMUTABLE), - }; - - static void --- -2.42.0 - diff --git a/queue-5.10/gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch b/queue-5.10/gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch deleted file mode 100644 index 73dae756b32..00000000000 --- a/queue-5.10/gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch +++ /dev/null @@ -1,70 +0,0 @@ -From d00f266478446e8b5252d007c83fa4ff3a0fd54a Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Apr 2022 15:18:38 +0100 -Subject: gpio: Expose the gpiochip_irq_re[ql]res helpers - -From: Marc Zyngier - -[ Upstream commit 704f08753b6dcd0e08c1953af0b2c7f3fac87111 ] - -The GPIO subsystem has a couple of internal helpers to manage -resources on behalf of the irqchip. Expose them so that GPIO -drivers can use them directly. - -Reviewed-by: Andy Shevchenko -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Marc Zyngier -Link: https://lore.kernel.org/r/20220419141846.598305-3-maz@kernel.org -Stable-dep-of: dc3115e6c5d9 ("hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpiolib.c | 6 ++++-- - include/linux/gpio/driver.h | 4 ++++ - 2 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index 8a6510d0fe5fc..69ef51a05709a 100644 ---- a/drivers/gpio/gpiolib.c -+++ b/drivers/gpio/gpiolib.c -@@ -1439,19 +1439,21 @@ static int gpiochip_to_irq(struct gpio_chip *gc, unsigned offset) - return irq_create_mapping(domain, offset); - } - --static int gpiochip_irq_reqres(struct irq_data *d) -+int gpiochip_irq_reqres(struct irq_data *d) - { - struct gpio_chip *gc = irq_data_get_irq_chip_data(d); - - return gpiochip_reqres_irq(gc, d->hwirq); - } -+EXPORT_SYMBOL(gpiochip_irq_reqres); - --static void gpiochip_irq_relres(struct irq_data *d) -+void gpiochip_irq_relres(struct irq_data *d) - { - struct gpio_chip *gc = irq_data_get_irq_chip_data(d); - - gpiochip_relres_irq(gc, d->hwirq); - } -+EXPORT_SYMBOL(gpiochip_irq_relres); - - static void gpiochip_irq_mask(struct irq_data *d) - { -diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h -index 64c93a36a3a92..38df53b541d53 100644 ---- a/include/linux/gpio/driver.h -+++ b/include/linux/gpio/driver.h -@@ -591,6 +591,10 @@ void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset); - void gpiochip_disable_irq(struct gpio_chip *gc, unsigned int offset); - void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset); - -+/* irq_data versions of the above */ -+int gpiochip_irq_reqres(struct irq_data *data); -+void gpiochip_irq_relres(struct irq_data *data); -+ - /* Line status inquiry for drivers */ - bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset); - bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset); --- -2.42.0 - diff --git a/queue-5.10/series b/queue-5.10/series index 577baa357b5..f087440fd3b 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -58,9 +58,6 @@ pwm-fix-double-shift-bug.patch wifi-iwlwifi-use-fw-rate-for-non-data-frames.patch xhci-turn-cancelled-td-cleanup-to-its-own-function.patch sunrpc-econnreset-might-require-a-rebind.patch -gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch -gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch -gpio-add-helpers-to-ease-the-transition-towards-immu.patch sunrpc-add-an-is_err-check-back-to-where-it-was.patch nfsv4.1-fix-sp4_mach_cred-protection-for-pnfs-io.patch sunrpc-fix-rpc-client-cleaned-up-the-freed-pipefs-de.patch diff --git a/queue-5.15/gpio-add-helpers-to-ease-the-transition-towards-immu.patch b/queue-5.15/gpio-add-helpers-to-ease-the-transition-towards-immu.patch deleted file mode 100644 index 58d4dd1ace7..00000000000 --- a/queue-5.15/gpio-add-helpers-to-ease-the-transition-towards-immu.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 648511402a487ae3bc6b1ddcb752a4c959ee7db4 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Apr 2022 15:18:39 +0100 -Subject: gpio: Add helpers to ease the transition towards immutable irq_chip - -From: Marc Zyngier - -[ Upstream commit 36b78aae4bfee749bbde73be570796bfd0f56bec ] - -Add a couple of new helpers to make it slightly simpler to convert -drivers to immutable irq_chip structures: - -- GPIOCHIP_IRQ_RESOURCE_HELPERS populates the irq_chip structure - with the resource management callbacks - -- gpio_irq_chip_set_chip() populates the gpio_irq_chip.chip - structure, avoiding the proliferation of ugly casts - -Reviewed-by: Andy Shevchenko -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Marc Zyngier -Link: https://lore.kernel.org/r/20220419141846.598305-4-maz@kernel.org -Stable-dep-of: dc3115e6c5d9 ("hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip") -Signed-off-by: Sasha Levin ---- - include/linux/gpio/driver.h | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h -index b241fc23ff3a2..91f60d1e3eb31 100644 ---- a/include/linux/gpio/driver.h -+++ b/include/linux/gpio/driver.h -@@ -599,6 +599,18 @@ void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset); - int gpiochip_irq_reqres(struct irq_data *data); - void gpiochip_irq_relres(struct irq_data *data); - -+/* Paste this in your irq_chip structure */ -+#define GPIOCHIP_IRQ_RESOURCE_HELPERS \ -+ .irq_request_resources = gpiochip_irq_reqres, \ -+ .irq_release_resources = gpiochip_irq_relres -+ -+static inline void gpio_irq_chip_set_chip(struct gpio_irq_chip *girq, -+ const struct irq_chip *chip) -+{ -+ /* Yes, dropping const is ugly, but it isn't like we have a choice */ -+ girq->chip = (struct irq_chip *)chip; -+} -+ - /* Line status inquiry for drivers */ - bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset); - bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset); --- -2.42.0 - diff --git a/queue-5.15/gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch b/queue-5.15/gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch deleted file mode 100644 index fe4a568691c..00000000000 --- a/queue-5.15/gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 5c68c9877264b17dca331aa86e2b95804bce1334 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Apr 2022 15:18:37 +0100 -Subject: gpio: Don't fiddle with irqchips marked as immutable - -From: Marc Zyngier - -[ Upstream commit 6c846d026d490b2383d395bc8e7b06336219667b ] - -In order to move away from gpiolib messing with the internals of -unsuspecting irqchips, add a flag by which irqchips advertise -that they are not to be messed with, and do solemnly swear that -they correctly call into the gpiolib helpers when required. - -Also nudge the users into converting their drivers to the -new model. - -Reviewed-by: Andy Shevchenko -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Marc Zyngier -Link: https://lore.kernel.org/r/20220419141846.598305-2-maz@kernel.org -Stable-dep-of: dc3115e6c5d9 ("hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpiolib.c | 7 ++++++- - include/linux/irq.h | 2 ++ - kernel/irq/debugfs.c | 1 + - 3 files changed, 9 insertions(+), 1 deletion(-) - -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index f9fdd117c654c..e572c30a202ad 100644 ---- a/drivers/gpio/gpiolib.c -+++ b/drivers/gpio/gpiolib.c -@@ -1483,6 +1483,11 @@ static void gpiochip_set_irq_hooks(struct gpio_chip *gc) - { - struct irq_chip *irqchip = gc->irq.chip; - -+ if (irqchip->flags & IRQCHIP_IMMUTABLE) -+ return; -+ -+ chip_warn(gc, "not an immutable chip, please consider fixing it!\n"); -+ - if (!irqchip->irq_request_resources && - !irqchip->irq_release_resources) { - irqchip->irq_request_resources = gpiochip_irq_reqres; -@@ -1650,7 +1655,7 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gc) - irq_domain_remove(gc->irq.domain); - } - -- if (irqchip) { -+ if (irqchip && !(irqchip->flags & IRQCHIP_IMMUTABLE)) { - if (irqchip->irq_request_resources == gpiochip_irq_reqres) { - irqchip->irq_request_resources = NULL; - irqchip->irq_release_resources = NULL; -diff --git a/include/linux/irq.h b/include/linux/irq.h -index f9e6449fbbbae..296ef3b7d7afa 100644 ---- a/include/linux/irq.h -+++ b/include/linux/irq.h -@@ -570,6 +570,7 @@ struct irq_chip { - * IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND: Invokes __enable_irq()/__disable_irq() for wake irqs - * in the suspend path if they are in disabled state - * IRQCHIP_AFFINITY_PRE_STARTUP: Default affinity update before startup -+ * IRQCHIP_IMMUTABLE: Don't ever change anything in this chip - */ - enum { - IRQCHIP_SET_TYPE_MASKED = (1 << 0), -@@ -583,6 +584,7 @@ enum { - IRQCHIP_SUPPORTS_NMI = (1 << 8), - IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = (1 << 9), - IRQCHIP_AFFINITY_PRE_STARTUP = (1 << 10), -+ IRQCHIP_IMMUTABLE = (1 << 11), - }; - - #include -diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c -index e4cff358b437e..7ff52d94b42c0 100644 ---- a/kernel/irq/debugfs.c -+++ b/kernel/irq/debugfs.c -@@ -58,6 +58,7 @@ static const struct irq_bit_descr irqchip_flags[] = { - BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI), - BIT_MASK_DESCR(IRQCHIP_SUPPORTS_NMI), - BIT_MASK_DESCR(IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND), -+ BIT_MASK_DESCR(IRQCHIP_IMMUTABLE), - }; - - static void --- -2.42.0 - diff --git a/queue-5.15/gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch b/queue-5.15/gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch deleted file mode 100644 index b2defd09ab9..00000000000 --- a/queue-5.15/gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 485d6fb9783fc780f3118060147eaf8598b09ce5 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 19 Apr 2022 15:18:38 +0100 -Subject: gpio: Expose the gpiochip_irq_re[ql]res helpers - -From: Marc Zyngier - -[ Upstream commit 704f08753b6dcd0e08c1953af0b2c7f3fac87111 ] - -The GPIO subsystem has a couple of internal helpers to manage -resources on behalf of the irqchip. Expose them so that GPIO -drivers can use them directly. - -Reviewed-by: Andy Shevchenko -Reviewed-by: Bartosz Golaszewski -Signed-off-by: Marc Zyngier -Link: https://lore.kernel.org/r/20220419141846.598305-3-maz@kernel.org -Stable-dep-of: dc3115e6c5d9 ("hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip") -Signed-off-by: Sasha Levin ---- - drivers/gpio/gpiolib.c | 6 ++++-- - include/linux/gpio/driver.h | 4 ++++ - 2 files changed, 8 insertions(+), 2 deletions(-) - -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index e572c30a202ad..57e726d65904b 100644 ---- a/drivers/gpio/gpiolib.c -+++ b/drivers/gpio/gpiolib.c -@@ -1431,19 +1431,21 @@ static int gpiochip_to_irq(struct gpio_chip *gc, unsigned int offset) - return irq_create_mapping(domain, offset); - } - --static int gpiochip_irq_reqres(struct irq_data *d) -+int gpiochip_irq_reqres(struct irq_data *d) - { - struct gpio_chip *gc = irq_data_get_irq_chip_data(d); - - return gpiochip_reqres_irq(gc, d->hwirq); - } -+EXPORT_SYMBOL(gpiochip_irq_reqres); - --static void gpiochip_irq_relres(struct irq_data *d) -+void gpiochip_irq_relres(struct irq_data *d) - { - struct gpio_chip *gc = irq_data_get_irq_chip_data(d); - - gpiochip_relres_irq(gc, d->hwirq); - } -+EXPORT_SYMBOL(gpiochip_irq_relres); - - static void gpiochip_irq_mask(struct irq_data *d) - { -diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h -index 65df2ce96f0b1..b241fc23ff3a2 100644 ---- a/include/linux/gpio/driver.h -+++ b/include/linux/gpio/driver.h -@@ -595,6 +595,10 @@ void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset); - void gpiochip_disable_irq(struct gpio_chip *gc, unsigned int offset); - void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset); - -+/* irq_data versions of the above */ -+int gpiochip_irq_reqres(struct irq_data *data); -+void gpiochip_irq_relres(struct irq_data *data); -+ - /* Line status inquiry for drivers */ - bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset); - bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset); --- -2.42.0 - diff --git a/queue-5.15/series b/queue-5.15/series index 8df23e4bd56..83dc9fa5cd6 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -86,9 +86,6 @@ sched-core-optimize-in_task-and-in_interrupt-a-bit.patch media-cadence-csi2rx-unregister-v4l2-async-notifier.patch media-cec-meson-always-include-meson-sub-directory-i.patch sunrpc-econnreset-might-require-a-rebind.patch -gpio-don-t-fiddle-with-irqchips-marked-as-immutable.patch -gpio-expose-the-gpiochip_irq_re-ql-res-helpers.patch -gpio-add-helpers-to-ease-the-transition-towards-immu.patch sunrpc-add-an-is_err-check-back-to-where-it-was.patch nfsv4.1-fix-sp4_mach_cred-protection-for-pnfs-io.patch sunrpc-fix-rpc-client-cleaned-up-the-freed-pipefs-de.patch