- Bug Fixes
- Fix double free; core - Handle Device Tree's disabled devices gracefully; core -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAl9Ixb0ACgkQUa+KL4f8 d2EN7g//eT9VOLI3tlPJOSLlyNh1xnLrk1q49cvQ7tI3Ds3eReBY1H7YjfdeQFIk oNsIUx+tKOaqyg+WcUMGYoCe6DMnAa2DK1JB6m6I26O/JWTQY4exic7M2ET8pFYO LADfEBPrVT9rx3WkiHnwTreODIyhX5P4wNVO55GMetMfmuT3y/24IfGBcH6iWuA8 0OuIjo7JUqUfDu3inypJimYSTmV5PhB3X0+CzM/17v1MJ2A+8IL8/RQ8xIwhLHnP wreSEhEZ32H3gL8IxcH0cLYLJrfPm5cWbgf9Bumq4NgwtTwmpgWO5MQRklG2+cIx YjVVp1Riem5Fzl/RF2+S2XSDBxSDZX4jZj/m6/G4cPwb1ICoP4xYBtxFDlhLIH10 BTiw+aoTkx0YhRNe5oytIFZjtyot4NJflblAzS+gCMQCanHBqFlwG9scV4PP1ZHx aaJ3zAdG2cKf4jGn0dYx6ElMehBZU7AHK73vf69yhWG28nNxsB3I26h1sTYj1dw1 MbKRucbdrq1BlxXpMY1mSyXgC1lEDrLmtQStaRAmDWhKI6QCIqgjCEGuPoZ9MzHy iLHEzsAeRq/vVG28g9hBerEK0olUYJVaSPU+pUhIf8ppoDcGLzk6qnOne+SL41At GYoWhRyYis9Ls58RcVksdQBq+dpHb5AbxHop8cpTNQIWvm0ss2c= =HjKd -----END PGP SIGNATURE----- Merge tag 'mfd-fixes-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd Pull MFD fixes from Lee Jones: - fix double free - handle devicetree disabled devices gracefully * tag 'mfd-fixes-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: mfd: mfd-core: Ensure disabled devices are ignored without error mfd: core: Fix double-free in mfd_remove_devices_fn()
This commit is contained in:
commit
3a7c327767
|
@ -126,10 +126,6 @@ static int mfd_match_of_node_to_dev(struct platform_device *pdev,
|
|||
const __be32 *reg;
|
||||
u64 of_node_addr;
|
||||
|
||||
/* Skip devices 'disabled' by Device Tree */
|
||||
if (!of_device_is_available(np))
|
||||
return -ENODEV;
|
||||
|
||||
/* Skip if OF node has previously been allocated to a device */
|
||||
list_for_each_entry(of_entry, &mfd_of_node_list, list)
|
||||
if (of_entry->np == np)
|
||||
|
@ -212,6 +208,12 @@ static int mfd_add_device(struct device *parent, int id,
|
|||
if (IS_ENABLED(CONFIG_OF) && parent->of_node && cell->of_compatible) {
|
||||
for_each_child_of_node(parent->of_node, np) {
|
||||
if (of_device_is_compatible(np, cell->of_compatible)) {
|
||||
/* Ignore 'disabled' devices error free */
|
||||
if (!of_device_is_available(np)) {
|
||||
ret = 0;
|
||||
goto fail_alias;
|
||||
}
|
||||
|
||||
ret = mfd_match_of_node_to_dev(pdev, np, cell);
|
||||
if (ret == -EAGAIN)
|
||||
continue;
|
||||
|
@ -370,8 +372,6 @@ static int mfd_remove_devices_fn(struct device *dev, void *data)
|
|||
regulator_bulk_unregister_supply_alias(dev, cell->parent_supplies,
|
||||
cell->num_parent_supplies);
|
||||
|
||||
kfree(cell);
|
||||
|
||||
platform_device_unregister(pdev);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue