Skip to content

Commit aa3294f

Browse files
committed
Merge tag 'apple-soc-drivers-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux into soc/drivers-late
Apple SoC driver updates for 6.18 Two small fixes: - mailbox: Stop leaking a reference to the mbox platform device during lookup - sart: drop device reference after lookup since it's no longer used afterwards Signed-off-by: Sven Peter <sven@kernel.org> * tag 'apple-soc-drivers-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux: soc: apple: sart: drop device reference after lookup soc: apple: mailbox: fix device leak on lookup Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2 parents 16cc398 + f95f3bc commit aa3294f

2 files changed

Lines changed: 13 additions & 15 deletions

File tree

drivers/soc/apple/mailbox.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,11 +302,18 @@ struct apple_mbox *apple_mbox_get(struct device *dev, int index)
302302
return ERR_PTR(-EPROBE_DEFER);
303303

304304
mbox = platform_get_drvdata(pdev);
305-
if (!mbox)
306-
return ERR_PTR(-EPROBE_DEFER);
305+
if (!mbox) {
306+
mbox = ERR_PTR(-EPROBE_DEFER);
307+
goto out_put_pdev;
308+
}
309+
310+
if (!device_link_add(dev, &pdev->dev, DL_FLAG_AUTOREMOVE_CONSUMER)) {
311+
mbox = ERR_PTR(-ENODEV);
312+
goto out_put_pdev;
313+
}
307314

308-
if (!device_link_add(dev, &pdev->dev, DL_FLAG_AUTOREMOVE_CONSUMER))
309-
return ERR_PTR(-ENODEV);
315+
out_put_pdev:
316+
put_device(&pdev->dev);
310317

311318
return mbox;
312319
}

drivers/soc/apple/sart.c

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,11 @@ static int apple_sart_probe(struct platform_device *pdev)
214214
return 0;
215215
}
216216

217-
static void apple_sart_put_device(void *dev)
218-
{
219-
put_device(dev);
220-
}
221-
222217
struct apple_sart *devm_apple_sart_get(struct device *dev)
223218
{
224219
struct device_node *sart_node;
225220
struct platform_device *sart_pdev;
226221
struct apple_sart *sart;
227-
int ret;
228222

229223
sart_node = of_parse_phandle(dev->of_node, "apple,sart", 0);
230224
if (!sart_node)
@@ -242,14 +236,11 @@ struct apple_sart *devm_apple_sart_get(struct device *dev)
242236
return ERR_PTR(-EPROBE_DEFER);
243237
}
244238

245-
ret = devm_add_action_or_reset(dev, apple_sart_put_device,
246-
&sart_pdev->dev);
247-
if (ret)
248-
return ERR_PTR(ret);
249-
250239
device_link_add(dev, &sart_pdev->dev,
251240
DL_FLAG_PM_RUNTIME | DL_FLAG_AUTOREMOVE_SUPPLIER);
252241

242+
put_device(&sart_pdev->dev);
243+
253244
return sart;
254245
}
255246
EXPORT_SYMBOL_GPL(devm_apple_sart_get);

0 commit comments

Comments
 (0)