Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
95acaaba
Commit
95acaaba
authored
Jun 21, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/davem/net-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
113dc07d
9c8a1f3c
Changes
36
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
401 additions
and
339 deletions
+401
-339
arch/i386/kernel/mpparse.c
arch/i386/kernel/mpparse.c
+17
-9
arch/x86_64/kernel/mpparse.c
arch/x86_64/kernel/mpparse.c
+13
-7
drivers/block/ll_rw_blk.c
drivers/block/ll_rw_blk.c
+1
-1
drivers/firmware/efivars.c
drivers/firmware/efivars.c
+1
-1
drivers/ide/legacy/hd.c
drivers/ide/legacy/hd.c
+1
-1
drivers/ieee1394/amdtp.c
drivers/ieee1394/amdtp.c
+2
-2
drivers/ieee1394/dv1394.c
drivers/ieee1394/dv1394.c
+6
-5
drivers/ieee1394/raw1394-private.h
drivers/ieee1394/raw1394-private.h
+2
-2
drivers/ieee1394/raw1394.c
drivers/ieee1394/raw1394.c
+41
-48
drivers/ieee1394/raw1394.h
drivers/ieee1394/raw1394.h
+5
-5
drivers/ieee1394/video1394.c
drivers/ieee1394/video1394.c
+10
-9
drivers/isdn/i4l/isdn_ppp.c
drivers/isdn/i4l/isdn_ppp.c
+102
-81
drivers/isdn/i4l/isdn_ppp.h
drivers/isdn/i4l/isdn_ppp.h
+2
-2
drivers/net/ppp_generic.c
drivers/net/ppp_generic.c
+99
-69
drivers/net/tokenring/ibmtr.c
drivers/net/tokenring/ibmtr.c
+1
-0
drivers/net/wan/c101.c
drivers/net/wan/c101.c
+2
-1
drivers/net/wan/cosa.c
drivers/net/wan/cosa.c
+21
-20
drivers/net/wan/cosa.h
drivers/net/wan/cosa.h
+1
-1
drivers/net/wan/dscc4.c
drivers/net/wan/dscc4.c
+1
-1
drivers/net/wan/hdlc_cisco.c
drivers/net/wan/hdlc_cisco.c
+1
-1
drivers/net/wan/hdlc_fr.c
drivers/net/wan/hdlc_fr.c
+1
-1
drivers/net/wan/hdlc_raw.c
drivers/net/wan/hdlc_raw.c
+1
-1
drivers/net/wan/hdlc_raw_eth.c
drivers/net/wan/hdlc_raw_eth.c
+1
-1
drivers/net/wan/lmc/lmc_ioctl.h
drivers/net/wan/lmc/lmc_ioctl.h
+2
-2
drivers/net/wan/n2.c
drivers/net/wan/n2.c
+2
-1
drivers/net/wan/pci200syn.c
drivers/net/wan/pci200syn.c
+2
-1
drivers/net/wan/x25_asy.c
drivers/net/wan/x25_asy.c
+1
-1
fs/devfs/base.c
fs/devfs/base.c
+2
-1
fs/ncpfs/ioctl.c
fs/ncpfs/ioctl.c
+37
-45
fs/proc/base.c
fs/proc/base.c
+6
-3
fs/quota.c
fs/quota.c
+2
-2
include/linux/if.h
include/linux/if.h
+7
-7
include/linux/isdn_ppp.h
include/linux/isdn_ppp.h
+3
-2
include/linux/ncp_fs.h
include/linux/ncp_fs.h
+3
-3
include/linux/syscalls.h
include/linux/syscalls.h
+1
-1
lib/zlib_deflate/deflate.c
lib/zlib_deflate/deflate.c
+1
-1
No files found.
arch/i386/kernel/mpparse.c
View file @
95acaaba
...
...
@@ -1015,15 +1015,23 @@ void __init mp_config_acpi_legacy_irqs (void)
for
(
i
=
0
;
i
<
16
;
i
++
)
{
int
idx
;
for
(
idx
=
0
;
idx
<
mp_irq_entries
;
idx
++
)
if
(
mp_irqs
[
idx
].
mpc_srcbus
==
MP_ISA_BUS
&&
(
mp_irqs
[
idx
].
mpc_dstapic
==
ioapic
)
&&
(
mp_irqs
[
idx
].
mpc_srcbusirq
==
i
||
mp_irqs
[
idx
].
mpc_dstirq
==
i
))
break
;
if
(
idx
!=
mp_irq_entries
)
continue
;
/* IRQ already used */
for
(
idx
=
0
;
idx
<
mp_irq_entries
;
idx
++
)
{
struct
mpc_config_intsrc
*
irq
=
mp_irqs
+
idx
;
/* Do we already have a mapping for this ISA IRQ? */
if
(
irq
->
mpc_srcbus
==
MP_ISA_BUS
&&
irq
->
mpc_srcbusirq
==
i
)
break
;
/* Do we already have a mapping for this IOAPIC pin */
if
((
irq
->
mpc_dstapic
==
intsrc
.
mpc_dstapic
)
&&
(
irq
->
mpc_dstirq
==
i
))
break
;
}
if
(
idx
!=
mp_irq_entries
)
{
printk
(
KERN_DEBUG
"ACPI: IRQ%d used by override.
\n
"
,
i
);
continue
;
/* IRQ already used */
}
intsrc
.
mpc_irqtype
=
mp_INT
;
intsrc
.
mpc_srcbusirq
=
i
;
/* Identity mapped */
...
...
arch/x86_64/kernel/mpparse.c
View file @
95acaaba
...
...
@@ -859,16 +859,22 @@ void __init mp_config_acpi_legacy_irqs (void)
for
(
i
=
0
;
i
<
16
;
i
++
)
{
int
idx
;
for
(
idx
=
0
;
idx
<
mp_irq_entries
;
idx
++
)
if
(
mp_irqs
[
idx
].
mpc_srcbus
==
MP_ISA_BUS
&&
(
mp_irqs
[
idx
].
mpc_dstapic
==
ioapic
)
&&
(
mp_irqs
[
idx
].
mpc_srcbusirq
==
i
||
mp_irqs
[
idx
].
mpc_dstirq
==
i
))
break
;
for
(
idx
=
0
;
idx
<
mp_irq_entries
;
idx
++
)
{
struct
mpc_config_intsrc
*
irq
=
mp_irqs
+
idx
;
/* Do we already have a mapping for this ISA IRQ? */
if
(
irq
->
mpc_srcbus
==
MP_ISA_BUS
&&
irq
->
mpc_srcbusirq
==
i
)
break
;
/* Do we already have a mapping for this IOAPIC pin */
if
((
irq
->
mpc_dstapic
==
intsrc
.
mpc_dstapic
)
&&
(
irq
->
mpc_dstirq
==
i
))
break
;
}
if
(
idx
!=
mp_irq_entries
)
{
printk
(
KERN_DEBUG
"ACPI: IRQ%d used by override.
\n
"
,
i
);
continue
;
/* IRQ already used */
continue
;
/* IRQ already used */
}
intsrc
.
mpc_irqtype
=
mp_INT
;
...
...
drivers/block/ll_rw_blk.c
View file @
95acaaba
...
...
@@ -2667,7 +2667,7 @@ static int __end_that_request_first(struct request *req, int uptodate,
}
total_bytes
=
bio_nbytes
=
0
;
while
((
bio
=
req
->
bio
))
{
while
((
bio
=
req
->
bio
)
!=
NULL
)
{
int
nbytes
;
if
(
nr_bytes
>=
bio
->
bi_size
)
{
...
...
drivers/firmware/efivars.c
View file @
95acaaba
...
...
@@ -134,7 +134,7 @@ struct efivar_attribute {
#define EFI_ATTR(_name, _mode, _show, _store) \
struct subsys_attribute efi_attr_##_name = { \
.attr {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \
.attr
=
{.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \
.show = _show, \
.store = _store, \
};
...
...
drivers/ide/legacy/hd.c
View file @
95acaaba
...
...
@@ -660,7 +660,7 @@ static int hd_ioctl(struct inode * inode, struct file * file,
unsigned
int
cmd
,
unsigned
long
arg
)
{
struct
hd_i_struct
*
disk
=
inode
->
i_bdev
->
bd_disk
->
private_data
;
struct
hd_geometry
*
loc
=
(
struct
hd_geometry
*
)
arg
;
struct
hd_geometry
__user
*
loc
=
(
struct
hd_geometry
__user
*
)
arg
;
struct
hd_geometry
g
;
if
(
cmd
!=
HDIO_GETGEO
)
...
...
drivers/ieee1394/amdtp.c
View file @
95acaaba
...
...
@@ -1095,7 +1095,7 @@ void stream_free(struct stream *s)
/* File operations */
static
ssize_t
amdtp_write
(
struct
file
*
file
,
const
char
*
buffer
,
size_t
count
,
static
ssize_t
amdtp_write
(
struct
file
*
file
,
const
char
__user
*
buffer
,
size_t
count
,
loff_t
*
offset_is_ignored
)
{
struct
stream
*
s
=
file
->
private_data
;
...
...
@@ -1150,7 +1150,7 @@ static int amdtp_ioctl(struct inode *inode, struct file *file,
{
case
AMDTP_IOC_PLUG
:
case
AMDTP_IOC_CHANNEL
:
if
(
copy_from_user
(
&
cfg
,
(
struct
amdtp_ioctl
*
)
arg
,
sizeof
cfg
))
if
(
copy_from_user
(
&
cfg
,
(
struct
amdtp_ioctl
__user
*
)
arg
,
sizeof
cfg
))
return
-
EFAULT
;
else
return
stream_configure
(
s
,
cmd
,
&
cfg
);
...
...
drivers/ieee1394/dv1394.c
View file @
95acaaba
...
...
@@ -1333,7 +1333,7 @@ static int dv1394_fasync(int fd, struct file *file, int on)
return
0
;
}
static
ssize_t
dv1394_write
(
struct
file
*
file
,
const
char
*
buffer
,
size_t
count
,
loff_t
*
ppos
)
static
ssize_t
dv1394_write
(
struct
file
*
file
,
const
char
__user
*
buffer
,
size_t
count
,
loff_t
*
ppos
)
{
struct
video_card
*
video
=
file_to_video_card
(
file
);
DECLARE_WAITQUEUE
(
wait
,
current
);
...
...
@@ -1430,7 +1430,7 @@ static ssize_t dv1394_write(struct file *file, const char *buffer, size_t count,
}
static
ssize_t
dv1394_read
(
struct
file
*
file
,
char
*
buffer
,
size_t
count
,
loff_t
*
ppos
)
static
ssize_t
dv1394_read
(
struct
file
*
file
,
char
__user
*
buffer
,
size_t
count
,
loff_t
*
ppos
)
{
struct
video_card
*
video
=
file_to_video_card
(
file
);
DECLARE_WAITQUEUE
(
wait
,
current
);
...
...
@@ -1549,6 +1549,7 @@ static int dv1394_ioctl(struct inode *inode, struct file *file,
struct
video_card
*
video
=
file_to_video_card
(
file
);
unsigned
long
flags
;
int
ret
=
-
EINVAL
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
DECLARE_WAITQUEUE
(
wait
,
current
);
...
...
@@ -1718,10 +1719,10 @@ static int dv1394_ioctl(struct inode *inode, struct file *file,
case
DV1394_IOC_INIT
:
{
struct
dv1394_init
init
;
if
(
arg
==
(
unsigned
long
)
NULL
)
{
if
(
!
argp
)
{
ret
=
do_dv1394_init_default
(
video
);
}
else
{
if
(
copy_from_user
(
&
init
,
(
void
*
)
arg
,
sizeof
(
init
)))
{
if
(
copy_from_user
(
&
init
,
argp
,
sizeof
(
init
)))
{
ret
=
-
EFAULT
;
goto
out
;
}
...
...
@@ -1767,7 +1768,7 @@ static int dv1394_ioctl(struct inode *inode, struct file *file,
spin_unlock_irqrestore
(
&
video
->
spinlock
,
flags
);
if
(
copy_to_user
(
(
void
*
)
arg
,
&
status
,
sizeof
(
status
)))
{
if
(
copy_to_user
(
argp
,
&
status
,
sizeof
(
status
)))
{
ret
=
-
EFAULT
;
goto
out
;
}
...
...
drivers/ieee1394/raw1394-private.h
View file @
95acaaba
...
...
@@ -35,11 +35,11 @@ struct file_info {
struct
list_head
addr_list
;
u8
*
fcp_buffer
;
u8
__user
*
fcp_buffer
;
/* old ISO API */
u64
listen_channels
;
quadlet_t
*
iso_buffer
;
quadlet_t
__user
*
iso_buffer
;
size_t
iso_buffer_length
;
u8
notification
;
/* (busreset-notification) RAW1394_NOTIFY_OFF/ON */
...
...
drivers/ieee1394/raw1394.c
View file @
95acaaba
...
...
@@ -56,11 +56,11 @@
#include "raw1394-private.h"
#if BITS_PER_LONG == 64
#define int2ptr(x) ((void *)x)
#define ptr2int(x) ((u64)x)
#define int2ptr(x) ((void
__user
*)x)
#define ptr2int(x) ((u64)
(unsigned long)(void __user *)
x)
#else
#define int2ptr(x) ((void *)(u32)x)
#define ptr2int(x) ((u64)(u
32
)x)
#define int2ptr(x) ((void
__user
*)(u32)x)
#define ptr2int(x) ((u64)(u
nsigned long)(void __user *
)x)
#endif
#ifdef CONFIG_IEEE1394_VERBOSEDEBUG
...
...
@@ -410,7 +410,7 @@ static void fcp_request(struct hpsb_host *host, int nodeid, int direction,
}
static
ssize_t
raw1394_read
(
struct
file
*
file
,
char
*
buffer
,
size_t
count
,
static
ssize_t
raw1394_read
(
struct
file
*
file
,
char
__user
*
buffer
,
size_t
count
,
loff_t
*
offset_is_ignored
)
{
struct
file_info
*
fi
=
(
struct
file_info
*
)
file
->
private_data
;
...
...
@@ -602,7 +602,7 @@ static void handle_fcp_listen(struct file_info *fi, struct pending_request *req)
if
(
fi
->
fcp_buffer
)
{
req
->
req
.
error
=
RAW1394_ERROR_ALREADY
;
}
else
{
fi
->
fcp_buffer
=
(
u8
*
)
int2ptr
(
req
->
req
.
recvb
);
fi
->
fcp_buffer
=
int2ptr
(
req
->
req
.
recvb
);
}
}
else
{
if
(
!
fi
->
fcp_buffer
)
{
...
...
@@ -826,7 +826,7 @@ static int handle_async_send(struct file_info *fi, struct pending_request *req)
return
sizeof
(
struct
raw1394_request
);
}
if
(
copy_from_user
(
packet
->
data
,
((
u8
*
)
int2ptr
(
req
->
req
.
sendb
)
)
+
header_length
,
if
(
copy_from_user
(
packet
->
data
,
int2ptr
(
req
->
req
.
sendb
)
+
header_length
,
packet
->
data_size
))
{
req
->
req
.
error
=
RAW1394_ERROR_MEMFAULT
;
req
->
req
.
length
=
0
;
...
...
@@ -964,9 +964,8 @@ static int arm_read (struct hpsb_host *host, int nodeid, quadlet_t *buffer,
arm_req
->
buffer
=
NULL
;
arm_resp
->
buffer
=
NULL
;
if
(
rcode
==
RCODE_COMPLETE
)
{
arm_resp
->
buffer
=
((
byte_t
*
)(
arm_resp
)
+
(
sizeof
(
struct
arm_response
)));
memcpy
(
arm_resp
->
buffer
,
byte_t
*
buf
=
(
byte_t
*
)
arm_resp
+
sizeof
(
struct
arm_response
);
memcpy
(
buf
,
(
arm_addr
->
addr_space_buffer
)
+
(
addr
-
(
arm_addr
->
start
)),
length
);
arm_resp
->
buffer
=
int2ptr
((
arm_addr
->
recvb
)
+
...
...
@@ -1091,10 +1090,9 @@ static int arm_write (struct hpsb_host *host, int nodeid, int destid,
(
sizeof
(
struct
arm_request_response
)));
arm_resp
=
(
struct
arm_response
*
)
((
byte_t
*
)(
arm_req
)
+
(
sizeof
(
struct
arm_request
)));
arm_req
->
buffer
=
((
byte_t
*
)(
arm_resp
)
+
(
sizeof
(
struct
arm_response
)));
arm_resp
->
buffer
=
NULL
;
memcpy
(
arm_req
->
buffer
,
data
,
length
);
memcpy
((
byte_t
*
)
arm_resp
+
sizeof
(
struct
arm_response
),
data
,
length
);
arm_req
->
buffer
=
int2ptr
((
arm_addr
->
recvb
)
+
sizeof
(
struct
arm_request_response
)
+
sizeof
(
struct
arm_request
)
+
...
...
@@ -1233,6 +1231,7 @@ static int arm_lock (struct hpsb_host *host, int nodeid, quadlet_t *store,
}
}
if
(
arm_addr
->
notification_options
&
ARM_LOCK
)
{
byte_t
*
buf1
,
*
buf2
;
DBGMSG
(
"arm_lock -> entering notification-section"
);
req
=
__alloc_pending_request
(
SLAB_ATOMIC
);
if
(
!
req
)
{
...
...
@@ -1258,26 +1257,22 @@ static int arm_lock (struct hpsb_host *host, int nodeid, quadlet_t *store,
(
sizeof
(
struct
arm_request_response
)));
arm_resp
=
(
struct
arm_response
*
)
((
byte_t
*
)(
arm_req
)
+
(
sizeof
(
struct
arm_request
)));
arm_req
->
buffer
=
((
byte_t
*
)(
arm_resp
)
+
(
sizeof
(
struct
arm_response
)));
arm_resp
->
buffer
=
((
byte_t
*
)(
arm_req
->
buffer
)
+
(
2
*
sizeof
(
*
store
)));
buf1
=
(
byte_t
*
)
arm_resp
+
sizeof
(
struct
arm_response
);
buf2
=
buf1
+
2
*
sizeof
(
*
store
);
if
((
ext_tcode
==
EXTCODE_FETCH_ADD
)
||
(
ext_tcode
==
EXTCODE_LITTLE_ADD
))
{
arm_req
->
buffer_length
=
sizeof
(
*
store
);
memcpy
(
arm_req
->
buffer
,
&
data
,
sizeof
(
*
store
));
memcpy
(
buf1
,
&
data
,
sizeof
(
*
store
));
}
else
{
arm_req
->
buffer_length
=
2
*
sizeof
(
*
store
);
memcpy
(
arm_req
->
buffer
,
&
arg
,
sizeof
(
*
store
));
memcpy
(((
arm_req
->
buffer
)
+
sizeof
(
*
store
)),
&
data
,
sizeof
(
*
store
));
memcpy
(
buf1
,
&
arg
,
sizeof
(
*
store
));
memcpy
(
buf1
+
sizeof
(
*
store
),
&
data
,
sizeof
(
*
store
));
}
if
(
rcode
==
RCODE_COMPLETE
)
{
arm_resp
->
buffer_length
=
sizeof
(
*
store
);
memcpy
(
arm_resp
->
buffer
,
&
old
,
sizeof
(
*
store
));
memcpy
(
buf2
,
&
old
,
sizeof
(
*
store
));
}
else
{
arm_resp
->
buffer
=
NULL
;
arm_resp
->
buffer_length
=
0
;
}
req
->
file_info
=
fi
;
...
...
@@ -1438,6 +1433,7 @@ static int arm_lock64 (struct hpsb_host *host, int nodeid, octlet_t *store,
}
}
if
(
arm_addr
->
notification_options
&
ARM_LOCK
)
{
byte_t
*
buf1
,
*
buf2
;
DBGMSG
(
"arm_lock64 -> entering notification-section"
);
req
=
__alloc_pending_request
(
SLAB_ATOMIC
);
if
(
!
req
)
{
...
...
@@ -1463,26 +1459,22 @@ static int arm_lock64 (struct hpsb_host *host, int nodeid, octlet_t *store,
(
sizeof
(
struct
arm_request_response
)));
arm_resp
=
(
struct
arm_response
*
)
((
byte_t
*
)(
arm_req
)
+
(
sizeof
(
struct
arm_request
)));
arm_req
->
buffer
=
((
byte_t
*
)(
arm_resp
)
+
(
sizeof
(
struct
arm_response
)));
arm_resp
->
buffer
=
((
byte_t
*
)(
arm_req
->
buffer
)
+
(
2
*
sizeof
(
*
store
)));
buf1
=
(
byte_t
*
)
arm_resp
+
sizeof
(
struct
arm_response
);
buf2
=
buf1
+
2
*
sizeof
(
*
store
);
if
((
ext_tcode
==
EXTCODE_FETCH_ADD
)
||
(
ext_tcode
==
EXTCODE_LITTLE_ADD
))
{
arm_req
->
buffer_length
=
sizeof
(
*
store
);
memcpy
(
arm_req
->
buffer
,
&
data
,
sizeof
(
*
store
));
memcpy
(
buf1
,
&
data
,
sizeof
(
*
store
));
}
else
{
arm_req
->
buffer_length
=
2
*
sizeof
(
*
store
);
memcpy
(
arm_req
->
buffer
,
&
arg
,
sizeof
(
*
store
));
memcpy
(((
arm_req
->
buffer
)
+
sizeof
(
*
store
)),
&
data
,
sizeof
(
*
store
));
memcpy
(
buf1
,
&
arg
,
sizeof
(
*
store
));
memcpy
(
buf1
+
sizeof
(
*
store
),
&
data
,
sizeof
(
*
store
));
}
if
(
rcode
==
RCODE_COMPLETE
)
{
arm_resp
->
buffer_length
=
sizeof
(
*
store
);
memcpy
(
arm_resp
->
buffer
,
&
old
,
sizeof
(
*
store
));
memcpy
(
buf2
,
&
old
,
sizeof
(
*
store
));
}
else
{
arm_resp
->
buffer
=
NULL
;
arm_resp
->
buffer_length
=
0
;
}
req
->
file_info
=
fi
;
...
...
@@ -2146,7 +2138,7 @@ static int state_connected(struct file_info *fi, struct pending_request *req)
}
static
ssize_t
raw1394_write
(
struct
file
*
file
,
const
char
*
buffer
,
size_t
count
,
static
ssize_t
raw1394_write
(
struct
file
*
file
,
const
char
__user
*
buffer
,
size_t
count
,
loff_t
*
offset_is_ignored
)
{
struct
file_info
*
fi
=
(
struct
file_info
*
)
file
->
private_data
;
...
...
@@ -2262,7 +2254,7 @@ static void raw1394_iso_fill_status(struct hpsb_iso *iso, struct raw1394_iso_sta
stat
->
xmit_cycle
=
iso
->
xmit_cycle
;
}
static
int
raw1394_iso_xmit_init
(
struct
file_info
*
fi
,
void
*
uaddr
)
static
int
raw1394_iso_xmit_init
(
struct
file_info
*
fi
,
void
__user
*
uaddr
)
{
struct
raw1394_iso_status
stat
;
...
...
@@ -2294,7 +2286,7 @@ static int raw1394_iso_xmit_init(struct file_info *fi, void *uaddr)
return
0
;
}
static
int
raw1394_iso_recv_init
(
struct
file_info
*
fi
,
void
*
uaddr
)
static
int
raw1394_iso_recv_init
(
struct
file_info
*
fi
,
void
__user
*
uaddr
)
{
struct
raw1394_iso_status
stat
;
...
...
@@ -2322,7 +2314,7 @@ static int raw1394_iso_recv_init(struct file_info *fi, void *uaddr)
return
0
;
}
static
int
raw1394_iso_get_status
(
struct
file_info
*
fi
,
void
*
uaddr
)
static
int
raw1394_iso_get_status
(
struct
file_info
*
fi
,
void
__user
*
uaddr
)
{
struct
raw1394_iso_status
stat
;
struct
hpsb_iso
*
iso
=
fi
->
iso_handle
;
...
...
@@ -2338,7 +2330,7 @@ static int raw1394_iso_get_status(struct file_info *fi, void *uaddr)
}
/* copy N packet_infos out of the ringbuffer into user-supplied array */
static
int
raw1394_iso_recv_packets
(
struct
file_info
*
fi
,
void
*
uaddr
)
static
int
raw1394_iso_recv_packets
(
struct
file_info
*
fi
,
void
__user
*
uaddr
)
{
struct
raw1394_iso_packets
upackets
;
unsigned
int
packet
=
fi
->
iso_handle
->
first_packet
;
...
...
@@ -2369,7 +2361,7 @@ static int raw1394_iso_recv_packets(struct file_info *fi, void *uaddr)
}
/* copy N packet_infos from user to ringbuffer, and queue them for transmission */
static
int
raw1394_iso_send_packets
(
struct
file_info
*
fi
,
void
*
uaddr
)
static
int
raw1394_iso_send_packets
(
struct
file_info
*
fi
,
void
__user
*
uaddr
)
{
struct
raw1394_iso_packets
upackets
;
int
i
,
rv
;
...
...
@@ -2426,14 +2418,15 @@ static int raw1394_mmap(struct file *file, struct vm_area_struct *vma)
static
int
raw1394_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
struct
file_info
*
fi
=
file
->
private_data
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
switch
(
fi
->
iso_state
)
{
case
RAW1394_ISO_INACTIVE
:
switch
(
cmd
)
{
case
RAW1394_IOC_ISO_XMIT_INIT
:
return
raw1394_iso_xmit_init
(
fi
,
(
void
*
)
arg
);
return
raw1394_iso_xmit_init
(
fi
,
argp
);
case
RAW1394_IOC_ISO_RECV_INIT
:
return
raw1394_iso_recv_init
(
fi
,
(
void
*
)
arg
);
return
raw1394_iso_recv_init
(
fi
,
argp
);
default:
break
;
}
...
...
@@ -2443,7 +2436,7 @@ static int raw1394_ioctl(struct inode *inode, struct file *file, unsigned int cm
case
RAW1394_IOC_ISO_RECV_START
:
{
/* copy args from user-space */
int
args
[
3
];
if
(
copy_from_user
(
&
args
[
0
],
(
void
*
)
arg
,
sizeof
(
args
)))
if
(
copy_from_user
(
&
args
[
0
],
argp
,
sizeof
(
args
)))
return
-
EFAULT
;
return
hpsb_iso_recv_start
(
fi
->
iso_handle
,
args
[
0
],
args
[
1
],
args
[
2
]);
}
...
...
@@ -2457,14 +2450,14 @@ static int raw1394_ioctl(struct inode *inode, struct file *file, unsigned int cm
case
RAW1394_IOC_ISO_RECV_SET_CHANNEL_MASK
:
{
/* copy the u64 from user-space */
u64
mask
;
if
(
copy_from_user
(
&
mask
,
(
void
*
)
arg
,
sizeof
(
mask
)))
if
(
copy_from_user
(
&
mask
,
argp
,
sizeof
(
mask
)))
return
-
EFAULT
;
return
hpsb_iso_recv_set_channel_mask
(
fi
->
iso_handle
,
mask
);
}
case
RAW1394_IOC_ISO_GET_STATUS
:
return
raw1394_iso_get_status
(
fi
,
(
void
*
)
arg
);
return
raw1394_iso_get_status
(
fi
,
argp
);
case
RAW1394_IOC_ISO_RECV_PACKETS
:
return
raw1394_iso_recv_packets
(
fi
,
(
void
*
)
arg
);
return
raw1394_iso_recv_packets
(
fi
,
argp
);
case
RAW1394_IOC_ISO_RECV_RELEASE_PACKETS
:
return
hpsb_iso_recv_release_packets
(
fi
->
iso_handle
,
arg
);
case
RAW1394_IOC_ISO_RECV_FLUSH
:
...
...
@@ -2482,7 +2475,7 @@ static int raw1394_ioctl(struct inode *inode, struct file *file, unsigned int cm
case
RAW1394_IOC_ISO_XMIT_START
:
{
/* copy two ints from user-space */
int
args
[
2
];
if
(
copy_from_user
(
&
args
[
0
],
(
void
*
)
arg
,
sizeof
(
args
)))
if
(
copy_from_user
(
&
args
[
0
],
argp
,
sizeof
(
args
)))
return
-
EFAULT
;
return
hpsb_iso_xmit_start
(
fi
->
iso_handle
,
args
[
0
],
args
[
1
]);
}
...
...
@@ -2492,9 +2485,9 @@ static int raw1394_ioctl(struct inode *inode, struct file *file, unsigned int cm
hpsb_iso_stop
(
fi
->
iso_handle
);
return
0
;
case
RAW1394_IOC_ISO_GET_STATUS
:
return
raw1394_iso_get_status
(
fi
,
(
void
*
)
arg
);
return
raw1394_iso_get_status
(
fi
,
argp
);
case
RAW1394_IOC_ISO_XMIT_PACKETS
:
return
raw1394_iso_send_packets
(
fi
,
(
void
*
)
arg
);
return
raw1394_iso_send_packets
(
fi
,
argp
);
case
RAW1394_IOC_ISO_SHUTDOWN
:
raw1394_iso_shutdown
(
fi
);
return
0
;
...
...
drivers/ieee1394/raw1394.h
View file @
95acaaba
...
...
@@ -105,18 +105,18 @@ typedef struct arm_request {
__u8
extended_transaction_code
;
__u32
generation
;
__u16
buffer_length
;
__u8
*
buffer
;
__u8
__user
*
buffer
;
}
*
arm_request_t
;
typedef
struct
arm_response
{
__s32
response_code
;
__u16
buffer_length
;
__u8
*
buffer
;
__u8
__user
*
buffer
;
}
*
arm_response_t
;
typedef
struct
arm_request_response
{
struct
arm_request
*
request
;
struct
arm_response
*
response
;
struct
arm_request
__user
*
request
;
struct
arm_response
__user
*
response
;
}
*
arm_request_response_t
;
/* rawiso API */
...
...
@@ -136,7 +136,7 @@ struct raw1394_iso_packet_info {
/* argument for RAW1394_ISO_RECV/XMIT_PACKETS ioctls */
struct
raw1394_iso_packets
{
__u32
n_packets
;
struct
raw1394_iso_packet_info
*
infos
;
struct
raw1394_iso_packet_info
__user
*
infos
;
};
struct
raw1394_iso_config
{
...
...
drivers/ieee1394/video1394.c
View file @
95acaaba
...
...
@@ -705,6 +705,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
struct
file_ctx
*
ctx
=
(
struct
file_ctx
*
)
file
->
private_data
;
struct
ti_ohci
*
ohci
=
ctx
->
ohci
;
unsigned
long
flags
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
switch
(
cmd
)
{
...
...
@@ -716,7 +717,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
struct
dma_iso_ctx
*
d
;
int
i
;
if
(
copy_from_user
(
&
v
,
(
void
*
)
arg
,
sizeof
(
v
)))
if
(
copy_from_user
(
&
v
,
argp
,
sizeof
(
v
)))
return
-
EFAULT
;
/* if channel < 0, find lowest available one */
...
...
@@ -813,7 +814,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
v
.
channel
);
}
if
(
copy_to_user
(
(
void
*
)
arg
,
&
v
,
sizeof
(
v
)))
if
(
copy_to_user
(
argp
,
&
v
,
sizeof
(
v
)))
return
-
EFAULT
;
return
0
;
...
...
@@ -825,7 +826,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
u64
mask
;
struct
dma_iso_ctx
*
d
;
if
(
copy_from_user
(
&
channel
,
(
void
*
)
arg
,
sizeof
(
int
)))
if
(
copy_from_user
(
&
channel
,
argp
,
sizeof
(
int
)))
return
-
EFAULT
;
if
(
channel
<
0
||
channel
>
(
ISO_CHANNELS
-
1
))
{
...
...
@@ -860,7 +861,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
struct
video1394_wait
v
;
struct
dma_iso_ctx
*
d
;
if
(
copy_from_user
(
&
v
,
(
void
*
)
arg
,
sizeof
(
v
)))
if
(
copy_from_user
(
&
v
,
argp
,
sizeof
(
v
)))
return
-
EFAULT
;
d
=
find_ctx
(
&
ctx
->
context_list
,
OHCI_ISO_RECEIVE
,
v
.
channel
);
...
...
@@ -923,7 +924,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
struct
dma_iso_ctx
*
d
;
int
i
;
if
(
copy_from_user
(
&
v
,
(
void
*
)
arg
,
sizeof
(
v
)))
if
(
copy_from_user
(
&
v
,
argp
,
sizeof
(
v
)))
return
-
EFAULT
;
d
=
find_ctx
(
&
ctx
->
context_list
,
OHCI_ISO_RECEIVE
,
v
.
channel
);
...
...
@@ -994,7 +995,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
spin_unlock_irqrestore
(
&
d
->
lock
,
flags
);
v
.
buffer
=
i
;
if
(
copy_to_user
(
(
void
*
)
arg
,
&
v
,
sizeof
(
v
)))
if
(
copy_to_user
(
argp
,
&
v
,
sizeof
(
v
)))
return
-
EFAULT
;
return
0
;
...
...
@@ -1007,7 +1008,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
qv
.
packet_sizes
=
NULL
;
if
(
copy_from_user
(
&
v
,
(
void
*
)
arg
,
sizeof
(
v
)))
if
(
copy_from_user
(
&
v
,
argp
,
sizeof
(
v
)))
return
-
EFAULT
;
d
=
find_ctx
(
&
ctx
->
context_list
,
OHCI_ISO_TRANSMIT
,
v
.
channel
);
...
...
@@ -1023,7 +1024,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
unsigned
int
*
psizes
;
int
buf_size
=
d
->
nb_cmd
*
sizeof
(
unsigned
int
);
if
(
copy_from_user
(
&
qv
,
(
void
*
)
arg
,
sizeof
(
qv
)))
if
(
copy_from_user
(
&
qv
,
argp
,
sizeof
(
qv
)))
return
-
EFAULT
;
psizes
=
kmalloc
(
buf_size
,
GFP_KERNEL
);
...
...
@@ -1111,7 +1112,7 @@ static int video1394_ioctl(struct inode *inode, struct file *file,
struct
video1394_wait
v
;
struct
dma_iso_ctx
*
d
;
if
(
copy_from_user
(
&
v
,
(
void
*
)
arg
,
sizeof
(
v
)))
if
(
copy_from_user
(
&
v
,
argp
,
sizeof
(
v
)))
return
-
EFAULT
;
d
=
find_ctx
(
&
ctx
->
context_list
,
OHCI_ISO_TRANSMIT
,
v
.
channel
);
...
...
drivers/isdn/i4l/isdn_ppp.c
View file @
95acaaba
...
...
@@ -320,8 +320,8 @@ isdn_ppp_open(int min, struct file *file)
is
->
slcomp
=
slhc_init
(
16
,
16
);
/* not necessary for 2. link in bundle */
#endif
#ifdef CONFIG_IPPP_FILTER
is
->
pass_filter
.
filter
=
NULL
;
is
->
active_filter
.
filter
=
NULL
;
is
->
pass_filter
=
NULL
;
is
->
active_filter
=
NULL
;
#endif
is
->
state
=
IPPP_OPEN
;
...
...
@@ -378,13 +378,13 @@ isdn_ppp_release(int min, struct file *file)
is
->
slcomp
=
NULL
;
#endif
#ifdef CONFIG_IPPP_FILTER
if
(
is
->
pass_filter
.
filter
)
{
kfree
(
is
->
pass_filter
.
filter
);
is
->
pass_filter
.
filter
=
NULL
;
if
(
is
->
pass_filter
)
{
kfree
(
is
->
pass_filter
);
is
->
pass_filter
=
NULL
;
}
if
(
is
->
active_filter
.
filter
)
{
kfree
(
is
->
active_filter
.
filter
);
is
->
active_filter
.
filter
=
NULL
;
if
(
is
->
active_filter
)
{
kfree
(
is
->
active_filter
);
is
->
active_filter
=
NULL
;
}
#endif
...
...
@@ -414,11 +414,11 @@ isdn_ppp_release(int min, struct file *file)
* get_arg .. ioctl helper
*/
static
int
get_arg
(
void
*
b
,
void
*
val
,
int
len
)
get_arg
(
void
__user
*
b
,
void
*
val
,
int
len
)
{
if
(
len
<=
0
)
len
=
sizeof
(
void
*
);
if
(
copy_from_user
(
(
void
*
)
val
,
b
,
len
))
if
(
copy_from_user
(
val
,
b
,
len
))
return
-
EFAULT
;
return
0
;
}
...
...
@@ -427,15 +427,50 @@ get_arg(void *b, void *val, int len)
* set arg .. ioctl helper
*/
static
int
set_arg
(
void
*
b
,
void
*
val
,
int
len
)
set_arg
(
void
__user
*
b
,
void
*
val
,
int
len
)
{
if
(
len
<=
0
)
len
=
sizeof
(
void
*
);
if
(
copy_to_user
(
b
,
(
void
*
)
val
,
len
))
if
(
copy_to_user
(
b
,
val
,
len
))
return
-
EFAULT
;
return
0
;
}
static
int
get_filter
(
void
__user
*
arg
,
struct
sock_filter
**
p
)
{
struct
sock_fprog
uprog
;
struct
sock_filter
*
code
=
NULL
;
int
len
,
err
;
if
(
copy_from_user
(
&
uprog
,
arg
,
sizeof
(
uprog
)))
return
-
EFAULT
;
if
(
!
uprog
.
len
)
{
*
p
=
NULL
;
return
0
;
}
/* uprog.len is unsigned short, so no overflow here */
len
=
uprog
.
len
*
sizeof
(
struct
sock_filter
);
code
=
kmalloc
(
len
,
GFP_KERNEL
);
if
(
code
==
NULL
)
return
-
ENOMEM
;
if
(
copy_from_user
(
code
,
uprog
.
filter
,
len
))
{
kfree
(
code
);
return
-
EFAULT
;
}
err
=
sk_chk_filter
(
code
,
uprog
.
len
);
if
(
err
)
{
kfree
(
code
);
return
err
;
}
*
p
=
code
;
return
uprog
.
len
;
}
/*
* ippp device ioctl
*/
...
...
@@ -447,6 +482,7 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
struct
ippp_struct
*
is
;
isdn_net_local
*
lp
;
struct
isdn_ppp_comp_data
data
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
is
=
(
struct
ippp_struct
*
)
file
->
private_data
;
lp
=
is
->
lp
;
...
...
@@ -462,7 +498,7 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
#ifdef CONFIG_ISDN_MPP
if
(
!
(
is
->
state
&
IPPP_CONNECT
))
return
-
EINVAL
;
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
val
,
sizeof
(
val
)
)))
if
((
r
=
get_arg
(
argp
,
&
val
,
sizeof
(
val
)
)))
return
r
;
printk
(
KERN_DEBUG
"iPPP-bundle: minor: %d, slave unit: %d, master unit: %d
\n
"
,
(
int
)
min
,
(
int
)
is
->
unit
,
(
int
)
val
);
...
...
@@ -472,30 +508,30 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
#endif
break
;
case
PPPIOCGUNIT
:
/* get ppp/isdn unit number */
if
((
r
=
set_arg
(
(
void
*
)
arg
,
&
is
->
unit
,
sizeof
(
is
->
unit
)
)))
if
((
r
=
set_arg
(
argp
,
&
is
->
unit
,
sizeof
(
is
->
unit
)
)))
return
r
;
break
;
case
PPPIOCGIFNAME
:
if
(
!
lp
)
return
-
EINVAL
;
if
((
r
=
set_arg
(
(
void
*
)
arg
,
lp
->
name
,
strlen
(
lp
->
name
))))
if
((
r
=
set_arg
(
argp
,
lp
->
name
,
strlen
(
lp
->
name
))))
return
r
;
break
;
case
PPPIOCGMPFLAGS
:
/* get configuration flags */
if
((
r
=
set_arg
(
(
void
*
)
arg
,
&
is
->
mpppcfg
,
sizeof
(
is
->
mpppcfg
)
)))
if
((
r
=
set_arg
(
argp
,
&
is
->
mpppcfg
,
sizeof
(
is
->
mpppcfg
)
)))
return
r
;
break
;
case
PPPIOCSMPFLAGS
:
/* set configuration flags */
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
val
,
sizeof
(
val
)
)))
if
((
r
=
get_arg
(
argp
,
&
val
,
sizeof
(
val
)
)))
return
r
;
is
->
mpppcfg
=
val
;
break
;
case
PPPIOCGFLAGS
:
/* get configuration flags */
if
((
r
=
set_arg
(
(
void
*
)
arg
,
&
is
->
pppcfg
,
sizeof
(
is
->
pppcfg
)
)))
if
((
r
=
set_arg
(
argp
,
&
is
->
pppcfg
,
sizeof
(
is
->
pppcfg
)
)))
return
r
;
break
;
case
PPPIOCSFLAGS
:
/* set configuration flags */
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
val
,
sizeof
(
val
)
)))
{
if
((
r
=
get_arg
(
argp
,
&
val
,
sizeof
(
val
)
)))
{
return
r
;
}
if
(
val
&
SC_ENABLE_IP
&&
!
(
is
->
pppcfg
&
SC_ENABLE_IP
)
&&
(
is
->
state
&
IPPP_CONNECT
))
{
...
...
@@ -512,12 +548,12 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
if
(
lp
)
{
struct
ppp_idle
pidle
;
pidle
.
xmit_idle
=
pidle
.
recv_idle
=
lp
->
huptimer
;
if
((
r
=
set_arg
(
(
void
*
)
arg
,
&
pidle
,
sizeof
(
struct
ppp_idle
))))
if
((
r
=
set_arg
(
argp
,
&
pidle
,
sizeof
(
struct
ppp_idle
))))
return
r
;
}
break
;
case
PPPIOCSMRU
:
/* set receive unit size for PPP */
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
val
,
sizeof
(
val
)
)))
if
((
r
=
get_arg
(
argp
,
&
val
,
sizeof
(
val
)
)))
return
r
;
is
->
mru
=
val
;
break
;
...
...
@@ -526,7 +562,7 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
case
PPPIOCSMPMTU
:
break
;
case
PPPIOCSMAXCID
:
/* set the maximum compression slot id */
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
val
,
sizeof
(
val
)
)))
if
((
r
=
get_arg
(
argp
,
&
val
,
sizeof
(
val
)
)))
return
r
;
val
++
;
if
(
is
->
maxcid
!=
val
)
{
...
...
@@ -549,11 +585,11 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
}
break
;
case
PPPIOCGDEBUG
:
if
((
r
=
set_arg
(
(
void
*
)
arg
,
&
is
->
debug
,
sizeof
(
is
->
debug
)
)))
if
((
r
=
set_arg
(
argp
,
&
is
->
debug
,
sizeof
(
is
->
debug
)
)))
return
r
;
break
;
case
PPPIOCSDEBUG
:
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
val
,
sizeof
(
val
)
)))
if
((
r
=
get_arg
(
argp
,
&
val
,
sizeof
(
val
)
)))
return
r
;
is
->
debug
=
val
;
break
;
...
...
@@ -568,12 +604,12 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
protos
[
j
]
|=
(
0x1
<<
i
);
ipc
=
ipc
->
next
;
}
if
((
r
=
set_arg
(
(
void
*
)
arg
,
protos
,
8
*
sizeof
(
long
)
)))
if
((
r
=
set_arg
(
argp
,
protos
,
8
*
sizeof
(
long
)
)))
return
r
;
}
break
;
case
PPPIOCSCOMPRESSOR
:
if
((
r
=
get_arg
(
(
void
*
)
arg
,
&
data
,
sizeof
(
struct
isdn_ppp_comp_data
))))
if
((
r
=
get_arg
(
argp
,
&
data
,
sizeof
(
struct
isdn_ppp_comp_data
))))
return
r
;
return
isdn_ppp_set_compressor
(
is
,
&
data
);
case
PPPIOCGCALLINFO
:
...
...
@@ -594,38 +630,29 @@ isdn_ppp_ioctl(int min, struct file *file, unsigned int cmd, unsigned long arg)
if
(
lp
->
flags
&
ISDN_NET_CALLBACK
)
pci
.
calltype
|=
CALLTYPE_CALLBACK
;
}
return
set_arg
(
(
void
*
)
arg
,
&
pci
,
sizeof
(
struct
pppcallinfo
));
return
set_arg
(
argp
,
&
pci
,
sizeof
(
struct
pppcallinfo
));
}
#ifdef CONFIG_IPPP_FILTER
case
PPPIOCSPASS
:
{
struct
sock_filter
*
code
;
int
len
=
get_filter
(
argp
,
&
code
);
if
(
len
<
0
)
return
len
;
kfree
(
is
->
pass_filter
);
is
->
pass_filter
=
code
;
is
->
pass_len
=
len
;
break
;
}
case
PPPIOCSACTIVE
:
{
struct
sock_fprog
uprog
,
*
filtp
;
struct
sock_filter
*
code
=
NULL
;
int
len
,
err
;
if
(
copy_from_user
(
&
uprog
,
(
void
*
)
arg
,
sizeof
(
uprog
)))
return
-
EFAULT
;
if
(
uprog
.
len
>
0
)
{
len
=
uprog
.
len
*
sizeof
(
struct
sock_filter
);
code
=
kmalloc
(
len
,
GFP_KERNEL
);
if
(
code
==
NULL
)
return
-
ENOMEM
;
if
(
copy_from_user
(
code
,
uprog
.
filter
,
len
))
{
kfree
(
code
);
return
-
EFAULT
;
}
err
=
sk_chk_filter
(
code
,
uprog
.
len
);
if
(
err
)
{
kfree
(
code
);
return
err
;
}
}
filtp
=
(
cmd
==
PPPIOCSPASS
)
?
&
is
->
pass_filter
:
&
is
->
active_filter
;
if
(
filtp
->
filter
)
kfree
(
filtp
->
filter
);
filtp
->
filter
=
code
;
filtp
->
len
=
uprog
.
len
;
struct
sock_filter
*
code
;
int
len
=
get_filter
(
argp
,
&
code
);
if
(
len
<
0
)
return
len
;
kfree
(
is
->
active_filter
);
is
->
active_filter
=
code
;
is
->
active_len
=
len
;
break
;
}
#endif
/* CONFIG_IPPP_FILTER */
...
...
@@ -733,7 +760,7 @@ isdn_ppp_fill_rq(unsigned char *buf, int len, int proto, int slot)
*/
int
isdn_ppp_read
(
int
min
,
struct
file
*
file
,
char
*
buf
,
int
count
)
isdn_ppp_read
(
int
min
,
struct
file
*
file
,
char
__user
*
buf
,
int
count
)
{
struct
ippp_struct
*
is
;
struct
ippp_buf_queue
*
b
;
...
...
@@ -746,7 +773,7 @@ isdn_ppp_read(int min, struct file *file, char *buf, int count)
if
(
!
(
is
->
state
&
IPPP_OPEN
))
return
0
;
if
((
r
=
verify_area
(
VERIFY_WRITE
,
(
void
*
)
buf
,
count
)))
if
((
r
=
verify_area
(
VERIFY_WRITE
,
buf
,
count
)))
return
r
;
spin_lock_irqsave
(
&
is
->
buflock
,
flags
);
...
...
@@ -773,7 +800,7 @@ isdn_ppp_read(int min, struct file *file, char *buf, int count)
*/
int
isdn_ppp_write
(
int
min
,
struct
file
*
file
,
const
char
*
buf
,
int
count
)
isdn_ppp_write
(
int
min
,
struct
file
*
file
,
const
char
__user
*
buf
,
int
count
)
{
isdn_net_local
*
lp
;
struct
ippp_struct
*
is
;
...
...
@@ -1128,17 +1155,16 @@ isdn_ppp_push_higher(isdn_net_dev * net_dev, isdn_net_local * lp, struct sk_buff
*
p
=
0
;
/* indicate inbound in DLT_LINUX_SLL */
}
if
(
is
->
pass_filter
.
filter
&&
sk_run_filter
(
skb
,
is
->
pass_filter
.
filter
,
is
->
pass_filter
.
len
)
==
0
)
{
if
(
is
->
pass_filter
&&
sk_run_filter
(
skb
,
is
->
pass_filter
,
is
->
pass_len
)
==
0
)
{
if
(
is
->
debug
&
0x2
)
printk
(
KERN_DEBUG
"IPPP: inbound frame filtered.
\n
"
);
kfree_skb
(
skb
);
return
;
}
if
(
!
(
is
->
active_filter
.
filter
&&
sk_run_filter
(
skb
,
is
->
active_filter
.
filter
,
is
->
active_
filter
.
len
)
==
0
))
{
if
(
!
(
is
->
active_filter
&&
sk_run_filter
(
skb
,
is
->
active_filter
,
is
->
active_len
)
==
0
))
{
if
(
is
->
debug
&
0x2
)
printk
(
KERN_DEBUG
"IPPP: link-active filter: reseting huptimer.
\n
"
);
lp
->
huptimer
=
0
;
...
...
@@ -1276,17 +1302,16 @@ isdn_ppp_xmit(struct sk_buff *skb, struct net_device *netdev)
*
p
=
htons
(
proto
);
}
if
(
ipt
->
pass_filter
.
filter
&&
sk_run_filter
(
skb
,
ipt
->
pass_filter
.
filter
,
ipt
->
pass_filter
.
len
)
==
0
)
{
if
(
ipt
->
pass_filter
&&
sk_run_filter
(
skb
,
ipt
->
pass_filter
,
ipt
->
pass_len
)
==
0
)
{
if
(
ipt
->
debug
&
0x4
)
printk
(
KERN_DEBUG
"IPPP: outbound frame filtered.
\n
"
);
kfree_skb
(
skb
);
goto
unlock
;
}
if
(
!
(
ipt
->
active_filter
.
filter
&&
sk_run_filter
(
skb
,
ipt
->
active_filter
.
filter
,
ipt
->
active_
filter
.
len
)
==
0
))
{
if
(
!
(
ipt
->
active_filter
&&
sk_run_filter
(
skb
,
ipt
->
active_filter
,
ipt
->
active_len
)
==
0
))
{
if
(
ipt
->
debug
&
0x4
)
printk
(
KERN_DEBUG
"IPPP: link-active filter: reseting huptimer.
\n
"
);
lp
->
huptimer
=
0
;
...
...
@@ -1475,12 +1500,10 @@ int isdn_ppp_autodial_filter(struct sk_buff *skb, isdn_net_local *lp)
*
p
=
htons
(
proto
);
}
drop
|=
is
->
pass_filter
.
filter
&&
sk_run_filter
(
skb
,
is
->
pass_filter
.
filter
,
is
->
pass_filter
.
len
)
==
0
;
drop
|=
is
->
active_filter
.
filter
&&
sk_run_filter
(
skb
,
is
->
active_filter
.
filter
,
is
->
active_filter
.
len
)
==
0
;
drop
|=
is
->
pass_filter
&&
sk_run_filter
(
skb
,
is
->
pass_filter
,
is
->
pass_len
)
==
0
;
drop
|=
is
->
active_filter
&&
sk_run_filter
(
skb
,
is
->
active_filter
,
is
->
active_len
)
==
0
;
skb_push
(
skb
,
IPPP_MAX_HEADER
-
4
);
return
drop
;
...
...
@@ -1969,12 +1992,11 @@ isdn_ppp_bundle(struct ippp_struct *is, int unit)
static
int
isdn_ppp_dev_ioctl_stats
(
int
slot
,
struct
ifreq
*
ifr
,
struct
net_device
*
dev
)
{
struct
ppp_stats
*
res
,
t
;
struct
ppp_stats
__user
*
res
=
ifr
->
ifr_data
;
struct
ppp_stats
t
;
isdn_net_local
*
lp
=
(
isdn_net_local
*
)
dev
->
priv
;
int
err
;
res
=
(
struct
ppp_stats
*
)
ifr
->
ifr_ifru
.
ifru_data
;
err
=
verify_area
(
VERIFY_WRITE
,
res
,
sizeof
(
struct
ppp_stats
));
if
(
err
)
...
...
@@ -2004,7 +2026,8 @@ isdn_ppp_dev_ioctl_stats(int slot, struct ifreq *ifr, struct net_device *dev)
}
#endif
}
if
(
copy_to_user
(
res
,
&
t
,
sizeof
(
struct
ppp_stats
)))
return
-
EFAULT
;
if
(
copy_to_user
(
res
,
&
t
,
sizeof
(
struct
ppp_stats
)))
return
-
EFAULT
;
return
0
;
}
...
...
@@ -2012,7 +2035,6 @@ int
isdn_ppp_dev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
{
int
error
=
0
;
char
*
r
;
int
len
;
isdn_net_local
*
lp
=
(
isdn_net_local
*
)
dev
->
priv
;
...
...
@@ -2023,9 +2045,8 @@ isdn_ppp_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
switch
(
cmd
)
{
#define PPP_VERSION "2.3.7"
case
SIOCGPPPVER
:
r
=
(
char
*
)
ifr
->
ifr_ifru
.
ifru_data
;
len
=
strlen
(
PPP_VERSION
)
+
1
;
if
(
copy_to_user
(
r
,
PPP_VERSION
,
len
))
if
(
copy_to_user
(
ifr
->
ifr_data
,
PPP_VERSION
,
len
))
error
=
-
EFAULT
;
break
;
...
...
drivers/isdn/i4l/isdn_ppp.h
View file @
95acaaba
...
...
@@ -12,8 +12,8 @@
#include <linux/ppp_defs.h>
/* for PPP_PROTOCOL */
#include <linux/isdn_ppp.h>
/* for isdn_ppp info */
extern
int
isdn_ppp_read
(
int
,
struct
file
*
,
char
*
,
int
);
extern
int
isdn_ppp_write
(
int
,
struct
file
*
,
const
char
*
,
int
);
extern
int
isdn_ppp_read
(
int
,
struct
file
*
,
char
__user
*
,
int
);
extern
int
isdn_ppp_write
(
int
,
struct
file
*
,
const
char
__user
*
,
int
);
extern
int
isdn_ppp_open
(
int
,
struct
file
*
);
extern
int
isdn_ppp_init
(
void
);
extern
void
isdn_ppp_cleanup
(
void
);
...
...
drivers/net/ppp_generic.c
View file @
95acaaba
...
...
@@ -129,8 +129,9 @@ struct ppp {
#endif
/* CONFIG_PPP_MULTILINK */
struct
net_device_stats
stats
;
/* statistics */
#ifdef CONFIG_PPP_FILTER
struct
sock_fprog
pass_filter
;
/* filter for packets to pass */
struct
sock_fprog
active_filter
;
/* filter for pkts to reset idle */
struct
sock_filter
*
pass_filter
;
/* filter for packets to pass */
struct
sock_filter
*
active_filter
;
/* filter for pkts to reset idle */
unsigned
pass_len
,
active_len
;
#endif
/* CONFIG_PPP_FILTER */
};
...
...
@@ -493,6 +494,43 @@ static unsigned int ppp_poll(struct file *file, poll_table *wait)
return
mask
;
}
static
int
get_filter
(
void
__user
*
arg
,
struct
sock_filter
**
p
)
{
struct
sock_fprog
uprog
;
struct
sock_filter
*
code
=
NULL
;
int
len
,
err
;
if
(
copy_from_user
(
&
uprog
,
arg
,
sizeof
(
uprog
)))
return
-
EFAULT
;
if
(
uprog
.
len
>
BPF_MAXINSNS
)
return
-
EINVAL
;
if
(
!
uprog
.
len
)
{
*
p
=
NULL
;
return
0
;
}
len
=
uprog
.
len
*
sizeof
(
struct
sock_filter
);
code
=
kmalloc
(
len
,
GFP_KERNEL
);
if
(
code
==
NULL
)
return
-
ENOMEM
;
if
(
copy_from_user
(
code
,
uprog
.
filter
,
len
))
{
kfree
(
code
);
return
-
EFAULT
;
}
err
=
sk_chk_filter
(
code
,
uprog
.
len
);
if
(
err
)
{
kfree
(
code
);
return
err
;
}
*
p
=
code
;
return
uprog
.
len
;
}
static
int
ppp_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
...
...
@@ -503,6 +541,8 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
struct
npioctl
npi
;
int
unit
,
cflags
;
struct
slcompress
*
vj
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
int
__user
*
p
=
argp
;
if
(
pf
==
0
)
return
ppp_unattached_ioctl
(
pf
,
file
,
cmd
,
arg
);
...
...
@@ -540,7 +580,7 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
switch
(
cmd
)
{
case
PPPIOCCONNECT
:
if
(
get_user
(
unit
,
(
int
*
)
arg
))
if
(
get_user
(
unit
,
p
))
break
;
err
=
ppp_connect_channel
(
pch
,
unit
);
break
;
...
...
@@ -569,14 +609,14 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
ppp
=
PF_TO_PPP
(
pf
);
switch
(
cmd
)
{
case
PPPIOCSMRU
:
if
(
get_user
(
val
,
(
int
*
)
arg
))
if
(
get_user
(
val
,
p
))
break
;
ppp
->
mru
=
val
;
err
=
0
;
break
;
case
PPPIOCSFLAGS
:
if
(
get_user
(
val
,
(
int
*
)
arg
))
if
(
get_user
(
val
,
p
))
break
;
ppp_lock
(
ppp
);
cflags
=
ppp
->
flags
&
~
val
;
...
...
@@ -589,7 +629,7 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
case
PPPIOCGFLAGS
:
val
=
ppp
->
flags
|
ppp
->
xstate
|
ppp
->
rstate
;
if
(
put_user
(
val
,
(
int
*
)
arg
))
if
(
put_user
(
val
,
p
))
break
;
err
=
0
;
break
;
...
...
@@ -599,20 +639,20 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
break
;
case
PPPIOCGUNIT
:
if
(
put_user
(
ppp
->
file
.
index
,
(
int
*
)
arg
))
if
(
put_user
(
ppp
->
file
.
index
,
p
))
break
;
err
=
0
;
break
;
case
PPPIOCSDEBUG
:
if
(
get_user
(
val
,
(
int
*
)
arg
))
if
(
get_user
(
val
,
p
))
break
;
ppp
->
debug
=
val
;
err
=
0
;
break
;
case
PPPIOCGDEBUG
:
if
(
put_user
(
ppp
->
debug
,
(
int
*
)
arg
))
if
(
put_user
(
ppp
->
debug
,
p
))
break
;
err
=
0
;
break
;
...
...
@@ -620,13 +660,13 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
case
PPPIOCGIDLE
:
idle
.
xmit_idle
=
(
jiffies
-
ppp
->
last_xmit
)
/
HZ
;
idle
.
recv_idle
=
(
jiffies
-
ppp
->
last_recv
)
/
HZ
;
if
(
copy_to_user
(
(
void
__user
*
)
arg
,
&
idle
,
sizeof
(
idle
)))
if
(
copy_to_user
(
argp
,
&
idle
,
sizeof
(
idle
)))
break
;
err
=
0
;
break
;
case
PPPIOCSMAXCID
:
if
(
get_user
(
val
,
(
int
*
)
arg
))
if
(
get_user
(
val
,
p
))
break
;
val2
=
15
;
if
((
val
>>
16
)
!=
0
)
{
...
...
@@ -649,7 +689,7 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
case
PPPIOCGNPMODE
:
case
PPPIOCSNPMODE
:
if
(
copy_from_user
(
&
npi
,
(
void
__user
*
)
arg
,
sizeof
(
npi
)))
if
(
copy_from_user
(
&
npi
,
argp
,
sizeof
(
npi
)))
break
;
err
=
proto_to_npindex
(
npi
.
protocol
);
if
(
err
<
0
)
...
...
@@ -658,7 +698,7 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
if
(
cmd
==
PPPIOCGNPMODE
)
{
err
=
-
EFAULT
;
npi
.
mode
=
ppp
->
npmode
[
i
];
if
(
copy_to_user
(
(
void
__user
*
)
arg
,
&
npi
,
sizeof
(
npi
)))
if
(
copy_to_user
(
argp
,
&
npi
,
sizeof
(
npi
)))
break
;
}
else
{
ppp
->
npmode
[
i
]
=
npi
.
mode
;
...
...
@@ -670,49 +710,38 @@ static int ppp_ioctl(struct inode *inode, struct file *file,
#ifdef CONFIG_PPP_FILTER
case
PPPIOCSPASS
:
{
struct
sock_filter
*
code
;
err
=
get_filter
(
argp
,
&
code
);
if
(
err
>=
0
)
{
ppp_lock
(
ppp
);
kfree
(
ppp
->
pass_filter
);
ppp
->
pass_filter
=
code
;
ppp
->
pass_len
=
err
;
ppp_unlock
(
ppp
);
err
=
0
;
}
break
;
}
case
PPPIOCSACTIVE
:
{
struct
sock_fprog
uprog
,
*
filtp
;
struct
sock_filter
*
code
=
NULL
;
int
len
;
if
(
copy_from_user
(
&
uprog
,
(
void
__user
*
)
arg
,
sizeof
(
uprog
)))
break
;
err
=
-
EINVAL
;
if
(
uprog
.
len
>
BPF_MAXINSNS
)
break
;
err
=
-
ENOMEM
;
if
(
uprog
.
len
>
0
)
{
len
=
uprog
.
len
*
sizeof
(
struct
sock_filter
);
code
=
kmalloc
(
len
,
GFP_KERNEL
);
if
(
code
==
NULL
)
break
;
err
=
-
EFAULT
;
if
(
copy_from_user
(
code
,
(
void
__user
*
)
uprog
.
filter
,
len
))
{
kfree
(
code
);
break
;
}
err
=
sk_chk_filter
(
code
,
uprog
.
len
);
if
(
err
)
{
kfree
(
code
);
break
;
}
struct
sock_filter
*
code
;
err
=
get_filter
(
argp
,
&
code
);
if
(
err
>=
0
)
{
ppp_lock
(
ppp
);
kfree
(
ppp
->
active_filter
);
ppp
->
active_filter
=
code
;
ppp
->
active_len
=
err
;
ppp_unlock
(
ppp
);
err
=
0
;
}
filtp
=
(
cmd
==
PPPIOCSPASS
)
?
&
ppp
->
pass_filter
:
&
ppp
->
active_filter
;
ppp_lock
(
ppp
);
if
(
filtp
->
filter
)
kfree
(
filtp
->
filter
);
filtp
->
filter
=
code
;
filtp
->
len
=
uprog
.
len
;
ppp_unlock
(
ppp
);
err
=
0
;
break
;
}
#endif
/* CONFIG_PPP_FILTER */
#ifdef CONFIG_PPP_MULTILINK
case
PPPIOCSMRRU
:
if
(
get_user
(
val
,
(
int
*
)
arg
))
if
(
get_user
(
val
,
p
))
break
;
ppp_recv_lock
(
ppp
);
ppp
->
mrru
=
val
;
...
...
@@ -734,11 +763,12 @@ static int ppp_unattached_ioctl(struct ppp_file *pf, struct file *file,
int
unit
,
err
=
-
EFAULT
;
struct
ppp
*
ppp
;
struct
channel
*
chan
;
int
__user
*
p
=
(
int
__user
*
)
arg
;
switch
(
cmd
)
{
case
PPPIOCNEWUNIT
:
/* Create a new ppp unit */
if
(
get_user
(
unit
,
(
int
*
)
arg
))
if
(
get_user
(
unit
,
p
))
break
;
ppp
=
ppp_create_interface
(
unit
,
&
err
);
if
(
ppp
==
0
)
...
...
@@ -746,14 +776,14 @@ static int ppp_unattached_ioctl(struct ppp_file *pf, struct file *file,
file
->
private_data
=
&
ppp
->
file
;
ppp
->
owner
=
file
;
err
=
-
EFAULT
;
if
(
put_user
(
ppp
->
file
.
index
,
(
int
*
)
arg
))
if
(
put_user
(
ppp
->
file
.
index
,
p
))
break
;
err
=
0
;
break
;
case
PPPIOCATTACH
:
/* Attach to an existing ppp unit */
if
(
get_user
(
unit
,
(
int
*
)
arg
))
if
(
get_user
(
unit
,
p
))
break
;
down
(
&
all_ppp_sem
);
err
=
-
ENXIO
;
...
...
@@ -767,7 +797,7 @@ static int ppp_unattached_ioctl(struct ppp_file *pf, struct file *file,
break
;
case
PPPIOCATTCHAN
:
if
(
get_user
(
unit
,
(
int
*
)
arg
))
if
(
get_user
(
unit
,
p
))
break
;
spin_lock_bh
(
&
all_channels_lock
);
err
=
-
ENXIO
;
...
...
@@ -999,18 +1029,18 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb)
*
p
=
htons
(
4
);
/* indicate outbound in DLT_LINUX_SLL */
;
}
if
(
ppp
->
pass_filter
.
filter
&&
sk_run_filter
(
skb
,
ppp
->
pass_filter
.
filter
,
ppp
->
pass_
filter
.
len
)
==
0
)
{
if
(
ppp
->
pass_filter
&&
sk_run_filter
(
skb
,
ppp
->
pass_filter
,
ppp
->
pass_len
)
==
0
)
{
if
(
ppp
->
debug
&
1
)
printk
(
KERN_DEBUG
"PPP: outbound frame not passed
\n
"
);
kfree_skb
(
skb
);
return
;
}
/* if this packet passes the active filter, record the time */
if
(
!
(
ppp
->
active_filter
.
filter
&&
sk_run_filter
(
skb
,
ppp
->
active_filter
.
filter
,
ppp
->
active_
filter
.
len
)
==
0
))
if
(
!
(
ppp
->
active_filter
&&
sk_run_filter
(
skb
,
ppp
->
active_filter
,
ppp
->
active_len
)
==
0
))
ppp
->
last_xmit
=
jiffies
;
skb_pull
(
skb
,
2
);
#else
...
...
@@ -1546,17 +1576,17 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
*
p
=
0
;
/* indicate inbound in DLT_LINUX_SLL */
}
if
(
ppp
->
pass_filter
.
filter
&&
sk_run_filter
(
skb
,
ppp
->
pass_filter
.
filter
,
ppp
->
pass_
filter
.
len
)
==
0
)
{
if
(
ppp
->
pass_filter
&&
sk_run_filter
(
skb
,
ppp
->
pass_filter
,
ppp
->
pass_len
)
==
0
)
{
if
(
ppp
->
debug
&
1
)
printk
(
KERN_DEBUG
"PPP: inbound frame not passed
\n
"
);
kfree_skb
(
skb
);
return
;
}
if
(
!
(
ppp
->
active_filter
.
filter
&&
sk_run_filter
(
skb
,
ppp
->
active_filter
.
filter
,
ppp
->
active_
filter
.
len
)
==
0
))
if
(
!
(
ppp
->
active_filter
&&
sk_run_filter
(
skb
,
ppp
->
active_filter
,
ppp
->
active_len
)
==
0
))
ppp
->
last_recv
=
jiffies
;
skb_pull
(
skb
,
2
);
#else
...
...
@@ -2423,13 +2453,13 @@ static void ppp_destroy_interface(struct ppp *ppp)
skb_queue_purge
(
&
ppp
->
mrq
);
#endif
/* CONFIG_PPP_MULTILINK */
#ifdef CONFIG_PPP_FILTER
if
(
ppp
->
pass_filter
.
filter
)
{
kfree
(
ppp
->
pass_filter
.
filter
);
ppp
->
pass_filter
.
filter
=
NULL
;
if
(
ppp
->
pass_filter
)
{
kfree
(
ppp
->
pass_filter
);
ppp
->
pass_filter
=
NULL
;
}
if
(
ppp
->
active_filter
.
filter
)
{
kfree
(
ppp
->
active_filter
.
filter
);
ppp
->
active_filter
.
filter
=
0
;
if
(
ppp
->
active_filter
)
{
kfree
(
ppp
->
active_filter
);
ppp
->
active_filter
=
0
;
}
#endif
/* CONFIG_PPP_FILTER */
...
...
drivers/net/tokenring/ibmtr.c
View file @
95acaaba
...
...
@@ -127,6 +127,7 @@ in the event that chatty debug messages are desired - jjs 12/30/98 */
#include <linux/ioport.h>
#include <linux/netdevice.h>
#include <linux/ip.h>
#include <linux/trdevice.h>
#include <linux/ibmtr.h>
...
...
drivers/net/wan/c101.c
View file @
95acaaba
...
...
@@ -220,7 +220,8 @@ static int c101_close(struct net_device *dev)
static
int
c101_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
{
const
size_t
size
=
sizeof
(
sync_serial_settings
);
sync_serial_settings
new_line
,
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
sync_serial_settings
new_line
;
sync_serial_settings
__user
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
port_t
*
port
=
dev_to_port
(
dev
);
#ifdef DEBUG_RINGS
...
...
drivers/net/wan/cosa.c
View file @
95acaaba
...
...
@@ -301,9 +301,9 @@ static char *chrdev_setup_rx(struct channel_data *channel, int size);
static
int
chrdev_rx_done
(
struct
channel_data
*
channel
);
static
int
chrdev_tx_done
(
struct
channel_data
*
channel
,
int
size
);
static
ssize_t
cosa_read
(
struct
file
*
file
,
char
*
buf
,
size_t
count
,
loff_t
*
ppos
);
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
);
static
ssize_t
cosa_write
(
struct
file
*
file
,
const
char
*
buf
,
size_t
count
,
loff_t
*
ppos
);
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
);
static
unsigned
int
cosa_poll
(
struct
file
*
file
,
poll_table
*
poll
);
static
int
cosa_open
(
struct
inode
*
inode
,
struct
file
*
file
);
static
int
cosa_release
(
struct
inode
*
inode
,
struct
file
*
file
);
...
...
@@ -330,13 +330,13 @@ static struct file_operations cosa_fops = {
/* Ioctls */
static
int
cosa_start
(
struct
cosa_data
*
cosa
,
int
address
);
static
int
cosa_reset
(
struct
cosa_data
*
cosa
);
static
int
cosa_download
(
struct
cosa_data
*
cosa
,
unsigned
long
a
);
static
int
cosa_readmem
(
struct
cosa_data
*
cosa
,
unsigned
long
a
);
static
int
cosa_download
(
struct
cosa_data
*
cosa
,
void
__user
*
a
);
static
int
cosa_readmem
(
struct
cosa_data
*
cosa
,
void
__user
*
a
);
/* COSA/SRP ROM monitor */
static
int
download
(
struct
cosa_data
*
cosa
,
const
char
*
data
,
int
addr
,
int
len
);
static
int
download
(
struct
cosa_data
*
cosa
,
const
char
__user
*
data
,
int
addr
,
int
len
);
static
int
startmicrocode
(
struct
cosa_data
*
cosa
,
int
address
);
static
int
readmem
(
struct
cosa_data
*
cosa
,
char
*
data
,
int
addr
,
int
len
);
static
int
readmem
(
struct
cosa_data
*
cosa
,
char
__user
*
data
,
int
addr
,
int
len
);
static
int
cosa_reset_and_read_id
(
struct
cosa_data
*
cosa
,
char
*
id
);
/* Auxilliary functions */
...
...
@@ -830,7 +830,7 @@ static void chardev_channel_init(struct channel_data *chan)
}
static
ssize_t
cosa_read
(
struct
file
*
file
,
char
*
buf
,
size_t
count
,
loff_t
*
ppos
)
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
DECLARE_WAITQUEUE
(
wait
,
current
);
unsigned
long
flags
;
...
...
@@ -905,7 +905,7 @@ static int chrdev_rx_done(struct channel_data *chan)
static
ssize_t
cosa_write
(
struct
file
*
file
,
const
char
*
buf
,
size_t
count
,
loff_t
*
ppos
)
const
char
__user
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
DECLARE_WAITQUEUE
(
wait
,
current
);
struct
channel_data
*
chan
=
file
->
private_data
;
...
...
@@ -1066,7 +1066,7 @@ static inline int cosa_reset(struct cosa_data *cosa)
}
/* High-level function to download data into COSA memory. Calls download() */
static
inline
int
cosa_download
(
struct
cosa_data
*
cosa
,
unsigned
long
arg
)
static
inline
int
cosa_download
(
struct
cosa_data
*
cosa
,
void
__user
*
arg
)
{
struct
cosa_download
d
;
int
i
;
...
...
@@ -1080,7 +1080,7 @@ static inline int cosa_download(struct cosa_data *cosa, unsigned long arg)
return
-
EPERM
;
}
if
(
copy_from_user
(
&
d
,
(
void
__user
*
)
arg
,
sizeof
(
d
)))
if
(
copy_from_user
(
&
d
,
arg
,
sizeof
(
d
)))
return
-
EFAULT
;
if
(
d
.
addr
<
0
||
d
.
addr
>
COSA_MAX_FIRMWARE_SIZE
)
...
...
@@ -1105,7 +1105,7 @@ static inline int cosa_download(struct cosa_data *cosa, unsigned long arg)
}
/* High-level function to read COSA memory. Calls readmem() */
static
inline
int
cosa_readmem
(
struct
cosa_data
*
cosa
,
unsigned
long
arg
)
static
inline
int
cosa_readmem
(
struct
cosa_data
*
cosa
,
void
__user
*
arg
)
{
struct
cosa_download
d
;
int
i
;
...
...
@@ -1120,7 +1120,7 @@ static inline int cosa_readmem(struct cosa_data *cosa, unsigned long arg)
return
-
EPERM
;
}
if
(
copy_from_user
(
&
d
,
(
void
__user
*
)
arg
,
sizeof
(
d
)))
if
(
copy_from_user
(
&
d
,
arg
,
sizeof
(
d
)))
return
-
EFAULT
;
/* If something fails, force the user to reset the card */
...
...
@@ -1167,7 +1167,7 @@ static inline int cosa_start(struct cosa_data *cosa, int address)
}
/* Buffer of size at least COSA_MAX_ID_STRING is expected */
static
inline
int
cosa_getidstr
(
struct
cosa_data
*
cosa
,
char
*
string
)
static
inline
int
cosa_getidstr
(
struct
cosa_data
*
cosa
,
char
__user
*
string
)
{
int
l
=
strlen
(
cosa
->
id_string
)
+
1
;
if
(
copy_to_user
(
string
,
cosa
->
id_string
,
l
))
...
...
@@ -1176,7 +1176,7 @@ static inline int cosa_getidstr(struct cosa_data *cosa, char *string)
}
/* Buffer of size at least COSA_MAX_ID_STRING is expected */
static
inline
int
cosa_gettype
(
struct
cosa_data
*
cosa
,
char
*
string
)
static
inline
int
cosa_gettype
(
struct
cosa_data
*
cosa
,
char
__user
*
string
)
{
int
l
=
strlen
(
cosa
->
type
)
+
1
;
if
(
copy_to_user
(
string
,
cosa
->
type
,
l
))
...
...
@@ -1187,6 +1187,7 @@ static inline int cosa_gettype(struct cosa_data *cosa, char *string)
static
int
cosa_ioctl_common
(
struct
cosa_data
*
cosa
,
struct
channel_data
*
channel
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
void
__user
*
argp
=
(
void
__user
*
)
arg
;
switch
(
cmd
)
{
case
COSAIORSET
:
/* Reset the device */
if
(
!
capable
(
CAP_NET_ADMIN
))
...
...
@@ -1200,15 +1201,15 @@ static int cosa_ioctl_common(struct cosa_data *cosa,
if
(
!
capable
(
CAP_SYS_RAWIO
))
return
-
EACCES
;
return
cosa_download
(
cosa
,
arg
);
return
cosa_download
(
cosa
,
arg
p
);
case
COSAIORMEM
:
if
(
!
capable
(
CAP_SYS_RAWIO
))
return
-
EACCES
;
return
cosa_readmem
(
cosa
,
arg
);
return
cosa_readmem
(
cosa
,
arg
p
);
case
COSAIORTYPE
:
return
cosa_gettype
(
cosa
,
(
char
*
)
arg
);
return
cosa_gettype
(
cosa
,
argp
);
case
COSAIORIDSTR
:
return
cosa_getidstr
(
cosa
,
(
char
*
)
arg
);
return
cosa_getidstr
(
cosa
,
argp
);
case
COSAIONRCARDS
:
return
nr_cards
;
case
COSAIONRCHANS
:
...
...
@@ -1434,7 +1435,7 @@ static int cosa_dma_able(struct channel_data *chan, char *buf, int len)
* by a single space. Monitor has to reply with a space. Now the download
* begins. After the download monitor replies with "\r\n." (CR LF dot).
*/
static
int
download
(
struct
cosa_data
*
cosa
,
const
char
*
microcode
,
int
length
,
int
address
)
static
int
download
(
struct
cosa_data
*
cosa
,
const
char
__user
*
microcode
,
int
length
,
int
address
)
{
int
i
;
...
...
@@ -1508,7 +1509,7 @@ static int startmicrocode(struct cosa_data *cosa, int address)
* This routine is not needed during the normal operation and serves
* for debugging purposes only.
*/
static
int
readmem
(
struct
cosa_data
*
cosa
,
char
*
microcode
,
int
length
,
int
address
)
static
int
readmem
(
struct
cosa_data
*
cosa
,
char
__user
*
microcode
,
int
length
,
int
address
)
{
if
(
put_wait_data
(
cosa
,
'r'
)
==
-
1
)
return
-
1
;
if
((
get_wait_data
(
cosa
))
!=
'r'
)
return
-
2
;
...
...
drivers/net/wan/cosa.h
View file @
95acaaba
...
...
@@ -66,7 +66,7 @@
/* ioctls */
struct
cosa_download
{
int
addr
,
len
;
char
*
code
;
char
__user
*
code
;
};
/* Reset the device */
...
...
drivers/net/wan/dscc4.c
View file @
95acaaba
...
...
@@ -1296,7 +1296,7 @@ static int dscc4_set_clock(struct net_device *dev, u32 *bps, u32 *state)
static
int
dscc4_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
{
sync_serial_settings
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
sync_serial_settings
__user
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
struct
dscc4_dev_priv
*
dpriv
=
dscc4_priv
(
dev
);
const
size_t
size
=
sizeof
(
dpriv
->
settings
);
int
ret
=
0
;
...
...
drivers/net/wan/hdlc_cisco.c
View file @
95acaaba
...
...
@@ -272,7 +272,7 @@ static void cisco_stop(struct net_device *dev)
int
hdlc_cisco_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
)
{
cisco_proto
*
cisco_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
cisco
;
cisco_proto
__user
*
cisco_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
cisco
;
const
size_t
size
=
sizeof
(
cisco_proto
);
cisco_proto
new_settings
;
hdlc_device
*
hdlc
=
dev_to_hdlc
(
dev
);
...
...
drivers/net/wan/hdlc_fr.c
View file @
95acaaba
...
...
@@ -1137,7 +1137,7 @@ static void fr_destroy(hdlc_device *hdlc)
int
hdlc_fr_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
)
{
fr_proto
*
fr_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
fr
;
fr_proto
__user
*
fr_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
fr
;
const
size_t
size
=
sizeof
(
fr_proto
);
fr_proto
new_settings
;
hdlc_device
*
hdlc
=
dev_to_hdlc
(
dev
);
...
...
drivers/net/wan/hdlc_raw.c
View file @
95acaaba
...
...
@@ -34,7 +34,7 @@ static unsigned short raw_type_trans(struct sk_buff *skb,
int
hdlc_raw_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
)
{
raw_hdlc_proto
*
raw_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
raw_hdlc
;
raw_hdlc_proto
__user
*
raw_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
raw_hdlc
;
const
size_t
size
=
sizeof
(
raw_hdlc_proto
);
raw_hdlc_proto
new_settings
;
hdlc_device
*
hdlc
=
dev_to_hdlc
(
dev
);
...
...
drivers/net/wan/hdlc_raw_eth.c
View file @
95acaaba
...
...
@@ -46,7 +46,7 @@ static int eth_tx(struct sk_buff *skb, struct net_device *dev)
int
hdlc_raw_eth_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
)
{
raw_hdlc_proto
*
raw_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
raw_hdlc
;
raw_hdlc_proto
__user
*
raw_s
=
ifr
->
ifr_settings
.
ifs_ifsu
.
raw_hdlc
;
const
size_t
size
=
sizeof
(
raw_hdlc_proto
);
raw_hdlc_proto
new_settings
;
hdlc_device
*
hdlc
=
dev_to_hdlc
(
dev
);
...
...
drivers/net/wan/lmc/lmc_ioctl.h
View file @
95acaaba
...
...
@@ -234,7 +234,7 @@ typedef struct lmc_st1f_control {
int
command
;
int
address
;
int
value
;
char
*
data
;
char
__user
*
data
;
}
lmc_t1f_control
;
enum
lmc_xilinx_c
{
...
...
@@ -246,7 +246,7 @@ enum lmc_xilinx_c {
struct
lmc_xilinx_control
{
enum
lmc_xilinx_c
command
;
int
len
;
char
*
data
;
char
__user
*
data
;
};
/* ------------------ end T1 defs ------------------- */
...
...
drivers/net/wan/n2.c
View file @
95acaaba
...
...
@@ -254,7 +254,8 @@ static int n2_close(struct net_device *dev)
static
int
n2_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
{
const
size_t
size
=
sizeof
(
sync_serial_settings
);
sync_serial_settings
new_line
,
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
sync_serial_settings
new_line
;
sync_serial_settings
__user
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
port_t
*
port
=
dev_to_port
(
dev
);
#ifdef DEBUG_RINGS
...
...
drivers/net/wan/pci200syn.c
View file @
95acaaba
...
...
@@ -204,7 +204,8 @@ static int pci200_close(struct net_device *dev)
static
int
pci200_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
{
const
size_t
size
=
sizeof
(
sync_serial_settings
);
sync_serial_settings
new_line
,
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
sync_serial_settings
new_line
;
sync_serial_settings
__user
*
line
=
ifr
->
ifr_settings
.
ifs_ifsu
.
sync
;
port_t
*
port
=
dev_to_port
(
dev
);
#ifdef DEBUG_RINGS
...
...
drivers/net/wan/x25_asy.c
View file @
95acaaba
...
...
@@ -733,7 +733,7 @@ static int x25_asy_ioctl(struct tty_struct *tty, struct file *file,
switch
(
cmd
)
{
case
SIOCGIFNAME
:
if
(
copy_to_user
((
void
*
)
arg
,
sl
->
dev
->
name
,
if
(
copy_to_user
((
void
__user
*
)
arg
,
sl
->
dev
->
name
,
strlen
(
sl
->
dev
->
name
)
+
1
))
return
-
EFAULT
;
return
0
;
...
...
fs/devfs/base.c
View file @
95acaaba
...
...
@@ -2490,7 +2490,8 @@ static int devfs_mknod(struct inode *dir, struct dentry *dentry, int mode,
return
0
;
}
/* End Function devfs_mknod */
static
int
devfs_readlink
(
struct
dentry
*
dentry
,
char
*
buffer
,
int
buflen
)
static
int
devfs_readlink
(
struct
dentry
*
dentry
,
char
__user
*
buffer
,
int
buflen
)
{
int
err
;
struct
devfs_entry
*
de
;
...
...
fs/ncpfs/ioctl.c
View file @
95acaaba
...
...
@@ -30,7 +30,7 @@
#define NCP_PACKET_SIZE_INTERNAL 65536
static
int
ncp_get_fs_info
(
struct
ncp_server
*
server
,
struct
inode
*
inode
,
struct
ncp_fs_info
*
arg
)
ncp_get_fs_info
(
struct
ncp_server
*
server
,
struct
inode
*
inode
,
struct
ncp_fs_info
__user
*
arg
)
{
struct
ncp_fs_info
info
;
...
...
@@ -58,7 +58,7 @@ ncp_get_fs_info(struct ncp_server* server, struct inode* inode, struct ncp_fs_in
}
static
int
ncp_get_fs_info_v2
(
struct
ncp_server
*
server
,
struct
inode
*
inode
,
struct
ncp_fs_info_v2
*
arg
)
ncp_get_fs_info_v2
(
struct
ncp_server
*
server
,
struct
inode
*
inode
,
struct
ncp_fs_info_v2
__user
*
arg
)
{
struct
ncp_fs_info_v2
info2
;
...
...
@@ -90,7 +90,7 @@ ncp_get_fs_info_v2(struct ncp_server* server, struct inode* inode, struct ncp_fs
* Thanks Petr Vandrovec for idea and many hints.
*/
static
int
ncp_set_charsets
(
struct
ncp_server
*
server
,
struct
ncp_nls_ioctl
*
arg
)
ncp_set_charsets
(
struct
ncp_server
*
server
,
struct
ncp_nls_ioctl
__user
*
arg
)
{
struct
ncp_nls_ioctl
user
;
struct
nls_table
*
codepage
;
...
...
@@ -148,7 +148,7 @@ ncp_set_charsets(struct ncp_server* server, struct ncp_nls_ioctl* arg)
}
static
int
ncp_get_charsets
(
struct
ncp_server
*
server
,
struct
ncp_nls_ioctl
*
arg
)
ncp_get_charsets
(
struct
ncp_server
*
server
,
struct
ncp_nls_ioctl
__user
*
arg
)
{
struct
ncp_nls_ioctl
user
;
int
len
;
...
...
@@ -185,6 +185,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
int
result
;
struct
ncp_ioctl_request
request
;
char
*
bouncebuffer
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
switch
(
cmd
)
{
case
NCP_IOC_NCPREQUEST
:
...
...
@@ -193,8 +194,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
&&
(
current
->
uid
!=
server
->
m
.
mounted_uid
))
{
return
-
EACCES
;
}
if
(
copy_from_user
(
&
request
,
(
struct
ncp_ioctl_request
*
)
arg
,
sizeof
(
request
)))
if
(
copy_from_user
(
&
request
,
argp
,
sizeof
(
request
)))
return
-
EFAULT
;
if
((
request
.
function
>
255
)
...
...
@@ -245,10 +245,10 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
ncp_conn_logged_in
(
inode
->
i_sb
);
case
NCP_IOC_GET_FS_INFO
:
return
ncp_get_fs_info
(
server
,
inode
,
(
struct
ncp_fs_info
*
)
arg
);
return
ncp_get_fs_info
(
server
,
inode
,
argp
);
case
NCP_IOC_GET_FS_INFO_V2
:
return
ncp_get_fs_info_v2
(
server
,
inode
,
(
struct
ncp_fs_info_v2
*
)
arg
);
return
ncp_get_fs_info_v2
(
server
,
inode
,
argp
);
case
NCP_IOC_GETMOUNTUID2
:
{
...
...
@@ -259,7 +259,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
{
return
-
EACCES
;
}
if
(
put_user
(
tmp
,
(
unsigned
long
*
)
arg
))
if
(
put_user
(
tmp
,
(
unsigned
long
__user
*
)
argp
))
return
-
EFAULT
;
return
0
;
}
...
...
@@ -292,9 +292,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
sr
.
namespace
=
0
;
sr
.
dirEntNum
=
0
;
}
if
(
copy_to_user
((
struct
ncp_setroot_ioctl
*
)
arg
,
&
sr
,
sizeof
(
sr
)))
return
-
EFAULT
;
if
(
copy_to_user
(
argp
,
&
sr
,
sizeof
(
sr
)))
return
-
EFAULT
;
return
0
;
}
case
NCP_IOC_SETROOT
:
...
...
@@ -308,9 +307,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
-
EACCES
;
}
if
(
server
->
root_setuped
)
return
-
EBUSY
;
if
(
copy_from_user
(
&
sr
,
(
struct
ncp_setroot_ioctl
*
)
arg
,
sizeof
(
sr
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
sr
,
argp
,
sizeof
(
sr
)))
return
-
EFAULT
;
if
(
sr
.
volNumber
<
0
)
{
server
->
m
.
mounted_vol
[
0
]
=
0
;
vnum
=
NCP_NUMBER_OF_VOLUMES
;
...
...
@@ -348,13 +346,13 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
{
return
-
EACCES
;
}
if
(
arg
)
{
if
(
arg
p
)
{
if
(
server
->
sign_wanted
)
{
struct
ncp_sign_init
sign
;
if
(
copy_from_user
(
&
sign
,
(
struct
ncp_sign_init
*
)
arg
,
sizeof
(
sign
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
sign
,
argp
,
sizeof
(
sign
)))
return
-
EFAULT
;
memcpy
(
server
->
sign_root
,
sign
.
sign_root
,
8
);
memcpy
(
server
->
sign_last
,
sign
.
sign_last
,
16
);
server
->
sign_active
=
1
;
...
...
@@ -372,7 +370,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
-
EACCES
;
}
if
(
put_user
(
server
->
sign_wanted
,
(
int
*
)
arg
))
if
(
put_user
(
server
->
sign_wanted
,
(
int
__user
*
)
argp
))
return
-
EFAULT
;
return
0
;
case
NCP_IOC_SET_SIGN_WANTED
:
...
...
@@ -385,7 +383,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
-
EACCES
;
}
/* get only low 8 bits... */
if
(
get_user
(
newstate
,
(
unsigned
char
*
)
arg
))
if
(
get_user
(
newstate
,
(
unsigned
char
__user
*
)
argp
))
return
-
EFAULT
;
if
(
server
->
sign_active
)
{
/* cannot turn signatures OFF when active */
...
...
@@ -409,8 +407,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
struct
ncp_lock_ioctl
rqdata
;
int
result
;
if
(
copy_from_user
(
&
rqdata
,
(
struct
ncp_lock_ioctl
*
)
arg
,
sizeof
(
rqdata
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
rqdata
,
argp
,
sizeof
(
rqdata
)))
return
-
EFAULT
;
if
(
rqdata
.
origin
!=
0
)
return
-
EINVAL
;
/* check for cmd */
...
...
@@ -480,9 +478,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
struct
ncp_objectname_ioctl
user
;
size_t
outl
;
if
(
copy_from_user
(
&
user
,
(
struct
ncp_objectname_ioctl
*
)
arg
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
user
,
argp
,
sizeof
(
user
)))
return
-
EFAULT
;
user
.
auth_type
=
server
->
auth
.
auth_type
;
outl
=
user
.
object_name_len
;
user
.
object_name_len
=
server
->
auth
.
object_name_len
;
...
...
@@ -493,9 +490,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
server
->
auth
.
object_name
,
outl
))
return
-
EFAULT
;
}
if
(
copy_to_user
((
struct
ncp_objectname_ioctl
*
)
arg
,
&
user
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
copy_to_user
(
argp
,
&
user
,
sizeof
(
user
)))
return
-
EFAULT
;
return
0
;
}
case
NCP_IOC_SETOBJECTNAME
:
...
...
@@ -510,9 +506,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
void
*
oldprivate
;
size_t
oldprivatelen
;
if
(
copy_from_user
(
&
user
,
(
struct
ncp_objectname_ioctl
*
)
arg
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
user
,
argp
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
user
.
object_name_len
>
NCP_OBJECT_NAME_MAX_LEN
)
return
-
ENOMEM
;
if
(
user
.
object_name_len
)
{
...
...
@@ -550,9 +545,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
struct
ncp_privatedata_ioctl
user
;
size_t
outl
;
if
(
copy_from_user
(
&
user
,
(
struct
ncp_privatedata_ioctl
*
)
arg
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
user
,
argp
,
sizeof
(
user
)))
return
-
EFAULT
;
outl
=
user
.
len
;
user
.
len
=
server
->
priv
.
len
;
if
(
outl
>
user
.
len
)
outl
=
user
.
len
;
...
...
@@ -561,9 +555,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
server
->
priv
.
data
,
outl
))
return
-
EFAULT
;
}
if
(
copy_to_user
((
struct
ncp_privatedata_ioctl
*
)
arg
,
&
user
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
copy_to_user
(
argp
,
&
user
,
sizeof
(
user
)))
return
-
EFAULT
;
return
0
;
}
case
NCP_IOC_SETPRIVATEDATA
:
...
...
@@ -576,9 +569,8 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
void
*
old
;
size_t
oldlen
;
if
(
copy_from_user
(
&
user
,
(
struct
ncp_privatedata_ioctl
*
)
arg
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
copy_from_user
(
&
user
,
argp
,
sizeof
(
user
)))
return
-
EFAULT
;
if
(
user
.
len
>
NCP_PRIVATE_DATA_MAX_LEN
)
return
-
ENOMEM
;
if
(
user
.
len
)
{
...
...
@@ -603,10 +595,10 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
#ifdef CONFIG_NCPFS_NLS
case
NCP_IOC_SETCHARSETS
:
return
ncp_set_charsets
(
server
,
(
struct
ncp_nls_ioctl
*
)
arg
);
return
ncp_set_charsets
(
server
,
argp
);
case
NCP_IOC_GETCHARSETS
:
return
ncp_get_charsets
(
server
,
(
struct
ncp_nls_ioctl
*
)
arg
);
return
ncp_get_charsets
(
server
,
argp
);
#endif
/* CONFIG_NCPFS_NLS */
...
...
@@ -617,7 +609,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
{
u_int32_t
user
;
if
(
copy_from_user
(
&
user
,
(
u_int32_t
*
)
arg
,
sizeof
(
user
)))
if
(
copy_from_user
(
&
user
,
argp
,
sizeof
(
user
)))
return
-
EFAULT
;
/* 20 secs at most... */
if
(
user
>
20000
)
...
...
@@ -630,7 +622,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
case
NCP_IOC_GETDENTRYTTL
:
{
u_int32_t
user
=
(
server
->
dentry_ttl
*
1000
)
/
HZ
;
if
(
copy_to_user
(
(
u_int32_t
*
)
arg
,
&
user
,
sizeof
(
user
)))
if
(
copy_to_user
(
argp
,
&
user
,
sizeof
(
user
)))
return
-
EFAULT
;
return
0
;
}
...
...
@@ -646,7 +638,7 @@ int ncp_ioctl(struct inode *inode, struct file *filp,
return
-
EACCES
;
}
SET_UID
(
uid
,
server
->
m
.
mounted_uid
);
if
(
put_user
(
uid
,
(
__kernel_uid_t
*
)
arg
))
if
(
put_user
(
uid
,
(
__kernel_uid_t
__user
*
)
argp
))
return
-
EFAULT
;
return
0
;
}
...
...
fs/proc/base.c
View file @
95acaaba
...
...
@@ -1463,7 +1463,8 @@ static struct inode_operations proc_tid_attr_inode_operations = {
/*
* /proc/self:
*/
static
int
proc_self_readlink
(
struct
dentry
*
dentry
,
char
*
buffer
,
int
buflen
)
static
int
proc_self_readlink
(
struct
dentry
*
dentry
,
char
__user
*
buffer
,
int
buflen
)
{
char
tmp
[
30
];
sprintf
(
tmp
,
"%d"
,
current
->
tgid
);
...
...
@@ -1747,7 +1748,9 @@ int proc_pid_readdir(struct file * filp, void * dirent, filldir_t filldir)
ino_t
ino
=
fake_ino
(
tgid
,
PROC_TGID_INO
);
unsigned
long
j
=
PROC_NUMBUF
;
do
buf
[
--
j
]
=
'0'
+
(
tgid
%
10
);
while
(
tgid
/=
10
);
do
buf
[
--
j
]
=
'0'
+
(
tgid
%
10
);
while
((
tgid
/=
10
)
!=
0
);
if
(
filldir
(
dirent
,
buf
+
j
,
PROC_NUMBUF
-
j
,
filp
->
f_pos
,
ino
,
DT_DIR
)
<
0
)
{
filp
->
f_version
=
tgid
;
...
...
@@ -1799,7 +1802,7 @@ static int proc_task_readdir(struct file * filp, void * dirent, filldir_t filldi
do
buf
[
--
j
]
=
'0'
+
(
tid
%
10
);
while
(
tid
/=
1
0
);
while
(
(
tid
/=
10
)
!=
0
);
if
(
filldir
(
dirent
,
buf
+
j
,
PROC_NUMBUF
-
j
,
pos
,
ino
,
DT_DIR
)
<
0
)
break
;
...
...
fs/quota.c
View file @
95acaaba
...
...
@@ -150,7 +150,7 @@ void sync_dquots(struct super_block *sb, int type)
}
/* Copy parameters and call proper function */
static
int
do_quotactl
(
struct
super_block
*
sb
,
int
type
,
int
cmd
,
qid_t
id
,
caddr_t
addr
)
static
int
do_quotactl
(
struct
super_block
*
sb
,
int
type
,
int
cmd
,
qid_t
id
,
void
__user
*
addr
)
{
int
ret
;
...
...
@@ -264,7 +264,7 @@ static int do_quotactl(struct super_block *sb, int type, int cmd, qid_t id, cadd
* calls. Maybe we need to add the process quotas etc. in the future,
* but we probably should use rlimits for that.
*/
asmlinkage
long
sys_quotactl
(
unsigned
int
cmd
,
const
char
__user
*
special
,
qid_t
id
,
caddr_t
addr
)
asmlinkage
long
sys_quotactl
(
unsigned
int
cmd
,
const
char
__user
*
special
,
qid_t
id
,
void
__user
*
addr
)
{
uint
cmds
,
type
;
struct
super_block
*
sb
=
NULL
;
...
...
include/linux/if.h
View file @
95acaaba
...
...
@@ -108,15 +108,15 @@ struct if_settings
unsigned
int
size
;
/* Size of the data allocated by the caller */
union
{
/* {atm/eth/dsl}_settings anyone ? */
raw_hdlc_proto
*
raw_hdlc
;
cisco_proto
*
cisco
;
fr_proto
*
fr
;
fr_proto_pvc
*
fr_pvc
;
fr_proto_pvc_info
*
fr_pvc_info
;
raw_hdlc_proto
__user
*
raw_hdlc
;
cisco_proto
__user
*
cisco
;
fr_proto
__user
*
fr
;
fr_proto_pvc
__user
*
fr_pvc
;
fr_proto_pvc_info
__user
*
fr_pvc_info
;
/* interface settings */
sync_serial_settings
*
sync
;
te1_settings
*
te1
;
sync_serial_settings
__user
*
sync
;
te1_settings
__user
*
te1
;
}
ifs_ifsu
;
};
...
...
include/linux/isdn_ppp.h
View file @
95acaaba
...
...
@@ -233,8 +233,9 @@ struct ippp_struct {
struct
slcompress
*
slcomp
;
#endif
#ifdef CONFIG_IPPP_FILTER
struct
sock_fprog
pass_filter
;
/* filter for packets to pass */
struct
sock_fprog
active_filter
;
/* filter for pkts to reset idle */
struct
sock_filter
*
pass_filter
;
/* filter for packets to pass */
struct
sock_filter
*
active_filter
;
/* filter for pkts to reset idle */
unsigned
pass_len
,
active_len
;
#endif
unsigned
long
debug
;
struct
isdn_ppp_compressor
*
compressor
,
*
decompressor
;
...
...
include/linux/ncp_fs.h
View file @
95acaaba
...
...
@@ -24,7 +24,7 @@
struct
ncp_ioctl_request
{
unsigned
int
function
;
unsigned
int
size
;
char
*
data
;
char
__user
*
data
;
};
struct
ncp_fs_info
{
...
...
@@ -88,13 +88,13 @@ struct ncp_objectname_ioctl
#define NCP_AUTH_NDS 0x32
int
auth_type
;
size_t
object_name_len
;
void
*
object_name
;
/* an userspace data, in most cases user name */
void
__user
*
object_name
;
/* an userspace data, in most cases user name */
};
struct
ncp_privatedata_ioctl
{
size_t
len
;
void
*
data
;
/* ~1000 for NDS */
void
__user
*
data
;
/* ~1000 for NDS */
};
/* NLS charsets by ioctl */
...
...
include/linux/syscalls.h
View file @
95acaaba
...
...
@@ -382,7 +382,7 @@ asmlinkage long sys_fchdir(unsigned int fd);
asmlinkage
long
sys_rmdir
(
const
char
__user
*
pathname
);
asmlinkage
long
sys_lookup_dcookie
(
u64
cookie64
,
char
__user
*
buf
,
size_t
len
);
asmlinkage
long
sys_quotactl
(
unsigned
int
cmd
,
const
char
__user
*
special
,
qid_t
id
,
caddr_t
addr
);
qid_t
id
,
void
__user
*
addr
);
asmlinkage
long
sys_getdents
(
unsigned
int
fd
,
struct
linux_dirent
__user
*
dirent
,
unsigned
int
count
);
...
...
lib/zlib_deflate/deflate.c
View file @
95acaaba
...
...
@@ -1262,7 +1262,7 @@ static block_state deflate_slow(
return
flush
==
Z_FINISH
?
finish_done
:
block_done
;
}
extern
int
zlib_deflate_workspacesize
(
void
)
int
zlib_deflate_workspacesize
(
void
)
{
return
sizeof
(
deflate_workspace
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment