summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConner Huff <chuff@codeaurora.org>2019-11-27 12:55:42 -0800
committerConner Huff <chuff@codeaurora.org>2019-11-27 13:19:01 -0800
commit9255a8a1ef6f8c9c9e86234fdca6bfd61bf896da (patch)
tree4fda316cf43b3845277d7f00997ab7723c8efed7
parent7f36751352721ee10a919b61c7480b0299645856 (diff)
downloaddata-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.c7
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);