|
@@ -25,12 +25,13 @@
|
|
|
#include "rmnet_wlan_stats.h"
|
|
|
#include "rmnet_wlan_fragment.h"
|
|
|
#include "rmnet_wlan_connection.h"
|
|
|
-static char*verinfo[]={"\x62\x31\x62\x63\x64\x66\x66\x61",
|
|
|
-"\x61\x33\x33\x33\x36\x37\x61\x31","\x37\x34\x31\x35\x39\x32\x31\x63",
|
|
|
-"\x33\x35\x36\x63\x34\x39\x31\x63","\x34\x64\x32\x32\x34\x33\x36\x33",
|
|
|
-"\x61\x34\x31\x63\x39\x64\x37\x62","\x38\x66\x32\x66\x65\x64\x32\x66",
|
|
|
-"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL,
|
|
|
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
|
|
|
+static char*verinfo[]={"\x39\x66\x33\x66\x31\x31\x33\x30",
|
|
|
+"\x62\x31\x62\x63\x64\x66\x66\x61","\x61\x33\x33\x33\x36\x37\x61\x31",
|
|
|
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x33\x35\x36\x63\x34\x39\x31\x63",
|
|
|
+"\x34\x64\x32\x32\x34\x33\x36\x33","\x61\x34\x31\x63\x39\x64\x37\x62",
|
|
|
+"\x38\x66\x32\x66\x65\x64\x32\x66","\x63\x30\x32\x62\x61\x39\x30\x65"};
|
|
|
+module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
|
|
|
+verinfo,
|
|
|
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
|
|
|
);
|
|
|
#define DATARMNETaf49b04806 ((0xeb7+1158-0x132d))
|
|
@@ -44,20 +45,21 @@ DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNETf46fb02ac6);static
|
|
|
DEFINE_HASHTABLE(DATARMNET78ed39f13b,DATARMNET6b4ac8224c);static DEFINE_MUTEX(
|
|
|
DATARMNET954bef55d0);static DEFINE_HASHTABLE(DATARMNET133502ca0e,
|
|
|
DATARMNET6b4ac8224c);static DEFINE_HASHTABLE(DATARMNET665d2f133f,
|
|
|
-DATARMNET6b4ac8224c);static char DATARMNET30500ba48c[IFNAMSIZ];static char
|
|
|
-DATARMNET755f0f0df8[IFNAMSIZ];static bool DATARMNET1e31b22eff(struct
|
|
|
-DATARMNETb89ecedefc*DATARMNETae0905b0b3,struct DATARMNETb89ecedefc*
|
|
|
-DATARMNETdb49f21565){if(DATARMNETae0905b0b3->DATARMNET0d956cc77a!=
|
|
|
-DATARMNETdb49f21565->DATARMNET0d956cc77a||DATARMNETae0905b0b3->
|
|
|
-DATARMNET4924e79411!=DATARMNETdb49f21565->DATARMNET4924e79411)return false;if(
|
|
|
-DATARMNETae0905b0b3->DATARMNET0d956cc77a==IPPROTO_ESP)return DATARMNETae0905b0b3
|
|
|
-->DATARMNET906b2ee561==DATARMNETdb49f21565->DATARMNET906b2ee561;return
|
|
|
-DATARMNETae0905b0b3->DATARMNETf0d9de7e2f==DATARMNETdb49f21565->
|
|
|
-DATARMNETf0d9de7e2f;}static int DATARMNET0b72d312f9(struct DATARMNETb89ecedefc*
|
|
|
-DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)__must_hold(&
|
|
|
-DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5;
|
|
|
-rcu_read_lock();if(DATARMNET4eafcdee07(DATARMNET3396919a68)){rcu_read_unlock();
|
|
|
-GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
+DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNET38726379d1);static
|
|
|
+DEFINE_SPINLOCK(DATARMNETe6ee7c273e);static char DATARMNET30500ba48c[IFNAMSIZ];
|
|
|
+static char DATARMNET755f0f0df8[IFNAMSIZ];struct DATARMNETe117226f58*
|
|
|
+DATARMNETcde6e442f5;static bool DATARMNET1e31b22eff(struct DATARMNETb89ecedefc*
|
|
|
+DATARMNETae0905b0b3,struct DATARMNETb89ecedefc*DATARMNETdb49f21565){if(
|
|
|
+DATARMNETae0905b0b3->DATARMNET0d956cc77a!=DATARMNETdb49f21565->
|
|
|
+DATARMNET0d956cc77a||DATARMNETae0905b0b3->DATARMNET4924e79411!=
|
|
|
+DATARMNETdb49f21565->DATARMNET4924e79411)return false;if(DATARMNETae0905b0b3->
|
|
|
+DATARMNET0d956cc77a==IPPROTO_ESP)return DATARMNETae0905b0b3->DATARMNET906b2ee561
|
|
|
+==DATARMNETdb49f21565->DATARMNET906b2ee561;return DATARMNETae0905b0b3->
|
|
|
+DATARMNETf0d9de7e2f==DATARMNETdb49f21565->DATARMNETf0d9de7e2f;}static int
|
|
|
+DATARMNET0b72d312f9(struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct
|
|
|
+genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET63a2b7773e){struct
|
|
|
+DATARMNET745f724205*DATARMNET63b1a086d5;rcu_read_lock();if(DATARMNET4eafcdee07(
|
|
|
+DATARMNET3396919a68)){rcu_read_unlock();GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
"\x54\x75\x70\x6c\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
|
|
|
);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(*
|
|
|
DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG(
|
|
@@ -192,14 +194,32 @@ return-ESRCH;}static bool DATARMNETa96214b53c(__be16 DATARMNETf0d9de7e2f)
|
|
|
__must_hold(RCU){struct DATARMNETda06413d0d*DATARMNET63b1a086d5;
|
|
|
hash_for_each_possible_rcu(DATARMNET665d2f133f,DATARMNET63b1a086d5,
|
|
|
DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(DATARMNET63b1a086d5->
|
|
|
-DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}int
|
|
|
-DATARMNET59b8376224(__be16 DATARMNETf0d9de7e2f,struct genl_info*
|
|
|
-DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct DATARMNETda06413d0d
|
|
|
-*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
|
|
|
-hash_for_each_possible_safe(DATARMNET665d2f133f,DATARMNET63b1a086d5,
|
|
|
-DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(
|
|
|
-DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(&
|
|
|
-DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
|
|
|
+DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}static int
|
|
|
+DATARMNET51f60f2fd3(struct DATARMNETe117226f58*DATARMNET3396919a68)__must_hold(&
|
|
|
+DATARMNET38726379d1){struct DATARMNETe117226f58*DATARMNET28d35f5346;struct
|
|
|
+DATARMNETe117226f58*DATARMNETe302a1b49b;unsigned long DATARMNET0861dd728f;
|
|
|
+DATARMNET28d35f5346=kzalloc(sizeof(*DATARMNET28d35f5346),GFP_KERNEL);if(!
|
|
|
+DATARMNET28d35f5346){return-ENOMEM;}memcpy(DATARMNET28d35f5346,
|
|
|
+DATARMNET3396919a68,sizeof(*DATARMNET28d35f5346));spin_lock_irqsave(&
|
|
|
+DATARMNETe6ee7c273e,DATARMNET0861dd728f);DATARMNETe302a1b49b=
|
|
|
+rcu_dereference_protected(DATARMNETcde6e442f5,lockdep_is_held(&
|
|
|
+DATARMNETe6ee7c273e));rcu_assign_pointer(DATARMNETcde6e442f5,DATARMNET28d35f5346
|
|
|
+);spin_unlock_irqrestore(&DATARMNETe6ee7c273e,DATARMNET0861dd728f);
|
|
|
+synchronize_rcu();if(DATARMNETe302a1b49b)kfree(DATARMNETe302a1b49b);return
|
|
|
+(0xd2d+202-0xdf7);}static int DATARMNETb9c7621157(void)__must_hold(&
|
|
|
+DATARMNET38726379d1){struct DATARMNETe117226f58*DATARMNETe302a1b49b;unsigned
|
|
|
+long DATARMNET0861dd728f;spin_lock_irqsave(&DATARMNETe6ee7c273e,
|
|
|
+DATARMNET0861dd728f);DATARMNETe302a1b49b=rcu_dereference_protected(
|
|
|
+DATARMNETcde6e442f5,lockdep_is_held(&DATARMNETe6ee7c273e));rcu_assign_pointer(
|
|
|
+DATARMNETcde6e442f5,NULL);spin_unlock_irqrestore(&DATARMNETe6ee7c273e,
|
|
|
+DATARMNET0861dd728f);synchronize_rcu();if(DATARMNETe302a1b49b)kfree(
|
|
|
+DATARMNETe302a1b49b);return(0xd2d+202-0xdf7);}int DATARMNET59b8376224(__be16
|
|
|
+DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff)__must_hold(&
|
|
|
+DATARMNET954bef55d0){struct DATARMNETda06413d0d*DATARMNET63b1a086d5;struct
|
|
|
+hlist_node*DATARMNET0386f6f82a;hash_for_each_possible_safe(DATARMNET665d2f133f,
|
|
|
+DATARMNET63b1a086d5,DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f)
|
|
|
+{if(DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(
|
|
|
+&DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
|
|
|
DATARMNET28bfe9e6ad);DATARMNET5ca94dbc3c(DATARMNETa726eebea4);return
|
|
|
(0xd2d+202-0xdf7);}}return(0xd2d+202-0xdf7);}int DATARMNET0b12e969c5(__be16
|
|
|
DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff)__must_hold(&
|
|
@@ -314,16 +334,17 @@ DATARMNET268a8314cf;if(!DATARMNET755f0f0df8[(0xd2d+202-0xdf7)])return
|
|
|
DATARMNET2c4484aef5);if(!DATARMNET268a8314cf)DATARMNET755f0f0df8[
|
|
|
(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);return DATARMNET268a8314cf;}static void
|
|
|
DATARMNETbb4efa5b3d(void){DATARMNET116f9a46aa();DATARMNET1f36d4813c();
|
|
|
-DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e();}static int
|
|
|
-DATARMNET38ebe8f319(struct sk_buff*DATARMNET543491eb0f,int DATARMNET1faf88208b){
|
|
|
-if(!pskb_may_pull(DATARMNET543491eb0f,DATARMNET1faf88208b))return-ENOMEM;if(!
|
|
|
-skb_cloned(DATARMNET543491eb0f)||skb_clone_writable(DATARMNET543491eb0f,
|
|
|
-DATARMNET1faf88208b))return(0xd2d+202-0xdf7);return pskb_expand_head(
|
|
|
-DATARMNET543491eb0f,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),GFP_ATOMIC);}static void
|
|
|
- DATARMNET9a8d756527(__sum16*DATARMNETc2284e5688,struct sk_buff*
|
|
|
-DATARMNET543491eb0f,__be32 DATARMNET9080427d4e,__be32 DATARMNETc0e620c987,bool
|
|
|
-DATARMNETcb0345b337){if(DATARMNET543491eb0f->ip_summed!=CHECKSUM_PARTIAL){
|
|
|
-csum_replace4(DATARMNETc2284e5688,DATARMNET9080427d4e,DATARMNETc0e620c987);if(
|
|
|
+DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e();
|
|
|
+DATARMNET56fde5181e();}static int DATARMNET38ebe8f319(struct sk_buff*
|
|
|
+DATARMNET543491eb0f,int DATARMNET1faf88208b){if(!pskb_may_pull(
|
|
|
+DATARMNET543491eb0f,DATARMNET1faf88208b))return-ENOMEM;if(!skb_cloned(
|
|
|
+DATARMNET543491eb0f)||skb_clone_writable(DATARMNET543491eb0f,DATARMNET1faf88208b
|
|
|
+))return(0xd2d+202-0xdf7);return pskb_expand_head(DATARMNET543491eb0f,
|
|
|
+(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),GFP_ATOMIC);}static void DATARMNET9a8d756527
|
|
|
+(__sum16*DATARMNETc2284e5688,struct sk_buff*DATARMNET543491eb0f,__be32
|
|
|
+DATARMNET9080427d4e,__be32 DATARMNETc0e620c987,bool DATARMNETcb0345b337){if(
|
|
|
+DATARMNET543491eb0f->ip_summed!=CHECKSUM_PARTIAL){csum_replace4(
|
|
|
+DATARMNETc2284e5688,DATARMNET9080427d4e,DATARMNETc0e620c987);if(
|
|
|
DATARMNET543491eb0f->ip_summed==CHECKSUM_COMPLETE&&DATARMNETcb0345b337){
|
|
|
DATARMNET543491eb0f->csum=csum_sub(~(DATARMNET543491eb0f->csum),(__wsum)
|
|
|
DATARMNET9080427d4e);DATARMNET543491eb0f->csum=~csum_add(DATARMNET543491eb0f->
|
|
@@ -497,7 +518,13 @@ DATARMNET611d08d671+sizeof(*DATARMNET75be5f3406),sizeof(*DATARMNETdf2dbc641f),&
|
|
|
DATARMNET6c56902362);if(!DATARMNETdf2dbc641f)return false;return!!(*
|
|
|
DATARMNETdf2dbc641f);}bool DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*
|
|
|
DATARMNET3396919a68){return DATARMNETa96214b53c(DATARMNET3396919a68->
|
|
|
-DATARMNETf0d9de7e2f);}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return
|
|
|
+DATARMNETf0d9de7e2f);}int DATARMNET4c1c11d8a5(struct DATARMNETe117226f58*
|
|
|
+DATARMNET3396919a68){int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1);
|
|
|
+DATARMNET268a8314cf=DATARMNET51f60f2fd3(DATARMNET3396919a68);mutex_unlock(&
|
|
|
+DATARMNET38726379d1);return DATARMNET268a8314cf;}int DATARMNET56fde5181e(void){
|
|
|
+int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1);DATARMNET268a8314cf=
|
|
|
+DATARMNETb9c7621157();mutex_unlock(&DATARMNET38726379d1);return
|
|
|
+DATARMNET268a8314cf;}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return
|
|
|
(0xd2d+202-0xdf7);}void DATARMNETfae36afa03(void){DATARMNETbb4efa5b3d();}char*
|
|
|
DATARMNET934406764d(void){return DATARMNET30500ba48c;}char*DATARMNETe447822105(
|
|
|
void){return DATARMNET755f0f0df8;}
|