@@ -1349,7 +1349,7 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1349
1349
sockptr_t optval , unsigned int optlen )
1350
1350
{
1351
1351
struct sock * sk = sock -> sk ;
1352
- int len , err = 0 ;
1352
+ int err = 0 ;
1353
1353
struct bt_iso_qos qos = default_qos ;
1354
1354
u32 opt ;
1355
1355
@@ -1364,10 +1364,9 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1364
1364
break ;
1365
1365
}
1366
1366
1367
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
1368
- err = - EFAULT ;
1367
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
1368
+ if ( err )
1369
1369
break ;
1370
- }
1371
1370
1372
1371
if (opt )
1373
1372
set_bit (BT_SK_DEFER_SETUP , & bt_sk (sk )-> flags );
@@ -1376,10 +1375,9 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1376
1375
break ;
1377
1376
1378
1377
case BT_PKT_STATUS :
1379
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
1380
- err = - EFAULT ;
1378
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
1379
+ if ( err )
1381
1380
break ;
1382
- }
1383
1381
1384
1382
if (opt )
1385
1383
set_bit (BT_SK_PKT_STATUS , & bt_sk (sk )-> flags );
@@ -1394,17 +1392,9 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1394
1392
break ;
1395
1393
}
1396
1394
1397
- len = min_t (unsigned int , sizeof (qos ), optlen );
1398
-
1399
- if (copy_from_sockptr (& qos , optval , len )) {
1400
- err = - EFAULT ;
1401
- break ;
1402
- }
1403
-
1404
- if (len == sizeof (qos .ucast ) && !check_ucast_qos (& qos )) {
1405
- err = - EINVAL ;
1395
+ err = bt_copy_from_sockptr (& qos , sizeof (qos ), optval , optlen );
1396
+ if (err )
1406
1397
break ;
1407
- }
1408
1398
1409
1399
iso_pi (sk )-> qos = qos ;
1410
1400
iso_pi (sk )-> qos_user_set = true;
@@ -1419,18 +1409,16 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1419
1409
}
1420
1410
1421
1411
if (optlen > sizeof (iso_pi (sk )-> base )) {
1422
- err = - EOVERFLOW ;
1412
+ err = - EINVAL ;
1423
1413
break ;
1424
1414
}
1425
1415
1426
- len = min_t (unsigned int , sizeof (iso_pi (sk )-> base ), optlen );
1427
-
1428
- if (copy_from_sockptr (iso_pi (sk )-> base , optval , len )) {
1429
- err = - EFAULT ;
1416
+ err = bt_copy_from_sockptr (iso_pi (sk )-> base , optlen , optval ,
1417
+ optlen );
1418
+ if (err )
1430
1419
break ;
1431
- }
1432
1420
1433
- iso_pi (sk )-> base_len = len ;
1421
+ iso_pi (sk )-> base_len = optlen ;
1434
1422
1435
1423
break ;
1436
1424
0 commit comments