Skip to content

Commit 9b5463f

Browse files
tititiou36Andi Shyti
authored andcommitted
i2c: ali1535: Fix an error handling path in ali1535_probe()
If i2c_add_adapter() fails, the request_region() call in ali1535_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/0daf63d7a2ce74c02e2664ba805bbfadab7d25e5.1741031571.git.christophe.jaillet@wanadoo.fr
1 parent 285df99 commit 9b5463f

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

drivers/i2c/busses/i2c-ali1535.c

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

486486
static int ali1535_probe(struct pci_dev *dev, const struct pci_device_id *id)
487487
{
488+
int ret;
489+
488490
if (ali1535_setup(dev)) {
489491
dev_warn(&dev->dev,
490492
"ALI1535 not detected, module not inserted.\n");
@@ -496,7 +498,15 @@ static int ali1535_probe(struct pci_dev *dev, const struct pci_device_id *id)
496498

497499
snprintf(ali1535_adapter.name, sizeof(ali1535_adapter.name),
498500
"SMBus ALI1535 adapter at %04x", ali1535_offset);
499-
return i2c_add_adapter(&ali1535_adapter);
501+
ret = i2c_add_adapter(&ali1535_adapter);
502+
if (ret)
503+
goto release_region;
504+
505+
return 0;
506+
507+
release_region:
508+
release_region(ali1535_smba, ALI1535_SMB_IOSIZE);
509+
return ret;
500510
}
501511

502512
static void ali1535_remove(struct pci_dev *dev)

0 commit comments

Comments
 (0)