lkml.org 
[lkml]   [2018]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 05/14] coresight: get/put module in coresight_build/release_path
    Date
    Increment the refcnt for driver modules in current use by calling
    module_get in coresight_build_path and module_put in release_path.

    This prevents driver modules from being unloaded when they are in use,
    either in sysfs or perf mode.

    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Signed-off-by: Kim Phillips <kim.phillips@arm.com>
    ---
    drivers/hwtracing/coresight/coresight.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c
    index 338f1719641c..1c941351f1d1 100644
    --- a/drivers/hwtracing/coresight/coresight.c
    +++ b/drivers/hwtracing/coresight/coresight.c
    @@ -465,6 +465,12 @@ static int _coresight_build_path(struct coresight_device *csdev,

    node->csdev = csdev;
    list_add(&node->link, path);
    +
    + if (!try_module_get(csdev->dev.parent->driver->owner)) {
    + dev_err(&csdev->dev, "could not get coresight driver module\n");
    + return -ENODEV;
    + }
    +
    pm_runtime_get_sync(csdev->dev.parent);

    return 0;
    @@ -510,6 +516,9 @@ void coresight_release_path(struct list_head *path)
    csdev = nd->csdev;

    pm_runtime_put_sync(csdev->dev.parent);
    +
    + module_put(csdev->dev.parent->driver->owner);
    +
    list_del(&nd->link);
    kfree(nd);
    }
    --
    2.17.0
    \
     
     \ /
      Last update: 2018-06-05 23:14    [W:2.300 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site