forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/net/netrom/af_netrom.c
....@@ -1,8 +1,5 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
2
- * This program is free software; you can redistribute it and/or modify
3
- * it under the terms of the GNU General Public License as published by
4
- * the Free Software Foundation; either version 2 of the License, or
5
- * (at your option) any later version.
63 *
74 * Copyright Jonathan Naylor G4KLX (g4klx@g4klx.demon.co.uk)
85 * Copyright Alan Cox GW4PTS (alan@lxorguk.ukuu.org.uk)
....@@ -297,11 +294,11 @@
297294 */
298295
299296 static int nr_setsockopt(struct socket *sock, int level, int optname,
300
- char __user *optval, unsigned int optlen)
297
+ sockptr_t optval, unsigned int optlen)
301298 {
302299 struct sock *sk = sock->sk;
303300 struct nr_sock *nr = nr_sk(sk);
304
- unsigned long opt;
301
+ unsigned int opt;
305302
306303 if (level != SOL_NETROM)
307304 return -ENOPROTOOPT;
....@@ -309,18 +306,18 @@
309306 if (optlen < sizeof(unsigned int))
310307 return -EINVAL;
311308
312
- if (get_user(opt, (unsigned int __user *)optval))
309
+ if (copy_from_sockptr(&opt, optval, sizeof(opt)))
313310 return -EFAULT;
314311
315312 switch (optname) {
316313 case NETROM_T1:
317
- if (opt < 1 || opt > ULONG_MAX / HZ)
314
+ if (opt < 1 || opt > UINT_MAX / HZ)
318315 return -EINVAL;
319316 nr->t1 = opt * HZ;
320317 return 0;
321318
322319 case NETROM_T2:
323
- if (opt < 1 || opt > ULONG_MAX / HZ)
320
+ if (opt < 1 || opt > UINT_MAX / HZ)
324321 return -EINVAL;
325322 nr->t2 = opt * HZ;
326323 return 0;
....@@ -332,13 +329,13 @@
332329 return 0;
333330
334331 case NETROM_T4:
335
- if (opt < 1 || opt > ULONG_MAX / HZ)
332
+ if (opt < 1 || opt > UINT_MAX / HZ)
336333 return -EINVAL;
337334 nr->t4 = opt * HZ;
338335 return 0;
339336
340337 case NETROM_IDLE:
341
- if (opt > ULONG_MAX / (60 * HZ))
338
+ if (opt > UINT_MAX / (60 * HZ))
342339 return -EINVAL;
343340 nr->idle = opt * 60 * HZ;
344341 return 0;
....@@ -1201,7 +1198,6 @@
12011198 {
12021199 struct sock *sk = sock->sk;
12031200 void __user *argp = (void __user *)arg;
1204
- int ret;
12051201
12061202 switch (cmd) {
12071203 case TIOCOUTQ: {
....@@ -1226,18 +1222,6 @@
12261222 release_sock(sk);
12271223 return put_user(amount, (int __user *)argp);
12281224 }
1229
-
1230
- case SIOCGSTAMP:
1231
- lock_sock(sk);
1232
- ret = sock_get_timestamp(sk, argp);
1233
- release_sock(sk);
1234
- return ret;
1235
-
1236
- case SIOCGSTAMPNS:
1237
- lock_sock(sk);
1238
- ret = sock_get_timestampns(sk, argp);
1239
- release_sock(sk);
1240
- return ret;
12411225
12421226 case SIOCGIFADDR:
12431227 case SIOCSIFADDR:
....@@ -1268,6 +1252,7 @@
12681252 #ifdef CONFIG_PROC_FS
12691253
12701254 static void *nr_info_start(struct seq_file *seq, loff_t *pos)
1255
+ __acquires(&nr_list_lock)
12711256 {
12721257 spin_lock_bh(&nr_list_lock);
12731258 return seq_hlist_start_head(&nr_list, *pos);
....@@ -1279,6 +1264,7 @@
12791264 }
12801265
12811266 static void nr_info_stop(struct seq_file *seq, void *v)
1267
+ __releases(&nr_list_lock)
12821268 {
12831269 spin_unlock_bh(&nr_list_lock);
12841270 }
....@@ -1364,6 +1350,7 @@
13641350 .getname = nr_getname,
13651351 .poll = datagram_poll,
13661352 .ioctl = nr_ioctl,
1353
+ .gettstamp = sock_gettstamp,
13671354 .listen = nr_listen,
13681355 .shutdown = sock_no_shutdown,
13691356 .setsockopt = nr_setsockopt,