aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/failed-syscalls-by-pid.py
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2014-02-15 06:40:58 -0500
committerJiri Kosina <jkosina@suse.cz>2014-03-10 09:06:36 -0400
commit1c279f4f971ba9d39e93c5f60452ade62c9ce0c5 (patch)
tree7361df3e946c1588c1d308539050a34dbc202903 /tools/perf/scripts/python/failed-syscalls-by-pid.py
parente4556c0f35a9b3c179003c35084f3232c43c6109 (diff)
mmc: core: typo fix in printk specifier
Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'tools/perf/scripts/python/failed-syscalls-by-pid.py')
0 files changed, 0 insertions, 0 deletions
r David S. Miller <davem@davemloft.net> 2013-04-04 17:37:05 -0400 net: frag queue per hash bucket locking' href='/cgit/cgit.cgi/litmus-rt-imx6.git/commit/net/ipv4/inet_fragment.c?id=19952cc4f8f572493293a8caed27c4be89c5fc9d'>19952cc4f8f5
321a3a99e471




3b4bc4a2bfe8
321a3a99e471

7eb95156d9dc



19952cc4f8f5

7eb95156d9dc
19952cc4f8f5


7eb95156d9dc




b24b8a247ff6

3b4bc4a2bfe8
321a3a99e471
7eb95156d9dc


e5a2bb842cd9


d433673e5f91
3140c25c8210
3ef0eb0db4bf
e5a2bb842cd9


7eb95156d9dc

321a3a99e471
7eb95156d9dc

277e650ddfc6
81566e8322c3


e8e16b706e84

6b102865e7ba
e8e16b706e84
6d7b857d541e

81566e8322c3


277e650ddfc6

19952cc4f8f5







277e650ddfc6
19952cc4f8f5


3ef0eb0db4bf
277e650ddfc6






bc578a54f0fd
277e650ddfc6

bc578a54f0fd
277e650ddfc6

277e650ddfc6
1e4b82873af0
6ddc082223ef
d433673e5f91
1e4b82873af0
1e4b82873af0








6ddc082223ef
d433673e5f91
1e4b82873af0
547b792cac0a

1e4b82873af0


6ddc082223ef
1e4b82873af0


d433673e5f91

1e4b82873af0

d433673e5f91
1e4b82873af0
d433673e5f91

1e4b82873af0
c95477090a2a


1e4b82873af0


8e7999c44ee9
6b102865e7ba
8e7999c44ee9



6b102865e7ba
d433673e5f91
6b102865e7ba


d433673e5f91
8e7999c44ee9
3ef0eb0db4bf

3140c25c8210
3ef0eb0db4bf
8e7999c44ee9


3140c25c8210
8e7999c44ee9

68399ac37e57


3ef0eb0db4bf
8e7999c44ee9

bc578a54f0fd
8e7999c44ee9










2588fe1d782f
ac18e7509e7d

9a375803feaa
2588fe1d782f
19952cc4f8f5
2588fe1d782f

2588fe1d782f
9a375803feaa
2588fe1d782f
19952cc4f8f5
9a375803feaa





19952cc4f8f5


2588fe1d782f


19952cc4f8f5
2588fe1d782f
19952cc4f8f5
ac18e7509e7d
2588fe1d782f
19952cc4f8f5

bc578a54f0fd
2588fe1d782f





b2fd5321dd16
2588fe1d782f


19952cc4f8f5


3ef0eb0db4bf
2588fe1d782f

e521db9d790a
ac18e7509e7d

e521db9d790a






54db0cc2ba0d
c6fda282294d
d433673e5f91

e521db9d790a


b56141ab34e2
e521db9d790a


c6fda282294d
ac18e7509e7d
9a375803feaa
c6fda282294d


ac18e7509e7d
c6fda282294d


9a375803feaa
c6fda282294d
abd6523d15f4
ac18e7509e7d

56bca31ff198
abd6523d15f4
19952cc4f8f5
abd6523d15f4
5a3da1fe9561
abd6523d15f4
19952cc4f8f5



ac18e7509e7d
abd6523d15f4
19952cc4f8f5
abd6523d15f4


5a3da1fe9561
abd6523d15f4
19952cc4f8f5
abd6523d15f4

5a3da1fe9561



abd6523d15f4

