Skip to content

Commit 6e55caa

Browse files
tititiou36Andi Shyti
authored andcommitted
i2c: ali15x3: Fix an error handling path in ali15x3_probe()
If i2c_add_adapter() fails, the request_region() call in ali15x3_setup() must be undone by a corresponding release_region() call, as done in the remove function. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Link: https://lore.kernel.org/r/9b2090cbcc02659f425188ea05f2e02745c4e67b.1741031878.git.christophe.jaillet@wanadoo.fr
1 parent 9b5463f commit 6e55caa

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

drivers/i2c/busses/i2c-ali15x3.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,8 @@ MODULE_DEVICE_TABLE (pci, ali15x3_ids);
472472

473473
static int ali15x3_probe(struct pci_dev *dev, const struct pci_device_id *id)
474474
{
475+
int ret;
476+
475477
if (ali15x3_setup(dev)) {
476478
dev_err(&dev->dev,
477479
"ALI15X3 not detected, module not inserted.\n");
@@ -483,7 +485,15 @@ static int ali15x3_probe(struct pci_dev *dev, const struct pci_device_id *id)
483485

484486
snprintf(ali15x3_adapter.name, sizeof(ali15x3_adapter.name),
485487
"SMBus ALI15X3 adapter at %04x", ali15x3_smba);
486-
return i2c_add_adapter(&ali15x3_adapter);
488+
ret = i2c_add_adapter(&ali15x3_adapter);
489+
if (ret)
490+
goto release_region;
491+
492+
return 0;
493+
494+
release_region:
495+
release_region(ali15x3_smba, ALI15X3_SMB_IOSIZE);
496+
return ret;
487497
}
488498

489499
static void ali15x3_remove(struct pci_dev *dev)

0 commit comments

Comments
 (0)