lkml.org 
[lkml]   [2023]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/21] driver core: bus: bus_register/unregister_notifier() cleanups
    Date
    Convert the bus_register_notifier() and bus_unregister_notifier() public
    functions to use bus_to_subsys() and not use the back-pointer to the
    private structure as well as the bus_notify() function.

    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/base/bus.c | 28 +++++++++++++++++++++++-----
    1 file changed, 23 insertions(+), 5 deletions(-)

    diff --git a/drivers/base/bus.c b/drivers/base/bus.c
    index 90627c68d02b..f23c6f6306e2 100644
    --- a/drivers/base/bus.c
    +++ b/drivers/base/bus.c
    @@ -936,22 +936,40 @@ EXPORT_SYMBOL_GPL(bus_unregister);

    int bus_register_notifier(struct bus_type *bus, struct notifier_block *nb)
    {
    - return blocking_notifier_chain_register(&bus->p->bus_notifier, nb);
    + struct subsys_private *sp = bus_to_subsys(bus);
    + int retval;
    +
    + if (!sp)
    + return -EINVAL;
    +
    + retval = blocking_notifier_chain_register(&sp->bus_notifier, nb);
    + subsys_put(sp);
    + return retval;
    }
    EXPORT_SYMBOL_GPL(bus_register_notifier);

    int bus_unregister_notifier(struct bus_type *bus, struct notifier_block *nb)
    {
    - return blocking_notifier_chain_unregister(&bus->p->bus_notifier, nb);
    + struct subsys_private *sp = bus_to_subsys(bus);
    + int retval;
    +
    + if (!sp)
    + return -EINVAL;
    + retval = blocking_notifier_chain_unregister(&sp->bus_notifier, nb);
    + subsys_put(sp);
    + return retval;
    }
    EXPORT_SYMBOL_GPL(bus_unregister_notifier);

    void bus_notify(struct device *dev, enum bus_notifier_event value)
    {
    - struct bus_type *bus = dev->bus;
    + struct subsys_private *sp = bus_to_subsys(dev->bus);

    - if (bus)
    - blocking_notifier_call_chain(&bus->p->bus_notifier, value, dev);
    + if (!sp)
    + return;
    +
    + blocking_notifier_call_chain(&sp->bus_notifier, value, dev);
    + subsys_put(sp);
    }

    struct kset *bus_get_kset(struct bus_type *bus)
    --
    2.39.1
    \
     
     \ /
      Last update: 2023-03-27 00:14    [W:4.048 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site