5a3da1fe9561











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365

















                                                                                 
                         

                            
                       
 
                     
                          





















                                                                                          
 





                                                          
                                                                           
                             
 

                                                
                                            
                                          
                                     
 

                                                                   


                                                         

                                                                 


                                                               

                                                                          




                               
                                                              

 



                                          

                                                          
 


                                                




                                                               

                                                               
                                                               
                                    


                               


                                                
                                
                                      
                                      


                                   

                                          
                                    

                               
 


                                                                      

                           
                                       
                          

                                         


                                   

                                                                              







                                    
                             


                                     
                              






                                                                     
                                                  

                                        
                                                  

         
                              
 
                                                                               
                                    
 








                                                                       
                               
                                           
 

                                                    


                                        
                    


                                              

                                             

                        
                                      
                 

                                   
 


                                 


                                 
 
                                                                               



                                  
                     
                                                          


                                 
                                                   
                          

                                         
                                                
                                                   


                              
                                                   

                                                                  


                                                                          
                                           

                                    
                                                       










                                                       
 

                                                                       
                          
 
                                    

                                   
      
                          
 
                                                                





                                                                


                                   


                                                               
                                         
           
                                                    
                                                         
                                                

                                                     
                                                             





                                                
                                                          


                                        


                                              
                                  

                  
 

                                                                      






                                          
                    
                               

                                        


                                                                 
                                     


                 
 
                                                                       
                                                


                                  
                                        


                            
                                               
 
 

                                                                   
                            
 
                                    
                                  
                      
 



                                                   
                                                       
                                               
                                                     


                                              
                        
         
                                     

                              



                                                    

                              











                                                                               
/*
 * inet fragments management
 *
 *		This program is free software; you can redistribute it and/or
 *		modify it under the terms of the GNU General Public License
 *		as published by the Free Software Foundation; either version
 *		2 of the License, or (at your option) any later version.
 *
 * 		Authors:	Pavel Emelyanov <xemul@openvz.org>
 *				Started as consolidation of ipv4/ip_fragment.c,
 *				ipv6/reassembly. and ipv6 nf conntrack reassembly
 */

#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/module.h>
#include <linux/timer.h>
#include <linux/mm.h>
#include <linux/random.h>
#include <linux/skbuff.h>
#include <linux/rtnetlink.h>
#include <linux/slab.h>

#include <net/sock.h>
#include <net/inet_frag.h>
#include <net/inet_ecn.h>

/* Given the OR values of all fragments, apply RFC 3168 5.3 requirements
 * Value : 0xff if frame should be dropped.
 *         0 or INET_ECN_CE value, to be ORed in to final iph->tos field
 */
const u8 ip_frag_ecn_table[16] = {
	/* at least one fragment had CE, and others ECT_0 or ECT_1 */
	[IPFRAG_ECN_CE | IPFRAG_ECN_ECT_0]			= INET_ECN_CE,
	[IPFRAG_ECN_CE | IPFRAG_ECN_ECT_1]			= INET_ECN_CE,
	[IPFRAG_ECN_CE | IPFRAG_ECN_ECT_0 | IPFRAG_ECN_ECT_1]	= INET_ECN_CE,

	/* invalid combinations : drop frame */
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_CE] = 0xff,
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_ECT_0] = 0xff,
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_ECT_1] = 0xff,
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_ECT_0 | IPFRAG_ECN_ECT_1] = 0xff,
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_CE | IPFRAG_ECN_ECT_0] = 0xff,
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_CE | IPFRAG_ECN_ECT_1] = 0xff,
	[IPFRAG_ECN_NOT_ECT | IPFRAG_ECN_CE | IPFRAG_ECN_ECT_0 | IPFRAG_ECN_ECT_1] = 0xff,
};
EXPORT_SYMBOL(ip_frag_ecn_table);

static void inet_frag_secret_rebuild(unsigned long dummy)
{
	struct inet_frags *f = (struct inet_frags *)dummy;
	unsigned long now = jiffies;
	int i;

	/* Per bucket lock NOT needed here, due to write lock protection */
	write_lock(&f->lock);

	get_random_bytes(&f->rnd, sizeof(u32));
	for (i = 0; i < INETFRAGS_HASHSZ; i++) {
		struct inet_frag_bucket *hb;
		struct inet_frag_queue *q;
		struct hlist_node *n;

		hb = &f->hash[i];
		hlist_for_each_entry_safe(q, n, &hb->chain, list) {
			unsigned int hval = f->hashfn(q);

			if (hval != i) {
				struct inet_frag_bucket *hb_dest;

				hlist_del(&q->list);

				/* Relink to new hash chain. */
				hb_dest = &f->hash[hval];
				hlist_add_head(&q->list, &hb_dest->chain);
			}
		}
	}
	write_unlock(&f->lock);

	mod_timer(&f->secret_timer, now + f->secret_interval);
}

