patch "tps6598x: clear int mask on probe failure" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
tps6598x: clear int mask on probe failure
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From aba2081e0a9c977396124aa6df93b55ed5912b19 Mon Sep 17 00:00:00 2001
From: Jens Axboe <[email protected]>
Date: Tue, 15 Feb 2022 11:22:04 -0700
Subject: tps6598x: clear int mask on probe failure
The interrupt mask is enabled before any potential failure points in the driver, which can leave a failure path where we exit with interrupts enabled but the device not live. This causes an infinite stream of interrupts on an Apple M1 Pro laptop on USB-C.
Add a failure label that's used post enabling interrupts, where we mask them again before returning an error.
--- drivers/usb/typec/tipd/core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/usb/typec/tipd/core.c +4 -3
@@ -761,12 +761,12 @@ static int tps6598x_probe(struct i2c_client *client) ret =tps6598x_read32 (tps,TPS_REG_STATUS , &status);if (ret <0 ) -return ret; + goto err_clear_mask;trace_tps6598x_status (status); ret =tps6598x_read32 (tps,TPS_REG_SYSTEM_CONF , &conf);if (ret <0 ) -return ret; + goto err_clear_mask;/* * This fwnode has a "compatible" property, but is never populated as a
@@ -855,7 +855,8 @@ static int tps6598x_probe(struct i2c_client *client)usb_role_switch_put (tps->role_sw); err_fwnode_put:fwnode_handle_put (fwnode); - +err_clear_mask: +tps6598x_write64 (tps,TPS_REG_INT_MASK1 ,0 );return ret; }
Signature · 1 line
2.35.1