summaryrefslogtreecommitdiff
path: root/drivers/rmnet/shs/rmnet_shs_wq.c
diff options
context:
space:
mode:
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>2019-09-26 11:57:08 -0700
committerSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>2019-10-01 10:23:57 -0700
commitc614b36db9e0ad44bee743cd73d5e88f2a983243 (patch)
tree93c0fa8b6570651724b4a69d5251e8bfe975ce38 /drivers/rmnet/shs/rmnet_shs_wq.c
parent7d824227d4cb1c0cc433c8d78bfe5d07a33e9bc6 (diff)
downloaddata-kernel-c614b36db9e0ad44bee743cd73d5e88f2a983243.tar.gz
drivers: rmnet_shs: Change rmnet_port init
Rmnet_port was being collected previously from the first saved instance of a phy_dev into a temporary variable. This could cause issue if the phy_dev was incorrectly made. This change causes the phy_dev to be collected at the time of initialization when the 1st rmnet is brought up. <6> Unable to handle kernel paging request at virtual address 6b6b6b6b6b6b6b <6> Mem abort info: <6> Exception class = DABT (current EL), IL = 32 bits <6> SET = 0, FnV = 0 <6> EA = 0, S1PTW = 0 <6> FSC = 4 <6> Data abort info: <6> ISV = 0, ISS = 0x00000004 <6> CM = 0, WnR = 0 <6> [006b6b6b6b6b6b6b] address between user and kernel address ranges <6> Internal error: Oops: 96000004 [#1] PREEMPT SMP <2> Call trace: <2> rmnet_map_dl_ind_deregister+0x3c/0x84 <2> rmnet_shs_exit+0x40/0x74 [rmnet_shs] <2> rmnet_shs_dev_notify_cb+0x100/0x48c [rmnet_shs] <2> notifier_call_chain+0x8c/0xd0 <2> raw_notifier_call_chain+0x38/0x48 <2> call_netdevice_notifiers_info+0x40/0x70 <2> __dev_close_many+0x64/0x108 <2> dev_close_many+0x88/0x138 <2> rollback_registered_many+0x138/0x434 <2> rollback_registered+0x5c/0xa0 <2> unregister_netdevice_queue+0x94/0xac <2> unregister_netdev+0x24/0x34 Change-Id: Idc2b3059cbcb9c1ccb1091c630d27bdcdc0e894d Acked-by: Raul Martinez <mraul@qti.qualcomm.com> Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org
Diffstat (limited to 'drivers/rmnet/shs/rmnet_shs_wq.c')
-rw-r--r--drivers/rmnet/shs/rmnet_shs_wq.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/rmnet/shs/rmnet_shs_wq.c b/drivers/rmnet/shs/rmnet_shs_wq.c
index 19a78c9..31bcaca 100644
--- a/drivers/rmnet/shs/rmnet_shs_wq.c
+++ b/drivers/rmnet/shs/rmnet_shs_wq.c
@@ -1258,7 +1258,13 @@ void rmnet_shs_wq_update_ep_rps_msk(struct rmnet_shs_wq_ep_s *ep)
}
rcu_read_lock();
+ if (!ep->ep || !ep->ep->egress_dev) {
+ pr_info(" rmnet_shs invalid state %p", ep->ep);
+ rmnet_shs_crit_err[RMNET_SHS_WQ_EP_ACCESS_ERR]++;
+ return;
+ }
map = rcu_dereference(ep->ep->egress_dev->_rx->rps_map);
+
ep->rps_config_msk = 0;
if (map != NULL) {
for (len = 0; len < map->len; len++)