From: Greg Kroah-Hartman Date: Mon, 12 Oct 2020 11:58:15 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.4.239~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e2dc774fdb1278d2eaa9c72e2b071d7aeab53ab8;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: i2c-imx-fix-reset-of-i2sr_ial-flag.patch --- diff --git a/queue-4.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch b/queue-4.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch new file mode 100644 index 00000000000..c7c0462143e --- /dev/null +++ b/queue-4.4/i2c-imx-fix-reset-of-i2sr_ial-flag.patch @@ -0,0 +1,71 @@ +From fa4d30556883f2eaab425b88ba9904865a4d00f3 Mon Sep 17 00:00:00 2001 +From: Christian Eggers +Date: Wed, 7 Oct 2020 10:45:22 +0200 +Subject: i2c: imx: Fix reset of I2SR_IAL flag +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Christian Eggers + +commit fa4d30556883f2eaab425b88ba9904865a4d00f3 upstream. + +According to the "VFxxx Controller Reference Manual" (and the comment +block starting at line 97), Vybrid requires writing a one for clearing +an interrupt flag. Syncing the method for clearing I2SR_IIF in +i2c_imx_isr(). + +Signed-off-by: Christian Eggers +Fixes: 4b775022f6fd ("i2c: imx: add struct to hold more configurable quirks") +Reviewed-by: Uwe Kleine-König +Cc: stable@vger.kernel.org +Signed-off-by: Wolfram Sang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/i2c/busses/i2c-imx.c | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +--- a/drivers/i2c/busses/i2c-imx.c ++++ b/drivers/i2c/busses/i2c-imx.c +@@ -420,6 +420,19 @@ static void i2c_imx_dma_free(struct imx_ + /** Functions for IMX I2C adapter driver *************************************** + *******************************************************************************/ + ++static void i2c_imx_clear_irq(struct imx_i2c_struct *i2c_imx, unsigned int bits) ++{ ++ unsigned int temp; ++ ++ /* ++ * i2sr_clr_opcode is the value to clear all interrupts. Here we want to ++ * clear only , so we write ~i2sr_clr_opcode with just ++ * toggled. This is required because i.MX needs W1C and Vybrid uses W0C. ++ */ ++ temp = ~i2c_imx->hwdata->i2sr_clr_opcode ^ bits; ++ imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); ++} ++ + static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy) + { + unsigned long orig_jiffies = jiffies; +@@ -432,8 +445,7 @@ static int i2c_imx_bus_busy(struct imx_i + + /* check for arbitration lost */ + if (temp & I2SR_IAL) { +- temp &= ~I2SR_IAL; +- imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); ++ i2c_imx_clear_irq(i2c_imx, I2SR_IAL); + return -EAGAIN; + } + +@@ -595,9 +607,7 @@ static irqreturn_t i2c_imx_isr(int irq, + if (temp & I2SR_IIF) { + /* save status register */ + i2c_imx->i2csr = temp; +- temp &= ~I2SR_IIF; +- temp |= (i2c_imx->hwdata->i2sr_clr_opcode & I2SR_IIF); +- imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2SR); ++ i2c_imx_clear_irq(i2c_imx, I2SR_IIF); + wake_up(&i2c_imx->queue); + return IRQ_HANDLED; + } diff --git a/queue-4.4/rxrpc-fix-server-keyring-leak.patch b/queue-4.4/rxrpc-fix-server-keyring-leak.patch index 52c30d5bbc1..0da7242c0ac 100644 --- a/queue-4.4/rxrpc-fix-server-keyring-leak.patch +++ b/queue-4.4/rxrpc-fix-server-keyring-leak.patch @@ -16,14 +16,12 @@ Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by usersp Signed-off-by: David Howells Signed-off-by: Sasha Levin --- - net/rxrpc/ar-key.c | 2 +- + net/rxrpc/ar-key.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/net/rxrpc/ar-key.c b/net/rxrpc/ar-key.c -index 20549c13eb13d..ea615e53eab28 100644 --- a/net/rxrpc/ar-key.c +++ b/net/rxrpc/ar-key.c -@@ -897,7 +897,7 @@ int rxrpc_request_key(struct rxrpc_sock *rx, char __user *optval, int optlen) +@@ -897,7 +897,7 @@ int rxrpc_request_key(struct rxrpc_sock _enter(""); @@ -32,6 +30,3 @@ index 20549c13eb13d..ea615e53eab28 100644 return -EINVAL; description = kmalloc(optlen + 1, GFP_KERNEL); --- -2.25.1 - diff --git a/queue-4.4/series b/queue-4.4/series index 009d11f337e..b9bec582924 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -36,3 +36,4 @@ bonding-set-dev-needed_headroom-in-bond_setup_by_sla.patch rxrpc-fix-rxkad-token-xdr-encoding.patch rxrpc-downgrade-the-bug-for-unsupported-token-type-i.patch rxrpc-fix-server-keyring-leak.patch +i2c-imx-fix-reset-of-i2sr_ial-flag.patch