diff --git a/wlan/rmnet_wlan_connection.c b/wlan/rmnet_wlan_connection.c index a1f199ba69..4301dbc83c 100644 --- a/wlan/rmnet_wlan_connection.c +++ b/wlan/rmnet_wlan_connection.c @@ -44,53 +44,34 @@ spin_lock_irqsave(&DATARMNET820642743b,DATARMNETfb0677cc3c);DATARMNET63b1a086d5= container_of(DATARMNET6e4292679f,struct DATARMNET4f49486833,DATARMNET9f31ce5d2d) ;hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu( DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);spin_unlock_irqrestore(& -DATARMNET820642743b,DATARMNETfb0677cc3c);return HRTIMER_NORESTART;}static void -DATARMNETdc14b61acf(struct neighbour*DATARMNET3f85732c70){struct net_device*dev= -DATARMNET3f85732c70->dev;__be16 DATARMNETa8d8445982=DATARMNET3f85732c70->tbl-> -protocol;struct hh_cache*hh=&DATARMNET3f85732c70->hh;write_lock_bh(& -DATARMNET3f85732c70->lock);if(!hh->hh_len)dev->header_ops->cache( -DATARMNET3f85732c70,hh,DATARMNETa8d8445982);write_unlock_bh(&DATARMNET3f85732c70 -->lock);}static int DATARMNETe8a509e677(struct neighbour*neigh,struct sk_buff* -DATARMNET543491eb0f){int DATARMNETb14e52a504=(0xd2d+202-0xdf7);if(! -neigh_event_send(neigh,DATARMNET543491eb0f)){struct net_device*dev=neigh->dev; -unsigned int DATARMNET534037f2b6;int DATARMNET268a8314cf;if(dev->header_ops-> -cache&&!READ_ONCE(neigh->hh.hh_len))DATARMNETdc14b61acf(neigh);do{__skb_pull( -DATARMNET543491eb0f,skb_network_offset(DATARMNET543491eb0f));DATARMNET534037f2b6 -=read_seqbegin(&neigh->ha_lock);DATARMNET268a8314cf=dev_hard_header( -DATARMNET543491eb0f,dev,ntohs(DATARMNET543491eb0f->protocol),neigh->ha,NULL, -DATARMNET543491eb0f->len);}while(read_seqretry(&neigh->ha_lock, -DATARMNET534037f2b6));if(DATARMNET268a8314cf>=(0xd2d+202-0xdf7)) -DATARMNETb14e52a504=dev_queue_xmit(DATARMNET543491eb0f);else goto -DATARMNET99f6eb6559;}DATARMNETbf4095f79e:return DATARMNETb14e52a504; -DATARMNET99f6eb6559:DATARMNETb14e52a504=-EINVAL;kfree_skb(DATARMNET543491eb0f); -DATARMNET17f6bc1be5(DATARMNET64aecaa865);DATARMNET17f6bc1be5(DATARMNET729e252fb9 -);goto DATARMNETbf4095f79e;}static rx_handler_result_t DATARMNETc9ed97754a( -struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->dev&&( -DATARMNET543491eb0f->protocol==htons(ETH_P_IP))&&!(strncmp(DATARMNET543491eb0f-> -dev->name,"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61\x30",IFNAMSIZ))){ -struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;struct net_device* -DATARMNET813ca18d06=NULL;struct flowi4 DATARMNET099aa93adc={};struct rtable* -DATARMNET066b8bd537;struct neighbour*DATARMNET3f85732c70;int DATARMNET268a8314cf -=(0xd2d+202-0xdf7);DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f, -(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(! -DATARMNET86f1f2cdc9){DATARMNET17f6bc1be5(DATARMNETd1c349b9fc);goto -DATARMNETc1174a0f45;}DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net, -DATARMNET934406764d());if(!DATARMNET813ca18d06){DATARMNET17f6bc1be5( -DATARMNETfa4b3dd44a);goto DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev= -DATARMNET813ca18d06;memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9-> -saddr,sizeof(__be32));memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9-> -daddr,sizeof(__be32));DATARMNET066b8bd537=ip_route_output_key(&init_net,& -DATARMNET099aa93adc);if(IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5( -DATARMNET72ab5e86d8);goto DATARMNETc1174a0f45;}DATARMNET3f85732c70= -dst_neigh_lookup(&DATARMNET066b8bd537->dst,&DATARMNET099aa93adc.daddr);ip_rt_put -(DATARMNET066b8bd537);if(!DATARMNET3f85732c70){DATARMNET17f6bc1be5( -DATARMNET0e6bd55b8b);goto DATARMNETc1174a0f45;}DATARMNET268a8314cf= -DATARMNETe8a509e677(DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release( -DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS|| -DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(DATARMNETc1b437465b);} -else{DATARMNET17f6bc1be5(DATARMNET43a65c0be7);}return RX_HANDLER_CONSUMED;}else -if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)) -&&!(strncmp(DATARMNET543491eb0f->dev->name, +DATARMNET820642743b,DATARMNETfb0677cc3c);return HRTIMER_NORESTART;}static +rx_handler_result_t DATARMNETc9ed97754a(struct sk_buff*DATARMNET543491eb0f){if( +DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IP))&&!( +strncmp(DATARMNET543491eb0f->dev->name, +"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61\x30",IFNAMSIZ))){struct iphdr* +DATARMNET86f1f2cdc9,DATARMNETbf6548198e;struct net_device*DATARMNET813ca18d06= +NULL;struct flowi4 DATARMNET099aa93adc={};struct rtable*DATARMNET066b8bd537; +struct neighbour*DATARMNET3f85732c70;int DATARMNET268a8314cf=(0xd2d+202-0xdf7); +DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7), +sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9){ +DATARMNET17f6bc1be5(DATARMNETd1c349b9fc);goto DATARMNETc1174a0f45;} +DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(! +DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNETfa4b3dd44a);goto +DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=DATARMNET813ca18d06;memcpy(& +DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9->saddr,sizeof(__be32));memcpy(& +DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9->daddr,sizeof(__be32)); +DATARMNET066b8bd537=ip_route_output_key(&init_net,&DATARMNET099aa93adc);if( +IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET72ab5e86d8);goto +DATARMNETc1174a0f45;}DATARMNET3f85732c70=dst_neigh_lookup(&DATARMNET066b8bd537-> +dst,&DATARMNET099aa93adc.daddr);ip_rt_put(DATARMNET066b8bd537);if(! +DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNET0e6bd55b8b);goto +DATARMNETc1174a0f45;}DATARMNET268a8314cf=neigh_resolve_output( +DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release(DATARMNET3f85732c70);if( +likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS||DATARMNET268a8314cf==NET_XMIT_CN)) +{DATARMNET17f6bc1be5(DATARMNETc1b437465b);}else{DATARMNET17f6bc1be5( +DATARMNET43a65c0be7);}return RX_HANDLER_CONSUMED;}else if(DATARMNET543491eb0f-> +dev&&(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))&&!(strncmp( +DATARMNET543491eb0f->dev->name, "\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61\x30",IFNAMSIZ))){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;struct net_device* DATARMNET813ca18d06=NULL;struct flowi6 DATARMNET8fbe36a2fa={};struct neighbour* @@ -108,10 +89,10 @@ ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){ DATARMNET17f6bc1be5(DATARMNETbf6e6853f9);goto DATARMNETc1174a0f45;} DATARMNET3f85732c70=dst_neigh_lookup(dst,&DATARMNET8fbe36a2fa.daddr);dst_release (dst);if(!DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNETa0da722329);goto -DATARMNETc1174a0f45;}DATARMNET268a8314cf=DATARMNETe8a509e677(DATARMNET3f85732c70 -,DATARMNET543491eb0f);neigh_release(DATARMNET3f85732c70);if(likely( -DATARMNET268a8314cf==NET_XMIT_SUCCESS||DATARMNET268a8314cf==NET_XMIT_CN)){ -DATARMNET17f6bc1be5(DATARMNET04311361a2);}else{DATARMNET17f6bc1be5( +DATARMNETc1174a0f45;}DATARMNET268a8314cf=neigh_resolve_output( +DATARMNET3f85732c70,DATARMNET543491eb0f);neigh_release(DATARMNET3f85732c70);if( +likely(DATARMNET268a8314cf==NET_XMIT_SUCCESS||DATARMNET268a8314cf==NET_XMIT_CN)) +{DATARMNET17f6bc1be5(DATARMNET04311361a2);}else{DATARMNET17f6bc1be5( DATARMNET13bbe5f5c5);}return RX_HANDLER_CONSUMED;}return RX_HANDLER_PASS; DATARMNETc1174a0f45:kfree_skb(DATARMNET543491eb0f);return RX_HANDLER_CONSUMED;} static rx_handler_result_t DATARMNET68fe094884(struct sk_buff** diff --git a/wlan/rmnet_wlan_genl.c b/wlan/rmnet_wlan_genl.c index edb88dc2d9..9f1e965858 100644 --- a/wlan/rmnet_wlan_genl.c +++ b/wlan/rmnet_wlan_genl.c @@ -111,7 +111,7 @@ GENL_SET_ERR_MSG(DATARMNET54338da2ff, "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x61\x64\x64\x72\x65\x73\x73" );return-EINVAL;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data(DATARMNETef7cdd7b6b);if(strchr -(DATARMNETd7f4d7c495,((char)(0x1b6+8559-0x22eb)))){if(in6_pton( +(DATARMNETd7f4d7c495,((char)(0xd77+4465-0x1eae)))){if(in6_pton( DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e. DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){ GENL_SET_ERR_MSG(DATARMNET54338da2ff, @@ -138,7 +138,7 @@ GENL_SET_ERR_MSG(DATARMNET54338da2ff, "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x61\x64\x64\x72\x65\x73\x73" );return-EINVAL;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data(DATARMNETef7cdd7b6b);if(strchr -(DATARMNETd7f4d7c495,((char)(0x1aa0+945-0x1e17)))){if(in6_pton( +(DATARMNETd7f4d7c495,((char)(0x842+5184-0x1c48)))){if(in6_pton( DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e. DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){ GENL_SET_ERR_MSG(DATARMNET54338da2ff,