leaving function in locked state
File: net/ipv4/.tmp_udp.o.preproc
Full description: {AutomatonChecker of /usr/share/stanse/checkers/AutomatonChecker/kernel_locking_irq.xml} in function 'udp_get_first' leaving function in locked state [traces: 1]
Importance: 1
Checker: AutomatonChecker of /usr/share/stanse/checkers/AutomatonChecker/kernel_locking_irq.xml
Trace:
line 1734: not affected ==> the lock is still locked.
line 1734: not affected ==> the lock is still locked.
line 1734: not affected ==> the lock is still locked.
line 1734: not affected ==> the lock is still locked.
line 1734: not affected ==> the lock is still locked.
line 1735: not affected ==> the lock is still locked.
line 1735: not affected ==> the lock is still locked.
line 1737: not affected ==> the lock is still locked.
line 1737: not affected ==> the lock is still locked.
line 1738: not affected ==> the lock is still locked.
line 1744: not affected ==> the lock is still locked.
line 1745: Leaving function in locked state.[& . * hslot lock]
This one is:
False positive index (the lower the better): 0
File contents (this file is distributed under the terms specified in the original file):
1|struct udp_table udp_table ;
2|extern typeof(udp_table) udp_table; extern void *__crc_udp_table ; static const unsigned long __kcrctab_udp_table = (unsigned long) &__crc_udp_table; static const char __kstrtab_udp_table[] = "" "udp_table"; static const struct kernel_symbol __ksymtab_udp_table = { (unsigned long)&udp_table, __kstrtab_udp_table };
3|
4|long sysctl_udp_mem[3] ;
5|extern typeof(sysctl_udp_mem) sysctl_udp_mem; extern void *__crc_sysctl_udp_mem ; static const unsigned long __kcrctab_sysctl_udp_mem = (unsigned long) &__crc_sysctl_udp_mem; static const char __kstrtab_sysctl_udp_mem[] = "" "sysctl_udp_mem"; static const struct kernel_symbol __ksymtab_sysctl_udp_mem = { (unsigned long)&sysctl_udp_mem, __kstrtab_sysctl_udp_mem };
6|
7|int sysctl_udp_rmem_min ;
8|extern typeof(sysctl_udp_rmem_min) sysctl_udp_rmem_min; extern void *__crc_sysctl_udp_rmem_min ; static const unsigned long __kcrctab_sysctl_udp_rmem_min = (unsigned long) &__crc_sysctl_udp_rmem_min; static const char __kstrtab_sysctl_udp_rmem_min[] = "" "sysctl_udp_rmem_min"; static const struct kernel_symbol __ksymtab_sysctl_udp_rmem_min = { (unsigned long)&sysctl_udp_rmem_min, __kstrtab_sysctl_udp_rmem_min };
9|
10|int sysctl_udp_wmem_min ;
11|extern typeof(sysctl_udp_wmem_min) sysctl_udp_wmem_min; extern void *__crc_sysctl_udp_wmem_min ; static const unsigned long __kcrctab_sysctl_udp_wmem_min = (unsigned long) &__crc_sysctl_udp_wmem_min; static const char __kstrtab_sysctl_udp_wmem_min[] = "" "sysctl_udp_wmem_min"; static const struct kernel_symbol __ksymtab_sysctl_udp_wmem_min = { (unsigned long)&sysctl_udp_wmem_min, __kstrtab_sysctl_udp_wmem_min };
12|
13|atomic_long_t udp_memory_allocated;
14|extern typeof(udp_memory_allocated) udp_memory_allocated; extern void *__crc_udp_memory_allocated ; static const unsigned long __kcrctab_udp_memory_allocated = (unsigned long) &__crc_udp_memory_allocated; static const char __kstrtab_udp_memory_allocated[] = "" "udp_memory_allocated"; static const struct kernel_symbol __ksymtab_udp_memory_allocated = { (unsigned long)&udp_memory_allocated, __kstrtab_udp_memory_allocated };
15|
16|
17|
18|
19|static int udp_lib_lport_inuse(struct net *net, __u16 num,
20| const struct udp_hslot *hslot,
21| unsigned long *bitmap,
22| struct sock *sk,
23| int (*saddr_comp)(const struct sock *sk1,
24| const struct sock *sk2),
25| unsigned int log)
26|{
27| struct sock *sk2;
28| struct hlist_nulls_node *node;
29|
30| for (node = (&hslot->head)->first; (!is_a_nulls(node)) && ({ sk2 = ({ const typeof( ((typeof(*sk2) *)0)->__sk_common.skc_nulls_node ) *__mptr = (node); (typeof(*sk2) *)( (char *)__mptr - 1 );}); 1;}); node = node->next)
31| if (net_eq(sock_net(sk2), net) &&
32| sk2 != sk &&
33| (bitmap || udp_sk(sk2)->inet.sk.__sk_common.skc_u16hashes[0] == num) &&
34| (!sk2->__sk_common.skc_reuse || !sk->__sk_common.skc_reuse) &&
35| (!sk2->__sk_common.skc_bound_dev_if || !sk->__sk_common.skc_bound_dev_if ||
36| sk2->__sk_common.skc_bound_dev_if == sk->__sk_common.skc_bound_dev_if) &&
37| (*saddr_comp)(sk, sk2)) {
38| if (bitmap)
39| __set_bit(udp_sk(sk2)->inet.sk.__sk_common.skc_u16hashes[0] >> log,
40| bitmap);
41| else
42| return 1;
43| }
44| return 0;
45|}
46|
47|
48|
49|
50|
51|static int udp_lib_lport_inuse2(struct net *net, __u16 num,
52| struct udp_hslot *hslot2,
53| struct sock *sk,
54| int (*saddr_comp)(const struct sock *sk1,
55| const struct sock *sk2))
56|{
57| struct sock *sk2;
58| struct hlist_nulls_node *node;
59| int res = 0;
60|
61| __st_spin_lock_st__(&hslot2->lock);
62| for (node = (&hslot2->head)->first; (!is_a_nulls(node)) && ({ sk2 = ({ const typeof( ((typeof(*sk2) *)0)->__sk_common.skc_portaddr_node ) *__mptr = (node); (typeof(*sk2) *)( (char *)__mptr - 1 );}); 1;}); node = node->next)
63| if (net_eq(sock_net(sk2), net) &&
64| sk2 != sk &&
65| (udp_sk(sk2)->inet.sk.__sk_common.skc_u16hashes[0] == num) &&
66| (!sk2->__sk_common.skc_reuse || !sk->__sk_common.skc_reuse) &&
67| (!sk2->__sk_common.skc_bound_dev_if || !sk->__sk_common.skc_bound_dev_if ||
68| sk2->__sk_common.skc_bound_dev_if == sk->__sk_common.skc_bound_dev_if) &&
69| (*saddr_comp)(sk, sk2)) {
70| res = 1;
71| break;
72| }
73| __st_spin_unlock_st__(&hslot2->lock);
74| return res;
75|}
76|int udp_lib_get_port(struct sock *sk, unsigned short snum,
77| int (*saddr_comp)(const struct sock *sk1,
78| const struct sock *sk2),
79| unsigned int hash2_nulladdr)
80|{
81| struct udp_hslot *hslot, *hslot2;
82| struct udp_table *udptable = sk->__sk_common.skc_prot->h.udp_table;
83| int error = 1;
84| struct net *net = sock_net(sk);
85|
86| if (!snum) {
87| int low, high, remaining;
88| unsigned rand;
89| unsigned short first, last;
90| unsigned long bitmap[((((65536 / (0 ? 128 : 256))) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))];
91|
92| inet_get_local_port_range(&low, &high);
93| remaining = (high - low) + 1;
94|
95| rand = random32();
96| first = (((u64)rand * remaining) >> 32) + low;
97|
98|
99|
100| rand = (rand | 1) * (udptable->mask + 1);
101| last = first + udptable->mask + 1;
102| do {
103| hslot = udp_hashslot(udptable, net, first);
104| bitmap_zero(bitmap, (65536 / (0 ? 128 : 256)));
105| __st_spin_lock_bh_st__(&hslot->lock);
106| udp_lib_lport_inuse(net, snum, hslot, bitmap, sk,
107| saddr_comp, udptable->log);
108|
109| snum = first;
110|
111|
112|
113|
114|
115| do {
116| if (low <= snum && snum <= high &&
117| !(__builtin_constant_p((snum >> udptable->log)) ? constant_test_bit((snum >> udptable->log), (bitmap)) : variable_test_bit((snum >> udptable->log), (bitmap))) &&
118| !inet_is_reserved_local_port(snum))
119| goto found;
120| snum += rand;
121| } while (snum != first);
122| __st_spin_unlock_bh_st__(&hslot->lock);
123| } while (++first != last);
124| goto fail;
125| } else {
126| hslot = udp_hashslot(udptable, net, snum);
127| __st_spin_lock_bh_st__(&hslot->lock);
128| if (hslot->count > 10) {
129| int exist;
130| unsigned int slot2 = udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1] ^ snum;
131|
132| slot2 &= udptable->mask;
133| hash2_nulladdr &= udptable->mask;
134|
135| hslot2 = udp_hashslot2(udptable, slot2);
136| if (hslot->count < hslot2->count)
137| goto scan_primary_hash;
138|
139| exist = udp_lib_lport_inuse2(net, snum, hslot2,
140| sk, saddr_comp);
141| if (!exist && (hash2_nulladdr != slot2)) {
142| hslot2 = udp_hashslot2(udptable, hash2_nulladdr);
143| exist = udp_lib_lport_inuse2(net, snum, hslot2,
144| sk, saddr_comp);
145| }
146| if (exist)
147| goto fail_unlock;
148| else
149| goto found;
150| }
151|scan_primary_hash:
152| if (udp_lib_lport_inuse(net, snum, hslot, ((void *)0), sk,
153| saddr_comp, 0))
154| goto fail_unlock;
155| }
156|found:
157| inet_sk(sk)->inet_num = snum;
158| udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[0] = snum;
159| udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1] ^= snum;
160| if (sk_unhashed(sk)) {
161| sk_nulls_add_node_rcu(sk, &hslot->head);
162| hslot->count++;
163| sock_prot_inuse_add(sock_net(sk), sk->__sk_common.skc_prot, 1);
164|
165| hslot2 = udp_hashslot2(udptable, udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1]);
166| __st_spin_lock_st__(&hslot2->lock);
167| hlist_nulls_add_head_rcu(&udp_sk(sk)->inet.sk.__sk_common.skc_portaddr_node,
168| &hslot2->head);
169| hslot2->count++;
170| __st_spin_unlock_st__(&hslot2->lock);
171| }
172| error = 0;
173|fail_unlock:
174| __st_spin_unlock_bh_st__(&hslot->lock);
175|fail:
176| return error;
177|}
178|extern typeof(udp_lib_get_port) udp_lib_get_port; extern void *__crc_udp_lib_get_port ; static const unsigned long __kcrctab_udp_lib_get_port = (unsigned long) &__crc_udp_lib_get_port; static const char __kstrtab_udp_lib_get_port[] = "" "udp_lib_get_port"; static const struct kernel_symbol __ksymtab_udp_lib_get_port = { (unsigned long)&udp_lib_get_port, __kstrtab_udp_lib_get_port };
179|
180|static int ipv4_rcv_saddr_equal(const struct sock *sk1, const struct sock *sk2)
181|{
182| struct inet_sock *inet1 = inet_sk(sk1), *inet2 = inet_sk(sk2);
183|
184| return (!((sk2)->__sk_common.skc_family == 10 && (inet6_sk(sk2)->ipv6only)) &&
185| (!inet1->inet_rcv_saddr || !inet2->inet_rcv_saddr ||
186| inet1->inet_rcv_saddr == inet2->inet_rcv_saddr));
187|}
188|
189|static unsigned int udp4_portaddr_hash(struct net *net, __be32 saddr,
190| unsigned int port)
191|{
192| return jhash_1word(( u32)saddr, net_hash_mix(net)) ^ port;
193|}
194|
195|int udp_v4_get_port(struct sock *sk, unsigned short snum)
196|{
197| unsigned int hash2_nulladdr =
198| udp4_portaddr_hash(sock_net(sk), (( __be32)(__builtin_constant_p((__u32)((((unsigned long int) 0x00000000)))) ? ((__u32)( (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long int) 0x00000000))))), snum);
199| unsigned int hash2_partial =
200| udp4_portaddr_hash(sock_net(sk), inet_sk(sk)->inet_rcv_saddr, 0);
201|
202|
203| udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1] = hash2_partial;
204| return udp_lib_get_port(sk, snum, ipv4_rcv_saddr_equal, hash2_nulladdr);
205|}
206|
207|static inline int compute_score(struct sock *sk, struct net *net, __be32 saddr,
208| unsigned short hnum,
209| __be16 sport, __be32 daddr, __be16 dport, int dif)
210|{
211| int score = -1;
212|
213| if (net_eq(sock_net(sk), net) && udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[0] == hnum &&
214| !((sk)->__sk_common.skc_family == 10 && (inet6_sk(sk)->ipv6only))) {
215| struct inet_sock *inet = inet_sk(sk);
216|
217| score = (sk->__sk_common.skc_family == 2 ? 1 : 0);
218| if (inet->inet_rcv_saddr) {
219| if (inet->inet_rcv_saddr != daddr)
220| return -1;
221| score += 2;
222| }
223| if (inet->inet_daddr) {
224| if (inet->inet_daddr != saddr)
225| return -1;
226| score += 2;
227| }
228| if (inet->inet_dport) {
229| if (inet->inet_dport != sport)
230| return -1;
231| score += 2;
232| }
233| if (sk->__sk_common.skc_bound_dev_if) {
234| if (sk->__sk_common.skc_bound_dev_if != dif)
235| return -1;
236| score += 2;
237| }
238| }
239| return score;
240|}
241|
242|
243|
244|
245|
246|static inline int compute_score2(struct sock *sk, struct net *net,
247| __be32 saddr, __be16 sport,
248| __be32 daddr, unsigned int hnum, int dif)
249|{
250| int score = -1;
251|
252| if (net_eq(sock_net(sk), net) && !((sk)->__sk_common.skc_family == 10 && (inet6_sk(sk)->ipv6only))) {
253| struct inet_sock *inet = inet_sk(sk);
254|
255| if (inet->inet_rcv_saddr != daddr)
256| return -1;
257| if (inet->inet_num != hnum)
258| return -1;
259|
260| score = (sk->__sk_common.skc_family == 2 ? 1 : 0);
261| if (inet->inet_daddr) {
262| if (inet->inet_daddr != saddr)
263| return -1;
264| score += 2;
265| }
266| if (inet->inet_dport) {
267| if (inet->inet_dport != sport)
268| return -1;
269| score += 2;
270| }
271| if (sk->__sk_common.skc_bound_dev_if) {
272| if (sk->__sk_common.skc_bound_dev_if != dif)
273| return -1;
274| score += 2;
275| }
276| }
277| return score;
278|}
279|
280|
281|
282|static struct sock *udp4_lib_lookup2(struct net *net,
283| __be32 saddr, __be16 sport,
284| __be32 daddr, unsigned int hnum, int dif,
285| struct udp_hslot *hslot2, unsigned int slot2)
286|{
287| struct sock *sk, *result;
288| struct hlist_nulls_node *node;
289| int score, badness;
290|
291|begin:
292| result = ((void *)0);
293| badness = -1;
294| for (node = ({ typeof(*((*((struct hlist_nulls_node **)&(&hslot2->head)->first)))) *_________p1 = (typeof(*((*((struct hlist_nulls_node **)&(&hslot2->head)->first))))* )(*(volatile typeof(((*((struct hlist_nulls_node **)&(&hslot2->head)->first)))) *)&(((*((struct hlist_nulls_node **)&(&hslot2->head)->first))))); do { static bool __warned; if (debug_lockdep_rcu_enabled() && !__warned && !(rcu_read_lock_held() || (1))) { __warned = true; lockdep_rcu_dereference("net/ipv4/.tmp_udp.o.armored.c", 413); } } while (0); ; do { } while (0); ((typeof(*((*((struct hlist_nulls_node **)&(&hslot2->head)->first)))) *)(_________p1)); }); (!is_a_nulls(node)) && ({ sk = ({ const typeof( ((typeof(*sk) *)0)->__sk_common.skc_portaddr_node ) *__mptr = (node); (typeof(*sk) *)( (char *)__mptr - 1 );}); 1; }); node = ({ typeof(*((*((struct hlist_nulls_node **)&(node)->next)))) *_________p1 = (typeof(*((*((struct hlist_nulls_node **)&(node)->next))))* )(*(volatile typeof(((*((struct hlist_nulls_node **)&(node)->next)))) *)&(((*((struct hlist_nulls_node **)&(node)->next))))); do { static bool __warned; if (debug_lockdep_rcu_enabled() && !__warned && !(rcu_read_lock_held() || (1))) { __warned = true; lockdep_rcu_dereference("net/ipv4/.tmp_udp.o.armored.c", 413); } } while (0); ; do { } while (0); ((typeof(*((*((struct hlist_nulls_node **)&(node)->next)))) *)(_________p1)); })) {
295| score = compute_score2(sk, net, saddr, sport,
296| daddr, hnum, dif);
297| if (score > badness) {
298| result = sk;
299| badness = score;
300| if (score == (1 + 2 + 2 + 2))
301| goto exact_match;
302| }
303| }
304|
305|
306|
307|
308|
309| if (get_nulls_value(node) != slot2)
310| goto begin;
311|
312| if (result) {
313|exact_match:
314| if (!atomic_inc_not_zero_hint(&result->__sk_common.skc_refcnt, 2))
315| result = ((void *)0);
316| else if (compute_score2(result, net, saddr, sport, daddr, hnum, dif) < badness
317| ) {
318| sock_put(result);
319| goto begin;
320| }
321| }
322| return result;
323|}
324|
325|
326|
327|
328|static struct sock *__udp4_lib_lookup(struct net *net, __be32 saddr,
329| __be16 sport, __be32 daddr, __be16 dport,
330| int dif, struct udp_table *udptable)
331|{
332| struct sock *sk, *result;
333| struct hlist_nulls_node *node;
334| unsigned short hnum = (__builtin_constant_p((__u16)(( __u16)(__be16)(dport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(dport)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(dport)));
335| unsigned int hash2, slot2, slot = udp_hashfn(net, hnum, udptable->mask);
336| struct udp_hslot *hslot2, *hslot = &udptable->hash[slot];
337| int score, badness;
338|
339| __st_rcu_read_lock_st__();
340| if (hslot->count > 10) {
341| hash2 = udp4_portaddr_hash(net, daddr, hnum);
342| slot2 = hash2 & udptable->mask;
343| hslot2 = &udptable->hash2[slot2];
344| if (hslot->count < hslot2->count)
345| goto begin;
346|
347| result = udp4_lib_lookup2(net, saddr, sport,
348| daddr, hnum, dif,
349| hslot2, slot2);
350| if (!result) {
351| hash2 = udp4_portaddr_hash(net, (( __be32)(__builtin_constant_p((__u32)((((unsigned long int) 0x00000000)))) ? ((__u32)( (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long int) 0x00000000))))), hnum);
352| slot2 = hash2 & udptable->mask;
353| hslot2 = &udptable->hash2[slot2];
354| if (hslot->count < hslot2->count)
355| goto begin;
356|
357| result = udp4_lib_lookup2(net, saddr, sport,
358| (( __be32)(__builtin_constant_p((__u32)((((unsigned long int) 0x00000000)))) ? ((__u32)( (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0x00000000))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long int) 0x00000000))))), hnum, dif,
359| hslot2, slot2);
360| }
361| __st_rcu_read_unlock_st__();
362| return result;
363| }
364|begin:
365| result = ((void *)0);
366| badness = -1;
367| for (node = ({ typeof(*((*((struct hlist_nulls_node **)&(&hslot->head)->first)))) *_________p1 = (typeof(*((*((struct hlist_nulls_node **)&(&hslot->head)->first))))* )(*(volatile typeof(((*((struct hlist_nulls_node **)&(&hslot->head)->first)))) *)&(((*((struct hlist_nulls_node **)&(&hslot->head)->first))))); do { static bool __warned; if (debug_lockdep_rcu_enabled() && !__warned && !(rcu_read_lock_held() || (1))) { __warned = true; lockdep_rcu_dereference("net/ipv4/.tmp_udp.o.armored.c", 486); } } while (0); ; do { } while (0); ((typeof(*((*((struct hlist_nulls_node **)&(&hslot->head)->first)))) *)(_________p1)); }); (!is_a_nulls(node)) && ({ sk = ({ const typeof( ((typeof(*sk) *)0)->__sk_common.skc_nulls_node ) *__mptr = (node); (typeof(*sk) *)( (char *)__mptr - 1 );}); 1; }); node = ({ typeof(*((*((struct hlist_nulls_node **)&(node)->next)))) *_________p1 = (typeof(*((*((struct hlist_nulls_node **)&(node)->next))))* )(*(volatile typeof(((*((struct hlist_nulls_node **)&(node)->next)))) *)&(((*((struct hlist_nulls_node **)&(node)->next))))); do { static bool __warned; if (debug_lockdep_rcu_enabled() && !__warned && !(rcu_read_lock_held() || (1))) { __warned = true; lockdep_rcu_dereference("net/ipv4/.tmp_udp.o.armored.c", 486); } } while (0); ; do { } while (0); ((typeof(*((*((struct hlist_nulls_node **)&(node)->next)))) *)(_________p1)); })) {
368| score = compute_score(sk, net, saddr, hnum, sport,
369| daddr, dport, dif);
370| if (score > badness) {
371| result = sk;
372| badness = score;
373| }
374| }
375|
376|
377|
378|
379|
380| if (get_nulls_value(node) != slot)
381| goto begin;
382|
383| if (result) {
384| if (!atomic_inc_not_zero_hint(&result->__sk_common.skc_refcnt, 2))
385| result = ((void *)0);
386| else if (compute_score(result, net, saddr, hnum, sport, daddr, dport, dif) < badness
387| ) {
388| sock_put(result);
389| goto begin;
390| }
391| }
392| __st_rcu_read_unlock_st__();
393| return result;
394|}
395|
396|static inline struct sock *__udp4_lib_lookup_skb(struct sk_buff *skb,
397| __be16 sport, __be16 dport,
398| struct udp_table *udptable)
399|{
400| struct sock *sk;
401| const struct iphdr *iph = ip_hdr(skb);
402|
403| if (sk = skb_steal_sock(skb))
404| return sk;
405| else
406| return __udp4_lib_lookup(dev_net(skb_dst(skb)->dev), iph->saddr, sport,
407| iph->daddr, dport, inet_iif(skb),
408| udptable);
409|}
410|
411|struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
412| __be32 daddr, __be16 dport, int dif)
413|{
414| return __udp4_lib_lookup(net, saddr, sport, daddr, dport, dif, &udp_table);
415|}
416|extern typeof(udp4_lib_lookup) udp4_lib_lookup; extern void *__crc_udp4_lib_lookup ; static const unsigned long __kcrctab_udp4_lib_lookup = (unsigned long) &__crc_udp4_lib_lookup; static const char __kstrtab_udp4_lib_lookup[] = "" "udp4_lib_lookup"; static const struct kernel_symbol __ksymtab_udp4_lib_lookup = { (unsigned long)&udp4_lib_lookup, __kstrtab_udp4_lib_lookup };
417|
418|static inline struct sock *udp_v4_mcast_next(struct net *net, struct sock *sk,
419| __be16 loc_port, __be32 loc_addr,
420| __be16 rmt_port, __be32 rmt_addr,
421| int dif)
422|{
423| struct hlist_nulls_node *node;
424| struct sock *s = sk;
425| unsigned short hnum = (__builtin_constant_p((__u16)(( __u16)(__be16)(loc_port))) ? ((__u16)( (((__u16)(( __u16)(__be16)(loc_port)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(loc_port)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(loc_port)));
426|
427| if (s && ({ node = &(s)->__sk_common.skc_nulls_node; 1; })) for (; (!is_a_nulls(node)) && ({ s = ({ const typeof( ((typeof(*s) *)0)->__sk_common.skc_nulls_node ) *__mptr = (node); (typeof(*s) *)( (char *)__mptr - 1 );}); 1;}); node = node->next) {
428| struct inet_sock *inet = inet_sk(s);
429|
430| if (!net_eq(sock_net(s), net) ||
431| udp_sk(s)->inet.sk.__sk_common.skc_u16hashes[0] != hnum ||
432| (inet->inet_daddr && inet->inet_daddr != rmt_addr) ||
433| (inet->inet_dport != rmt_port && inet->inet_dport) ||
434| (inet->inet_rcv_saddr &&
435| inet->inet_rcv_saddr != loc_addr) ||
436| ((s)->__sk_common.skc_family == 10 && (inet6_sk(s)->ipv6only)) ||
437| (s->__sk_common.skc_bound_dev_if && s->__sk_common.skc_bound_dev_if != dif))
438| continue;
439| if (!ip_mc_sf_allow(s, loc_addr, rmt_addr, dif))
440| continue;
441| goto found;
442| }
443| s = ((void *)0);
444|found:
445| return s;
446|}
447|void __udp4_lib_err(struct sk_buff *skb, u32 info, struct udp_table *udptable)
448|{
449| struct inet_sock *inet;
450| struct iphdr *iph = (struct iphdr *)skb->data;
451| struct udphdr *uh = (struct udphdr *)(skb->data+(iph->ihl<<2));
452| const int type = icmp_hdr(skb)->type;
453| const int code = icmp_hdr(skb)->code;
454| struct sock *sk;
455| int harderr;
456| int err;
457| struct net *net = dev_net(skb->dev);
458|
459| sk = __udp4_lib_lookup(net, iph->daddr, uh->dest,
460| iph->saddr, uh->source, skb->dev->ifindex, udptable);
461| if (sk == ((void *)0)) {
462| do { do { const void *__vpp_verify = (typeof(&((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.icmp_statistics[0]->mibs[ICMP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0);
463| return;
464| }
465|
466| err = 0;
467| harderr = 0;
468| inet = inet_sk(sk);
469|
470| switch (type) {
471| default:
472| case 11:
473| err = 113;
474| break;
475| case 4:
476| goto out;
477| case 12:
478| err = 71;
479| harderr = 1;
480| break;
481| case 3:
482| if (code == 4) {
483| if (inet->pmtudisc != 0) {
484| err = 90;
485| harderr = 1;
486| break;
487| }
488| goto out;
489| }
490| err = 113;
491| if (code <= 15) {
492| harderr = icmp_err_convert[code].fatal;
493| err = icmp_err_convert[code].errno;
494| }
495| break;
496| }
497|
498|
499|
500|
501|
502| if (!inet->recverr) {
503| if (!harderr || sk->__sk_common.skc_state != TCP_ESTABLISHED)
504| goto out;
505| } else
506| ip_icmp_error(sk, skb, err, uh->dest, info, (u8 *)(uh+1));
507|
508| sk->sk_err = err;
509| sk->sk_error_report(sk);
510|out:
511| sock_put(sk);
512|}
513|
514|void udp_err(struct sk_buff *skb, u32 info)
515|{
516| __udp4_lib_err(skb, info, &udp_table);
517|}
518|
519|
520|
521|
522|void udp_flush_pending_frames(struct sock *sk)
523|{
524| struct udp_sock *up = udp_sk(sk);
525|
526| if (up->pending) {
527| up->len = 0;
528| up->pending = 0;
529| ip_flush_pending_frames(sk);
530| }
531|}
532|extern typeof(udp_flush_pending_frames) udp_flush_pending_frames; extern void *__crc_udp_flush_pending_frames ; static const unsigned long __kcrctab_udp_flush_pending_frames = (unsigned long) &__crc_udp_flush_pending_frames; static const char __kstrtab_udp_flush_pending_frames[] = "" "udp_flush_pending_frames"; static const struct kernel_symbol __ksymtab_udp_flush_pending_frames = { (unsigned long)&udp_flush_pending_frames, __kstrtab_udp_flush_pending_frames };
533|
534|
535|
536|
537|
538|
539|
540|static void udp4_hwcsum_outgoing(struct sock *sk, struct sk_buff *skb,
541| __be32 src, __be32 dst, int len)
542|{
543| unsigned int offset;
544| struct udphdr *uh = udp_hdr(skb);
545| __wsum csum = 0;
546|
547| if (skb_queue_len(&sk->sk_write_queue) == 1) {
548|
549|
550|
551| skb->csum_start = skb_transport_header(skb) - skb->head;
552| skb->csum_offset = 1;
553| uh->check = ~csum_tcpudp_magic(src, dst, len, IPPROTO_UDP, 0);
554| } else {
555|
556|
557|
558|
559|
560| offset = skb_transport_offset(skb);
561| skb->csum = skb_checksum(skb, offset, skb->len - offset, 0);
562|
563| skb->ip_summed = 0;
564|
565| for (skb = (&sk->sk_write_queue)->next; __builtin_prefetch(skb->next), (skb != (struct sk_buff *)(&sk->sk_write_queue)); skb = skb->next) {
566| csum = csum_add(csum, skb->csum);
567| }
568|
569| uh->check = csum_tcpudp_magic(src, dst, len, IPPROTO_UDP, csum);
570| if (uh->check == 0)
571| uh->check = (( __sum16)0xffff);
572| }
573|}
574|
575|
576|
577|
578|static int udp_push_pending_frames(struct sock *sk)
579|{
580| struct udp_sock *up = udp_sk(sk);
581| struct inet_sock *inet = inet_sk(sk);
582| struct flowi *fl = &inet->cork.fl;
583| struct sk_buff *skb;
584| struct udphdr *uh;
585| int err = 0;
586| int is_udplite = (udp_sk(sk)->pcflag);
587| __wsum csum = 0;
588|
589|
590| if ((skb = skb_peek(&sk->sk_write_queue)) == ((void *)0))
591| goto out;
592|
593|
594|
595|
596| uh = udp_hdr(skb);
597| uh->source = fl->uli_u.ports.sport;
598| uh->dest = fl->uli_u.ports.dport;
599| uh->len = (( __be16)(__builtin_constant_p((__u16)((up->len))) ? ((__u16)( (((__u16)((up->len)) & (__u16)0x00ffU) << 8) | (((__u16)((up->len)) & (__u16)0xff00U) >> 8))) : __fswab16((up->len))));
600| uh->check = 0;
601|
602| if (is_udplite)
603| csum = udplite_csum_outgoing(sk, skb);
604|
605| else if (sk->sk_no_check == 1) {
606|
607| skb->ip_summed = 0;
608| goto send;
609|
610| } else if (skb->ip_summed == 3) {
611|
612| udp4_hwcsum_outgoing(sk, skb, fl->nl_u.ip4_u.saddr, fl->nl_u.ip4_u.daddr, up->len);
613| goto send;
614|
615| } else
616| csum = udp_csum_outgoing(sk, skb);
617|
618|
619| uh->check = csum_tcpudp_magic(fl->nl_u.ip4_u.saddr, fl->nl_u.ip4_u.daddr, up->len,
620| sk->sk_protocol, csum);
621| if (uh->check == 0)
622| uh->check = (( __sum16)0xffff);
623|
624|send:
625| err = ip_push_pending_frames(sk);
626| if (err) {
627| if (err == -105 && !inet->recverr) {
628| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) { case 1:
629| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
630| err = 0;
631| }
632| } else
633| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) { case 1:
634| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_OUTDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
635|out:
636| up->len = 0;
637| up->pending = 0;
638| return err;
639|}
640|
641|int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
642| size_t len)
643|{
644| struct inet_sock *inet = inet_sk(sk);
645| struct udp_sock *up = udp_sk(sk);
646| int ulen = len;
647| struct ipcm_cookie ipc;
648| struct rtable *rt = ((void *)0);
649| int free = 0;
650| int connected = 0;
651| __be32 daddr, faddr, saddr;
652| __be16 dport;
653| u8 tos;
654| int err, is_udplite = (udp_sk(sk)->pcflag);
655| int corkreq = up->corkflag || msg->msg_flags&0x8000;
656| int (*getfrag)(void *, char *, int, int, int, struct sk_buff *);
657|
658| if (len > 0xFFFF)
659| return -90;
660|
661|
662|
663|
664|
665| if (msg->msg_flags & 1)
666| return -95;
667|
668| ipc.opt = ((void *)0);
669| ipc.tx_flags = 0;
670|
671| if (up->pending) {
672|
673|
674|
675|
676| lock_sock(sk);
677| if (up->pending) {
678| if (up->pending != 2) {
679| release_sock(sk);
680| return -22;
681| }
682| goto do_append_data;
683| }
684| release_sock(sk);
685| }
686| ulen += sizeof(struct udphdr);
687|
688|
689|
690|
691| if (msg->msg_name) {
692| struct sockaddr_in * usin = (struct sockaddr_in *)msg->msg_name;
693| if (msg->msg_namelen < sizeof(*usin))
694| return -22;
695| if (usin->sin_family != 2) {
696| if (usin->sin_family != 0)
697| return -97;
698| }
699|
700| daddr = usin->sin_addr.s_addr;
701| dport = usin->sin_port;
702| if (dport == 0)
703| return -22;
704| } else {
705| if (sk->__sk_common.skc_state != TCP_ESTABLISHED)
706| return -89;
707| daddr = inet->inet_daddr;
708| dport = inet->inet_dport;
709|
710|
711|
712| connected = 1;
713| }
714| ipc.addr = inet->inet_saddr;
715|
716| ipc.oif = sk->__sk_common.skc_bound_dev_if;
717| err = sock_tx_timestamp(sk, &ipc.tx_flags);
718| if (err)
719| return err;
720| if (msg->msg_controllen) {
721| err = ip_cmsg_send(sock_net(sk), msg, &ipc);
722| if (err)
723| return err;
724| if (ipc.opt)
725| free = 1;
726| connected = 0;
727| }
728| if (!ipc.opt)
729| ipc.opt = inet->opt;
730|
731| saddr = ipc.addr;
732| ipc.addr = faddr = daddr;
733|
734| if (ipc.opt && ipc.opt->srr) {
735| if (!daddr)
736| return -22;
737| faddr = ipc.opt->faddr;
738| connected = 0;
739| }
740| tos = ((inet->tos)&0x1E);
741| if (sock_flag(sk, SOCK_LOCALROUTE) ||
742| (msg->msg_flags & 4) ||
743| (ipc.opt && ipc.opt->is_strictroute)) {
744| tos |= 0x01;
745| connected = 0;
746| }
747|
748| if (ipv4_is_multicast(daddr)) {
749| if (!ipc.oif)
750| ipc.oif = inet->mc_index;
751| if (!saddr)
752| saddr = inet->mc_addr;
753| connected = 0;
754| }
755|
756| if (connected)
757| rt = (struct rtable *)sk_dst_check(sk, 0);
758|
759| if (rt == ((void *)0)) {
760| struct flowi fl = { .oif = ipc.oif,
761| .mark = sk->sk_mark,
762| .nl_u.ip4_u.daddr = faddr,
763| .nl_u.ip4_u.saddr = saddr,
764| .nl_u.ip4_u.tos = tos,
765| .proto = sk->sk_protocol,
766| .flags = inet_sk_flowi_flags(sk),
767| .uli_u.ports.sport = inet->inet_sport,
768| .uli_u.ports.dport = dport };
769| struct net *net = sock_net(sk);
770|
771| security_sk_classify_flow(sk, &fl);
772| err = ip_route_output_flow(net, &rt, &fl, sk, 1);
773| if (err) {
774| if (err == -101)
775| do { do { const void *__vpp_verify = (typeof(&((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) { case 1: do { typedef typeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.ip_statistics[0]->mibs[IPSTATS_MIB_OUTNOROUTES])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0);
776| goto out;
777| }
778|
779| err = -13;
780| if ((rt->rt_flags & 0x10000000) &&
781| !sock_flag(sk, SOCK_BROADCAST))
782| goto out;
783| if (connected)
784| sk_dst_set(sk, dst_clone(&rt->dst));
785| }
786|
787| if (msg->msg_flags&0x800)
788| goto do_confirm;
789|back_from_confirm:
790|
791| saddr = rt->rt_src;
792| if (!ipc.addr)
793| daddr = ipc.addr = rt->rt_dst;
794|
795| lock_sock(sk);
796| if (up->pending) {
797|
798|
799| release_sock(sk);
800|
801| do { if (net_msg_warn && net_ratelimit()) printk("<7>" "udp cork app bug 2\n"); } while(0);
802| err = -22;
803| goto out;
804| }
805|
806|
807|
808| inet->cork.fl.nl_u.ip4_u.daddr = daddr;
809| inet->cork.fl.uli_u.ports.dport = dport;
810| inet->cork.fl.nl_u.ip4_u.saddr = saddr;
811| inet->cork.fl.uli_u.ports.sport = inet->inet_sport;
812| up->pending = 2;
813|
814|do_append_data:
815| up->len += ulen;
816| getfrag = is_udplite ? udplite_getfrag : ip_generic_getfrag;
817| err = ip_append_data(sk, getfrag, msg->msg_iov, ulen,
818| sizeof(struct udphdr), &ipc, &rt,
819| corkreq ? msg->msg_flags|0x8000 : msg->msg_flags);
820| if (err)
821| udp_flush_pending_frames(sk);
822| else if (!corkreq)
823| err = udp_push_pending_frames(sk);
824| else if (skb_queue_empty(&sk->sk_write_queue))
825| up->pending = 0;
826| release_sock(sk);
827|
828|out:
829| ip_rt_put(rt);
830| if (free)
831| kfree(ipc.opt);
832| if (!err)
833| return len;
834|
835|
836|
837|
838|
839|
840|
841| if (err == -105 || (__builtin_constant_p((2)) ? constant_test_bit((2), (&sk->sk_socket->flags)) : variable_test_bit((2), (&sk->sk_socket->flags)))) {
842| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) { case 1:
843| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_SNDBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
844| }
845| return err;
846|
847|do_confirm:
848| dst_confirm(&rt->dst);
849| if (!(msg->msg_flags&0x10) || len)
850| goto back_from_confirm;
851| err = 0;
852| goto out;
853|}
854|extern typeof(udp_sendmsg) udp_sendmsg; extern void *__crc_udp_sendmsg ; static const unsigned long __kcrctab_udp_sendmsg = (unsigned long) &__crc_udp_sendmsg; static const char __kstrtab_udp_sendmsg[] = "" "udp_sendmsg"; static const struct kernel_symbol __ksymtab_udp_sendmsg = { (unsigned long)&udp_sendmsg, __kstrtab_udp_sendmsg };
855|
856|int udp_sendpage(struct sock *sk, struct page *page, int offset,
857| size_t size, int flags)
858|{
859| struct udp_sock *up = udp_sk(sk);
860| int ret;
861|
862| if (!up->pending) {
863| struct msghdr msg = { .msg_flags = flags|0x8000 };
864|
865|
866|
867|
868|
869| ret = udp_sendmsg(((void *)0), sk, &msg, 0);
870| if (ret < 0)
871| return ret;
872| }
873|
874| lock_sock(sk);
875|
876| if (!up->pending) {
877| release_sock(sk);
878|
879| do { if (net_msg_warn && net_ratelimit()) printk("<7>" "udp cork app bug 3\n"); } while(0);
880| return -22;
881| }
882|
883| ret = ip_append_page(sk, page, offset, size, flags);
884| if (ret == -95) {
885| release_sock(sk);
886| return sock_no_sendpage(sk->sk_socket, page, offset,
887| size, flags);
888| }
889| if (ret < 0) {
890| udp_flush_pending_frames(sk);
891| goto out;
892| }
893|
894| up->len += size;
895| if (!(up->corkflag || (flags&0x8000)))
896| ret = udp_push_pending_frames(sk);
897| if (!ret)
898| ret = size;
899|out:
900| release_sock(sk);
901| return ret;
902|}
903|static unsigned int first_packet_length(struct sock *sk)
904|{
905| struct sk_buff_head list_kill, *rcvq = &sk->sk_receive_queue;
906| struct sk_buff *skb;
907| unsigned int res;
908|
909| __skb_queue_head_init(&list_kill);
910|
911| __st_spin_lock_bh_st__(&rcvq->lock);
912| while ((skb = skb_peek(rcvq)) != ((void *)0) &&
913| udp_lib_checksum_complete(skb)) {
914| do { if ((udp_sk(sk)->pcflag)) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1:
915| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
916| atomic_inc(&sk->sk_drops);
917| __skb_unlink(skb, rcvq);
918| __skb_queue_tail(&list_kill, skb);
919| }
920| res = skb ? skb->len : 0;
921| __st_spin_unlock_bh_st__(&rcvq->lock);
922|
923| if (!skb_queue_empty(&list_kill)) {
924| bool slow = lock_sock_fast(sk);
925|
926| __skb_queue_purge(&list_kill);
927| sk_mem_reclaim_partial(sk);
928| unlock_sock_fast(sk, slow);
929| }
930| return res;
931|}
932|
933|
934|
935|
936|
937|int udp_ioctl(struct sock *sk, int cmd, unsigned long arg)
938|{
939| switch (cmd) {
940| case 0x5411:
941| {
942| int amount = sk_wmem_alloc_get(sk);
943|
944| return __st_put_user_st__(amount, (int *)arg);
945| }
946|
947| case 0x541B:
948| {
949| unsigned int amount = first_packet_length(sk);
950|
951| if (amount)
952|
953|
954|
955|
956|
957| amount -= sizeof(struct udphdr);
958|
959| return __st_put_user_st__(amount, (int *)arg);
960| }
961|
962| default:
963| return -515;
964| }
965|
966| return 0;
967|}
968|extern typeof(udp_ioctl) udp_ioctl; extern void *__crc_udp_ioctl ; static const unsigned long __kcrctab_udp_ioctl = (unsigned long) &__crc_udp_ioctl; static const char __kstrtab_udp_ioctl[] = "" "udp_ioctl"; static const struct kernel_symbol __ksymtab_udp_ioctl = { (unsigned long)&udp_ioctl, __kstrtab_udp_ioctl };
969|
970|
971|
972|
973|
974|
975|int udp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
976| size_t len, int noblock, int flags, int *addr_len)
977|{
978| struct inet_sock *inet = inet_sk(sk);
979| struct sockaddr_in *sin = (struct sockaddr_in *)msg->msg_name;
980| struct sk_buff *skb;
981| unsigned int ulen;
982| int peeked;
983| int err;
984| int is_udplite = (udp_sk(sk)->pcflag);
985| bool slow;
986|
987|
988|
989|
990| if (addr_len)
991| *addr_len = sizeof(*sin);
992|
993| if (flags & 0x2000)
994| return ip_recv_error(sk, msg, len);
995|
996|try_again:
997| skb = __skb_recv_datagram(sk, flags | (noblock ? 0x40 : 0),
998| &peeked, &err);
999| if (!skb)
1000| goto out;
1001|
1002| ulen = skb->len - sizeof(struct udphdr);
1003| if (len > ulen)
1004| len = ulen;
1005| else if (len < ulen)
1006| msg->msg_flags |= 0x20;
1007|
1008|
1009|
1010|
1011|
1012|
1013|
1014| if (len < ulen || ((struct udp_skb_cb *)((skb)->cb))->partial_cov) {
1015| if (udp_lib_checksum_complete(skb))
1016| goto csum_copy_err;
1017| }
1018|
1019| if (skb_csum_unnecessary(skb))
1020| err = skb_copy_datagram_iovec(skb, sizeof(struct udphdr),
1021| msg->msg_iov, len);
1022| else {
1023| err = skb_copy_and_csum_datagram_iovec(skb,
1024| sizeof(struct udphdr),
1025| msg->msg_iov);
1026|
1027| if (err == -22)
1028| goto csum_copy_err;
1029| }
1030|
1031| if (err)
1032| goto out_free;
1033|
1034| if (!peeked)
1035| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) { case 1:
1036| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1037|
1038| sock_recv_ts_and_drops(msg, sk, skb);
1039|
1040|
1041| if (sin) {
1042| sin->sin_family = 2;
1043| sin->sin_port = udp_hdr(skb)->source;
1044| sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
1045| __st_memset_st__(sin->__pad, 0, sizeof(sin->__pad));
1046| }
1047| if (inet->cmsg_flags)
1048| ip_cmsg_recv(msg, skb);
1049|
1050| err = len;
1051| if (flags & 0x20)
1052| err = ulen;
1053|
1054|out_free:
1055| skb_free_datagram_locked(sk, skb);
1056|out:
1057| return err;
1058|
1059|csum_copy_err:
1060| slow = lock_sock_fast(sk);
1061| if (!skb_kill_datagram(sk, skb, flags))
1062| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[1]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1063| unlock_sock_fast(sk, slow);
1064|
1065| if (noblock)
1066| return -11;
1067| goto try_again;
1068|}
1069|
1070|
1071|int udp_disconnect(struct sock *sk, int flags)
1072|{
1073| struct inet_sock *inet = inet_sk(sk);
1074|
1075|
1076|
1077|
1078| sk->__sk_common.skc_state = TCP_CLOSE;
1079| inet->inet_daddr = 0;
1080| inet->inet_dport = 0;
1081| sock_rps_save_rxhash(sk, 0);
1082| sk->__sk_common.skc_bound_dev_if = 0;
1083| if (!(sk->sk_userlocks & 4))
1084| inet_reset_saddr(sk);
1085|
1086| if (!(sk->sk_userlocks & 8)) {
1087| sk->__sk_common.skc_prot->unhash(sk);
1088| inet->inet_sport = 0;
1089| }
1090| sk_dst_reset(sk);
1091| return 0;
1092|}
1093|extern typeof(udp_disconnect) udp_disconnect; extern void *__crc_udp_disconnect ; static const unsigned long __kcrctab_udp_disconnect = (unsigned long) &__crc_udp_disconnect; static const char __kstrtab_udp_disconnect[] = "" "udp_disconnect"; static const struct kernel_symbol __ksymtab_udp_disconnect = { (unsigned long)&udp_disconnect, __kstrtab_udp_disconnect };
1094|
1095|void udp_lib_unhash(struct sock *sk)
1096|{
1097| if (sk_hashed(sk)) {
1098| struct udp_table *udptable = sk->__sk_common.skc_prot->h.udp_table;
1099| struct udp_hslot *hslot, *hslot2;
1100|
1101| hslot = udp_hashslot(udptable, sock_net(sk),
1102| udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[0]);
1103| hslot2 = udp_hashslot2(udptable, udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1]);
1104|
1105| __st_spin_lock_bh_st__(&hslot->lock);
1106| if (sk_nulls_del_node_init_rcu(sk)) {
1107| hslot->count--;
1108| inet_sk(sk)->inet_num = 0;
1109| sock_prot_inuse_add(sock_net(sk), sk->__sk_common.skc_prot, -1);
1110|
1111| __st_spin_lock_st__(&hslot2->lock);
1112| hlist_nulls_del_init_rcu(&udp_sk(sk)->inet.sk.__sk_common.skc_portaddr_node);
1113| hslot2->count--;
1114| __st_spin_unlock_st__(&hslot2->lock);
1115| }
1116| __st_spin_unlock_bh_st__(&hslot->lock);
1117| }
1118|}
1119|extern typeof(udp_lib_unhash) udp_lib_unhash; extern void *__crc_udp_lib_unhash ; static const unsigned long __kcrctab_udp_lib_unhash = (unsigned long) &__crc_udp_lib_unhash; static const char __kstrtab_udp_lib_unhash[] = "" "udp_lib_unhash"; static const struct kernel_symbol __ksymtab_udp_lib_unhash = { (unsigned long)&udp_lib_unhash, __kstrtab_udp_lib_unhash };
1120|
1121|
1122|
1123|
1124|void udp_lib_rehash(struct sock *sk, u16 newhash)
1125|{
1126| if (sk_hashed(sk)) {
1127| struct udp_table *udptable = sk->__sk_common.skc_prot->h.udp_table;
1128| struct udp_hslot *hslot, *hslot2, *nhslot2;
1129|
1130| hslot2 = udp_hashslot2(udptable, udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1]);
1131| nhslot2 = udp_hashslot2(udptable, newhash);
1132| udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[1] = newhash;
1133| if (hslot2 != nhslot2) {
1134| hslot = udp_hashslot(udptable, sock_net(sk),
1135| udp_sk(sk)->inet.sk.__sk_common.skc_u16hashes[0]);
1136|
1137| __st_spin_lock_bh_st__(&hslot->lock);
1138|
1139| __st_spin_lock_st__(&hslot2->lock);
1140| hlist_nulls_del_init_rcu(&udp_sk(sk)->inet.sk.__sk_common.skc_portaddr_node);
1141| hslot2->count--;
1142| __st_spin_unlock_st__(&hslot2->lock);
1143|
1144| __st_spin_lock_st__(&nhslot2->lock);
1145| hlist_nulls_add_head_rcu(&udp_sk(sk)->inet.sk.__sk_common.skc_portaddr_node,
1146| &nhslot2->head);
1147| nhslot2->count++;
1148| __st_spin_unlock_st__(&nhslot2->lock);
1149|
1150| __st_spin_unlock_bh_st__(&hslot->lock);
1151| }
1152| }
1153|}
1154|extern typeof(udp_lib_rehash) udp_lib_rehash; extern void *__crc_udp_lib_rehash ; static const unsigned long __kcrctab_udp_lib_rehash = (unsigned long) &__crc_udp_lib_rehash; static const char __kstrtab_udp_lib_rehash[] = "" "udp_lib_rehash"; static const struct kernel_symbol __ksymtab_udp_lib_rehash = { (unsigned long)&udp_lib_rehash, __kstrtab_udp_lib_rehash };
1155|
1156|static void udp_v4_rehash(struct sock *sk)
1157|{
1158| u16 new_hash = udp4_portaddr_hash(sock_net(sk),
1159| inet_sk(sk)->inet_rcv_saddr,
1160| inet_sk(sk)->inet_num);
1161| udp_lib_rehash(sk, new_hash);
1162|}
1163|
1164|static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
1165|{
1166| int rc;
1167|
1168| if (inet_sk(sk)->inet_daddr)
1169| sock_rps_save_rxhash(sk, skb->rxhash);
1170|
1171| rc = ip_queue_rcv_skb(sk, skb);
1172| if (rc < 0) {
1173| int is_udplite = (udp_sk(sk)->pcflag);
1174|
1175|
1176| if (rc == -12)
1177| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) { case 1:
1178| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1179| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1180| kfree_skb(skb);
1181| return -1;
1182| }
1183|
1184| return 0;
1185|
1186|}
1187|int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
1188|{
1189| struct udp_sock *up = udp_sk(sk);
1190| int rc;
1191| int is_udplite = (udp_sk(sk)->pcflag);
1192|
1193|
1194|
1195|
1196| if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb))
1197| goto drop;
1198| nf_reset(skb);
1199|
1200| if (up->encap_type) {
1201| if (skb->len > sizeof(struct udphdr) &&
1202| up->encap_rcv != ((void *)0)) {
1203| int ret;
1204|
1205| ret = (*up->encap_rcv)(sk, skb);
1206| if (ret <= 0) {
1207| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) { case 1:
1208|
1209| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INDATAGRAMS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1210| return -ret;
1211| }
1212| }
1213|
1214|
1215| }
1216|
1217|
1218|
1219|
1220| if ((is_udplite & 0x4) && ((struct udp_skb_cb *)((skb)->cb))->partial_cov) {
1221| if (up->pcrlen == 0) {
1222| do { if (net_msg_warn && net_ratelimit()) printk("<4>" "UDPLITE: partial coverage " "%d while full coverage %d requested\n", ((struct udp_skb_cb *)((skb)->cb))->cscov, skb->len); } while(0)
1223|
1224| ;
1225| goto drop;
1226| }
1227|
1228|
1229|
1230|
1231|
1232|
1233| if (((struct udp_skb_cb *)((skb)->cb))->cscov < up->pcrlen) {
1234| do { if (net_msg_warn && net_ratelimit()) printk("<4>" "UDPLITE: coverage %d too small, need min %d\n", ((struct udp_skb_cb *)((skb)->cb))->cscov, up->pcrlen); } while(0)
1235|
1236| ;
1237| goto drop;
1238| }
1239| }
1240|
1241| if (({ typeof(*(sk->sk_filter)) *_________p1 = (typeof(*(sk->sk_filter))* )(*(volatile typeof((sk->sk_filter)) *)&((sk->sk_filter))); do { static bool __warned; if (debug_lockdep_rcu_enabled() && !__warned && !(rcu_read_lock_held() || (1))) { __warned = true; lockdep_rcu_dereference("net/ipv4/.tmp_udp.o.armored.c", 1414); } } while (0); ; do { } while (0); ((typeof(*(sk->sk_filter)) *)(_________p1)); })) {
1242| if (udp_lib_checksum_complete(skb))
1243| goto drop;
1244| }
1245|
1246|
1247| if (sk_rcvqueues_full(sk, skb))
1248| goto drop;
1249|
1250| rc = 0;
1251|
1252| spin_lock(&((sk)->sk_lock.slock));
1253| if (!((sk)->sk_lock.owned))
1254| rc = __udp_queue_rcv_skb(sk, skb);
1255| else if (sk_add_backlog(sk, skb)) {
1256| spin_unlock(&((sk)->sk_lock.slock));
1257| goto drop;
1258| }
1259| spin_unlock(&((sk)->sk_lock.slock));
1260|
1261| return rc;
1262|
1263|drop:
1264| do { if (is_udplite) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1265| atomic_inc(&sk->sk_drops);
1266| kfree_skb(skb);
1267| return -1;
1268|}
1269|
1270|
1271|static void flush_stack(struct sock **stack, unsigned int count,
1272| struct sk_buff *skb, unsigned int final)
1273|{
1274| unsigned int i;
1275| struct sk_buff *skb1 = ((void *)0);
1276| struct sock *sk;
1277|
1278| for (i = 0; i < count; i++) {
1279| sk = stack[i];
1280| if (skb1 == ((void *)0))
1281| skb1 = (i == final) ? skb : skb_clone(skb, ((( gfp_t)0x20u)));
1282|
1283| if (!skb1) {
1284| atomic_inc(&sk->sk_drops);
1285| do { if ((udp_sk(sk)->pcflag)) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) { case 1:
1286| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_RCVBUFERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1287| do { if ((udp_sk(sk)->pcflag)) do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1:
1288| do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((sock_net(sk))->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1289| }
1290|
1291| if (skb1 && udp_queue_rcv_skb(sk, skb1) <= 0)
1292| skb1 = ((void *)0);
1293| }
1294| if (skb1)
1295| kfree_skb(skb1);
1296|}
1297|
1298|
1299|
1300|
1301|
1302|
1303|static int __udp4_lib_mcast_deliver(struct net *net, struct sk_buff *skb,
1304| struct udphdr *uh,
1305| __be32 saddr, __be32 daddr,
1306| struct udp_table *udptable)
1307|{
1308| struct sock *sk, *stack[256 / sizeof(struct sock *)];
1309| struct udp_hslot *hslot = udp_hashslot(udptable, net, (__builtin_constant_p((__u16)(( __u16)(__be16)(uh->dest))) ? ((__u16)( (((__u16)(( __u16)(__be16)(uh->dest)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(uh->dest)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(uh->dest))));
1310| int dif;
1311| unsigned int i, count = 0;
1312|
1313| __st_spin_lock_st__(&hslot->lock);
1314| sk = sk_nulls_head(&hslot->head);
1315| dif = skb->dev->ifindex;
1316| sk = udp_v4_mcast_next(net, sk, uh->dest, daddr, uh->source, saddr, dif);
1317| while (sk) {
1318| stack[count++] = sk;
1319| sk = udp_v4_mcast_next(net, sk_nulls_next(sk), uh->dest,
1320| daddr, uh->source, saddr, dif);
1321| if (count == (sizeof(stack) / sizeof((stack)[0]) + (sizeof(struct { int:-!!(0); })))) {
1322| if (!sk)
1323| break;
1324| flush_stack(stack, count, skb, ~0);
1325| count = 0;
1326| }
1327| }
1328|
1329|
1330|
1331| for (i = 0; i < count; i++)
1332| sock_hold(stack[i]);
1333|
1334| __st_spin_unlock_st__(&hslot->lock);
1335|
1336|
1337|
1338|
1339| if (count) {
1340| flush_stack(stack, count, skb, count - 1);
1341|
1342| for (i = 0; i < count; i++)
1343| sock_put(stack[i]);
1344| } else {
1345| kfree_skb(skb);
1346| }
1347| return 0;
1348|}
1349|
1350|
1351|
1352|
1353|
1354|
1355|static inline int udp4_csum_init(struct sk_buff *skb, struct udphdr *uh,
1356| int proto)
1357|{
1358| const struct iphdr *iph;
1359| int err;
1360|
1361| ((struct udp_skb_cb *)((skb)->cb))->partial_cov = 0;
1362| ((struct udp_skb_cb *)((skb)->cb))->cscov = skb->len;
1363|
1364| if (proto == IPPROTO_UDPLITE) {
1365| err = udplite_checksum_init(skb, uh);
1366| if (err)
1367| return err;
1368| }
1369|
1370| iph = ip_hdr(skb);
1371| if (uh->check == 0) {
1372| skb->ip_summed = 1;
1373| } else if (skb->ip_summed == 2) {
1374| if (!csum_tcpudp_magic(iph->saddr, iph->daddr, skb->len,
1375| proto, skb->csum))
1376| skb->ip_summed = 1;
1377| }
1378| if (!skb_csum_unnecessary(skb))
1379| skb->csum = csum_tcpudp_nofold(iph->saddr, iph->daddr,
1380| skb->len, proto, 0);
1381|
1382|
1383|
1384|
1385| return 0;
1386|}
1387|
1388|
1389|
1390|
1391|
1392|int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
1393| int proto)
1394|{
1395| struct sock *sk;
1396| struct udphdr *uh;
1397| unsigned short ulen;
1398| struct rtable *rt = skb_rtable(skb);
1399| __be32 saddr, daddr;
1400| struct net *net = dev_net(skb->dev);
1401|
1402|
1403|
1404|
1405| if (!pskb_may_pull(skb, sizeof(struct udphdr)))
1406| goto drop;
1407|
1408| uh = udp_hdr(skb);
1409| ulen = (__builtin_constant_p((__u16)(( __u16)(__be16)(uh->len))) ? ((__u16)( (((__u16)(( __u16)(__be16)(uh->len)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(uh->len)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(uh->len)));
1410| saddr = ip_hdr(skb)->saddr;
1411| daddr = ip_hdr(skb)->daddr;
1412|
1413| if (ulen > skb->len)
1414| goto short_packet;
1415|
1416| if (proto == IPPROTO_UDP) {
1417|
1418| if (ulen < sizeof(*uh) || pskb_trim_rcsum(skb, ulen))
1419| goto short_packet;
1420| uh = udp_hdr(skb);
1421| }
1422|
1423| if (udp4_csum_init(skb, uh, proto))
1424| goto csum_error;
1425|
1426| if (rt->rt_flags & (0x10000000|0x20000000))
1427| return __udp4_lib_mcast_deliver(net, skb, uh,
1428| saddr, daddr, udptable);
1429|
1430| sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable);
1431|
1432| if (sk != ((void *)0)) {
1433| int ret = udp_queue_rcv_skb(sk, skb);
1434| sock_put(sk);
1435|
1436|
1437|
1438|
1439| if (ret > 0)
1440| return -ret;
1441| return 0;
1442| }
1443|
1444| if (!xfrm4_policy_check(((void *)0), XFRM_POLICY_IN, skb))
1445| goto drop;
1446| nf_reset(skb);
1447|
1448|
1449| if (udp_lib_checksum_complete(skb))
1450| goto csum_error;
1451|
1452| do { if (proto == IPPROTO_UDPLITE) do { do { const void *__vpp_verify = (typeof(&((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) { case 1: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) { case 1: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_NOPORTS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1453| icmp_send(skb, 3, 3, 0);
1454|
1455|
1456|
1457|
1458|
1459| kfree_skb(skb);
1460| return 0;
1461|
1462|short_packet:
1463| do { if (net_msg_warn && net_ratelimit()) printk("<7>" "UDP%s: short packet: From %pI4:%u %d/%d to %pI4:%u\n", proto == IPPROTO_UDPLITE ? "-Lite" : "", &saddr, (__builtin_constant_p((__u16)(( __u16)(__be16)(uh->source))) ? ((__u16)( (((__u16)(( __u16)(__be16)(uh->source)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(uh->source)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(uh->source))), ulen, skb->len, &daddr, (__builtin_constant_p((__u16)(( __u16)(__be16)(uh->dest))) ? ((__u16)( (((__u16)(( __u16)(__be16)(uh->dest)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(uh->dest)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(uh->dest)))); } while(0)
1464|
1465|
1466|
1467|
1468|
1469|
1470| ;
1471| goto drop;
1472|
1473|csum_error:
1474|
1475|
1476|
1477|
1478| do { if (net_msg_warn && net_ratelimit()) printk("<7>" "UDP%s: bad checksum. From %pI4:%u to %pI4:%u ulen %d\n", proto == IPPROTO_UDPLITE ? "-Lite" : "", &saddr, (__builtin_constant_p((__u16)(( __u16)(__be16)(uh->source))) ? ((__u16)( (((__u16)(( __u16)(__be16)(uh->source)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(uh->source)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(uh->source))), &daddr, (__builtin_constant_p((__u16)(( __u16)(__be16)(uh->dest))) ? ((__u16)( (((__u16)(( __u16)(__be16)(uh->dest)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(uh->dest)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(uh->dest))), ulen); } while(0)
1479|
1480|
1481|
1482|
1483|
1484| ;
1485|drop:
1486| do { if (proto == IPPROTO_UDPLITE) do { do { const void *__vpp_verify = (typeof(&((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udplite_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else do { do { const void *__vpp_verify = (typeof(&((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) { case 1: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) pao_T__; const int pao_ID__ = (__builtin_constant_p((1)) && (((1)) == 1 || ((1)) == -1)) ? ((1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = ((1)); (void)pao_tmp__; } switch (sizeof(((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))) { case 1: if (pao_ID__ == 1) asm("incb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decb ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addb %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "qi" ((pao_T__)((1)))); break; case 2: if (pao_ID__ == 1) asm("incw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decw ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addw %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 4: if (pao_ID__ == 1) asm("incl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decl ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addl %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "ri" ((pao_T__)((1)))); break; case 8: if (pao_ID__ == 1) asm("incq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else if (pao_ID__ == -1) asm("decq ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS]))))); else asm("addq %1, ""%%""gs"":%P" "0" : "+m" (((((net)->mib.udp_statistics[0]->mibs[UDP_MIB_INERRORS])))) : "re" ((pao_T__)((1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } while(0);
1487| kfree_skb(skb);
1488| return 0;
1489|}
1490|
1491|int udp_rcv(struct sk_buff *skb)
1492|{
1493| return __udp4_lib_rcv(skb, &udp_table, IPPROTO_UDP);
1494|}
1495|
1496|void udp_destroy_sock(struct sock *sk)
1497|{
1498| bool slow = lock_sock_fast(sk);
1499| udp_flush_pending_frames(sk);
1500| unlock_sock_fast(sk, slow);
1501|}
1502|
1503|
1504|
1505|
1506|int udp_lib_setsockopt(struct sock *sk, int level, int optname,
1507| char *optval, unsigned int optlen,
1508| int (*push_pending_frames)(struct sock *))
1509|{
1510| struct udp_sock *up = udp_sk(sk);
1511| int val;
1512| int err = 0;
1513| int is_udplite = (udp_sk(sk)->pcflag);
1514|
1515| if (optlen < sizeof(int))
1516| return -22;
1517|
1518| if (__st_get_user_st__(val, (int *)optval))
1519| return -14;
1520|
1521| switch (optname) {
1522| case 1:
1523| if (val != 0) {
1524| up->corkflag = 1;
1525| } else {
1526| up->corkflag = 0;
1527| lock_sock(sk);
1528| (*push_pending_frames)(sk);
1529| release_sock(sk);
1530| }
1531| break;
1532|
1533| case 100:
1534| switch (val) {
1535| case 0:
1536| case 2:
1537| case 1:
1538| up->encap_rcv = xfrm4_udp_encap_rcv;
1539|
1540| case 3:
1541| up->encap_type = val;
1542| break;
1543| default:
1544| err = -92;
1545| break;
1546| }
1547| break;
1548|
1549|
1550|
1551|
1552|
1553|
1554| case 10:
1555| if (!is_udplite)
1556| return -92;
1557| if (val != 0 && val < 8)
1558| val = 8;
1559| else if (val > ((u16)(~0U)))
1560| val = ((u16)(~0U));
1561| up->pcslen = val;
1562| up->pcflag |= 0x2;
1563| break;
1564|
1565|
1566|
1567|
1568| case 11:
1569| if (!is_udplite)
1570| return -92;
1571| if (val != 0 && val < 8)
1572| val = 8;
1573| else if (val > ((u16)(~0U)))
1574| val = ((u16)(~0U));
1575| up->pcrlen = val;
1576| up->pcflag |= 0x4;
1577| break;
1578|
1579| default:
1580| err = -92;
1581| break;
1582| }
1583|
1584| return err;
1585|}
1586|extern typeof(udp_lib_setsockopt) udp_lib_setsockopt; extern void *__crc_udp_lib_setsockopt ; static const unsigned long __kcrctab_udp_lib_setsockopt = (unsigned long) &__crc_udp_lib_setsockopt; static const char __kstrtab_udp_lib_setsockopt[] = "" "udp_lib_setsockopt"; static const struct kernel_symbol __ksymtab_udp_lib_setsockopt = { (unsigned long)&udp_lib_setsockopt, __kstrtab_udp_lib_setsockopt };
1587|
1588|int udp_setsockopt(struct sock *sk, int level, int optname,
1589| char *optval, unsigned int optlen)
1590|{
1591| if (level == 17 || level == 136)
1592| return udp_lib_setsockopt(sk, level, optname, optval, optlen,
1593| udp_push_pending_frames);
1594| return ip_setsockopt(sk, level, optname, optval, optlen);
1595|}
1596|
1597|
1598|int compat_udp_setsockopt(struct sock *sk, int level, int optname,
1599| char *optval, unsigned int optlen)
1600|{
1601| if (level == 17 || level == 136)
1602| return udp_lib_setsockopt(sk, level, optname, optval, optlen,
1603| udp_push_pending_frames);
1604| return compat_ip_setsockopt(sk, level, optname, optval, optlen);
1605|}
1606|
1607|
1608|int udp_lib_getsockopt(struct sock *sk, int level, int optname,
1609| char *optval, int *optlen)
1610|{
1611| struct udp_sock *up = udp_sk(sk);
1612| int val, len;
1613|
1614| if (__st_get_user_st__(len, optlen))
1615| return -14;
1616|
1617| len = ({ unsigned int __min1 = (len); unsigned int __min2 = (sizeof(int)); __min1 < __min2 ? __min1: __min2; });
1618|
1619| if (len < 0)
1620| return -22;
1621|
1622| switch (optname) {
1623| case 1:
1624| val = up->corkflag;
1625| break;
1626|
1627| case 100:
1628| val = up->encap_type;
1629| break;
1630|
1631|
1632|
1633| case 10:
1634| val = up->pcslen;
1635| break;
1636|
1637| case 11:
1638| val = up->pcrlen;
1639| break;
1640|
1641| default:
1642| return -92;
1643| }
1644|
1645| if (__st_put_user_st__(len, optlen))
1646| return -14;
1647| if (copy_to_user(optval, &val, len))
1648| return -14;
1649| return 0;
1650|}
1651|extern typeof(udp_lib_getsockopt) udp_lib_getsockopt; extern void *__crc_udp_lib_getsockopt ; static const unsigned long __kcrctab_udp_lib_getsockopt = (unsigned long) &__crc_udp_lib_getsockopt; static const char __kstrtab_udp_lib_getsockopt[] = "" "udp_lib_getsockopt"; static const struct kernel_symbol __ksymtab_udp_lib_getsockopt = { (unsigned long)&udp_lib_getsockopt, __kstrtab_udp_lib_getsockopt };
1652|
1653|int udp_getsockopt(struct sock *sk, int level, int optname,
1654| char *optval, int *optlen)
1655|{
1656| if (level == 17 || level == 136)
1657| return udp_lib_getsockopt(sk, level, optname, optval, optlen);
1658| return ip_getsockopt(sk, level, optname, optval, optlen);
1659|}
1660|
1661|
1662|int compat_udp_getsockopt(struct sock *sk, int level, int optname,
1663| char *optval, int *optlen)
1664|{
1665| if (level == 17 || level == 136)
1666| return udp_lib_getsockopt(sk, level, optname, optval, optlen);
1667| return compat_ip_getsockopt(sk, level, optname, optval, optlen);
1668|}
1669|unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait)
1670|{
1671| unsigned int mask = datagram_poll(file, sock, wait);
1672| struct sock *sk = sock->sk;
1673|
1674|
1675| if ((mask & 0x0040) && !(file->f_flags & 00004000) &&
1676| !(sk->sk_shutdown & 1) && !first_packet_length(sk))
1677| mask &= ~(0x0001 | 0x0040);
1678|
1679| return mask;
1680|
1681|}
1682|extern typeof(udp_poll) udp_poll; extern void *__crc_udp_poll ; static const unsigned long __kcrctab_udp_poll = (unsigned long) &__crc_udp_poll; static const char __kstrtab_udp_poll[] = "" "udp_poll"; static const struct kernel_symbol __ksymtab_udp_poll = { (unsigned long)&udp_poll, __kstrtab_udp_poll };
1683|
1684|struct proto udp_prot = {
1685| .name = "UDP",
1686| .owner = ((struct module *)0),
1687| .close = udp_lib_close,
1688| .connect = ip4_datagram_connect,
1689| .disconnect = udp_disconnect,
1690| .ioctl = udp_ioctl,
1691| .destroy = udp_destroy_sock,
1692| .setsockopt = udp_setsockopt,
1693| .getsockopt = udp_getsockopt,
1694| .sendmsg = udp_sendmsg,
1695| .recvmsg = udp_recvmsg,
1696| .sendpage = udp_sendpage,
1697| .backlog_rcv = __udp_queue_rcv_skb,
1698| .hash = udp_lib_hash,
1699| .unhash = udp_lib_unhash,
1700| .rehash = udp_v4_rehash,
1701| .get_port = udp_v4_get_port,
1702| .memory_allocated = &udp_memory_allocated,
1703| .sysctl_mem = sysctl_udp_mem,
1704| .sysctl_wmem = &sysctl_udp_wmem_min,
1705| .sysctl_rmem = &sysctl_udp_rmem_min,
1706| .obj_size = sizeof(struct udp_sock),
1707| .slab_flags = 0x00080000UL,
1708| .h.udp_table = &udp_table,
1709|
1710| .compat_setsockopt = compat_udp_setsockopt,
1711| .compat_getsockopt = compat_udp_getsockopt,
1712|
1713|};
1714|extern typeof(udp_prot) udp_prot; extern void *__crc_udp_prot ; static const unsigned long __kcrctab_udp_prot = (unsigned long) &__crc_udp_prot; static const char __kstrtab_udp_prot[] = "" "udp_prot"; static const struct kernel_symbol __ksymtab_udp_prot = { (unsigned long)&udp_prot, __kstrtab_udp_prot };
1715|
1716|
1717|
1718|
1719|static struct sock *udp_get_first(struct seq_file *seq, int start)
1720|{
1721| struct sock *sk;
1722| struct udp_iter_state *state = seq->private;
1723| struct net *net = seq_file_net(seq);
1724|
1725| for (state->bucket = start; state->bucket <= state->udp_table->mask;
1726| ++state->bucket) {
1727| struct hlist_nulls_node *node;
1728| struct udp_hslot *hslot = &state->udp_table->hash[state->bucket];
1729|
1730| if (hlist_nulls_empty(&hslot->head))
1731| continue;
1732|
1733| __st_spin_lock_bh_st__(&hslot->lock);
|The lock is locked here. next
1734| for (node = (&hslot->head)->first; (!is_a_nulls(node)) && ({ sk = ({ const typeof( ((typeof(*sk) *)0)->__sk_common.skc_nulls_node ) *__mptr = (node); (typeof(*sk) *)( (char *)__mptr - 1 );}); 1;}); node = node->next) {
|not affected ==> the lock is still locked. prev next
1735| if (!net_eq(sock_net(sk), net))
|not affected ==> the lock is still locked. prev next
1736| continue;
1737| if (sk->__sk_common.skc_family == state->family)
|not affected ==> the lock is still locked. prev next
1738| goto found;
|not affected ==> the lock is still locked. prev next
1739| }
1740| __st_spin_unlock_bh_st__(&hslot->lock);
1741| }
1742| sk = ((void *)0);
1743|found:
1744| return sk;
|not affected ==> the lock is still locked. prev next
1745|}
|Leaving function in locked state.[& . * hslot lock] prev
1746|
1747|static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
1748|{
1749| struct udp_iter_state *state = seq->private;
1750| struct net *net = seq_file_net(seq);
1751|
1752| do {
1753| sk = sk_nulls_next(sk);
1754| } while (sk && (!net_eq(sock_net(sk), net) || sk->__sk_common.skc_family != state->family));
1755|
1756| if (!sk) {
1757| if (state->bucket <= state->udp_table->mask)
1758| __st_spin_unlock_bh_st__(&state->udp_table->hash[state->bucket].lock);
1759| return udp_get_first(seq, state->bucket + 1);
1760| }
1761| return sk;
1762|}
1763|
1764|static struct sock *udp_get_idx(struct seq_file *seq, loff_t pos)
1765|{
1766| struct sock *sk = udp_get_first(seq, 0);
1767|
1768| if (sk)
1769| while (pos && (sk = udp_get_next(seq, sk)) != ((void *)0))
1770| --pos;
1771| return pos ? ((void *)0) : sk;
1772|}
1773|
1774|static void *udp_seq_start(struct seq_file *seq, loff_t *pos)
1775|{
1776| struct udp_iter_state *state = seq->private;
1777| state->bucket = 65536;
1778|
1779| return *pos ? udp_get_idx(seq, *pos-1) : ((void *)1);
1780|}
1781|
1782|static void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1783|{
1784| struct sock *sk;
1785|
1786| if (v == ((void *)1))
1787| sk = udp_get_idx(seq, 0);
1788| else
1789| sk = udp_get_next(seq, v);
1790|
1791| ++*pos;
1792| return sk;
1793|}
1794|
1795|static void udp_seq_stop(struct seq_file *seq, void *v)
1796|{
1797| struct udp_iter_state *state = seq->private;
1798|
1799| if (state->bucket <= state->udp_table->mask)
1800| __st_spin_unlock_bh_st__(&state->udp_table->hash[state->bucket].lock);
1801|}
1802|
1803|static int udp_seq_open(struct inode *inode, struct file *file)
1804|{
1805| struct udp_seq_afinfo *afinfo = PDE(inode)->data;
1806| struct udp_iter_state *s;
1807| int err;
1808|
1809| err = seq_open_net(inode, file, &afinfo->seq_ops,
1810| sizeof(struct udp_iter_state));
1811| if (err < 0)
1812| return err;
1813|
1814| s = ((struct seq_file *)file->private_data)->private;
1815| s->family = afinfo->family;
1816| s->udp_table = afinfo->udp_table;
1817| return err;
1818|}
1819|
1820|
1821|int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo)
1822|{
1823| struct proc_dir_entry *p;
1824| int rc = 0;
1825|
1826| afinfo->seq_fops.open = udp_seq_open;
1827| afinfo->seq_fops.read = seq_read;
1828| afinfo->seq_fops.llseek = seq_lseek;
1829| afinfo->seq_fops.release = seq_release_net;
1830|
1831| afinfo->seq_ops.start = udp_seq_start;
1832| afinfo->seq_ops.next = udp_seq_next;
1833| afinfo->seq_ops.stop = udp_seq_stop;
1834|
1835| p = proc_create_data(afinfo->name, (00400|00040|00004), net->proc_net,
1836| &afinfo->seq_fops, afinfo);
1837| if (!p)
1838| rc = -12;
1839| return rc;
1840|}
1841|extern typeof(udp_proc_register) udp_proc_register; extern void *__crc_udp_proc_register ; static const unsigned long __kcrctab_udp_proc_register = (unsigned long) &__crc_udp_proc_register; static const char __kstrtab_udp_proc_register[] = "" "udp_proc_register"; static const struct kernel_symbol __ksymtab_udp_proc_register = { (unsigned long)&udp_proc_register, __kstrtab_udp_proc_register };
1842|
1843|void udp_proc_unregister(struct net *net, struct udp_seq_afinfo *afinfo)
1844|{
1845| proc_net_remove(net, afinfo->name);
1846|}
1847|extern typeof(udp_proc_unregister) udp_proc_unregister; extern void *__crc_udp_proc_unregister ; static const unsigned long __kcrctab_udp_proc_unregister = (unsigned long) &__crc_udp_proc_unregister; static const char __kstrtab_udp_proc_unregister[] = "" "udp_proc_unregister"; static const struct kernel_symbol __ksymtab_udp_proc_unregister = { (unsigned long)&udp_proc_unregister, __kstrtab_udp_proc_unregister };
1848|
1849|
1850|static void udp4_format_sock(struct sock *sp, struct seq_file *f,
1851| int bucket, int *len)
1852|{
1853| struct inet_sock *inet = inet_sk(sp);
1854| __be32 dest = inet->inet_daddr;
1855| __be32 src = inet->inet_rcv_saddr;
1856| __u16 destp = (__builtin_constant_p((__u16)(( __u16)(__be16)(inet->inet_dport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(inet->inet_dport)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(inet->inet_dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(inet->inet_dport)));
1857| __u16 srcp = (__builtin_constant_p((__u16)(( __u16)(__be16)(inet->inet_sport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(inet->inet_sport)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(inet->inet_sport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(inet->inet_sport)));
1858|
1859| seq_printf(f, "%5d: %08X:%04X %08X:%04X"
1860| " %02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %d%n",
1861| bucket, src, srcp, dest, destp, sp->__sk_common.skc_state,
1862| sk_wmem_alloc_get(sp),
1863| sk_rmem_alloc_get(sp),
1864| 0, 0L, 0, sock_i_uid(sp), 0, sock_i_ino(sp),
1865| atomic_read(&sp->__sk_common.skc_refcnt), sp,
1866| atomic_read(&sp->sk_drops), len);
1867|}
1868|
1869|int udp4_seq_show(struct seq_file *seq, void *v)
1870|{
1871| if (v == ((void *)1))
1872| seq_printf(seq, "%-127s\n",
1873| " sl local_address rem_address st tx_queue "
1874| "rx_queue tr tm->when retrnsmt uid timeout "
1875| "inode ref pointer drops");
1876| else {
1877| struct udp_iter_state *state = seq->private;
1878| int len;
1879|
1880| udp4_format_sock(v, seq, state->bucket, &len);
1881| seq_printf(seq, "%*s\n", 127 - len, "");
1882| }
1883| return 0;
1884|}
1885|
1886|
1887|static struct udp_seq_afinfo udp4_seq_afinfo = {
1888| .name = "udp",
1889| .family = 2,
1890| .udp_table = &udp_table,
1891| .seq_fops = {
1892| .owner = ((struct module *)0),
1893| },
1894| .seq_ops = {
1895| .show = udp4_seq_show,
1896| },
1897|};
1898|
1899|static int udp4_proc_init_net(struct net *net)
1900|{
1901| return udp_proc_register(net, &udp4_seq_afinfo);
1902|}
1903|
1904|static void udp4_proc_exit_net(struct net *net)
1905|{
1906| udp_proc_unregister(net, &udp4_seq_afinfo);
1907|}
1908|
1909|static struct pernet_operations udp4_net_ops = {
1910| .init = udp4_proc_init_net,
1911| .exit = udp4_proc_exit_net,
1912|};
1913|
1914|int udp4_proc_init(void)
1915|{
1916| return register_pernet_subsys(&udp4_net_ops);
1917|}
1918|
1919|void udp4_proc_exit(void)
1920|{
1921| unregister_pernet_subsys(&udp4_net_ops);
1922|}
1923|
1924|
1925|static unsigned long uhash_entries;
1926|static int set_uhash_entries(char *str)
1927|{
1928| if (!str)
1929| return 0;
1930| uhash_entries = simple_strtoul(str, &str, 0);
1931| if (uhash_entries && uhash_entries < (0 ? 128 : 256))
1932| uhash_entries = (0 ? 128 : 256);
1933| return 1;
1934|}
1935|static const char __setup_str_set_uhash_entries[] = "uhash_entries="; static struct obs_kernel_param __setup_set_uhash_entries = { __setup_str_set_uhash_entries, set_uhash_entries, 0 };
1936|
1937|void udp_table_init(struct udp_table *table, const char *name)
1938|{
1939| unsigned int i;
1940|
1941| if (!0)
1942| table->hash = alloc_large_system_hash(name,
1943| 2 * sizeof(struct udp_hslot),
1944| uhash_entries,
1945| 21,
1946| 0,
1947| &table->log,
1948| &table->mask,
1949| 64 * 1024);
1950|
1951|
1952|
1953| if (0 || table->mask < (0 ? 128 : 256) - 1) {
1954| table->hash = kmalloc((0 ? 128 : 256) *
1955| 2 * sizeof(struct udp_hslot), __st_GFP_KERNEL_st__);
1956| if (!table->hash)
1957| panic(name);
1958| table->log = ( __builtin_constant_p((0 ? 128 : 256)) ? ( ((0 ? 128 : 256)) < 1 ? ____ilog2_NaN() : ((0 ? 128 : 256)) & (1ULL << 63) ? 63 : ((0 ? 128 : 256)) & (1ULL << 62) ? 62 : ((0 ? 128 : 256)) & (1ULL << 61) ? 61 : ((0 ? 128 : 256)) & (1ULL << 60) ? 60 : ((0 ? 128 : 256)) & (1ULL << 59) ? 59 : ((0 ? 128 : 256)) & (1ULL << 58) ? 58 : ((0 ? 128 : 256)) & (1ULL << 57) ? 57 : ((0 ? 128 : 256)) & (1ULL << 56) ? 56 : ((0 ? 128 : 256)) & (1ULL << 55) ? 55 : ((0 ? 128 : 256)) & (1ULL << 54) ? 54 : ((0 ? 128 : 256)) & (1ULL << 53) ? 53 : ((0 ? 128 : 256)) & (1ULL << 52) ? 52 : ((0 ? 128 : 256)) & (1ULL << 51) ? 51 : ((0 ? 128 : 256)) & (1ULL << 50) ? 50 : ((0 ? 128 : 256)) & (1ULL << 49) ? 49 : ((0 ? 128 : 256)) & (1ULL << 48) ? 48 : ((0 ? 128 : 256)) & (1ULL << 47) ? 47 : ((0 ? 128 : 256)) & (1ULL << 46) ? 46 : ((0 ? 128 : 256)) & (1ULL << 45) ? 45 : ((0 ? 128 : 256)) & (1ULL << 44) ? 44 : ((0 ? 128 : 256)) & (1ULL << 43) ? 43 : ((0 ? 128 : 256)) & (1ULL << 42) ? 42 : ((0 ? 128 : 256)) & (1ULL << 41) ? 41 : ((0 ? 128 : 256)) & (1ULL << 40) ? 40 : ((0 ? 128 : 256)) & (1ULL << 39) ? 39 : ((0 ? 128 : 256)) & (1ULL << 38) ? 38 : ((0 ? 128 : 256)) & (1ULL << 37) ? 37 : ((0 ? 128 : 256)) & (1ULL << 36) ? 36 : ((0 ? 128 : 256)) & (1ULL << 35) ? 35 : ((0 ? 128 : 256)) & (1ULL << 34) ? 34 : ((0 ? 128 : 256)) & (1ULL << 33) ? 33 : ((0 ? 128 : 256)) & (1ULL << 32) ? 32 : ((0 ? 128 : 256)) & (1ULL << 31) ? 31 : ((0 ? 128 : 256)) & (1ULL << 30) ? 30 : ((0 ? 128 : 256)) & (1ULL << 29) ? 29 : ((0 ? 128 : 256)) & (1ULL << 28) ? 28 : ((0 ? 128 : 256)) & (1ULL << 27) ? 27 : ((0 ? 128 : 256)) & (1ULL << 26) ? 26 : ((0 ? 128 : 256)) & (1ULL << 25) ? 25 : ((0 ? 128 : 256)) & (1ULL << 24) ? 24 : ((0 ? 128 : 256)) & (1ULL << 23) ? 23 : ((0 ? 128 : 256)) & (1ULL << 22) ? 22 : ((0 ? 128 : 256)) & (1ULL << 21) ? 21 : ((0 ? 128 : 256)) & (1ULL << 20) ? 20 : ((0 ? 128 : 256)) & (1ULL << 19) ? 19 : ((0 ? 128 : 256)) & (1ULL << 18) ? 18 : ((0 ? 128 : 256)) & (1ULL << 17) ? 17 : ((0 ? 128 : 256)) & (1ULL << 16) ? 16 : ((0 ? 128 : 256)) & (1ULL << 15) ? 15 : ((0 ? 128 : 256)) & (1ULL << 14) ? 14 : ((0 ? 128 : 256)) & (1ULL << 13) ? 13 : ((0 ? 128 : 256)) & (1ULL << 12) ? 12 : ((0 ? 128 : 256)) & (1ULL << 11) ? 11 : ((0 ? 128 : 256)) & (1ULL << 10) ? 10 : ((0 ? 128 : 256)) & (1ULL << 9) ? 9 : ((0 ? 128 : 256)) & (1ULL << 8) ? 8 : ((0 ? 128 : 256)) & (1ULL << 7) ? 7 : ((0 ? 128 : 256)) & (1ULL << 6) ? 6 : ((0 ? 128 : 256)) & (1ULL << 5) ? 5 : ((0 ? 128 : 256)) & (1ULL << 4) ? 4 : ((0 ? 128 : 256)) & (1ULL << 3) ? 3 : ((0 ? 128 : 256)) & (1ULL << 2) ? 2 : ((0 ? 128 : 256)) & (1ULL << 1) ? 1 : ((0 ? 128 : 256)) & (1ULL << 0) ? 0 : ____ilog2_NaN() ) : (sizeof((0 ? 128 : 256)) <= 4) ? __ilog2_u32((0 ? 128 : 256)) : __ilog2_u64((0 ? 128 : 256)) );
1959| table->mask = (0 ? 128 : 256) - 1;
1960| }
1961| table->hash2 = table->hash + (table->mask + 1);
1962| for (i = 0; i <= table->mask; i++) {
1963| ((&table->hash[i].head)->first = (struct hlist_nulls_node *) (1UL | (((long)i) << 1)));
1964| table->hash[i].count = 0;
1965| do { spinlock_check(&table->hash[i].lock); do { static struct lock_class_key __key; __raw_spin_lock_init((&(&table->hash[i].lock)->rlock), "&(&table->hash[i].lock)->rlock", &__key); } while (0); } while (0);
1966| }
1967| for (i = 0; i <= table->mask; i++) {
1968| ((&table->hash2[i].head)->first = (struct hlist_nulls_node *) (1UL | (((long)i) << 1)));
1969| table->hash2[i].count = 0;
1970| do { spinlock_check(&table->hash2[i].lock); do { static struct lock_class_key __key; __raw_spin_lock_init((&(&table->hash2[i].lock)->rlock), "&(&table->hash2[i].lock)->rlock", &__key); } while (0); } while (0);
1971| }
1972|}
1973|
1974|void udp_init(void)
1975|{
1976| unsigned long nr_pages, limit;
1977|
1978| udp_table_init(&udp_table, "UDP");
1979|
1980|
1981|
1982|
1983| nr_pages = totalram_pages - 0UL;
1984| limit = ({ typeof(nr_pages) _min1 = (nr_pages); typeof(1UL<<(28-12)) _min2 = (1UL<<(28-12)); (void) (&_min1 == &_min2); _min1 < _min2 ? _min1 : _min2; }) >> (20-12);
1985| limit = (limit * (nr_pages >> (20-12))) >> (12 -11);
1986| limit = ({ typeof(limit) _max1 = (limit); typeof(128UL) _max2 = (128UL); (void) (&_max1 == &_max2); _max1 > _max2 ? _max1 : _max2; });
1987| sysctl_udp_mem[0] = limit / 4 * 3;
1988| sysctl_udp_mem[1] = limit;
1989| sysctl_udp_mem[2] = sysctl_udp_mem[0] * 2;
1990|
1991| sysctl_udp_rmem_min = ((int)((1UL) << 12));
1992| sysctl_udp_wmem_min = ((int)((1UL) << 12));
1993|}
1994|
1995|int udp4_ufo_send_check(struct sk_buff *skb)
1996|{
1997| const struct iphdr *iph;
1998| struct udphdr *uh;
1999|
2000| if (!pskb_may_pull(skb, sizeof(*uh)))
2001| return -22;
2002|
2003| iph = ip_hdr(skb);
2004| uh = udp_hdr(skb);
2005|
2006| uh->check = ~csum_tcpudp_magic(iph->saddr, iph->daddr, skb->len,
2007| IPPROTO_UDP, 0);
2008| skb->csum_start = skb_transport_header(skb) - skb->head;
2009| skb->csum_offset = 1;
2010| skb->ip_summed = 3;
2011| return 0;
2012|}
2013|
2014|struct sk_buff *udp4_ufo_fragment(struct sk_buff *skb, int features)
2015|{
2016| struct sk_buff *segs = ERR_PTR(-22);
2017| unsigned int mss;
2018| int offset;
2019| __wsum csum;
2020|
2021| mss = ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size;
2022| if (skb->len <= mss)
2023| goto out;
2024|
2025| if (skb_gso_ok(skb, features | (SKB_GSO_DODGY << 16))) {
2026|
2027| int type = ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type;
2028|
2029| if (type & ~(SKB_GSO_UDP | SKB_GSO_DODGY) || !(type & (SKB_GSO_UDP))
2030| )
2031| goto out;
2032|
2033| ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_segs = (((skb->len) + (mss) - 1) / (mss));
2034|
2035| segs = ((void *)0);
2036| goto out;
2037| }
2038|
2039|
2040|
2041|
2042| offset = skb->csum_start - skb_headroom(skb);
2043| csum = skb_checksum(skb, offset, skb->len - offset, 0);
2044| offset += skb->csum_offset;
2045| *(__sum16 *)(skb->data + offset) = csum_fold(csum);
2046| skb->ip_summed = 0;
2047|
2048|
2049|
2050|
2051| segs = skb_segment(skb, features);
2052|out:
2053| return segs;
2054|}