diff --git a/kernel/time/timer.c b/kernel/time/timer.c index d111adf4a0cb..9c68832163f4 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -636,6 +636,7 @@ static bool timer_fixup_init(void *addr, enum debug_obj_state state) switch (state) { case ODEBUG_STATE_ACTIVE: + pr_info("DC %s: del_timer_sync: %p\n", __func__, timer); del_timer_sync(timer); debug_object_init(timer, &timer_debug_descr); return true; diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 9e14ae02306b..88553311ec3a 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -585,7 +585,7 @@ __debug_object_init(void *addr, const struct debug_obj_descr *descr, int onstack case ODEBUG_STATE_ACTIVE: state = obj->state; raw_spin_unlock_irqrestore(&db->lock, flags); - debug_print_object(obj, "init"); + //debug_print_object(obj, "init"); debug_object_fixup(descr->fixup_init, addr, state); return; diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index cf20316094d0..c63bc4fdc2f3 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c @@ -1560,6 +1560,10 @@ void arpt_unregister_table_pre_exit(struct net *net, const char *name, const struct nf_hook_ops *ops) { struct xt_table *table = xt_find_table(net, NFPROTO_ARP, name); + pr_info("DC %s: name: %s\n", __func__, name); + + if (strcmp(name, "filter") == 0) + return; if (table) nf_unregister_net_hooks(net, ops, hweight32(table->valid_hooks)); diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 7a99892e5aba..bf8fae3127c2 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -154,6 +154,7 @@ static int ieee80211_change_iface(struct wiphy *wiphy, struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); int ret; + pr_info("DC %s: type: %d\n", __func__, type); ret = ieee80211_if_change_type(sdata, type); if (ret) return ret; diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c index a7ac53a2f00d..c83e93f1bc45 100644 --- a/net/mac80211/ibss.c +++ b/net/mac80211/ibss.c @@ -1731,6 +1731,7 @@ void ieee80211_ibss_setup_sdata(struct ieee80211_sub_if_data *sdata) { struct ieee80211_if_ibss *ifibss = &sdata->u.ibss; + pr_info("DC %s: timer_setup: %p\n", __func__, &ifibss->timer); timer_setup(&ifibss->timer, ieee80211_ibss_timer, 0); INIT_LIST_HEAD(&ifibss->incomplete_stations); spin_lock_init(&ifibss->incomplete_lock); @@ -1886,6 +1887,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata) skb_queue_purge(&sdata->skb_queue); del_timer_sync(&sdata->u.ibss.timer); + pr_info("DC %s: del_timer_sync: %p\n", __func__, &sdata->u.ibss.timer); return 0; } diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 7032a2b59249..9fde78f4d0bb 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -1494,6 +1494,7 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata, /* clear type-dependent union */ memset(&sdata->u, 0, sizeof(sdata->u)); + pr_info("DC %s: type:(%d) memset(sdata->u): %p\n", __func__, type, &sdata->u); /* and set some type-dependent values */ sdata->vif.type = type; @@ -1655,6 +1656,7 @@ static int ieee80211_runtime_change_iftype(struct ieee80211_sub_if_data *sdata, */ ieee80211_check_queues(sdata, type); + pr_info("DC %s: calling ieee80211_setup_sdata\n", __func__); ieee80211_setup_sdata(sdata, type); ieee80211_set_vif_encap_ops(sdata); @@ -1683,6 +1685,7 @@ int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata, } else { /* Purge and reset type-dependent state. */ ieee80211_teardown_sdata(sdata); + pr_info("DC %s: calling ieee80211_setup_sdata\n", __func__); ieee80211_setup_sdata(sdata, type); } @@ -1972,6 +1975,7 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name, sdata->encrypt_headroom = IEEE80211_ENCRYPT_HEADROOM; /* setup type-dependent data */ + pr_info("DC %s: calling ieee80211_setup_sdata\n", __func__); ieee80211_setup_sdata(sdata, type); if (ndev) { diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index 97095b7c9c64..15c7e12b3d5c 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c @@ -1091,6 +1091,7 @@ void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata) local->total_ps_buffered -= skb_queue_len(&ifmsh->ps.bc_buf); skb_queue_purge(&ifmsh->ps.bc_buf); + pr_info("DC %s: del_timer_sync housekeeping_timer: %p\n", __func__, &sdata->u.mesh.housekeeping_timer); del_timer_sync(&sdata->u.mesh.housekeeping_timer); del_timer_sync(&sdata->u.mesh.mesh_path_root_timer); del_timer_sync(&sdata->u.mesh.mesh_path_timer); @@ -1605,6 +1606,7 @@ void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata) struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; static u8 zero_addr[ETH_ALEN] = {}; + pr_info("DC %s: timer_setup housekeeping: %p\n", __func__, &ifmsh->housekeeping_timer); timer_setup(&ifmsh->housekeeping_timer, ieee80211_mesh_housekeeping_timer, 0); diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 2480bd0577bb..2667a131f76e 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -2456,6 +2456,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, del_timer_sync(&sdata->u.mgd.conn_mon_timer); del_timer_sync(&sdata->u.mgd.bcn_mon_timer); + pr_info("DC %s: del_timer_sync: %p\n", __func__, &sdata->u.mgd.timer); del_timer_sync(&sdata->u.mgd.timer); del_timer_sync(&sdata->u.mgd.chswitch_timer); @@ -2895,6 +2896,7 @@ static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata, * running is the timeout for the authentication response which * which is not relevant anymore. */ + pr_info("DC %s: del_timer_sync: %p\n", __func__, &sdata->u.mgd.timer); del_timer_sync(&sdata->u.mgd.timer); sta_info_destroy_addr(sdata, auth_data->bss->bssid); @@ -2924,6 +2926,7 @@ static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata, * running is the timeout for the association response which * which is not relevant anymore. */ + pr_info("DC %s: del_timer_sync: %p\n", __func__, &sdata->u.mgd.timer); del_timer_sync(&sdata->u.mgd.timer); sta_info_destroy_addr(sdata, assoc_data->bss->bssid); @@ -4381,6 +4384,8 @@ static void ieee80211_sta_timer(struct timer_list *t) struct ieee80211_sub_if_data *sdata = from_timer(sdata, t, u.mgd.timer); + pr_info("DC %s: sta_timer\n", __func__); + ieee80211_queue_work(&sdata->local->hw, &sdata->work); } @@ -4842,6 +4847,7 @@ void ieee80211_sta_setup_sdata(struct ieee80211_sub_if_data *sdata) INIT_WORK(&ifmgd->request_smps_work, ieee80211_request_smps_mgd_work); INIT_DELAYED_WORK(&ifmgd->tdls_peer_del_work, ieee80211_tdls_peer_del_work); + pr_info("DC %s: timer_setup: %p\n", __func__, &ifmgd->timer); timer_setup(&ifmgd->timer, ieee80211_sta_timer, 0); timer_setup(&ifmgd->bcn_mon_timer, ieee80211_sta_bcn_mon_timer, 0); timer_setup(&ifmgd->conn_mon_timer, ieee80211_sta_conn_mon_timer, 0); @@ -5969,6 +5975,7 @@ void ieee80211_mgd_stop(struct ieee80211_sub_if_data *sdata) ifmgd->assoc_req_ies = NULL; ifmgd->assoc_req_ies_len = 0; spin_unlock_bh(&ifmgd->teardown_lock); + pr_info("DC %s: del_timer_sync: %p\n", __func__, &ifmgd->timer); del_timer_sync(&ifmgd->timer); sdata_unlock(sdata); } diff --git a/net/mac80211/ocb.c b/net/mac80211/ocb.c index 7c1a735b9eee..b62de86381bf 100644 --- a/net/mac80211/ocb.c +++ b/net/mac80211/ocb.c @@ -163,6 +163,7 @@ void ieee80211_ocb_setup_sdata(struct ieee80211_sub_if_data *sdata) { struct ieee80211_if_ocb *ifocb = &sdata->u.ocb; + pr_info("DC %s: timer_setup housekeeping: %p\n", __func__, &ifocb->housekeeping_timer); timer_setup(&ifocb->housekeeping_timer, ieee80211_ocb_housekeeping_timer, 0); INIT_LIST_HEAD(&ifocb->incomplete_stations); @@ -233,6 +234,7 @@ int ieee80211_ocb_leave(struct ieee80211_sub_if_data *sdata) skb_queue_purge(&sdata->skb_queue); + pr_info("DC %s: del_timer_sync: %p\n", __func__, &sdata->u.ocb.housekeeping_timer); del_timer_sync(&sdata->u.ocb.housekeeping_timer); /* If the timer fired while we waited for it, it will have * requeued the work. Now the work will be running again diff --git a/net/netfilter/core.c b/net/netfilter/core.c index 63d032191e62..0eb280ad1c1f 100644 --- a/net/netfilter/core.c +++ b/net/netfilter/core.c @@ -477,7 +477,7 @@ static void __nf_unregister_net_hook(struct net *net, int pf, #endif nf_static_key_dec(reg, pf); } else { - WARN_ONCE(1, "hook not found, pf %d num %d", pf, reg->hooknum); + WARN_ONCE(1, "hook not found, pf %d num %d, device name:%s", pf, reg->hooknum, reg->dev->name); } p = __nf_hook_entries_try_shrink(p, pp); diff --git a/net/wireless/ibss.c b/net/wireless/ibss.c index 8f98e546becf..0730ffd92f1d 100644 --- a/net/wireless/ibss.c +++ b/net/wireless/ibss.c @@ -162,8 +162,10 @@ static void __cfg80211_clear_ibss(struct net_device *dev, bool nowext) ASSERT_WDEV_LOCK(wdev); - kfree_sensitive(wdev->connect_keys); - wdev->connect_keys = NULL; + if(wdev->connect_keys) { + kfree_sensitive(wdev->connect_keys); + wdev->connect_keys = NULL; + } rdev_set_qos_map(rdev, dev, NULL); @@ -207,9 +209,6 @@ int __cfg80211_leave_ibss(struct cfg80211_registered_device *rdev, ASSERT_WDEV_LOCK(wdev); - if (!wdev->ssid_len) - return -ENOLINK; - err = rdev_leave_ibss(rdev, dev); if (err) diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 3aa69b375a10..c1354e245160 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c @@ -362,12 +362,14 @@ int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, }; ASSERT_WDEV_LOCK(wdev); + pr_info("DC %s: \n", __func__); if (local_state_change && (!wdev->current_bss || !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) return 0; + pr_info("DC %s: A\n", __func__); if (ether_addr_equal(wdev->disconnect_bssid, bssid) || (wdev->current_bss && ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) @@ -415,15 +417,17 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev = dev->ieee80211_ptr; u8 bssid[ETH_ALEN]; + pr_info("DC %s: \n", __func__); ASSERT_WDEV_LOCK(wdev); if (!rdev->ops->deauth) return; - if (!wdev->current_bss) - return; + pr_info("DC %s: A\n", __func__); + if (wdev->current_bss) + memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); - memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); + pr_info("DC %s: B\n", __func__); cfg80211_mlme_deauth(rdev, dev, bssid, NULL, 0, WLAN_REASON_DEAUTH_LEAVING, false); } diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index fc9286afe3c9..60f16f1f2b12 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -11072,6 +11072,7 @@ static int nl80211_wiphy_netns(struct sk_buff *skb, struct genl_info *info) if (!net_eq(wiphy_net(&rdev->wiphy), net)) err = cfg80211_switch_netns(rdev, net); + pr_info("DC %s: put_net\n", __func__); put_net(net); return err; } diff --git a/net/wireless/ocb.c b/net/wireless/ocb.c index 2d26a6d980bf..fe677f974d13 100644 --- a/net/wireless/ocb.c +++ b/net/wireless/ocb.c @@ -67,6 +67,7 @@ int __cfg80211_leave_ocb(struct cfg80211_registered_device *rdev, if (!rdev->ops->leave_ocb) return -EOPNOTSUPP; + pr_info("DC %s:\n", __func__); err = rdev_leave_ocb(rdev, dev); if (!err) memset(&wdev->chandef, 0, sizeof(wdev->chandef)); @@ -80,6 +81,7 @@ int cfg80211_leave_ocb(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev = dev->ieee80211_ptr; int err; + pr_info("DC %s:\n", __func__); wdev_lock(wdev); err = __cfg80211_leave_ocb(rdev, dev); wdev_unlock(wdev); diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h index 8b1358d04ca2..91a50986ca00 100644 --- a/net/wireless/rdev-ops.h +++ b/net/wireless/rdev-ops.h @@ -379,6 +379,7 @@ static inline int rdev_leave_ocb(struct cfg80211_registered_device *rdev, { int ret; trace_rdev_leave_ocb(&rdev->wiphy, dev); + pr_info("DC %s:\n", __func__); ret = rdev->ops->leave_ocb(&rdev->wiphy, dev); trace_rdev_return_int(&rdev->wiphy, ret); return ret; @@ -477,6 +478,7 @@ static inline int rdev_deauth(struct cfg80211_registered_device *rdev, { int ret; trace_rdev_deauth(&rdev->wiphy, dev, req); + pr_info("DC %s: ops->deauth \n", __func__); ret = rdev->ops->deauth(&rdev->wiphy, dev, req); trace_rdev_return_int(&rdev->wiphy, ret); return ret; diff --git a/net/wireless/util.c b/net/wireless/util.c index 382c5262d997..71920af9a980 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c @@ -1033,6 +1033,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, return -EBUSY; if (ntype != otype) { + pr_info("DC %s: from otype(%d) to ntype(%d)\n", __func__, otype, ntype); dev->ieee80211_ptr->use_4addr = false; dev->ieee80211_ptr->mesh_id_up_len = 0; wdev_lock(dev->ieee80211_ptr); @@ -1044,6 +1045,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, cfg80211_stop_ap(rdev, dev, true); break; case NL80211_IFTYPE_ADHOC: + pr_info("DC %s: cfg80211_leave_ibss\n", __func__); cfg80211_leave_ibss(rdev, dev, false); break; case NL80211_IFTYPE_STATION: @@ -1055,6 +1057,12 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, break; case NL80211_IFTYPE_MESH_POINT: /* mesh should be handled? */ + pr_info("DC %s: cfg80211_leave_mesh\n", __func__); + cfg80211_leave_mesh(rdev, dev); + break; + case NL80211_IFTYPE_OCB: + pr_info("DC %s: cfg80211_leave_ocb\n", __func__); + cfg80211_leave_ocb(rdev, dev); break; default: break;