[PATCH 1/2] i2c: robotfuzz-osif: check adapter registration failure

From: Jiawen Liu

Date: Thu Jun 18 2026 - 12:45:23 EST


i2c_add_adapter() can fail, but osif_probe() ignored the return
value and still reported a successful probe. A later disconnect
would then call i2c_del_adapter() for an adapter that was not
registered.

Propagate the adapter registration error and clear the USB interface
data on probe failure.

Signed-off-by: Jiawen Liu <1298662399@xxxxxx>
---
drivers/i2c/busses/i2c-robotfuzz-osif.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-robotfuzz-osif.c b/drivers/i2c/busses/i2c-robotfuzz-osif.c
index 412fa8e37f69..ad2693c1974f 100644
--- a/drivers/i2c/busses/i2c-robotfuzz-osif.c
+++ b/drivers/i2c/busses/i2c-robotfuzz-osif.c
@@ -163,10 +163,12 @@ static int osif_probe(struct usb_interface *interface,
NULL, 0);
if (ret) {
dev_err(&interface->dev, "failure sending bit rate");
- return ret;
+ goto err_clear_intfdata;
}

- i2c_add_adapter(&(priv->adapter));
+ ret = i2c_add_adapter(&priv->adapter);
+ if (ret)
+ goto err_clear_intfdata;

version = le16_to_cpu(priv->usb_dev->descriptor.bcdDevice);
dev_info(&interface->dev,
@@ -175,6 +177,10 @@ static int osif_probe(struct usb_interface *interface,
priv->usb_dev->bus->busnum, priv->usb_dev->devnum);

return 0;
+
+err_clear_intfdata:
+ usb_set_intfdata(interface, NULL);
+ return ret;
}

static void osif_disconnect(struct usb_interface *interface)
--
2.34.1