aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/cleanpatch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-05-19 19:33:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-19 19:33:29 -0400
commit754cdd4aba225b74dcc35cc384aeb0c42b505e8b (patch)
tree8647f635336748667d68e68940dec1fcf88d51dd /scripts/cleanpatch
parentdb07b02304d0d70bf8273abc93d94e4c8d2f9cec (diff)
parent460ed2ea04da012e5575eb357a47a7f6407767de (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: Blackfin SPORTS UART Driver: converting BFIN->BLACKFIN Blackfin serial driver: add extra IRQ flag for 8250 serial driver 8250 Serial Driver: Added support for 8250-class UARTs in HV Sistemas H8606 board Blackfin arch: Fix bug - USB fails to build for BF524/BF526 Blackfin arch: update boards defconfig files Blackfin arch: IO Port functions to read/write unalligned memory Blackfin arch: enable a choice to provide 4M DMA memory Blackfin arch: cleanup the icplb/dcplb multiple hit checks Blackfin arch: Add workaround to read edge triggered GPIOs Blackfin arch: Sync channel defines with struct dma_register dma_io_base_addr. Blackfin arch: Check for Anomaly 05000182 [Blackfin] arch: rename bf5xx-flash to bfin-async-flash [Blackfin] arch: Blackfin checksum annotations
Diffstat (limited to 'scripts/cleanpatch')
0 files changed, 0 insertions, 0 deletions
a177e4c3f4
a6b42e83f249
1da177e4c3f4
5a7b46b36941

54a015104136
5a7b46b36941
1da177e4c3f4

a6b42e83f249
1da177e4c3f4
5a7b46b36941

54a015104136
5a7b46b36941
1da177e4c3f4

a6b42e83f249
1da177e4c3f4
5a7b46b36941

54a015104136
5a7b46b36941
1da177e4c3f4

a6b42e83f249
1da177e4c3f4
5a7b46b36941

54a015104136
5a7b46b36941
1da177e4c3f4

a6b42e83f249
1da177e4c3f4
5a7b46b36941


54a015104136
5a7b46b36941
1da177e4c3f4

a29c33f4e506
1da177e4c3f4
86a264abe542
1da177e4c3f4
a29c33f4e506
1da177e4c3f4
a29c33f4e506






1da177e4c3f4



a6b42e83f249
1da177e4c3f4
5a7b46b36941


54a015104136
5a7b46b36941
1da177e4c3f4

a6b42e83f249
a29c33f4e506
1da177e4c3f4
86a264abe542
1da177e4c3f4
a29c33f4e506




1da177e4c3f4
a29c33f4e506


1da177e4c3f4



a6b42e83f249
1da177e4c3f4
5a7b46b36941

54a015104136
5a7b46b36941
1da177e4c3f4

a6b42e83f249
1da177e4c3f4
5a7b46b36941

54a015104136
5a7b46b36941
1da177e4c3f4




ae2975bc3476
1da177e4c3f4

ae2975bc3476
1da177e4c3f4

ae2975bc3476

1da177e4c3f4









ae2975bc3476
1da177e4c3f4

ae2975bc3476
1da177e4c3f4



ae2975bc3476





1da177e4c3f4




003d7ab47916
1da177e4c3f4
86a264abe542

1da177e4c3f4



86a264abe542
1da177e4c3f4




86a264abe542
1da177e4c3f4




1da177e4c3f4


003d7ab47916
1da177e4c3f4



b0e77598f871
1da177e4c3f4


















003d7ab47916
1da177e4c3f4
a29c33f4e506
1da177e4c3f4

003d7ab47916
1da177e4c3f4
a29c33f4e506
1da177e4c3f4

003d7ab47916
1da177e4c3f4
a29c33f4e506
1da177e4c3f4

003d7ab47916
1da177e4c3f4
a29c33f4e506
1da177e4c3f4
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





                                                                           
                       


                           
                             






                           
                                                                                          
 

                                                                              
                                                          
                   

 
                                                                                           
 

                                                                               
                                                          
                   

 
                                                                              
 

                                                                         
                                                    
                   

 
                                                             
 

                                                                      
                                               
                   

 
                                         
 

                                                
                                        
                   

 
                                                             
 

                                                                      
                                               
                   

 
                                         
 

                                                
                                        
                   

 
                                                                               
 


                                                                      
                                                     
                   

 
                                                                                                             
 
                                                 
                   
                                   
 






                                                                        



                      
                                                                               
 


                                                                      
                                                     
                   

 
 
                                                                                                             
 
                                                 
                   




                                                                        
 


                                                  



                      
                                           
 

                                                  
                                        
                   

 
                                           
 

                                                  
                                        
                   




                                                        
                                                           

                        
                    

                                                   

                                                                     









                                                            
                                                           

                        
                    



                                                   





                                                              




                 
                                                                            
 

                                                 



                               
                                      




                                     
                                                                    




                                    


                 
                                                                            



                                      
                                       


















                                                           
                         
 
                                                                               

 
                          
 
                                                                                

 
                         
 
                                                                               

 
                          
 
                                                                                
 
/*
 *	Wrapper functions for 16bit uid back compatibility. All nicely tied
 *	together in the faint hope we can take the out in five years time.
 */

#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/notifier.h>
#include <linux/reboot.h>
#include <linux/prctl.h>
#include <linux/capability.h>
#include <linux/init.h>
#include <linux/highuid.h>
#include <linux/security.h>
#include <linux/syscalls.h>

#include <asm/uaccess.h>

SYSCALL_DEFINE3(chown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
{
	long ret = sys_chown(filename, low2highuid(user), low2highgid(group));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(3, ret, filename, user, group);
	return ret;
}

SYSCALL_DEFINE3(lchown16, const char __user *, filename, old_uid_t, user, old_gid_t, group)
{
	long ret = sys_lchown(filename, low2highuid(user), low2highgid(group));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(3, ret, filename, user, group);
	return ret;
}

SYSCALL_DEFINE3(fchown16, unsigned int, fd, old_uid_t, user, old_gid_t, group)
{
	long ret = sys_fchown(fd, low2highuid(user), low2highgid(group));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(3, ret, fd, user, group);
	return ret;
}

SYSCALL_DEFINE2(setregid16, old_gid_t, rgid, old_gid_t, egid)
{
	long ret = sys_setregid(low2highgid(rgid), low2highgid(egid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(2, ret, rgid, egid);
	return ret;
}

SYSCALL_DEFINE1(setgid16, old_gid_t, gid)
{
	long ret = sys_setgid(low2highgid(gid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(1, ret, gid);
	return ret;
}

SYSCALL_DEFINE2(setreuid16, old_uid_t, ruid, old_uid_t, euid)
{
	long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(2, ret, ruid, euid);
	return ret;
}

SYSCALL_DEFINE1(setuid16, old_uid_t, uid)
{
	long ret = sys_setuid(low2highuid(uid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(1, ret, uid);
	return ret;
}

SYSCALL_DEFINE3(setresuid16, old_uid_t, ruid, old_uid_t, euid, old_uid_t, suid)
{
	long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid),
				 low2highuid(suid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(3, ret, ruid, euid, suid);
	return ret;
}

SYSCALL_DEFINE3(getresuid16, old_uid_t __user *, ruidp, old_uid_t __user *, euidp, old_uid_t __user *, suidp)
{
	const struct cred *cred = current_cred();
	int retval;
	old_uid_t ruid, euid, suid;

	ruid = high2lowuid(from_kuid_munged(cred->user_ns, cred->uid));
	euid = high2lowuid(from_kuid_munged(cred->user_ns, cred->euid));
	suid = high2lowuid(from_kuid_munged(cred->user_ns, cred->suid));

	if (!(retval   = put_user(ruid, ruidp)) &&
	    !(retval   = put_user(euid, euidp)))
		retval = put_user(suid, suidp);

	return retval;
}

SYSCALL_DEFINE3(setresgid16, old_gid_t, rgid, old_gid_t, egid, old_gid_t, sgid)
{
	long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid),
				 low2highgid(sgid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(3, ret, rgid, egid, sgid);
	return ret;
}


SYSCALL_DEFINE3(getresgid16, old_gid_t __user *, rgidp, old_gid_t __user *, egidp, old_gid_t __user *, sgidp)
{
	const struct cred *cred = current_cred();
	int retval;
	old_gid_t rgid, egid, sgid;

	rgid = high2lowgid(from_kgid_munged(cred->user_ns, cred->gid));
	egid = high2lowgid(from_kgid_munged(cred->user_ns, cred->egid));
	sgid = high2lowgid(from_kgid_munged(cred->user_ns, cred->sgid));

	if (!(retval   = put_user(rgid, rgidp)) &&
	    !(retval   = put_user(egid, egidp)))
		retval = put_user(sgid, sgidp);

	return retval;
}

SYSCALL_DEFINE1(setfsuid16, old_uid_t, uid)
{
	long ret = sys_setfsuid(low2highuid(uid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(1, ret, uid);
	return ret;
}

SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid)
{
	long ret = sys_setfsgid(low2highgid(gid));
	/* avoid REGPARM breakage on x86: */
	asmlinkage_protect(1, ret, gid);
	return ret;
}

static int groups16_to_user(old_gid_t __user *grouplist,
    struct group_info *group_info)
{
	struct user_namespace *user_ns = current_user_ns();
	int i;
	old_gid_t group;
	kgid_t kgid;

	for (i = 0; i < group_info->ngroups; i++) {
		kgid = GROUP_AT(group_info, i);
		group = high2lowgid(from_kgid_munged(user_ns, kgid));
		if (put_user(group, grouplist+i))
			return -EFAULT;
	}

	return 0;
}

static int groups16_from_user(struct group_info *group_info,
    old_gid_t __user *grouplist)
{
	struct user_namespace *user_ns = current_user_ns();
	int i;
	old_gid_t group;
	kgid_t kgid;

	for (i = 0; i < group_info->ngroups; i++) {
		if (get_user(group, grouplist+i))
			return  -EFAULT;

		kgid = make_kgid(user_ns, low2highgid(group));
		if (!gid_valid(kgid))
			return -EINVAL;

		GROUP_AT(group_info, i) = kgid;
	}

	return 0;
}

SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
{
	const struct cred *cred = current_cred();
	int i;

	if (gidsetsize < 0)
		return -EINVAL;

	i = cred->group_info->ngroups;
	if (gidsetsize) {
		if (i > gidsetsize) {
			i = -EINVAL;
			goto out;
		}
		if (groups16_to_user(grouplist, cred->group_info)) {
			i = -EFAULT;
			goto out;
		}
	}
out:
	return i;
}

SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist)
{
	struct group_info *group_info;
	int retval;

	if (!nsown_capable(CAP_SETGID))
		return -EPERM;
	if ((unsigned)gidsetsize > NGROUPS_MAX)
		return -EINVAL;

	group_info = groups_alloc(gidsetsize);
	if (!group_info)
		return -ENOMEM;
	retval = groups16_from_user(group_info, grouplist);
	if (retval) {
		put_group_info(group_info);
		return retval;
	}

	retval = set_current_groups(group_info);
	put_group_info(group_info);

	return retval;
}

SYSCALL_DEFINE0(getuid16)
{
	return high2lowuid(from_kuid_munged(current_user_ns(), current_uid()));
}

SYSCALL_DEFINE0(geteuid16)
{
	return high2lowuid(from_kuid_munged(current_user_ns(), current_euid()));
}

SYSCALL_DEFINE0(getgid16)
{
	return high2lowgid(from_kgid_munged(current_user_ns(), current_gid()));
}

SYSCALL_DEFINE0(getegid16)
{
	return high2lowgid(from_kgid_munged(current_user_ns(), current_egid()));
}