Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/bird
This commit is contained in:
Коммит
423ab71a8b
|
@ -69,6 +69,9 @@ config GENERIC_ISA_DMA
|
|||
config FIQ
|
||||
bool
|
||||
|
||||
config ARCH_MTD_XIP
|
||||
bool
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
menu "System Type"
|
||||
|
@ -136,6 +139,7 @@ config ARCH_L7200
|
|||
|
||||
config ARCH_PXA
|
||||
bool "PXA2xx-based"
|
||||
select ARCH_MTD_XIP
|
||||
|
||||
config ARCH_RPC
|
||||
bool "RiscPC"
|
||||
|
@ -152,6 +156,7 @@ config ARCH_SA1100
|
|||
bool "SA1100-based"
|
||||
select ISA
|
||||
select ARCH_DISCONTIGMEM_ENABLE
|
||||
select ARCH_MTD_XIP
|
||||
|
||||
config ARCH_S3C2410
|
||||
bool "Samsung S3C2410"
|
||||
|
|
|
@ -142,11 +142,7 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline compat_uptr_t to_user_ptr(void *kp)
|
||||
{
|
||||
return (compat_uptr_t)(u64)kp;
|
||||
}
|
||||
|
||||
#define to_user_ptr(p) ptr_to_compat(p)
|
||||
#define from_user_ptr(p) compat_ptr(p)
|
||||
|
||||
static inline int save_general_regs(struct pt_regs *regs,
|
||||
|
@ -213,8 +209,8 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define to_user_ptr(p) (p)
|
||||
#define from_user_ptr(p) (p)
|
||||
#define to_user_ptr(p) ((unsigned long)(p))
|
||||
#define from_user_ptr(p) ((void __user *)(p))
|
||||
|
||||
static inline int save_general_regs(struct pt_regs *regs,
|
||||
struct mcontext __user *frame)
|
||||
|
@ -526,7 +522,7 @@ long compat_sys_rt_sigaction(int sig, const struct sigaction32 __user *act,
|
|||
|
||||
ret = do_sigaction(sig, act ? &new_ka : NULL, oact ? &old_ka : NULL);
|
||||
if (!ret && oact) {
|
||||
ret = put_user((long)old_ka.sa.sa_handler, &oact->sa_handler);
|
||||
ret = put_user(to_user_ptr(old_ka.sa.sa_handler), &oact->sa_handler);
|
||||
ret |= put_sigset_t(&oact->sa_mask, &old_ka.sa.sa_mask);
|
||||
ret |= __put_user(old_ka.sa.sa_flags, &oact->sa_flags);
|
||||
}
|
||||
|
@ -675,8 +671,8 @@ long compat_sys_rt_sigqueueinfo(u32 pid, u32 sig, compat_siginfo_t __user *uinfo
|
|||
int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
|
||||
int r6, int r7, int r8, struct pt_regs *regs)
|
||||
{
|
||||
stack_32_t __user * newstack = (stack_32_t __user *)(long) __new;
|
||||
stack_32_t __user * oldstack = (stack_32_t __user *)(long) __old;
|
||||
stack_32_t __user * newstack = compat_ptr(__new);
|
||||
stack_32_t __user * oldstack = compat_ptr(__old);
|
||||
stack_t uss, uoss;
|
||||
int ret;
|
||||
mm_segment_t old_fs;
|
||||
|
@ -708,7 +704,7 @@ int compat_sys_sigaltstack(u32 __new, u32 __old, int r5,
|
|||
set_fs(old_fs);
|
||||
/* Copy the stack information to the user output buffer */
|
||||
if (!ret && oldstack &&
|
||||
(put_user((long)uoss.ss_sp, &oldstack->ss_sp) ||
|
||||
(put_user(ptr_to_compat(uoss.ss_sp), &oldstack->ss_sp) ||
|
||||
__put_user(uoss.ss_flags, &oldstack->ss_flags) ||
|
||||
__put_user(uoss.ss_size, &oldstack->ss_size)))
|
||||
return -EFAULT;
|
||||
|
|
|
@ -60,8 +60,8 @@ struct rt_sigframe {
|
|||
struct ucontext uc;
|
||||
unsigned long _unused[2];
|
||||
unsigned int tramp[TRAMP_SIZE];
|
||||
struct siginfo *pinfo;
|
||||
void *puc;
|
||||
struct siginfo __user *pinfo;
|
||||
void __user *puc;
|
||||
struct siginfo info;
|
||||
/* 64 bit ABI allows for 288 bytes below sp before decrementing it. */
|
||||
char abigap[288];
|
||||
|
|
|
@ -136,14 +136,14 @@ static void __init fixup_bus_range(struct device_node *bridge)
|
|||
|(((unsigned int)(off)) & 0xFCUL) \
|
||||
|1UL)
|
||||
|
||||
static unsigned long macrisc_cfg_access(struct pci_controller* hose,
|
||||
static volatile void __iomem *macrisc_cfg_access(struct pci_controller* hose,
|
||||
u8 bus, u8 dev_fn, u8 offset)
|
||||
{
|
||||
unsigned int caddr;
|
||||
|
||||
if (bus == hose->first_busno) {
|
||||
if (dev_fn < (11 << 3))
|
||||
return 0;
|
||||
return NULL;
|
||||
caddr = MACRISC_CFA0(dev_fn, offset);
|
||||
} else
|
||||
caddr = MACRISC_CFA1(bus, dev_fn, offset);
|
||||
|
@ -154,14 +154,14 @@ static unsigned long macrisc_cfg_access(struct pci_controller* hose,
|
|||
} while (in_le32(hose->cfg_addr) != caddr);
|
||||
|
||||
offset &= has_uninorth ? 0x07 : 0x03;
|
||||
return ((unsigned long)hose->cfg_data) + offset;
|
||||
return hose->cfg_data + offset;
|
||||
}
|
||||
|
||||
static int macrisc_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
int offset, int len, u32 *val)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
unsigned long addr;
|
||||
volatile void __iomem *addr;
|
||||
|
||||
hose = pci_bus_to_host(bus);
|
||||
if (hose == NULL)
|
||||
|
@ -177,13 +177,13 @@ static int macrisc_read_config(struct pci_bus *bus, unsigned int devfn,
|
|||
*/
|
||||
switch (len) {
|
||||
case 1:
|
||||
*val = in_8((u8 *)addr);
|
||||
*val = in_8(addr);
|
||||
break;
|
||||
case 2:
|
||||
*val = in_le16((u16 *)addr);
|
||||
*val = in_le16(addr);
|
||||
break;
|
||||
default:
|
||||
*val = in_le32((u32 *)addr);
|
||||
*val = in_le32(addr);
|
||||
break;
|
||||
}
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -193,7 +193,7 @@ static int macrisc_write_config(struct pci_bus *bus, unsigned int devfn,
|
|||
int offset, int len, u32 val)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
unsigned long addr;
|
||||
volatile void __iomem *addr;
|
||||
|
||||
hose = pci_bus_to_host(bus);
|
||||
if (hose == NULL)
|
||||
|
@ -209,16 +209,16 @@ static int macrisc_write_config(struct pci_bus *bus, unsigned int devfn,
|
|||
*/
|
||||
switch (len) {
|
||||
case 1:
|
||||
out_8((u8 *)addr, val);
|
||||
(void) in_8((u8 *)addr);
|
||||
out_8(addr, val);
|
||||
(void) in_8(addr);
|
||||
break;
|
||||
case 2:
|
||||
out_le16((u16 *)addr, val);
|
||||
(void) in_le16((u16 *)addr);
|
||||
out_le16(addr, val);
|
||||
(void) in_le16(addr);
|
||||
break;
|
||||
default:
|
||||
out_le32((u32 *)addr, val);
|
||||
(void) in_le32((u32 *)addr);
|
||||
out_le32(addr, val);
|
||||
(void) in_le32(addr);
|
||||
break;
|
||||
}
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -348,25 +348,23 @@ static int u3_ht_skip_device(struct pci_controller *hose,
|
|||
+ (((unsigned int)bus) << 16) \
|
||||
+ 0x01000000UL)
|
||||
|
||||
static unsigned long u3_ht_cfg_access(struct pci_controller* hose,
|
||||
static volatile void __iomem *u3_ht_cfg_access(struct pci_controller* hose,
|
||||
u8 bus, u8 devfn, u8 offset)
|
||||
{
|
||||
if (bus == hose->first_busno) {
|
||||
/* For now, we don't self probe U3 HT bridge */
|
||||
if (PCI_SLOT(devfn) == 0)
|
||||
return 0;
|
||||
return ((unsigned long)hose->cfg_data) +
|
||||
U3_HT_CFA0(devfn, offset);
|
||||
return NULL;
|
||||
return hose->cfg_data + U3_HT_CFA0(devfn, offset);
|
||||
} else
|
||||
return ((unsigned long)hose->cfg_data) +
|
||||
U3_HT_CFA1(bus, devfn, offset);
|
||||
return hose->cfg_data + U3_HT_CFA1(bus, devfn, offset);
|
||||
}
|
||||
|
||||
static int u3_ht_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
int offset, int len, u32 *val)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
unsigned long addr;
|
||||
volatile void __iomem *addr;
|
||||
|
||||
hose = pci_bus_to_host(bus);
|
||||
if (hose == NULL)
|
||||
|
@ -400,13 +398,13 @@ static int u3_ht_read_config(struct pci_bus *bus, unsigned int devfn,
|
|||
*/
|
||||
switch (len) {
|
||||
case 1:
|
||||
*val = in_8((u8 *)addr);
|
||||
*val = in_8(addr);
|
||||
break;
|
||||
case 2:
|
||||
*val = in_le16((u16 *)addr);
|
||||
*val = in_le16(addr);
|
||||
break;
|
||||
default:
|
||||
*val = in_le32((u32 *)addr);
|
||||
*val = in_le32(addr);
|
||||
break;
|
||||
}
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -416,7 +414,7 @@ static int u3_ht_write_config(struct pci_bus *bus, unsigned int devfn,
|
|||
int offset, int len, u32 val)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
unsigned long addr;
|
||||
volatile void __iomem *addr;
|
||||
|
||||
hose = pci_bus_to_host(bus);
|
||||
if (hose == NULL)
|
||||
|
@ -442,16 +440,16 @@ static int u3_ht_write_config(struct pci_bus *bus, unsigned int devfn,
|
|||
*/
|
||||
switch (len) {
|
||||
case 1:
|
||||
out_8((u8 *)addr, val);
|
||||
(void) in_8((u8 *)addr);
|
||||
out_8(addr, val);
|
||||
(void) in_8(addr);
|
||||
break;
|
||||
case 2:
|
||||
out_le16((u16 *)addr, val);
|
||||
(void) in_le16((u16 *)addr);
|
||||
out_le16(addr, val);
|
||||
(void) in_le16(addr);
|
||||
break;
|
||||
default:
|
||||
out_le32((u32 *)addr, val);
|
||||
(void) in_le32((u32 *)addr);
|
||||
out_le32((u32 __iomem *)addr, val);
|
||||
(void) in_le32(addr);
|
||||
break;
|
||||
}
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -476,7 +474,7 @@ static struct pci_ops u3_ht_pci_ops =
|
|||
|(((unsigned int)(off)) & 0xfcU) \
|
||||
|1UL)
|
||||
|
||||
static unsigned long u4_pcie_cfg_access(struct pci_controller* hose,
|
||||
static volatile void __iomem *u4_pcie_cfg_access(struct pci_controller* hose,
|
||||
u8 bus, u8 dev_fn, int offset)
|
||||
{
|
||||
unsigned int caddr;
|
||||
|
@ -492,14 +490,14 @@ static unsigned long u4_pcie_cfg_access(struct pci_controller* hose,
|
|||
} while (in_le32(hose->cfg_addr) != caddr);
|
||||
|
||||
offset &= 0x03;
|
||||
return ((unsigned long)hose->cfg_data) + offset;
|
||||
return hose->cfg_data + offset;
|
||||
}
|
||||
|
||||
static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
|
||||
int offset, int len, u32 *val)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
unsigned long addr;
|
||||
volatile void __iomem *addr;
|
||||
|
||||
hose = pci_bus_to_host(bus);
|
||||
if (hose == NULL)
|
||||
|
@ -515,13 +513,13 @@ static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
|
|||
*/
|
||||
switch (len) {
|
||||
case 1:
|
||||
*val = in_8((u8 *)addr);
|
||||
*val = in_8(addr);
|
||||
break;
|
||||
case 2:
|
||||
*val = in_le16((u16 *)addr);
|
||||
*val = in_le16(addr);
|
||||
break;
|
||||
default:
|
||||
*val = in_le32((u32 *)addr);
|
||||
*val = in_le32(addr);
|
||||
break;
|
||||
}
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -531,7 +529,7 @@ static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
|
|||
int offset, int len, u32 val)
|
||||
{
|
||||
struct pci_controller *hose;
|
||||
unsigned long addr;
|
||||
volatile void __iomem *addr;
|
||||
|
||||
hose = pci_bus_to_host(bus);
|
||||
if (hose == NULL)
|
||||
|
@ -547,16 +545,16 @@ static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
|
|||
*/
|
||||
switch (len) {
|
||||
case 1:
|
||||
out_8((u8 *)addr, val);
|
||||
(void) in_8((u8 *)addr);
|
||||
out_8(addr, val);
|
||||
(void) in_8(addr);
|
||||
break;
|
||||
case 2:
|
||||
out_le16((u16 *)addr, val);
|
||||
(void) in_le16((u16 *)addr);
|
||||
out_le16(addr, val);
|
||||
(void) in_le16(addr);
|
||||
break;
|
||||
default:
|
||||
out_le32((u32 *)addr, val);
|
||||
(void) in_le32((u32 *)addr);
|
||||
out_le32(addr, val);
|
||||
(void) in_le32(addr);
|
||||
break;
|
||||
}
|
||||
return PCIBIOS_SUCCESSFUL;
|
||||
|
@ -773,8 +771,7 @@ static void __init setup_u3_ht(struct pci_controller* hose)
|
|||
* the reg address cell, we shall fix that by killing struct
|
||||
* reg_property and using some accessor functions instead
|
||||
*/
|
||||
hose->cfg_data = (volatile unsigned char *)ioremap(0xf2000000,
|
||||
0x02000000);
|
||||
hose->cfg_data = ioremap(0xf2000000, 0x02000000);
|
||||
|
||||
/*
|
||||
* /ht node doesn't expose a "ranges" property, so we "remove"
|
||||
|
|
|
@ -59,7 +59,7 @@ static unsigned long dart_tablesize;
|
|||
static u32 *dart_vbase;
|
||||
|
||||
/* Mapped base address for the dart */
|
||||
static unsigned int *__iomem dart;
|
||||
static unsigned int __iomem *dart;
|
||||
|
||||
/* Dummy val that entries are set to when unused */
|
||||
static unsigned int dart_emptyval;
|
||||
|
|
|
@ -100,12 +100,12 @@
|
|||
#define SET_STAT_UID(stat, uid) (stat).st_uid = high2lowuid(uid)
|
||||
#define SET_STAT_GID(stat, gid) (stat).st_gid = high2lowgid(gid)
|
||||
|
||||
asmlinkage long sys32_chown16(const char * filename, u16 user, u16 group)
|
||||
asmlinkage long sys32_chown16(const char __user * filename, u16 user, u16 group)
|
||||
{
|
||||
return sys_chown(filename, low2highuid(user), low2highgid(group));
|
||||
}
|
||||
|
||||
asmlinkage long sys32_lchown16(const char * filename, u16 user, u16 group)
|
||||
asmlinkage long sys32_lchown16(const char __user * filename, u16 user, u16 group)
|
||||
{
|
||||
return sys_lchown(filename, low2highuid(user), low2highgid(group));
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ asmlinkage long sys32_setresuid16(u16 ruid, u16 euid, u16 suid)
|
|||
low2highuid(suid));
|
||||
}
|
||||
|
||||
asmlinkage long sys32_getresuid16(u16 *ruid, u16 *euid, u16 *suid)
|
||||
asmlinkage long sys32_getresuid16(u16 __user *ruid, u16 __user *euid, u16 __user *suid)
|
||||
{
|
||||
int retval;
|
||||
|
||||
|
@ -158,7 +158,7 @@ asmlinkage long sys32_setresgid16(u16 rgid, u16 egid, u16 sgid)
|
|||
low2highgid(sgid));
|
||||
}
|
||||
|
||||
asmlinkage long sys32_getresgid16(u16 *rgid, u16 *egid, u16 *sgid)
|
||||
asmlinkage long sys32_getresgid16(u16 __user *rgid, u16 __user *egid, u16 __user *sgid)
|
||||
{
|
||||
int retval;
|
||||
|
||||
|
@ -179,7 +179,7 @@ asmlinkage long sys32_setfsgid16(u16 gid)
|
|||
return sys_setfsgid((gid_t)gid);
|
||||
}
|
||||
|
||||
static int groups16_to_user(u16 *grouplist, struct group_info *group_info)
|
||||
static int groups16_to_user(u16 __user *grouplist, struct group_info *group_info)
|
||||
{
|
||||
int i;
|
||||
u16 group;
|
||||
|
@ -193,7 +193,7 @@ static int groups16_to_user(u16 *grouplist, struct group_info *group_info)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int groups16_from_user(struct group_info *group_info, u16 *grouplist)
|
||||
static int groups16_from_user(struct group_info *group_info, u16 __user *grouplist)
|
||||
{
|
||||
int i;
|
||||
u16 group;
|
||||
|
@ -207,7 +207,7 @@ static int groups16_from_user(struct group_info *group_info, u16 *grouplist)
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_getgroups16(int gidsetsize, u16 *grouplist)
|
||||
asmlinkage long sys32_getgroups16(int gidsetsize, u16 __user *grouplist)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -231,7 +231,7 @@ out:
|
|||
return i;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_setgroups16(int gidsetsize, u16 *grouplist)
|
||||
asmlinkage long sys32_setgroups16(int gidsetsize, u16 __user *grouplist)
|
||||
{
|
||||
struct group_info *group_info;
|
||||
int retval;
|
||||
|
@ -278,14 +278,14 @@ asmlinkage long sys32_getegid16(void)
|
|||
|
||||
/* 32-bit timeval and related flotsam. */
|
||||
|
||||
static inline long get_tv32(struct timeval *o, struct compat_timeval *i)
|
||||
static inline long get_tv32(struct timeval *o, struct compat_timeval __user *i)
|
||||
{
|
||||
return (!access_ok(VERIFY_READ, o, sizeof(*o)) ||
|
||||
(__get_user(o->tv_sec, &i->tv_sec) ||
|
||||
__get_user(o->tv_usec, &i->tv_usec)));
|
||||
}
|
||||
|
||||
static inline long put_tv32(struct compat_timeval *o, struct timeval *i)
|
||||
static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i)
|
||||
{
|
||||
return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) ||
|
||||
(__put_user(i->tv_sec, &o->tv_sec) ||
|
||||
|
@ -341,7 +341,7 @@ asmlinkage long sys32_ipc(u32 call, int first, int second, int third, u32 ptr)
|
|||
return -ENOSYS;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_truncate64(const char * path, unsigned long high, unsigned long low)
|
||||
asmlinkage long sys32_truncate64(const char __user * path, unsigned long high, unsigned long low)
|
||||
{
|
||||
if ((int)high < 0)
|
||||
return -EINVAL;
|
||||
|
@ -357,7 +357,7 @@ asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long high, unsigned
|
|||
return sys_ftruncate(fd, (high << 32) | low);
|
||||
}
|
||||
|
||||
int cp_compat_stat(struct kstat *stat, struct compat_stat *statbuf)
|
||||
int cp_compat_stat(struct kstat *stat, struct compat_stat __user *statbuf)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
@ -591,7 +591,7 @@ sys32_delete_module(const char __user *name_user, unsigned int flags)
|
|||
|
||||
extern struct timezone sys_tz;
|
||||
|
||||
asmlinkage long sys32_gettimeofday(struct compat_timeval *tv, struct timezone *tz)
|
||||
asmlinkage long sys32_gettimeofday(struct compat_timeval __user *tv, struct timezone __user *tz)
|
||||
{
|
||||
if (tv) {
|
||||
struct timeval ktv;
|
||||
|
@ -606,7 +606,7 @@ asmlinkage long sys32_gettimeofday(struct compat_timeval *tv, struct timezone *t
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline long get_ts32(struct timespec *o, struct compat_timeval *i)
|
||||
static inline long get_ts32(struct timespec *o, struct compat_timeval __user *i)
|
||||
{
|
||||
long usec;
|
||||
|
||||
|
@ -620,7 +620,7 @@ static inline long get_ts32(struct timespec *o, struct compat_timeval *i)
|
|||
return 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_settimeofday(struct compat_timeval *tv, struct timezone *tz)
|
||||
asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv, struct timezone __user *tz)
|
||||
{
|
||||
struct timespec kts;
|
||||
struct timezone ktz;
|
||||
|
@ -645,7 +645,7 @@ asmlinkage long sys32_pause(void)
|
|||
return -ERESTARTNOHAND;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_pread64(unsigned int fd, char *ubuf,
|
||||
asmlinkage long sys32_pread64(unsigned int fd, char __user *ubuf,
|
||||
size_t count, u32 poshi, u32 poslo)
|
||||
{
|
||||
if ((compat_ssize_t) count < 0)
|
||||
|
@ -653,7 +653,7 @@ asmlinkage long sys32_pread64(unsigned int fd, char *ubuf,
|
|||
return sys_pread64(fd, ubuf, count, ((loff_t)AA(poshi) << 32) | AA(poslo));
|
||||
}
|
||||
|
||||
asmlinkage long sys32_pwrite64(unsigned int fd, const char *ubuf,
|
||||
asmlinkage long sys32_pwrite64(unsigned int fd, const char __user *ubuf,
|
||||
size_t count, u32 poshi, u32 poslo)
|
||||
{
|
||||
if ((compat_ssize_t) count < 0)
|
||||
|
@ -666,7 +666,7 @@ asmlinkage compat_ssize_t sys32_readahead(int fd, u32 offhi, u32 offlo, s32 coun
|
|||
return sys_readahead(fd, ((loff_t)AA(offhi) << 32) | AA(offlo), count);
|
||||
}
|
||||
|
||||
asmlinkage long sys32_sendfile(int out_fd, int in_fd, compat_off_t *offset, size_t count)
|
||||
asmlinkage long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset, size_t count)
|
||||
{
|
||||
mm_segment_t old_fs = get_fs();
|
||||
int ret;
|
||||
|
@ -686,7 +686,7 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd, compat_off_t *offset, size
|
|||
}
|
||||
|
||||
asmlinkage long sys32_sendfile64(int out_fd, int in_fd,
|
||||
compat_loff_t *offset, s32 count)
|
||||
compat_loff_t __user *offset, s32 count)
|
||||
{
|
||||
mm_segment_t old_fs = get_fs();
|
||||
int ret;
|
||||
|
@ -722,7 +722,7 @@ struct timex32 {
|
|||
|
||||
extern int do_adjtimex(struct timex *);
|
||||
|
||||
asmlinkage long sys32_adjtimex(struct timex32 *utp)
|
||||
asmlinkage long sys32_adjtimex(struct timex32 __user *utp)
|
||||
{
|
||||
struct timex txc;
|
||||
int ret;
|
||||
|
@ -789,12 +789,13 @@ struct __sysctl_args32 {
|
|||
u32 __unused[4];
|
||||
};
|
||||
|
||||
asmlinkage long sys32_sysctl(struct __sysctl_args32 *args)
|
||||
asmlinkage long sys32_sysctl(struct __sysctl_args32 __user *args)
|
||||
{
|
||||
struct __sysctl_args32 tmp;
|
||||
int error;
|
||||
size_t oldlen, *oldlenp = NULL;
|
||||
unsigned long addr = (((long)&args->__unused[0]) + 7) & ~7;
|
||||
size_t oldlen;
|
||||
size_t __user *oldlenp = NULL;
|
||||
unsigned long addr = (((unsigned long)&args->__unused[0]) + 7) & ~7;
|
||||
|
||||
if (copy_from_user(&tmp, args, sizeof(tmp)))
|
||||
return -EFAULT;
|
||||
|
@ -806,20 +807,20 @@ asmlinkage long sys32_sysctl(struct __sysctl_args32 *args)
|
|||
basically copy the whole sysctl.c here, and
|
||||
glibc's __sysctl uses rw memory for the structure
|
||||
anyway. */
|
||||
if (get_user(oldlen, (u32 *)A(tmp.oldlenp)) ||
|
||||
put_user(oldlen, (size_t *)addr))
|
||||
if (get_user(oldlen, (u32 __user *)compat_ptr(tmp.oldlenp)) ||
|
||||
put_user(oldlen, (size_t __user *)addr))
|
||||
return -EFAULT;
|
||||
oldlenp = (size_t *)addr;
|
||||
oldlenp = (size_t __user *)addr;
|
||||
}
|
||||
|
||||
lock_kernel();
|
||||
error = do_sysctl((int *)A(tmp.name), tmp.nlen, (void *)A(tmp.oldval),
|
||||
oldlenp, (void *)A(tmp.newval), tmp.newlen);
|
||||
error = do_sysctl(compat_ptr(tmp.name), tmp.nlen, compat_ptr(tmp.oldval),
|
||||
oldlenp, compat_ptr(tmp.newval), tmp.newlen);
|
||||
unlock_kernel();
|
||||
if (oldlenp) {
|
||||
if (!error) {
|
||||
if (get_user(oldlen, (size_t *)addr) ||
|
||||
put_user(oldlen, (u32 *)A(tmp.oldlenp)))
|
||||
if (get_user(oldlen, (size_t __user *)addr) ||
|
||||
put_user(oldlen, (u32 __user *)compat_ptr(tmp.oldlenp)))
|
||||
error = -EFAULT;
|
||||
}
|
||||
copy_to_user(args->__unused, tmp.__unused, sizeof(tmp.__unused));
|
||||
|
@ -853,7 +854,7 @@ struct stat64_emu31 {
|
|||
unsigned long st_ino;
|
||||
};
|
||||
|
||||
static int cp_stat64(struct stat64_emu31 *ubuf, struct kstat *stat)
|
||||
static int cp_stat64(struct stat64_emu31 __user *ubuf, struct kstat *stat)
|
||||
{
|
||||
struct stat64_emu31 tmp;
|
||||
|
||||
|
@ -877,7 +878,7 @@ static int cp_stat64(struct stat64_emu31 *ubuf, struct kstat *stat)
|
|||
return copy_to_user(ubuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_stat64(char * filename, struct stat64_emu31 * statbuf)
|
||||
asmlinkage long sys32_stat64(char __user * filename, struct stat64_emu31 __user * statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int ret = vfs_stat(filename, &stat);
|
||||
|
@ -886,7 +887,7 @@ asmlinkage long sys32_stat64(char * filename, struct stat64_emu31 * statbuf)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_lstat64(char * filename, struct stat64_emu31 * statbuf)
|
||||
asmlinkage long sys32_lstat64(char __user * filename, struct stat64_emu31 __user * statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int ret = vfs_lstat(filename, &stat);
|
||||
|
@ -895,7 +896,7 @@ asmlinkage long sys32_lstat64(char * filename, struct stat64_emu31 * statbuf)
|
|||
return ret;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 * statbuf)
|
||||
asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * statbuf)
|
||||
{
|
||||
struct kstat stat;
|
||||
int ret = vfs_fstat(fd, &stat);
|
||||
|
@ -952,7 +953,7 @@ out:
|
|||
|
||||
|
||||
asmlinkage unsigned long
|
||||
old32_mmap(struct mmap_arg_struct_emu31 *arg)
|
||||
old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
|
||||
{
|
||||
struct mmap_arg_struct_emu31 a;
|
||||
int error = -EFAULT;
|
||||
|
@ -970,7 +971,7 @@ out:
|
|||
}
|
||||
|
||||
asmlinkage long
|
||||
sys32_mmap2(struct mmap_arg_struct_emu31 *arg)
|
||||
sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
|
||||
{
|
||||
struct mmap_arg_struct_emu31 a;
|
||||
int error = -EFAULT;
|
||||
|
@ -982,7 +983,7 @@ out:
|
|||
return error;
|
||||
}
|
||||
|
||||
asmlinkage long sys32_read(unsigned int fd, char * buf, size_t count)
|
||||
asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
|
||||
{
|
||||
if ((compat_ssize_t) count < 0)
|
||||
return -EINVAL;
|
||||
|
@ -990,7 +991,7 @@ asmlinkage long sys32_read(unsigned int fd, char * buf, size_t count)
|
|||
return sys_read(fd, buf, count);
|
||||
}
|
||||
|
||||
asmlinkage long sys32_write(unsigned int fd, char * buf, size_t count)
|
||||
asmlinkage long sys32_write(unsigned int fd, char __user * buf, size_t count)
|
||||
{
|
||||
if ((compat_ssize_t) count < 0)
|
||||
return -EINVAL;
|
||||
|
@ -1002,12 +1003,12 @@ asmlinkage long sys32_clone(struct pt_regs regs)
|
|||
{
|
||||
unsigned long clone_flags;
|
||||
unsigned long newsp;
|
||||
int *parent_tidptr, *child_tidptr;
|
||||
int __user *parent_tidptr, *child_tidptr;
|
||||
|
||||
clone_flags = regs.gprs[3] & 0xffffffffUL;
|
||||
newsp = regs.orig_gpr2 & 0x7fffffffUL;
|
||||
parent_tidptr = (int *) (regs.gprs[4] & 0x7fffffffUL);
|
||||
child_tidptr = (int *) (regs.gprs[5] & 0x7fffffffUL);
|
||||
parent_tidptr = compat_ptr(regs.gprs[4]);
|
||||
child_tidptr = compat_ptr(regs.gprs[5]);
|
||||
if (!newsp)
|
||||
newsp = regs.gprs[15];
|
||||
return do_fork(clone_flags, newsp, ®s, 0,
|
||||
|
|
|
@ -122,8 +122,8 @@ out:
|
|||
#ifndef CONFIG_64BIT
|
||||
struct sel_arg_struct {
|
||||
unsigned long n;
|
||||
fd_set *inp, *outp, *exp;
|
||||
struct timeval *tvp;
|
||||
fd_set __user *inp, *outp, *exp;
|
||||
struct timeval __user *tvp;
|
||||
};
|
||||
|
||||
asmlinkage long old_select(struct sel_arg_struct __user *arg)
|
||||
|
|
|
@ -486,7 +486,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code)
|
|||
info.si_signo = signal;
|
||||
info.si_errno = 0;
|
||||
info.si_code = ILL_ILLOPC;
|
||||
info.si_addr = (void *) location;
|
||||
info.si_addr = (void __user *) location;
|
||||
do_trap(interruption_code, signal,
|
||||
"illegal operation", regs, &info);
|
||||
}
|
||||
|
|
|
@ -216,24 +216,26 @@ void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count)
|
|||
{
|
||||
volatile __u8 *bp;
|
||||
volatile __u16 *p;
|
||||
unsigned char *s = addr;
|
||||
|
||||
if (CHECK_AX88796L_PORT(port)) {
|
||||
p = (volatile unsigned short *)port88796l(port, 0);
|
||||
while (count--) *((unsigned char *) addr)++ = *p & 0xff;
|
||||
while (count--) *s++ = *p & 0xff;
|
||||
} else if (PXSEG(port))
|
||||
while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)port;
|
||||
while (count--) *s++ = *(volatile unsigned char *)port;
|
||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||
bp = (__u8 *)PCI_IOMAP(port);
|
||||
while (count--) *((volatile unsigned char *) addr)++ = *bp;
|
||||
while (count--) *s++ = *bp;
|
||||
} else {
|
||||
p = (volatile unsigned short *)port2adr(port);
|
||||
while (count--) *((unsigned char *) addr)++ = *p & 0xff;
|
||||
while (count--) *s++ = *p & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
|
||||
{
|
||||
volatile __u16 *p;
|
||||
__u16 *s = addr;
|
||||
|
||||
if (CHECK_AX88796L_PORT(port))
|
||||
p = (volatile unsigned short *)port88796l(port, 1);
|
||||
|
@ -243,7 +245,7 @@ void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
|
|||
p = (volatile unsigned short *)PCI_IOMAP(port);
|
||||
else
|
||||
p = (volatile unsigned short *)port2adr(port);
|
||||
while (count--) *((__u16 *) addr)++ = *p;
|
||||
while (count--) *s++ = *p;
|
||||
}
|
||||
|
||||
void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
|
||||
|
@ -252,8 +254,9 @@ void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
|
|||
maybebadio(insl, port);
|
||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
|
||||
__u32 *s = addr;
|
||||
|
||||
while (count--) *((__u32 *) addr)++ = *p;
|
||||
while (count--) *s++ = *p;
|
||||
} else
|
||||
maybebadio(insl, port);
|
||||
}
|
||||
|
@ -262,24 +265,26 @@ void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count)
|
|||
{
|
||||
volatile __u8 *bp;
|
||||
volatile __u16 *p;
|
||||
const __u8 *s = addr;
|
||||
|
||||
if (CHECK_AX88796L_PORT(port)) {
|
||||
p = (volatile unsigned short *)port88796l(port, 0);
|
||||
while (count--) *p = *((unsigned char *) addr)++;
|
||||
while (count--) *p = *s++;
|
||||
} else if (PXSEG(port))
|
||||
while (count--) *(volatile unsigned char *)port = *((unsigned char *) addr)++;
|
||||
while (count--) *(volatile unsigned char *)port = *s++;
|
||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||
bp = (__u8 *)PCI_IOMAP(port);
|
||||
while (count--) *bp = *((volatile unsigned char *) addr)++;
|
||||
while (count--) *bp = *s++;
|
||||
} else {
|
||||
p = (volatile unsigned short *)port2adr(port);
|
||||
while (count--) *p = *((unsigned char *) addr)++;
|
||||
while (count--) *p = *s++;
|
||||
}
|
||||
}
|
||||
|
||||
void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
|
||||
{
|
||||
volatile __u16 *p;
|
||||
const __u16 *s = addr;
|
||||
|
||||
if (CHECK_AX88796L_PORT(port))
|
||||
p = (volatile unsigned short *)port88796l(port, 1);
|
||||
|
@ -289,7 +294,7 @@ void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
|
|||
p = (volatile unsigned short *)PCI_IOMAP(port);
|
||||
else
|
||||
p = (volatile unsigned short *)port2adr(port);
|
||||
while (count--) *p = *((__u16 *) addr)++;
|
||||
while (count--) *p = *s++;
|
||||
}
|
||||
|
||||
void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||
|
@ -298,8 +303,9 @@ void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
|
|||
maybebadio(outsl, port);
|
||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
|
||||
const __u32 *s = addr;
|
||||
|
||||
while (count--) *p = *((__u32 *) addr)++;
|
||||
while (count--) *p = *s++;
|
||||
} else
|
||||
maybebadio(outsl, port);
|
||||
}
|
||||
|
|
|
@ -222,7 +222,7 @@ config SYNCLINKMP
|
|||
|
||||
config SYNCLINK_GT
|
||||
tristate "SyncLink GT/AC support"
|
||||
depends on SERIAL_NONSTANDARD
|
||||
depends on SERIAL_NONSTANDARD && PCI
|
||||
help
|
||||
Support for SyncLink GT and SyncLink AC families of
|
||||
synchronous and asynchronous serial adapters
|
||||
|
|
|
@ -351,7 +351,7 @@ config HISAX_ENTERNOW_PCI
|
|||
|
||||
config HISAX_AMD7930
|
||||
bool "Am7930 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL && SPARC
|
||||
depends on EXPERIMENTAL && SPARC && BROKEN
|
||||
help
|
||||
This enables HiSax support for the AMD7930 chips on some SPARCs.
|
||||
This code is not finished yet.
|
||||
|
|
|
@ -167,29 +167,32 @@ static int get_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user
|
|||
if (kp->clipcount > 2048)
|
||||
return -EINVAL;
|
||||
if (kp->clipcount) {
|
||||
struct v4l2_clip32 *uclips = compat_ptr(up->clips);
|
||||
struct v4l2_clip *kclips;
|
||||
struct v4l2_clip32 __user *uclips;
|
||||
struct v4l2_clip __user *kclips;
|
||||
int n = kp->clipcount;
|
||||
compat_caddr_t p;
|
||||
|
||||
if (get_user(p, &up->clips))
|
||||
return -EFAULT;
|
||||
uclips = compat_ptr(p);
|
||||
kclips = compat_alloc_user_space(n * sizeof(struct v4l2_clip));
|
||||
kp->clips = kclips;
|
||||
while (--n >= 0) {
|
||||
if (!access_ok(VERIFY_READ, &uclips->c, sizeof(uclips->c)) ||
|
||||
copy_from_user(&kclips->c, &uclips->c, sizeof(uclips->c)))
|
||||
if (copy_in_user(&kclips->c, &uclips->c, sizeof(uclips->c)))
|
||||
return -EFAULT;
|
||||
if (put_user(n ? kclips + 1 : NULL, &kclips->next))
|
||||
return -EFAULT;
|
||||
kclips->next = n ? kclips + 1 : 0;
|
||||
uclips += 1;
|
||||
kclips += 1;
|
||||
}
|
||||
} else
|
||||
kp->clips = 0;
|
||||
kp->clips = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int put_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_window32)) ||
|
||||
copy_to_user(&up->w, &kp->w, sizeof(up->w)) ||
|
||||
if (copy_to_user(&up->w, &kp->w, sizeof(up->w)) ||
|
||||
put_user(kp->field, &up->field) ||
|
||||
put_user(kp->chromakey, &up->chromakey) ||
|
||||
put_user(kp->clipcount, &up->clipcount))
|
||||
|
@ -199,33 +202,29 @@ static int put_v4l2_window32(struct v4l2_window *kp, struct v4l2_window32 __user
|
|||
|
||||
static inline int get_v4l2_pix_format(struct v4l2_pix_format *kp, struct v4l2_pix_format __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_pix_format)) ||
|
||||
copy_from_user(kp, up, sizeof(struct v4l2_pix_format)))
|
||||
return -EFAULT;
|
||||
if (copy_from_user(kp, up, sizeof(struct v4l2_pix_format)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int put_v4l2_pix_format(struct v4l2_pix_format *kp, struct v4l2_pix_format __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_pix_format)) ||
|
||||
copy_to_user(up, kp, sizeof(struct v4l2_pix_format)))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(up, kp, sizeof(struct v4l2_pix_format)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int get_v4l2_vbi_format(struct v4l2_vbi_format *kp, struct v4l2_vbi_format __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_vbi_format)) ||
|
||||
copy_from_user(kp, up, sizeof(struct v4l2_vbi_format)))
|
||||
return -EFAULT;
|
||||
if (copy_from_user(kp, up, sizeof(struct v4l2_vbi_format)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int put_v4l2_vbi_format(struct v4l2_vbi_format *kp, struct v4l2_vbi_format __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_vbi_format)) ||
|
||||
copy_to_user(up, kp, sizeof(struct v4l2_vbi_format)))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(up, kp, sizeof(struct v4l2_vbi_format)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -279,18 +278,16 @@ static int put_v4l2_format32(struct v4l2_format *kp, struct v4l2_format32 __user
|
|||
|
||||
static inline int get_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standard __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_standard)) ||
|
||||
copy_from_user(kp, up, sizeof(struct v4l2_standard)))
|
||||
return -EFAULT;
|
||||
if (copy_from_user(kp, up, sizeof(struct v4l2_standard)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static inline int put_v4l2_standard(struct v4l2_standard *kp, struct v4l2_standard __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_standard)) ||
|
||||
copy_to_user(up, kp, sizeof(struct v4l2_standard)))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(up, kp, sizeof(struct v4l2_standard)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -328,18 +325,16 @@ static int put_v4l2_standard32(struct v4l2_standard *kp, struct v4l2_standard32
|
|||
|
||||
static inline int get_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_tuner)) ||
|
||||
copy_from_user(kp, up, sizeof(struct v4l2_tuner)))
|
||||
return -EFAULT;
|
||||
if (copy_from_user(kp, up, sizeof(struct v4l2_tuner)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static inline int put_v4l2_tuner(struct v4l2_tuner *kp, struct v4l2_tuner __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_tuner)) ||
|
||||
copy_to_user(up, kp, sizeof(struct v4l2_tuner)))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(up, kp, sizeof(struct v4l2_tuner)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -380,11 +375,13 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
|
|||
break;
|
||||
case V4L2_MEMORY_USERPTR:
|
||||
{
|
||||
unsigned long tmp = (unsigned long)compat_ptr(up->m.userptr);
|
||||
compat_long_t tmp;
|
||||
|
||||
if(get_user(kp->length, &up->length) ||
|
||||
get_user(kp->m.userptr, &tmp))
|
||||
return -EFAULT;
|
||||
if (get_user(kp->length, &up->length) ||
|
||||
get_user(tmp, &up->m.userptr))
|
||||
return -EFAULT;
|
||||
|
||||
kp->m.userptr = (unsigned long)compat_ptr(tmp);
|
||||
}
|
||||
break;
|
||||
case V4L2_MEMORY_OVERLAY:
|
||||
|
@ -468,33 +465,29 @@ static int put_v4l2_framebuffer32(struct v4l2_framebuffer *kp, struct v4l2_frame
|
|||
|
||||
static inline int get_v4l2_input32(struct v4l2_input *kp, struct v4l2_input __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_input) - 4) ||
|
||||
copy_from_user(kp, up, sizeof(struct v4l2_input) - 4))
|
||||
return -EFAULT;
|
||||
if (copy_from_user(kp, up, sizeof(struct v4l2_input) - 4))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int put_v4l2_input32(struct v4l2_input *kp, struct v4l2_input __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_input) - 4) ||
|
||||
copy_to_user(up, kp, sizeof(struct v4l2_input) - 4))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(up, kp, sizeof(struct v4l2_input) - 4))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int get_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, up, sizeof(struct v4l2_input)) ||
|
||||
copy_from_user(kp, up, sizeof(struct v4l2_input)))
|
||||
return -EFAULT;
|
||||
if (copy_from_user(kp, up, sizeof(struct v4l2_input)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int put_v4l2_input(struct v4l2_input *kp, struct v4l2_input __user *up)
|
||||
{
|
||||
if (!access_ok(VERIFY_WRITE, up, sizeof(struct v4l2_input)) ||
|
||||
copy_to_user(up, kp, sizeof(struct v4l2_input)))
|
||||
return -EFAULT;
|
||||
if (copy_to_user(up, kp, sizeof(struct v4l2_input)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -301,7 +301,7 @@ config MTD_JEDEC
|
|||
|
||||
config MTD_XIP
|
||||
bool "XIP aware MTD support"
|
||||
depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && EXPERIMENTAL && ARM
|
||||
depends on !SMP && (MTD_CFI_INTELEXT || MTD_CFI_AMDSTD) && EXPERIMENTAL && ARCH_MTD_XIP
|
||||
default y if XIP_KERNEL
|
||||
help
|
||||
This allows MTD support to work with flash memory which is also
|
||||
|
|
|
@ -748,7 +748,7 @@ prism54_get_essid(struct net_device *ndev, struct iw_request_info *info,
|
|||
if (essid->length) {
|
||||
dwrq->flags = 1; /* set ESSID to ON for Wireless Extensions */
|
||||
/* if it is to big, trunk it */
|
||||
dwrq->length = min(IW_ESSID_MAX_SIZE, essid->length);
|
||||
dwrq->length = min((u8)IW_ESSID_MAX_SIZE, essid->length);
|
||||
} else {
|
||||
dwrq->flags = 0;
|
||||
dwrq->length = 0;
|
||||
|
|
|
@ -37,7 +37,7 @@ struct old_serial_port {
|
|||
unsigned int irq;
|
||||
unsigned int flags;
|
||||
unsigned char io_type;
|
||||
unsigned char *iomem_base;
|
||||
unsigned char __iomem *iomem_base;
|
||||
unsigned short iomem_reg_shift;
|
||||
};
|
||||
|
||||
|
|
|
@ -38,10 +38,10 @@ static inline unsigned mcr_pack(unsigned pulse, unsigned sample)
|
|||
|
||||
static int nic_wait(struct ioc3_driver_data *idd)
|
||||
{
|
||||
volatile unsigned mcr;
|
||||
unsigned mcr;
|
||||
|
||||
do {
|
||||
mcr = (volatile unsigned)idd->vma->mcr;
|
||||
mcr = readl(&idd->vma->mcr);
|
||||
} while (!(mcr & 2));
|
||||
|
||||
return mcr & 1;
|
||||
|
@ -53,7 +53,7 @@ static int nic_reset(struct ioc3_driver_data *idd)
|
|||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
idd->vma->mcr = mcr_pack(500, 65);
|
||||
writel(mcr_pack(500, 65), &idd->vma->mcr);
|
||||
presence = nic_wait(idd);
|
||||
local_irq_restore(flags);
|
||||
|
||||
|
@ -68,7 +68,7 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
|
|||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
idd->vma->mcr = mcr_pack(6, 13);
|
||||
writel(mcr_pack(6, 13), &idd->vma->mcr);
|
||||
result = nic_wait(idd);
|
||||
local_irq_restore(flags);
|
||||
|
||||
|
@ -80,9 +80,9 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
|
|||
static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit)
|
||||
{
|
||||
if (bit)
|
||||
idd->vma->mcr = mcr_pack(6, 110);
|
||||
writel(mcr_pack(6, 110), &idd->vma->mcr);
|
||||
else
|
||||
idd->vma->mcr = mcr_pack(80, 30);
|
||||
writel(mcr_pack(80, 30), &idd->vma->mcr);
|
||||
|
||||
nic_wait(idd);
|
||||
}
|
||||
|
@ -337,7 +337,7 @@ static void probe_nic(struct ioc3_driver_data *idd)
|
|||
int save = 0, loops = 3;
|
||||
unsigned long first, addr;
|
||||
|
||||
idd->vma->gpcr_s = GPCR_MLAN_EN;
|
||||
writel(GPCR_MLAN_EN, &idd->vma->gpcr_s);
|
||||
|
||||
while(loops>0) {
|
||||
idd->nic_part[0] = 0;
|
||||
|
@ -408,7 +408,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs)
|
|||
|
||||
read_lock_irqsave(&ioc3_submodules_lock, flags);
|
||||
|
||||
if(idd->dual_irq && idd->vma->eisr) {
|
||||
if(idd->dual_irq && readb(&idd->vma->eisr)) {
|
||||
/* send Ethernet IRQ to the driver */
|
||||
if(ioc3_ethernet && idd->active[ioc3_ethernet->id] &&
|
||||
ioc3_ethernet->intr) {
|
||||
|
@ -682,7 +682,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
|
|||
idd->id = ioc3_counter++;
|
||||
up_write(&ioc3_devices_rwsem);
|
||||
|
||||
idd->gpdr_shadow = idd->vma->gpdr;
|
||||
idd->gpdr_shadow = readl(&idd->vma->gpdr);
|
||||
|
||||
/* Read IOC3 NIC contents */
|
||||
probe_nic(idd);
|
||||
|
|
|
@ -931,8 +931,8 @@ struct compat_sg_req_info { /* used by SG_GET_REQUEST_TABLE ioctl() */
|
|||
static int sg_grt_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
int err, i;
|
||||
sg_req_info_t *r;
|
||||
struct compat_sg_req_info *o = (struct compat_sg_req_info *)arg;
|
||||
sg_req_info_t __user *r;
|
||||
struct compat_sg_req_info __user *o = (void __user *)arg;
|
||||
r = compat_alloc_user_space(sizeof(sg_req_info_t)*SG_MAX_QUEUE);
|
||||
err = sys_ioctl(fd,cmd,(unsigned long)r);
|
||||
if (err < 0)
|
||||
|
@ -2739,8 +2739,8 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon
|
|||
static int
|
||||
lp_timeout_trans(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct compat_timeval *tc = (struct compat_timeval *)arg;
|
||||
struct timeval *tn = compat_alloc_user_space(sizeof(struct timeval));
|
||||
struct compat_timeval __user *tc = (struct compat_timeval __user *)arg;
|
||||
struct timeval __user *tn = compat_alloc_user_space(sizeof(struct timeval));
|
||||
struct timeval ts;
|
||||
if (get_user(ts.tv_sec, &tc->tv_sec) ||
|
||||
get_user(ts.tv_usec, &tc->tv_usec) ||
|
||||
|
|
|
@ -56,38 +56,38 @@
|
|||
* variations of functions: non-prefixed ones that preserve the value
|
||||
* and prefixed ones that preserve byte addresses. The latters are
|
||||
* typically used for moving raw data between a peripheral and memory (cf.
|
||||
* string I/O functions), hence the "mem_" prefix.
|
||||
* string I/O functions), hence the "__mem_" prefix.
|
||||
*/
|
||||
#if defined(CONFIG_SWAP_IO_SPACE)
|
||||
|
||||
# define ioswabb(x) (x)
|
||||
# define mem_ioswabb(x) (x)
|
||||
# define __mem_ioswabb(x) (x)
|
||||
# ifdef CONFIG_SGI_IP22
|
||||
/*
|
||||
* IP22 seems braindead enough to swap 16bits values in hardware, but
|
||||
* not 32bits. Go figure... Can't tell without documentation.
|
||||
*/
|
||||
# define ioswabw(x) (x)
|
||||
# define mem_ioswabw(x) le16_to_cpu(x)
|
||||
# define __mem_ioswabw(x) le16_to_cpu(x)
|
||||
# else
|
||||
# define ioswabw(x) le16_to_cpu(x)
|
||||
# define mem_ioswabw(x) (x)
|
||||
# define __mem_ioswabw(x) (x)
|
||||
# endif
|
||||
# define ioswabl(x) le32_to_cpu(x)
|
||||
# define mem_ioswabl(x) (x)
|
||||
# define __mem_ioswabl(x) (x)
|
||||
# define ioswabq(x) le64_to_cpu(x)
|
||||
# define mem_ioswabq(x) (x)
|
||||
# define __mem_ioswabq(x) (x)
|
||||
|
||||
#else
|
||||
|
||||
# define ioswabb(x) (x)
|
||||
# define mem_ioswabb(x) (x)
|
||||
# define __mem_ioswabb(x) (x)
|
||||
# define ioswabw(x) (x)
|
||||
# define mem_ioswabw(x) cpu_to_le16(x)
|
||||
# define __mem_ioswabw(x) cpu_to_le16(x)
|
||||
# define ioswabl(x) (x)
|
||||
# define mem_ioswabl(x) cpu_to_le32(x)
|
||||
# define __mem_ioswabl(x) cpu_to_le32(x)
|
||||
# define ioswabq(x) (x)
|
||||
# define mem_ioswabq(x) cpu_to_le32(x)
|
||||
# define __mem_ioswabq(x) cpu_to_le32(x)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -417,7 +417,7 @@ __BUILD_MEMORY_SINGLE(bus, bwlq, type, 1)
|
|||
\
|
||||
__BUILD_MEMORY_PFX(__raw_, bwlq, type) \
|
||||
__BUILD_MEMORY_PFX(, bwlq, type) \
|
||||
__BUILD_MEMORY_PFX(mem_, bwlq, type) \
|
||||
__BUILD_MEMORY_PFX(__mem_, bwlq, type) \
|
||||
|
||||
BUILDIO_MEM(b, u8)
|
||||
BUILDIO_MEM(w, u16)
|
||||
|
@ -430,7 +430,7 @@ BUILDIO_MEM(q, u64)
|
|||
|
||||
#define BUILDIO_IOPORT(bwlq, type) \
|
||||
__BUILD_IOPORT_PFX(, bwlq, type) \
|
||||
__BUILD_IOPORT_PFX(mem_, bwlq, type)
|
||||
__BUILD_IOPORT_PFX(__mem_, bwlq, type)
|
||||
|
||||
BUILDIO_IOPORT(b, u8)
|
||||
BUILDIO_IOPORT(w, u16)
|
||||
|
@ -464,7 +464,7 @@ static inline void writes##bwlq(volatile void __iomem *mem, \
|
|||
const volatile type *__addr = addr; \
|
||||
\
|
||||
while (count--) { \
|
||||
mem_write##bwlq(*__addr, mem); \
|
||||
__mem_write##bwlq(*__addr, mem); \
|
||||
__addr++; \
|
||||
} \
|
||||
} \
|
||||
|
@ -475,7 +475,7 @@ static inline void reads##bwlq(volatile void __iomem *mem, void *addr, \
|
|||
volatile type *__addr = addr; \
|
||||
\
|
||||
while (count--) { \
|
||||
*__addr = mem_read##bwlq(mem); \
|
||||
*__addr = __mem_read##bwlq(mem); \
|
||||
__addr++; \
|
||||
} \
|
||||
}
|
||||
|
@ -488,7 +488,7 @@ static inline void outs##bwlq(unsigned long port, const void *addr, \
|
|||
const volatile type *__addr = addr; \
|
||||
\
|
||||
while (count--) { \
|
||||
mem_out##bwlq(*__addr, port); \
|
||||
__mem_out##bwlq(*__addr, port); \
|
||||
__addr++; \
|
||||
} \
|
||||
} \
|
||||
|
@ -499,7 +499,7 @@ static inline void ins##bwlq(unsigned long port, void *addr, \
|
|||
volatile type *__addr = addr; \
|
||||
\
|
||||
while (count--) { \
|
||||
*__addr = mem_in##bwlq(port); \
|
||||
*__addr = __mem_in##bwlq(port); \
|
||||
__addr++; \
|
||||
} \
|
||||
}
|
||||
|
|
|
@ -126,6 +126,11 @@ static inline void __user *compat_ptr(compat_uptr_t uptr)
|
|||
return (void __user *)(unsigned long)uptr;
|
||||
}
|
||||
|
||||
static inline compat_uptr_t ptr_to_compat(void __user *uptr)
|
||||
{
|
||||
return (u32)(unsigned long)uptr;
|
||||
}
|
||||
|
||||
static inline void __user *compat_alloc_user_space(long len)
|
||||
{
|
||||
struct pt_regs *regs = current->thread.regs;
|
||||
|
|
|
@ -37,7 +37,7 @@ struct thread_info {
|
|||
int preempt_count; /* 0 => preemptable,
|
||||
<0 => BUG */
|
||||
struct restart_block restart_block;
|
||||
void *nvgprs_frame;
|
||||
void __user *nvgprs_frame;
|
||||
/* low level flags - has atomic operations done on it */
|
||||
unsigned long flags ____cacheline_aligned_in_smp;
|
||||
};
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
#define segment_eq(a,b) ((a).ar4 == (b).ar4)
|
||||
|
||||
|
||||
static inline int __access_ok(const void *addr, unsigned long size)
|
||||
static inline int __access_ok(const void __user *addr, unsigned long size)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
@ -208,25 +208,25 @@ extern int __put_user_bad(void) __attribute__((noreturn));
|
|||
case 1: { \
|
||||
unsigned char __x; \
|
||||
__get_user_asm(__x, ptr, __gu_err); \
|
||||
(x) = *(__typeof__(*(ptr)) *) &__x; \
|
||||
(x) = *(__force __typeof__(*(ptr)) *) &__x; \
|
||||
break; \
|
||||
}; \
|
||||
case 2: { \
|
||||
unsigned short __x; \
|
||||
__get_user_asm(__x, ptr, __gu_err); \
|
||||
(x) = *(__typeof__(*(ptr)) *) &__x; \
|
||||
(x) = *(__force __typeof__(*(ptr)) *) &__x; \
|
||||
break; \
|
||||
}; \
|
||||
case 4: { \
|
||||
unsigned int __x; \
|
||||
__get_user_asm(__x, ptr, __gu_err); \
|
||||
(x) = *(__typeof__(*(ptr)) *) &__x; \
|
||||
(x) = *(__force __typeof__(*(ptr)) *) &__x; \
|
||||
break; \
|
||||
}; \
|
||||
case 8: { \
|
||||
unsigned long long __x; \
|
||||
__get_user_asm(__x, ptr, __gu_err); \
|
||||
(x) = *(__typeof__(*(ptr)) *) &__x; \
|
||||
(x) = *(__force __typeof__(*(ptr)) *) &__x; \
|
||||
break; \
|
||||
}; \
|
||||
default: \
|
||||
|
|
|
@ -27,7 +27,7 @@ struct ioc3_driver_data {
|
|||
int id; /* IOC3 sequence number */
|
||||
/* PCI mapping */
|
||||
unsigned long pma; /* physical address */
|
||||
struct __iomem ioc3 *vma; /* pointer to registers */
|
||||
struct ioc3 __iomem *vma; /* pointer to registers */
|
||||
struct pci_dev *pdev; /* PCI device */
|
||||
/* IRQ stuff */
|
||||
int dual_irq; /* set if separate IRQs are used */
|
||||
|
|
|
@ -549,7 +549,7 @@ struct v4l2_framebuffer
|
|||
struct v4l2_clip
|
||||
{
|
||||
struct v4l2_rect c;
|
||||
struct v4l2_clip *next;
|
||||
struct v4l2_clip __user *next;
|
||||
};
|
||||
|
||||
struct v4l2_window
|
||||
|
|
Загрузка…
Ссылка в новой задаче