void inet_frags_init(struct inet_frags *f)
{
	int i;

	for (i = 0; i < INETFRAGS_HASHSZ; i++) {
		struct inet_frag_bucket *hb = &f->hash[i];

		spin_lock_init(&hb->chain_lock);
		INIT_HLIST_HEAD(&hb->chain);
	}
	rwlock_init(&f->lock);

	f->rnd = (u32) ((num_physpages ^ (num_physpages>>7)) ^
				   (jiffies ^ (jiffies >> 6)));

	setup_timer(&f->secret_timer, inet_frag_secret_rebuild,
			(unsigned long)f);
	f->secret_timer.expires = jiffies + f->secret_interval;
	add_timer(&f->secret_timer);
}
EXPORT_SYMBOL(inet_frags_init);

void inet_frags_init_net(struct netns_frags *nf)
{
	nf->nqueues = 0;
	init_frag_mem_limit(nf);
	INIT_LIST_HEAD(&nf->lru_list);
	spin_lock_init(&nf->lru_lock);
}
EXPORT_SYMBOL(inet_frags_init_net);

void inet_frags_fini(struct inet_frags *f)
{
	del_timer(&f->secret_timer);
}
EXPORT_SYMBOL(inet_frags_fini);

void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f)
{
	nf->low_thresh = 0;

	local_bh_disable();
	inet_frag_evictor(nf, f, true);
	local_bh_enable();

	percpu_counter_destroy(&nf->mem);
}
EXPORT_SYMBOL(inet_frags_exit_net);

static inline void fq_unlink(struct inet_frag_queue *fq, struct inet_frags *f)
{
	struct inet_frag_bucket *hb;
	unsigned int hash;

	read_lock(&f->lock);
	hash = f->hashfn(fq);
	hb = &f->hash[hash];

	spin_lock(&hb->chain_lock);
	hlist_del(&fq->list);
	spin_unlock(&hb->chain_lock);

	read_unlock(&f->lock);
	inet_frag_lru_del(fq);
}

void inet_frag_kill(struct inet_frag_queue *fq, struct inet_frags *f)
{
	if (del_timer(&fq->timer))
		atomic_dec(&fq->refcnt);

	if (!(fq->last_in & INET_FRAG_COMPLETE)) {
		fq_unlink(fq, f);
		atomic_dec(&fq->refcnt);
		fq->last_in |= INET_FRAG_COMPLETE;
	}
}
EXPORT_SYMBOL(inet_frag_kill);

static inline void frag_kfree_skb(struct netns_frags *nf, struct inet_frags *f,
		struct sk_buff *skb)
{
	if (f->skb_free)
		f->skb_free(skb);
	kfree_skb(skb);
}

void inet_frag_destroy(struct inet_frag_queue *q, struct inet_frags *f,
					int *work)
{
	struct sk_buff *fp;
	struct netns_frags *nf;
	unsigned int sum, sum_truesize = 0;

	WARN_ON(!(q->last_in & INET_FRAG_COMPLETE));
	WARN_ON(del_timer(&q->timer) != 0);

	/* Release all fragment data. */
	fp = q->fragments;
	nf = q->net;
	while (fp) {
		struct sk_buff *xp = fp->next;

		sum_truesize += fp->truesize;
		frag_kfree_skb(nf, f, fp);
		fp = xp;
	}
	sum = sum_truesize + f->qsize;
	if (work)
		*work -= sum;
	sub_frag_mem_limit(q, sum);

	if (f->destructor)
		f->destructor(q);
	kfree(q);

}
EXPORT_SYMBOL(inet_frag_destroy);

int inet_frag_evictor(struct netns_frags *nf, struct inet_frags *f, bool force)
{
	struct inet_frag_queue *q;
	int work, evicted = 0;

	if (!force) {
		if (frag_mem_limit(nf) <= nf->high_thresh)
			return 0;
	}

	work = frag_mem_limit(nf) - nf->low_thresh;
	while (work > 0) {
		spin_lock(&nf->lru_lock);

		if (list_empty(&nf->lru_list)) {
			spin_unlock(&nf->lru_lock);
			break;
		}

		q = list_first_entry(&nf->lru_list,
				struct inet_frag_queue, lru_list);
		atomic_inc(&q->refcnt);
		/* Remove q from list to avoid several CPUs grabbing it */
		list_del_init(&q->lru_list);

		spin_unlock(&nf->lru_lock);

		spin_lock(&q->lock);
		if (!(q->last_in & INET_FRAG_COMPLETE))
			inet_frag_kill(q, f);
		spin_unlock(&q->lock);

		if (atomic_dec_and_test(&q->refcnt))
			inet_frag_destroy(q, f, &work);
		evicted++;
	}

	return evicted;
}