aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/include/uapi/asm/socket.h2
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c4
-rw-r--r--arch/arm/mach-mmp/gplugd.c1
-rw-r--r--arch/avr32/include/uapi/asm/socket.h2
-rw-r--r--arch/cris/include/uapi/asm/socket.h2
-rw-r--r--arch/frv/include/uapi/asm/socket.h2
-rw-r--r--arch/ia64/include/uapi/asm/socket.h2
-rw-r--r--arch/m32r/include/uapi/asm/socket.h2
-rw-r--r--arch/mips/include/uapi/asm/socket.h2
-rw-r--r--arch/mn10300/include/uapi/asm/socket.h2
-rw-r--r--arch/parisc/include/uapi/asm/socket.h2
-rw-r--r--arch/powerpc/include/asm/ppc-opcode.h1
-rw-r--r--arch/powerpc/include/uapi/asm/socket.h2
-rw-r--r--arch/powerpc/net/bpf_jit.h7
-rw-r--r--arch/powerpc/net/bpf_jit_comp.c49
-rw-r--r--arch/s390/include/uapi/asm/socket.h2
-rw-r--r--arch/sparc/include/uapi/asm/socket.h2
-rw-r--r--arch/xtensa/include/uapi/asm/socket.h2
18 files changed, 63 insertions, 25 deletions
diff --git a/arch/alpha/include/uapi/asm/socket.h b/arch/alpha/include/uapi/asm/socket.h
index 3de1394bcab8..e2fe0700b3b4 100644
--- a/arch/alpha/include/uapi/asm/socket.h
+++ b/arch/alpha/include/uapi/asm/socket.h
@@ -87,4 +87,6 @@
87 87
88#define SO_BPF_EXTENSIONS 48 88#define SO_BPF_EXTENSIONS 48
89 89
90#define SO_INCOMING_CPU 49
91
90#endif /* _UAPI_ASM_SOCKET_H */ 92#endif /* _UAPI_ASM_SOCKET_H */
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index e90a3148f385..b83f3b7737fb 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -400,7 +400,7 @@ asmlinkage long sys_oabi_sendto(int fd, void __user *buff,
400 return sys_sendto(fd, buff, len, flags, addr, addrlen); 400 return sys_sendto(fd, buff, len, flags, addr, addrlen);
401} 401}
402 402
403asmlinkage long sys_oabi_sendmsg(int fd, struct msghdr __user *msg, unsigned flags) 403asmlinkage long sys_oabi_sendmsg(int fd, struct user_msghdr __user *msg, unsigned flags)
404{ 404{
405 struct sockaddr __user *addr; 405 struct sockaddr __user *addr;
406 int msg_namelen; 406 int msg_namelen;
@@ -446,7 +446,7 @@ asmlinkage long sys_oabi_socketcall(int call, unsigned long __user *args)
446 break; 446 break;
447 case SYS_SENDMSG: 447 case SYS_SENDMSG:
448 if (copy_from_user(a, args, 3 * sizeof(long)) == 0) 448 if (copy_from_user(a, args, 3 * sizeof(long)) == 0)
449 r = sys_oabi_sendmsg(a[0], (struct msghdr __user *)a[1], a[2]); 449 r = sys_oabi_sendmsg(a[0], (struct user_msghdr __user *)a[1], a[2]);
450 break; 450 break;
451 default: 451 default:
452 r = sys_socketcall(call, args); 452 r = sys_socketcall(call, args);
diff --git a/arch/arm/mach-mmp/gplugd.c b/arch/arm/mach-mmp/gplugd.c
index d81b2475e67e..22762a1f9f72 100644
--- a/arch/arm/mach-mmp/gplugd.c
+++ b/arch/arm/mach-mmp/gplugd.c
@@ -158,6 +158,7 @@ struct pxa168_eth_platform_data gplugd_eth_platform_data = {
158 .port_number = 0, 158 .port_number = 0,
159 .phy_addr = 0, 159 .phy_addr = 0,
160 .speed = 0, /* Autonagotiation */ 160 .speed = 0, /* Autonagotiation */
161 .intf = PHY_INTERFACE_MODE_RMII,
161 .init = gplugd_eth_init, 162 .init = gplugd_eth_init,
162}; 163};
163 164
diff --git a/arch/avr32/include/uapi/asm/socket.h b/arch/avr32/include/uapi/asm/socket.h
index 6e6cd159924b..92121b0f5b98 100644
--- a/arch/avr32/include/uapi/asm/socket.h
+++ b/arch/avr32/include/uapi/asm/socket.h
@@ -80,4 +80,6 @@
80 80
81#define SO_BPF_EXTENSIONS 48 81#define SO_BPF_EXTENSIONS 48
82 82
83#define SO_INCOMING_CPU 49
84
83#endif /* _UAPI__ASM_AVR32_SOCKET_H */ 85#endif /* _UAPI__ASM_AVR32_SOCKET_H */
diff --git a/arch/cris/include/uapi/asm/socket.h b/arch/cris/include/uapi/asm/socket.h
index ed94e5ed0a23..60f60f5b9b35 100644
--- a/arch/cris/include/uapi/asm/socket.h
+++ b/arch/cris/include/uapi/asm/socket.h
@@ -82,6 +82,8 @@
82 82
83#define SO_BPF_EXTENSIONS 48 83#define SO_BPF_EXTENSIONS 48
84 84
85#define SO_INCOMING_CPU 49
86
85#endif /* _ASM_SOCKET_H */ 87#endif /* _ASM_SOCKET_H */
86 88
87 89
diff --git a/arch/frv/include/uapi/asm/socket.h b/arch/frv/include/uapi/asm/socket.h
index ca2c6e6f31c6..2c6890209ea6 100644
--- a/arch/frv/include/uapi/asm/socket.h
+++ b/arch/frv/include/uapi/asm/socket.h
@@ -80,5 +80,7 @@
80 80
81#define SO_BPF_EXTENSIONS 48 81#define SO_BPF_EXTENSIONS 48
82 82
83#define SO_INCOMING_CPU 49
84
83#endif /* _ASM_SOCKET_H */ 85#endif /* _ASM_SOCKET_H */
84 86
diff --git a/arch/ia64/include/uapi/asm/socket.h b/arch/ia64/include/uapi/asm/socket.h
index a1b49bac7951..09a93fb566f6 100644
--- a/arch/ia64/include/uapi/asm/socket.h
+++ b/arch/ia64/include/uapi/asm/socket.h
@@ -89,4 +89,6 @@
89 89
90#define SO_BPF_EXTENSIONS 48 90#define SO_BPF_EXTENSIONS 48
91 91
92#define SO_INCOMING_CPU 49
93
92#endif /* _ASM_IA64_SOCKET_H */ 94#endif /* _ASM_IA64_SOCKET_H */
diff --git a/arch/m32r/include/uapi/asm/socket.h b/arch/m32r/include/uapi/asm/socket.h
index 6c9a24b3aefa..e8589819c274 100644
--- a/arch/m32r/include/uapi/asm/socket.h
+++ b/arch/m32r/include/uapi/asm/socket.h
@@ -80,4 +80,6 @@
80 80
81#define SO_BPF_EXTENSIONS 48 81#define SO_BPF_EXTENSIONS 48
82 82
83#define SO_INCOMING_CPU 49
84
83#endif /* _ASM_M32R_SOCKET_H */ 85#endif /* _ASM_M32R_SOCKET_H */
diff --git a/arch/mips/include/uapi/asm/socket.h b/arch/mips/include/uapi/asm/socket.h
index a14baa218c76..2e9ee8c55a10 100644
--- a/arch/mips/include/uapi/asm/socket.h
+++ b/arch/mips/include/uapi/asm/socket.h
@@ -98,4 +98,6 @@
98 98
99#define SO_BPF_EXTENSIONS 48 99#define SO_BPF_EXTENSIONS 48
100 100
101#define SO_INCOMING_CPU 49
102
101#endif /* _UAPI_ASM_SOCKET_H */ 103#endif /* _UAPI_ASM_SOCKET_H */
diff --git a/arch/mn10300/include/uapi/asm/socket.h b/arch/mn10300/include/uapi/asm/socket.h
index 6aa3ce1854aa..f3492e8c9f70 100644
--- a/arch/mn10300/include/uapi/asm/socket.h
+++ b/arch/mn10300/include/uapi/asm/socket.h
@@ -80,4 +80,6 @@
80 80
81#define SO_BPF_EXTENSIONS 48 81#define SO_BPF_EXTENSIONS 48
82 82
83#define SO_INCOMING_CPU 49
84
83#endif /* _ASM_SOCKET_H */ 85#endif /* _ASM_SOCKET_H */
diff --git a/arch/parisc/include/uapi/asm/socket.h b/arch/parisc/include/uapi/asm/socket.h
index fe35ceacf0e7..7984a1cab3da 100644
--- a/arch/parisc/include/uapi/asm/socket.h
+++ b/arch/parisc/include/uapi/asm/socket.h
@@ -79,4 +79,6 @@
79 79
80#define SO_BPF_EXTENSIONS 0x4029 80#define SO_BPF_EXTENSIONS 0x4029
81 81
82#define SO_INCOMING_CPU 0x402A
83
82#endif /* _UAPI_ASM_SOCKET_H */ 84#endif /* _UAPI_ASM_SOCKET_H */
diff --git a/arch/powerpc/include/asm/ppc-opcode.h b/arch/powerpc/include/asm/ppc-opcode.h
index 6f8536208049..1a5287759fc8 100644
--- a/arch/powerpc/include/asm/ppc-opcode.h
+++ b/arch/powerpc/include/asm/ppc-opcode.h
@@ -204,6 +204,7 @@
204#define PPC_INST_ERATSX_DOT 0x7c000127 204#define PPC_INST_ERATSX_DOT 0x7c000127
205 205
206/* Misc instructions for BPF compiler */ 206/* Misc instructions for BPF compiler */
207#define PPC_INST_LBZ 0x88000000
207#define PPC_INST_LD 0xe8000000 208#define PPC_INST_LD 0xe8000000
208#define PPC_INST_LHZ 0xa0000000 209#define PPC_INST_LHZ 0xa0000000
209#define PPC_INST_LHBRX 0x7c00062c 210#define PPC_INST_LHBRX 0x7c00062c
diff --git a/arch/powerpc/include/uapi/asm/socket.h b/arch/powerpc/include/uapi/asm/socket.h
index a9c3e2e18c05..3474e4ef166d 100644
--- a/arch/powerpc/include/uapi/asm/socket.h
+++ b/arch/powerpc/include/uapi/asm/socket.h
@@ -87,4 +87,6 @@
87 87
88#define SO_BPF_EXTENSIONS 48 88#define SO_BPF_EXTENSIONS 48
89 89
90#define SO_INCOMING_CPU 49
91
90#endif /* _ASM_POWERPC_SOCKET_H */ 92#endif /* _ASM_POWERPC_SOCKET_H */
diff --git a/arch/powerpc/net/bpf_jit.h b/arch/powerpc/net/bpf_jit.h
index 9aee27c582dc..c406aa95b2bc 100644
--- a/arch/powerpc/net/bpf_jit.h
+++ b/arch/powerpc/net/bpf_jit.h
@@ -87,6 +87,9 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
87#define PPC_STD(r, base, i) EMIT(PPC_INST_STD | ___PPC_RS(r) | \ 87#define PPC_STD(r, base, i) EMIT(PPC_INST_STD | ___PPC_RS(r) | \
88 ___PPC_RA(base) | ((i) & 0xfffc)) 88 ___PPC_RA(base) | ((i) & 0xfffc))
89 89
90
91#define PPC_LBZ(r, base, i) EMIT(PPC_INST_LBZ | ___PPC_RT(r) | \
92 ___PPC_RA(base) | IMM_L(i))
90#define PPC_LD(r, base, i) EMIT(PPC_INST_LD | ___PPC_RT(r) | \ 93#define PPC_LD(r, base, i) EMIT(PPC_INST_LD | ___PPC_RT(r) | \
91 ___PPC_RA(base) | IMM_L(i)) 94 ___PPC_RA(base) | IMM_L(i))
92#define PPC_LWZ(r, base, i) EMIT(PPC_INST_LWZ | ___PPC_RT(r) | \ 95#define PPC_LWZ(r, base, i) EMIT(PPC_INST_LWZ | ___PPC_RT(r) | \
@@ -96,6 +99,10 @@ DECLARE_LOAD_FUNC(sk_load_byte_msh);
96#define PPC_LHBRX(r, base, b) EMIT(PPC_INST_LHBRX | ___PPC_RT(r) | \ 99#define PPC_LHBRX(r, base, b) EMIT(PPC_INST_LHBRX | ___PPC_RT(r) | \
97 ___PPC_RA(base) | ___PPC_RB(b)) 100 ___PPC_RA(base) | ___PPC_RB(b))
98/* Convenience helpers for the above with 'far' offsets: */ 101/* Convenience helpers for the above with 'far' offsets: */
102#define PPC_LBZ_OFFS(r, base, i) do { if ((i) < 32768) PPC_LBZ(r, base, i); \
103 else { PPC_ADDIS(r, base, IMM_HA(i)); \
104 PPC_LBZ(r, r, IMM_L(i)); } } while(0)
105
99#define PPC_LD_OFFS(r, base, i) do { if ((i) < 32768) PPC_LD(r, base, i); \ 106#define PPC_LD_OFFS(r, base, i) do { if ((i) < 32768) PPC_LD(r, base, i); \
100 else { PPC_ADDIS(r, base, IMM_HA(i)); \ 107 else { PPC_ADDIS(r, base, IMM_HA(i)); \
101 PPC_LD(r, r, IMM_L(i)); } } while(0) 108 PPC_LD(r, r, IMM_L(i)); } } while(0)
diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_comp.c
index cbae2dfd053c..1ca125b9c226 100644
--- a/arch/powerpc/net/bpf_jit_comp.c
+++ b/arch/powerpc/net/bpf_jit_comp.c
@@ -181,6 +181,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
181 } 181 }
182 break; 182 break;
183 case BPF_ALU | BPF_MOD | BPF_X: /* A %= X; */ 183 case BPF_ALU | BPF_MOD | BPF_X: /* A %= X; */
184 case BPF_ALU | BPF_DIV | BPF_X: /* A /= X; */
184 ctx->seen |= SEEN_XREG; 185 ctx->seen |= SEEN_XREG;
185 PPC_CMPWI(r_X, 0); 186 PPC_CMPWI(r_X, 0);
186 if (ctx->pc_ret0 != -1) { 187 if (ctx->pc_ret0 != -1) {
@@ -190,9 +191,13 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
190 PPC_LI(r_ret, 0); 191 PPC_LI(r_ret, 0);
191 PPC_JMP(exit_addr); 192 PPC_JMP(exit_addr);
192 } 193 }
193 PPC_DIVWU(r_scratch1, r_A, r_X); 194 if (code == (BPF_ALU | BPF_MOD | BPF_X)) {
194 PPC_MUL(r_scratch1, r_X, r_scratch1); 195 PPC_DIVWU(r_scratch1, r_A, r_X);
195 PPC_SUB(r_A, r_A, r_scratch1); 196 PPC_MUL(r_scratch1, r_X, r_scratch1);
197 PPC_SUB(r_A, r_A, r_scratch1);
198 } else {
199 PPC_DIVWU(r_A, r_A, r_X);
200 }
196 break; 201 break;
197 case BPF_ALU | BPF_MOD | BPF_K: /* A %= K; */ 202 case BPF_ALU | BPF_MOD | BPF_K: /* A %= K; */
198 PPC_LI32(r_scratch2, K); 203 PPC_LI32(r_scratch2, K);
@@ -200,22 +205,6 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
200 PPC_MUL(r_scratch1, r_scratch2, r_scratch1); 205 PPC_MUL(r_scratch1, r_scratch2, r_scratch1);
201 PPC_SUB(r_A, r_A, r_scratch1); 206 PPC_SUB(r_A, r_A, r_scratch1);
202 break; 207 break;
203 case BPF_ALU | BPF_DIV | BPF_X: /* A /= X; */
204 ctx->seen |= SEEN_XREG;
205 PPC_CMPWI(r_X, 0);
206 if (ctx->pc_ret0 != -1) {
207 PPC_BCC(COND_EQ, addrs[ctx->pc_ret0]);
208 } else {
209 /*
210 * Exit, returning 0; first pass hits here
211 * (longer worst-case code size).
212 */
213 PPC_BCC_SHORT(COND_NE, (ctx->idx*4)+12);
214 PPC_LI(r_ret, 0);
215 PPC_JMP(exit_addr);
216 }
217 PPC_DIVWU(r_A, r_A, r_X);
218 break;
219 case BPF_ALU | BPF_DIV | BPF_K: /* A /= K */ 208 case BPF_ALU | BPF_DIV | BPF_K: /* A /= K */
220 if (K == 1) 209 if (K == 1)
221 break; 210 break;
@@ -361,6 +350,11 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
361 protocol)); 350 protocol));
362 break; 351 break;
363 case BPF_ANC | SKF_AD_IFINDEX: 352 case BPF_ANC | SKF_AD_IFINDEX:
353 case BPF_ANC | SKF_AD_HATYPE:
354 BUILD_BUG_ON(FIELD_SIZEOF(struct net_device,
355 ifindex) != 4);
356 BUILD_BUG_ON(FIELD_SIZEOF(struct net_device,
357 type) != 2);
364 PPC_LD_OFFS(r_scratch1, r_skb, offsetof(struct sk_buff, 358 PPC_LD_OFFS(r_scratch1, r_skb, offsetof(struct sk_buff,
365 dev)); 359 dev));
366 PPC_CMPDI(r_scratch1, 0); 360 PPC_CMPDI(r_scratch1, 0);
@@ -368,14 +362,18 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
368 PPC_BCC(COND_EQ, addrs[ctx->pc_ret0]); 362 PPC_BCC(COND_EQ, addrs[ctx->pc_ret0]);
369 } else { 363 } else {
370 /* Exit, returning 0; first pass hits here. */ 364 /* Exit, returning 0; first pass hits here. */
371 PPC_BCC_SHORT(COND_NE, (ctx->idx*4)+12); 365 PPC_BCC_SHORT(COND_NE, ctx->idx * 4 + 12);
372 PPC_LI(r_ret, 0); 366 PPC_LI(r_ret, 0);
373 PPC_JMP(exit_addr); 367 PPC_JMP(exit_addr);
374 } 368 }
375 BUILD_BUG_ON(FIELD_SIZEOF(struct net_device, 369 if (code == (BPF_ANC | SKF_AD_IFINDEX)) {
376 ifindex) != 4); 370 PPC_LWZ_OFFS(r_A, r_scratch1,
377 PPC_LWZ_OFFS(r_A, r_scratch1,
378 offsetof(struct net_device, ifindex)); 371 offsetof(struct net_device, ifindex));
372 } else {
373 PPC_LHZ_OFFS(r_A, r_scratch1,
374 offsetof(struct net_device, type));
375 }
376
379 break; 377 break;
380 case BPF_ANC | SKF_AD_MARK: 378 case BPF_ANC | SKF_AD_MARK:
381 BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, mark) != 4); 379 BUILD_BUG_ON(FIELD_SIZEOF(struct sk_buff, mark) != 4);
@@ -407,6 +405,11 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
407 PPC_LHZ_OFFS(r_A, r_skb, offsetof(struct sk_buff, 405 PPC_LHZ_OFFS(r_A, r_skb, offsetof(struct sk_buff,
408 queue_mapping)); 406 queue_mapping));
409 break; 407 break;
408 case BPF_ANC | SKF_AD_PKTTYPE:
409 PPC_LBZ_OFFS(r_A, r_skb, PKT_TYPE_OFFSET());
410 PPC_ANDI(r_A, r_A, PKT_TYPE_MAX);
411 PPC_SRWI(r_A, r_A, 5);
412 break;
410 case BPF_ANC | SKF_AD_CPU: 413 case BPF_ANC | SKF_AD_CPU:
411#ifdef CONFIG_SMP 414#ifdef CONFIG_SMP
412 /* 415 /*
diff --git a/arch/s390/include/uapi/asm/socket.h b/arch/s390/include/uapi/asm/socket.h
index e031332096d7..8457636c33e1 100644
--- a/arch/s390/include/uapi/asm/socket.h
+++ b/arch/s390/include/uapi/asm/socket.h
@@ -86,4 +86,6 @@
86 86
87#define SO_BPF_EXTENSIONS 48 87#define SO_BPF_EXTENSIONS 48
88 88
89#define SO_INCOMING_CPU 49
90
89#endif /* _ASM_SOCKET_H */ 91#endif /* _ASM_SOCKET_H */
diff --git a/arch/sparc/include/uapi/asm/socket.h b/arch/sparc/include/uapi/asm/socket.h
index 54d9608681b6..4a8003a94163 100644
--- a/arch/sparc/include/uapi/asm/socket.h
+++ b/arch/sparc/include/uapi/asm/socket.h
@@ -76,6 +76,8 @@
76 76
77#define SO_BPF_EXTENSIONS 0x0032 77#define SO_BPF_EXTENSIONS 0x0032
78 78
79#define SO_INCOMING_CPU 0x0033
80
79/* Security levels - as per NRL IPv6 - don't actually do anything */ 81/* Security levels - as per NRL IPv6 - don't actually do anything */
80#define SO_SECURITY_AUTHENTICATION 0x5001 82#define SO_SECURITY_AUTHENTICATION 0x5001
81#define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002 83#define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002
diff --git a/arch/xtensa/include/uapi/asm/socket.h b/arch/xtensa/include/uapi/asm/socket.h
index 39acec0cf0b1..c46f6a696849 100644
--- a/arch/xtensa/include/uapi/asm/socket.h
+++ b/arch/xtensa/include/uapi/asm/socket.h
@@ -91,4 +91,6 @@
91 91
92#define SO_BPF_EXTENSIONS 48 92#define SO_BPF_EXTENSIONS 48
93 93
94#define SO_INCOMING_CPU 49
95
94#endif /* _XTENSA_SOCKET_H */ 96#endif /* _XTENSA_SOCKET_H */