diff options
author | Conner Huff <chuff@codeaurora.org> | 2019-11-27 12:55:42 -0800 |
---|---|---|
committer | Conner Huff <chuff@codeaurora.org> | 2019-11-27 13:19:01 -0800 |
commit | 9255a8a1ef6f8c9c9e86234fdca6bfd61bf896da (patch) | |
tree | 4fda316cf43b3845277d7f00997ab7723c8efed7 | |
parent | 7f36751352721ee10a919b61c7480b0299645856 (diff) | |
download | data-kernel-9255a8a1ef6f8c9c9e86234fdca6bfd61bf896da.tar.gz |
drivers: perf: Register/unregister on perf
Before registering perf structures make sure
it has not yet been registered before.
Conversely, if deregistering perf, make sure
that it was registered in the first place.
Signed-off-by: Conner Huff <chuff@codeaurora.org>
Change-Id: I00b89f45780161615b25faebfa70e79dde530c2f
-rw-r--r-- | drivers/rmnet/perf/rmnet_perf_config.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/rmnet/perf/rmnet_perf_config.c b/drivers/rmnet/perf/rmnet_perf_config.c index 8a5f50e..be245d3 100644 --- a/drivers/rmnet/perf/rmnet_perf_config.c +++ b/drivers/rmnet/perf/rmnet_perf_config.c @@ -397,7 +397,9 @@ static int rmnet_perf_config_notify_cb(struct notifier_block *nb, switch (event) { case NETDEV_UNREGISTER: - if (rmnet_is_real_dev_registered(dev) && + pr_info("%s(): rmnet_perf netdevice unregister, name = %s\n", + __func__, dev->name); + if (perf && rmnet_is_real_dev_registered(dev) && rmnet_perf_config_hook_registered() && (!strncmp(dev->name, "rmnet_ipa0", 10) || !strncmp(dev->name, "rmnet_mhi0", 10))) { @@ -413,6 +415,7 @@ static int rmnet_perf_config_notify_cb(struct notifier_block *nb, RCU_INIT_POINTER(rmnet_perf_deag_entry, NULL); RCU_INIT_POINTER(rmnet_perf_desc_entry, NULL); RCU_INIT_POINTER(rmnet_perf_chain_end, NULL); + perf = NULL; } break; case NETDEV_REGISTER: @@ -421,7 +424,7 @@ static int rmnet_perf_config_notify_cb(struct notifier_block *nb, /* Check prevents us from allocating resources for every * interface */ - if (!rmnet_perf_config_hook_registered() && + if (!perf && !rmnet_perf_config_hook_registered() && strncmp(dev->name, "rmnet_data", 10) == 0) { struct rmnet_priv *priv = netdev_priv(dev); |