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
e262fa80
Commit
e262fa80
authored
Feb 14, 2007
by
Adrian Bunk
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "[Bluetooth] Fix compat ioctl for BNEP, CMTP and HIDP"
This reverts commit
ac4d63da
. Does not work in 2.6.16.
parent
2f6d2c9b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
17 additions
and
161 deletions
+17
-161
net/bluetooth/bnep/sock.c
net/bluetooth/bnep/sock.c
+17
-50
net/bluetooth/cmtp/sock.c
net/bluetooth/cmtp/sock.c
+0
-33
net/bluetooth/hidp/sock.c
net/bluetooth/hidp/sock.c
+0
-78
No files found.
net/bluetooth/bnep/sock.c
View file @
e262fa80
...
...
@@ -44,7 +44,6 @@
#include <linux/ioctl.h>
#include <linux/file.h>
#include <linux/init.h>
#include <linux/compat.h>
#include <net/sock.h>
#include <asm/system.h>
...
...
@@ -148,56 +147,24 @@ static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
return
0
;
}
#ifdef CONFIG_COMPAT
static
int
bnep_sock_compat_ioctl
(
struct
socket
*
sock
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
if
(
cmd
==
BNEPGETCONNLIST
)
{
struct
bnep_connlist_req
cl
;
uint32_t
uci
;
int
err
;
if
(
get_user
(
cl
.
cnum
,
(
uint32_t
__user
*
)
arg
)
||
get_user
(
uci
,
(
u32
__user
*
)
(
arg
+
4
)))
return
-
EFAULT
;
cl
.
ci
=
compat_ptr
(
uci
);
if
(
cl
.
cnum
<=
0
)
return
-
EINVAL
;
err
=
bnep_get_connlist
(
&
cl
);
if
(
!
err
&&
put_user
(
cl
.
cnum
,
(
uint32_t
__user
*
)
arg
))
err
=
-
EFAULT
;
return
err
;
}
return
bnep_sock_ioctl
(
sock
,
cmd
,
arg
);
}
#endif
static
const
struct
proto_ops
bnep_sock_ops
=
{
.
family
=
PF_BLUETOOTH
,
.
owner
=
THIS_MODULE
,
.
release
=
bnep_sock_release
,
.
ioctl
=
bnep_sock_ioctl
,
#ifdef CONFIG_COMPAT
.
compat_ioctl
=
bnep_sock_compat_ioctl
,
#endif
.
bind
=
sock_no_bind
,
.
getname
=
sock_no_getname
,
.
sendmsg
=
sock_no_sendmsg
,
.
recvmsg
=
sock_no_recvmsg
,
.
poll
=
sock_no_poll
,
.
listen
=
sock_no_listen
,
.
shutdown
=
sock_no_shutdown
,
.
setsockopt
=
sock_no_setsockopt
,
.
getsockopt
=
sock_no_getsockopt
,
.
connect
=
sock_no_connect
,
.
socketpair
=
sock_no_socketpair
,
.
accept
=
sock_no_accept
,
.
mmap
=
sock_no_mmap
.
family
=
PF_BLUETOOTH
,
.
owner
=
THIS_MODULE
,
.
release
=
bnep_sock_release
,
.
ioctl
=
bnep_sock_ioctl
,
.
bind
=
sock_no_bind
,
.
getname
=
sock_no_getname
,
.
sendmsg
=
sock_no_sendmsg
,
.
recvmsg
=
sock_no_recvmsg
,
.
poll
=
sock_no_poll
,
.
listen
=
sock_no_listen
,
.
shutdown
=
sock_no_shutdown
,
.
setsockopt
=
sock_no_setsockopt
,
.
getsockopt
=
sock_no_getsockopt
,
.
connect
=
sock_no_connect
,
.
socketpair
=
sock_no_socketpair
,
.
accept
=
sock_no_accept
,
.
mmap
=
sock_no_mmap
};
static
struct
proto
bnep_proto
=
{
...
...
net/bluetooth/cmtp/sock.c
View file @
e262fa80
...
...
@@ -35,7 +35,6 @@
#include <linux/socket.h>
#include <linux/ioctl.h>
#include <linux/file.h>
#include <linux/compat.h>
#include <net/sock.h>
#include <linux/isdn/capilli.h>
...
...
@@ -139,43 +138,11 @@ static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
return
-
EINVAL
;
}
#ifdef CONFIG_COMPAT
static
int
cmtp_sock_compat_ioctl
(
struct
socket
*
sock
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
if
(
cmd
==
CMTPGETCONNLIST
)
{
struct
cmtp_connlist_req
cl
;
uint32_t
uci
;
int
err
;
if
(
get_user
(
cl
.
cnum
,
(
uint32_t
__user
*
)
arg
)
||
get_user
(
uci
,
(
u32
__user
*
)
(
arg
+
4
)))
return
-
EFAULT
;
cl
.
ci
=
compat_ptr
(
uci
);
if
(
cl
.
cnum
<=
0
)
return
-
EINVAL
;
err
=
cmtp_get_connlist
(
&
cl
);
if
(
!
err
&&
put_user
(
cl
.
cnum
,
(
uint32_t
__user
*
)
arg
))
err
=
-
EFAULT
;
return
err
;
}
return
cmtp_sock_ioctl
(
sock
,
cmd
,
arg
);
}
#endif
static
const
struct
proto_ops
cmtp_sock_ops
=
{
.
family
=
PF_BLUETOOTH
,
.
owner
=
THIS_MODULE
,
.
release
=
cmtp_sock_release
,
.
ioctl
=
cmtp_sock_ioctl
,
#ifdef CONFIG_COMPAT
.
compat_ioctl
=
cmtp_sock_compat_ioctl
,
#endif
.
bind
=
sock_no_bind
,
.
getname
=
sock_no_getname
,
.
sendmsg
=
sock_no_sendmsg
,
...
...
net/bluetooth/hidp/sock.c
View file @
e262fa80
...
...
@@ -36,7 +36,6 @@
#include <linux/ioctl.h>
#include <linux/file.h>
#include <linux/init.h>
#include <linux/compat.h>
#include <net/sock.h>
#include "hidp.h"
...
...
@@ -145,88 +144,11 @@ static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long
return
-
EINVAL
;
}
#ifdef CONFIG_COMPAT
struct
compat_hidp_connadd_req
{
int
ctrl_sock
;
// Connected control socket
int
intr_sock
;
// Connteted interrupt socket
__u16
parser
;
__u16
rd_size
;
compat_uptr_t
rd_data
;
__u8
country
;
__u8
subclass
;
__u16
vendor
;
__u16
product
;
__u16
version
;
__u32
flags
;
__u32
idle_to
;
char
name
[
128
];
};
static
int
hidp_sock_compat_ioctl
(
struct
socket
*
sock
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
if
(
cmd
==
HIDPGETCONNLIST
)
{
struct
hidp_connlist_req
cl
;
uint32_t
uci
;
int
err
;
if
(
get_user
(
cl
.
cnum
,
(
uint32_t
__user
*
)
arg
)
||
get_user
(
uci
,
(
u32
__user
*
)
(
arg
+
4
)))
return
-
EFAULT
;
cl
.
ci
=
compat_ptr
(
uci
);
if
(
cl
.
cnum
<=
0
)
return
-
EINVAL
;
err
=
hidp_get_connlist
(
&
cl
);
if
(
!
err
&&
put_user
(
cl
.
cnum
,
(
uint32_t
__user
*
)
arg
))
err
=
-
EFAULT
;
return
err
;
}
else
if
(
cmd
==
HIDPCONNADD
)
{
struct
compat_hidp_connadd_req
ca
;
struct
hidp_connadd_req
__user
*
uca
;
uca
=
compat_alloc_user_space
(
sizeof
(
*
uca
));
if
(
copy_from_user
(
&
ca
,
(
void
*
)
arg
,
sizeof
(
ca
)))
return
-
EFAULT
;
if
(
put_user
(
ca
.
ctrl_sock
,
&
uca
->
ctrl_sock
)
||
put_user
(
ca
.
intr_sock
,
&
uca
->
intr_sock
)
||
put_user
(
ca
.
parser
,
&
uca
->
parser
)
||
put_user
(
ca
.
rd_size
,
&
uca
->
parser
)
||
put_user
(
compat_ptr
(
ca
.
rd_data
),
&
uca
->
rd_data
)
||
put_user
(
ca
.
country
,
&
uca
->
country
)
||
put_user
(
ca
.
subclass
,
&
uca
->
subclass
)
||
put_user
(
ca
.
vendor
,
&
uca
->
vendor
)
||
put_user
(
ca
.
product
,
&
uca
->
product
)
||
put_user
(
ca
.
version
,
&
uca
->
version
)
||
put_user
(
ca
.
flags
,
&
uca
->
flags
)
||
put_user
(
ca
.
idle_to
,
&
uca
->
idle_to
)
||
copy_to_user
(
&
uca
->
name
[
0
],
&
ca
.
name
[
0
],
128
))
return
-
EFAULT
;
arg
=
(
unsigned
long
)
uca
;
/* Fall through. We don't actually write back any _changes_
to the structure anyway, so there's no need to copy back
into the original compat version */
}
return
hidp_sock_ioctl
(
sock
,
cmd
,
arg
);
}
#endif
static
const
struct
proto_ops
hidp_sock_ops
=
{
.
family
=
PF_BLUETOOTH
,
.
owner
=
THIS_MODULE
,
.
release
=
hidp_sock_release
,
.
ioctl
=
hidp_sock_ioctl
,
#ifdef CONFIG_COMPAT
.
compat_ioctl
=
hidp_sock_compat_ioctl
,
#endif
.
bind
=
sock_no_bind
,
.
getname
=
sock_no_getname
,
.
sendmsg
=
sock_no_sendmsg
,
...
...
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