Commit f2d4a583 authored by Hamish Martin's avatar Hamish Martin Committed by Jiri Kosina
Browse files

HID: mcp2221: Set driver data before I2C adapter add

The process of adding an I2C adapter can invoke I2C accesses on that new
adapter (see i2c_detect()).

Ensure we have set the adapter's driver data to avoid null pointer
dereferences in the xfer functions during the adapter add.

This has been noted in the past and the same fix proposed but not
completed. See:
https://lore.kernel.org/lkml/ef597e73-ed71-168e-52af-0d19b03734ac@vigem.de/



Signed-off-by: default avatarHamish Martin <hamish.martin@alliedtelesis.co.nz>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 4ea4ed22
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1157,12 +1157,12 @@ static int mcp2221_probe(struct hid_device *hdev,
	snprintf(mcp->adapter.name, sizeof(mcp->adapter.name),
			"MCP2221 usb-i2c bridge");

	i2c_set_adapdata(&mcp->adapter, mcp);
	ret = devm_i2c_add_adapter(&hdev->dev, &mcp->adapter);
	if (ret) {
		hid_err(hdev, "can't add usb-i2c adapter: %d\n", ret);
		return ret;
	}
	i2c_set_adapdata(&mcp->adapter, mcp);

#if IS_REACHABLE(CONFIG_GPIOLIB)
	/* Setup GPIO chip */