Merge branch 'parisc-3.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc updates from Helge Deller: "Changes include: - wire up the bpf syscall - remove CONFIG_64BIT usage from some userspace-exported header files - use compat functions for msgctl, shmat, shmctl and semtimedop syscalls" * 'parisc-3.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Avoid using CONFIG_64BIT in userspace exported headers parisc: Use compat layer for msgctl, shmat, shmctl and semtimedop syscalls parisc: Use BUILD_BUG() instead of undefined functions parisc: Wire up bpf syscall
This commit is contained in:
Коммит
555e5986ba
|
@ -9,6 +9,8 @@
|
|||
#include <asm/errno.h>
|
||||
#include <asm-generic/uaccess-unaligned.h>
|
||||
|
||||
#include <linux/bug.h>
|
||||
|
||||
#define VERIFY_READ 0
|
||||
#define VERIFY_WRITE 1
|
||||
|
||||
|
@ -28,11 +30,6 @@
|
|||
* that put_user is the same as __put_user, etc.
|
||||
*/
|
||||
|
||||
extern int __get_kernel_bad(void);
|
||||
extern int __get_user_bad(void);
|
||||
extern int __put_kernel_bad(void);
|
||||
extern int __put_user_bad(void);
|
||||
|
||||
static inline long access_ok(int type, const void __user * addr,
|
||||
unsigned long size)
|
||||
{
|
||||
|
@ -43,8 +40,8 @@ static inline long access_ok(int type, const void __user * addr,
|
|||
#define get_user __get_user
|
||||
|
||||
#if !defined(CONFIG_64BIT)
|
||||
#define LDD_KERNEL(ptr) __get_kernel_bad();
|
||||
#define LDD_USER(ptr) __get_user_bad();
|
||||
#define LDD_KERNEL(ptr) BUILD_BUG()
|
||||
#define LDD_USER(ptr) BUILD_BUG()
|
||||
#define STD_KERNEL(x, ptr) __put_kernel_asm64(x,ptr)
|
||||
#define STD_USER(x, ptr) __put_user_asm64(x,ptr)
|
||||
#define ASM_WORD_INSN ".word\t"
|
||||
|
@ -94,7 +91,7 @@ struct exception_data {
|
|||
case 2: __get_kernel_asm("ldh",ptr); break; \
|
||||
case 4: __get_kernel_asm("ldw",ptr); break; \
|
||||
case 8: LDD_KERNEL(ptr); break; \
|
||||
default: __get_kernel_bad(); break; \
|
||||
default: BUILD_BUG(); break; \
|
||||
} \
|
||||
} \
|
||||
else { \
|
||||
|
@ -103,7 +100,7 @@ struct exception_data {
|
|||
case 2: __get_user_asm("ldh",ptr); break; \
|
||||
case 4: __get_user_asm("ldw",ptr); break; \
|
||||
case 8: LDD_USER(ptr); break; \
|
||||
default: __get_user_bad(); break; \
|
||||
default: BUILD_BUG(); break; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
|
@ -136,7 +133,7 @@ struct exception_data {
|
|||
case 2: __put_kernel_asm("sth",__x,ptr); break; \
|
||||
case 4: __put_kernel_asm("stw",__x,ptr); break; \
|
||||
case 8: STD_KERNEL(__x,ptr); break; \
|
||||
default: __put_kernel_bad(); break; \
|
||||
default: BUILD_BUG(); break; \
|
||||
} \
|
||||
} \
|
||||
else { \
|
||||
|
@ -145,7 +142,7 @@ struct exception_data {
|
|||
case 2: __put_user_asm("sth",__x,ptr); break; \
|
||||
case 4: __put_user_asm("stw",__x,ptr); break; \
|
||||
case 8: STD_USER(__x,ptr); break; \
|
||||
default: __put_user_bad(); break; \
|
||||
default: BUILD_BUG(); break; \
|
||||
} \
|
||||
} \
|
||||
\
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
#ifndef __ASM_PARISC_BITSPERLONG_H
|
||||
#define __ASM_PARISC_BITSPERLONG_H
|
||||
|
||||
/*
|
||||
* using CONFIG_* outside of __KERNEL__ is wrong,
|
||||
* __LP64__ was also removed from headers, so what
|
||||
* is the right approach on parisc?
|
||||
* -arnd
|
||||
*/
|
||||
#if (defined(__KERNEL__) && defined(CONFIG_64BIT)) || defined (__LP64__)
|
||||
#if defined(__LP64__)
|
||||
#define __BITS_PER_LONG 64
|
||||
#define SHIFT_PER_LONG 6
|
||||
#else
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _PARISC_MSGBUF_H
|
||||
#define _PARISC_MSGBUF_H
|
||||
|
||||
#include <asm/bitsperlong.h>
|
||||
|
||||
/*
|
||||
* The msqid64_ds structure for parisc architecture, copied from sparc.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
|
@ -13,15 +15,15 @@
|
|||
|
||||
struct msqid64_ds {
|
||||
struct ipc64_perm msg_perm;
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad1;
|
||||
#endif
|
||||
__kernel_time_t msg_stime; /* last msgsnd time */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad2;
|
||||
#endif
|
||||
__kernel_time_t msg_rtime; /* last msgrcv time */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad3;
|
||||
#endif
|
||||
__kernel_time_t msg_ctime; /* last change time */
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _PARISC_SEMBUF_H
|
||||
#define _PARISC_SEMBUF_H
|
||||
|
||||
#include <asm/bitsperlong.h>
|
||||
|
||||
/*
|
||||
* The semid64_ds structure for parisc architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
|
@ -13,11 +15,11 @@
|
|||
|
||||
struct semid64_ds {
|
||||
struct ipc64_perm sem_perm; /* permissions .. see ipc.h */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad1;
|
||||
#endif
|
||||
__kernel_time_t sem_otime; /* last semop time */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad2;
|
||||
#endif
|
||||
__kernel_time_t sem_ctime; /* last change time */
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _PARISC_SHMBUF_H
|
||||
#define _PARISC_SHMBUF_H
|
||||
|
||||
#include <asm/bitsperlong.h>
|
||||
|
||||
/*
|
||||
* The shmid64_ds structure for parisc architecture.
|
||||
* Note extra padding because this structure is passed back and forth
|
||||
|
@ -13,19 +15,19 @@
|
|||
|
||||
struct shmid64_ds {
|
||||
struct ipc64_perm shm_perm; /* operation perms */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad1;
|
||||
#endif
|
||||
__kernel_time_t shm_atime; /* last attach time */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad2;
|
||||
#endif
|
||||
__kernel_time_t shm_dtime; /* last detach time */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad3;
|
||||
#endif
|
||||
__kernel_time_t shm_ctime; /* last change time */
|
||||
#ifndef CONFIG_64BIT
|
||||
#if __BITS_PER_LONG != 64
|
||||
unsigned int __pad4;
|
||||
#endif
|
||||
size_t shm_segsz; /* size of segment (bytes) */
|
||||
|
@ -36,23 +38,16 @@ struct shmid64_ds {
|
|||
unsigned int __unused2;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
/* The 'unsigned int' (formerly 'unsigned long') data types below will
|
||||
* ensure that a 32-bit app calling shmctl(*,IPC_INFO,*) will work on
|
||||
* a wide kernel, but if some of these values are meant to contain pointers
|
||||
* they may need to be 'long long' instead. -PB XXX FIXME
|
||||
*/
|
||||
#endif
|
||||
struct shminfo64 {
|
||||
unsigned int shmmax;
|
||||
unsigned int shmmin;
|
||||
unsigned int shmmni;
|
||||
unsigned int shmseg;
|
||||
unsigned int shmall;
|
||||
unsigned int __unused1;
|
||||
unsigned int __unused2;
|
||||
unsigned int __unused3;
|
||||
unsigned int __unused4;
|
||||
unsigned long shmmax;
|
||||
unsigned long shmmin;
|
||||
unsigned long shmmni;
|
||||
unsigned long shmseg;
|
||||
unsigned long shmall;
|
||||
unsigned long __unused1;
|
||||
unsigned long __unused2;
|
||||
unsigned long __unused3;
|
||||
unsigned long __unused4;
|
||||
};
|
||||
|
||||
#endif /* _PARISC_SHMBUF_H */
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
struct siginfo;
|
||||
|
||||
/* Type of a signal handler. */
|
||||
#ifdef CONFIG_64BIT
|
||||
#if defined(__LP64__)
|
||||
/* function pointers on 64-bit parisc are pointers to little structs and the
|
||||
* compiler doesn't support code which changes or tests the address of
|
||||
* the function in the little struct. This is really ugly -PB
|
||||
|
|
|
@ -833,8 +833,9 @@
|
|||
#define __NR_seccomp (__NR_Linux + 338)
|
||||
#define __NR_getrandom (__NR_Linux + 339)
|
||||
#define __NR_memfd_create (__NR_Linux + 340)
|
||||
#define __NR_bpf (__NR_Linux + 341)
|
||||
|
||||
#define __NR_Linux_syscalls (__NR_memfd_create + 1)
|
||||
#define __NR_Linux_syscalls (__NR_bpf + 1)
|
||||
|
||||
|
||||
#define __IGNORE_select /* newselect */
|
||||
|
|
|
@ -286,11 +286,11 @@
|
|||
ENTRY_COMP(msgsnd)
|
||||
ENTRY_COMP(msgrcv)
|
||||
ENTRY_SAME(msgget) /* 190 */
|
||||
ENTRY_SAME(msgctl)
|
||||
ENTRY_SAME(shmat)
|
||||
ENTRY_COMP(msgctl)
|
||||
ENTRY_COMP(shmat)
|
||||
ENTRY_SAME(shmdt)
|
||||
ENTRY_SAME(shmget)
|
||||
ENTRY_SAME(shmctl) /* 195 */
|
||||
ENTRY_COMP(shmctl) /* 195 */
|
||||
ENTRY_SAME(ni_syscall) /* streams1 */
|
||||
ENTRY_SAME(ni_syscall) /* streams2 */
|
||||
ENTRY_SAME(lstat64)
|
||||
|
@ -323,7 +323,7 @@
|
|||
ENTRY_SAME(epoll_ctl) /* 225 */
|
||||
ENTRY_SAME(epoll_wait)
|
||||
ENTRY_SAME(remap_file_pages)
|
||||
ENTRY_SAME(semtimedop)
|
||||
ENTRY_COMP(semtimedop)
|
||||
ENTRY_COMP(mq_open)
|
||||
ENTRY_SAME(mq_unlink) /* 230 */
|
||||
ENTRY_COMP(mq_timedsend)
|
||||
|
@ -436,6 +436,7 @@
|
|||
ENTRY_SAME(seccomp)
|
||||
ENTRY_SAME(getrandom)
|
||||
ENTRY_SAME(memfd_create) /* 340 */
|
||||
ENTRY_SAME(bpf)
|
||||
|
||||
/* Nothing yet */
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче