Skip to content

Commit b1c428b

Browse files
committed
Merge tag 'i2c-for-5.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c fixes from Wolfram Sang: "Two I2C driver bugfixes preventing resource leaks" * tag 'i2c-for-5.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: i2c: cadence: Unregister the clk notifier in error path i2c: piix4: Fix a memory leak in the EFCH MMIO support
2 parents d9cdc3b + 3501f0c commit b1c428b

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

drivers/i2c/busses/i2c-cadence.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,7 @@ static int cdns_i2c_probe(struct platform_device *pdev)
13381338
return 0;
13391339

13401340
err_clk_dis:
1341+
clk_notifier_unregister(id->clk, &id->clk_rate_change_nb);
13411342
clk_disable_unprepare(id->clk);
13421343
pm_runtime_disable(&pdev->dev);
13431344
pm_runtime_set_suspended(&pdev->dev);

drivers/i2c/busses/i2c-piix4.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ static const char *piix4_aux_port_name_sb800 = " port 1";
161161

162162
struct sb800_mmio_cfg {
163163
void __iomem *addr;
164-
struct resource *res;
165164
bool use_mmio;
166165
};
167166

@@ -179,13 +178,11 @@ static int piix4_sb800_region_request(struct device *dev,
179178
struct sb800_mmio_cfg *mmio_cfg)
180179
{
181180
if (mmio_cfg->use_mmio) {
182-
struct resource *res;
183181
void __iomem *addr;
184182

185-
res = request_mem_region_muxed(SB800_PIIX4_FCH_PM_ADDR,
186-
SB800_PIIX4_FCH_PM_SIZE,
187-
"sb800_piix4_smb");
188-
if (!res) {
183+
if (!request_mem_region_muxed(SB800_PIIX4_FCH_PM_ADDR,
184+
SB800_PIIX4_FCH_PM_SIZE,
185+
"sb800_piix4_smb")) {
189186
dev_err(dev,
190187
"SMBus base address memory region 0x%x already in use.\n",
191188
SB800_PIIX4_FCH_PM_ADDR);
@@ -195,12 +192,12 @@ static int piix4_sb800_region_request(struct device *dev,
195192
addr = ioremap(SB800_PIIX4_FCH_PM_ADDR,
196193
SB800_PIIX4_FCH_PM_SIZE);
197194
if (!addr) {
198-
release_resource(res);
195+
release_mem_region(SB800_PIIX4_FCH_PM_ADDR,
196+
SB800_PIIX4_FCH_PM_SIZE);
199197
dev_err(dev, "SMBus base address mapping failed.\n");
200198
return -ENOMEM;
201199
}
202200

203-
mmio_cfg->res = res;
204201
mmio_cfg->addr = addr;
205202

206203
return 0;
@@ -222,7 +219,8 @@ static void piix4_sb800_region_release(struct device *dev,
222219
{
223220
if (mmio_cfg->use_mmio) {
224221
iounmap(mmio_cfg->addr);
225-
release_resource(mmio_cfg->res);
222+
release_mem_region(SB800_PIIX4_FCH_PM_ADDR,
223+
SB800_PIIX4_FCH_PM_SIZE);
226224
return;
227225
}
228226

0 commit comments

Comments
 (0)