lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 23 Sep 2021 20:13:18 +0200 From: Sven Peter <sven@...npeter.dev> To: Heikki Krogerus <heikki.krogerus@...ux.intel.com> Cc: Sven Peter <sven@...npeter.dev>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Guido Günther <agx@...xcpu.org>, "Bryan O'Donoghue" <bryan.odonoghue@...aro.org>, linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org, Hector Martin <marcan@...can.st>, Mohamed Mediouni <mohamed.mediouni@...amail.com>, Stan Skowronek <stan@...ellium.com>, Mark Kettenis <mark.kettenis@...all.nl>, Alexander Graf <graf@...zon.com>, Alyssa Rosenzweig <alyssa@...enzweig.io> Subject: [PATCH v2 3/6] usb: typec: tipd: Add short-circuit for no irqs If no interrupts are set in IntEventX directly skip to the end of the interrupt handler and return IRQ_NONE instead of IRQ_HANDLED. This possibly allows to detect spurious interrupts if the i2c bus is fast enough. Reviewed-by: Heikki Krogerus <heikki.krogerus@...ux.intel.com> Signed-off-by: Sven Peter <sven@...npeter.dev> --- changes since v1: - added Heikki's r-b - s/event/(event1 | event2)/ drivers/usb/typec/tipd/core.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c index 162d405baa92..cd1e37eb8a0c 100644 --- a/drivers/usb/typec/tipd/core.c +++ b/drivers/usb/typec/tipd/core.c @@ -476,6 +476,9 @@ static irqreturn_t tps6598x_interrupt(int irq, void *data) } trace_tps6598x_irq(event1, event2); + if (!(event1 | event2)) + goto err_unlock; + if (!tps6598x_read_status(tps, &status)) goto err_clear_ints; @@ -498,7 +501,9 @@ static irqreturn_t tps6598x_interrupt(int irq, void *data) err_unlock: mutex_unlock(&tps->lock); - return IRQ_HANDLED; + if (event1 | event2) + return IRQ_HANDLED; + return IRQ_NONE; } static int tps6598x_check_mode(struct tps6598x *tps) -- 2.25.1
Powered by blists - more mailing lists