From 909e4ef6ae8d43b41940bdc5785e2218d4e7fd6a Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 24 Mar 2022 20:01:53 +0100 Subject: [PATCH] 5.10-stable patches added patches: staging-fbtft-fb_st7789v-reset-display-before-initialization.patch tpm-fix-error-handling-in-async-work.patch --- queue-5.10/series | 2 + ...-reset-display-before-initialization.patch | 35 ++++++++++++ ...tpm-fix-error-handling-in-async-work.patch | 56 +++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 queue-5.10/staging-fbtft-fb_st7789v-reset-display-before-initialization.patch create mode 100644 queue-5.10/tpm-fix-error-handling-in-async-work.patch diff --git a/queue-5.10/series b/queue-5.10/series index 19f5efc9955..20f00831f20 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -4,3 +4,5 @@ exfat-avoid-incorrectly-releasing-for-root-inode.patch cgroup-allocate-cgroup_file_ctx-for-kernfs_open_file-priv.patch cgroup-use-open-time-cgroup-namespace-for-process-migration-perm-checks.patch cgroup-v1-correct-privileges-check-in-release_agent-writes.patch +tpm-fix-error-handling-in-async-work.patch +staging-fbtft-fb_st7789v-reset-display-before-initialization.patch diff --git a/queue-5.10/staging-fbtft-fb_st7789v-reset-display-before-initialization.patch b/queue-5.10/staging-fbtft-fb_st7789v-reset-display-before-initialization.patch new file mode 100644 index 00000000000..d068e539b09 --- /dev/null +++ b/queue-5.10/staging-fbtft-fb_st7789v-reset-display-before-initialization.patch @@ -0,0 +1,35 @@ +From b6821b0d9b56386d2bf14806f90ec401468c799f Mon Sep 17 00:00:00 2001 +From: Oliver Graute +Date: Thu, 10 Feb 2022 09:53:22 +0100 +Subject: staging: fbtft: fb_st7789v: reset display before initialization + +From: Oliver Graute + +commit b6821b0d9b56386d2bf14806f90ec401468c799f upstream. + +In rare cases the display is flipped or mirrored. This was observed more +often in a low temperature environment. A clean reset on init_display() +should help to get registers in a sane state. + +Fixes: ef8f317795da (staging: fbtft: use init function instead of init sequence) +Cc: stable@vger.kernel.org +Signed-off-by: Oliver Graute +Link: https://lore.kernel.org/r/20220210085322.15676-1-oliver.graute@kococonnector.com +[sudip: adjust context] +Signed-off-by: Sudip Mukherjee +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/fbtft/fb_st7789v.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/staging/fbtft/fb_st7789v.c ++++ b/drivers/staging/fbtft/fb_st7789v.c +@@ -82,6 +82,8 @@ enum st7789v_command { + */ + static int init_display(struct fbtft_par *par) + { ++ par->fbtftops.reset(par); ++ + /* turn off sleep mode */ + write_reg(par, MIPI_DCS_EXIT_SLEEP_MODE); + mdelay(120); diff --git a/queue-5.10/tpm-fix-error-handling-in-async-work.patch b/queue-5.10/tpm-fix-error-handling-in-async-work.patch new file mode 100644 index 00000000000..449b4dbd72d --- /dev/null +++ b/queue-5.10/tpm-fix-error-handling-in-async-work.patch @@ -0,0 +1,56 @@ +From 2e8e4c8f6673247e22efc7985ce5497accd16f88 Mon Sep 17 00:00:00 2001 +From: Tadeusz Struk +Date: Sat, 15 Jan 2022 17:26:26 -0800 +Subject: tpm: Fix error handling in async work + +From: Tadeusz Struk + +commit 2e8e4c8f6673247e22efc7985ce5497accd16f88 upstream. + +When an invalid (non existing) handle is used in a TPM command, +that uses the resource manager interface (/dev/tpmrm0) the resource +manager tries to load it from its internal cache, but fails and +the tpm_dev_transmit returns an -EINVAL error to the caller. +The existing async handler doesn't handle these error cases +currently and the condition in the poll handler never returns +mask with EPOLLIN set. +The result is that the poll call blocks and the application gets stuck +until the user_read_timer wakes it up after 120 sec. +Change the tpm_dev_async_work function to handle error conditions +returned from tpm_dev_transmit they are also reflected in the poll mask +and a correct error code could passed back to the caller. + +Cc: Jarkko Sakkinen +Cc: Jason Gunthorpe +Cc: +Cc: +Cc: + +Fixes: 9e1b74a63f77 ("tpm: add support for nonblocking operation") +Tested-by: Jarkko Sakkinen +Signed-off-by: Tadeusz Struk +Reviewed-by: Jarkko Sakkinen +Signed-off-by: Jarkko Sakkinen +Cc: Tadeusz Struk +Signed-off-by: Greg Kroah-Hartman +--- + drivers/char/tpm/tpm-dev-common.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/char/tpm/tpm-dev-common.c ++++ b/drivers/char/tpm/tpm-dev-common.c +@@ -70,7 +70,13 @@ static void tpm_dev_async_work(struct wo + ret = tpm_dev_transmit(priv->chip, priv->space, priv->data_buffer, + sizeof(priv->data_buffer)); + tpm_put_ops(priv->chip); +- if (ret > 0) { ++ ++ /* ++ * If ret is > 0 then tpm_dev_transmit returned the size of the ++ * response. If ret is < 0 then tpm_dev_transmit failed and ++ * returned an error code. ++ */ ++ if (ret != 0) { + priv->response_length = ret; + mod_timer(&priv->user_read_timer, jiffies + (120 * HZ)); + } -- 2.47.3