hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/bluetooth/cmtp/sock.c
....@@ -63,17 +63,16 @@
6363 return 0;
6464 }
6565
66
-static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
66
+static int do_cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, void __user *argp)
6767 {
6868 struct cmtp_connadd_req ca;
6969 struct cmtp_conndel_req cd;
7070 struct cmtp_connlist_req cl;
7171 struct cmtp_conninfo ci;
7272 struct socket *nsock;
73
- void __user *argp = (void __user *)arg;
7473 int err;
7574
76
- BT_DBG("cmd %x arg %lx", cmd, arg);
75
+ BT_DBG("cmd %x arg %p", cmd, argp);
7776
7877 switch (cmd) {
7978 case CMTPCONNADD:
....@@ -137,16 +136,22 @@
137136 return -EINVAL;
138137 }
139138
139
+static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
140
+{
141
+ return do_cmtp_sock_ioctl(sock, cmd, (void __user *)arg);
142
+}
143
+
140144 #ifdef CONFIG_COMPAT
141145 static int cmtp_sock_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
142146 {
147
+ void __user *argp = compat_ptr(arg);
143148 if (cmd == CMTPGETCONNLIST) {
144149 struct cmtp_connlist_req cl;
150
+ u32 __user *p = argp;
145151 u32 uci;
146152 int err;
147153
148
- if (get_user(cl.cnum, (u32 __user *) arg) ||
149
- get_user(uci, (u32 __user *) (arg + 4)))
154
+ if (get_user(cl.cnum, p) || get_user(uci, p + 1))
150155 return -EFAULT;
151156
152157 cl.ci = compat_ptr(uci);
....@@ -156,13 +161,13 @@
156161
157162 err = cmtp_get_connlist(&cl);
158163
159
- if (!err && put_user(cl.cnum, (u32 __user *) arg))
164
+ if (!err && put_user(cl.cnum, p))
160165 err = -EFAULT;
161166
162167 return err;
163168 }
164169
165
- return cmtp_sock_ioctl(sock, cmd, arg);
170
+ return do_cmtp_sock_ioctl(sock, cmd, argp);
166171 }
167172 #endif
168173
....@@ -180,8 +185,6 @@
180185 .recvmsg = sock_no_recvmsg,
181186 .listen = sock_no_listen,
182187 .shutdown = sock_no_shutdown,
183
- .setsockopt = sock_no_setsockopt,
184
- .getsockopt = sock_no_getsockopt,
185188 .connect = sock_no_connect,
186189 .socketpair = sock_no_socketpair,
187190 .accept = sock_no_accept,