@@ -1500,7 +1500,7 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1500
1500
sockptr_t optval , unsigned int optlen )
1501
1501
{
1502
1502
struct sock * sk = sock -> sk ;
1503
- int len , err = 0 ;
1503
+ int err = 0 ;
1504
1504
struct bt_iso_qos qos = default_qos ;
1505
1505
u32 opt ;
1506
1506
@@ -1515,10 +1515,9 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1515
1515
break ;
1516
1516
}
1517
1517
1518
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
1519
- err = - EFAULT ;
1518
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
1519
+ if ( err )
1520
1520
break ;
1521
- }
1522
1521
1523
1522
if (opt )
1524
1523
set_bit (BT_SK_DEFER_SETUP , & bt_sk (sk )-> flags );
@@ -1527,10 +1526,9 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1527
1526
break ;
1528
1527
1529
1528
case BT_PKT_STATUS :
1530
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
1531
- err = - EFAULT ;
1529
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
1530
+ if ( err )
1532
1531
break ;
1533
- }
1534
1532
1535
1533
if (opt )
1536
1534
set_bit (BT_SK_PKT_STATUS , & bt_sk (sk )-> flags );
@@ -1545,17 +1543,9 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1545
1543
break ;
1546
1544
}
1547
1545
1548
- len = min_t (unsigned int , sizeof (qos ), optlen );
1549
-
1550
- if (copy_from_sockptr (& qos , optval , len )) {
1551
- err = - EFAULT ;
1552
- break ;
1553
- }
1554
-
1555
- if (len == sizeof (qos .ucast ) && !check_ucast_qos (& qos )) {
1556
- err = - EINVAL ;
1546
+ err = bt_copy_from_sockptr (& qos , sizeof (qos ), optval , optlen );
1547
+ if (err )
1557
1548
break ;
1558
- }
1559
1549
1560
1550
iso_pi (sk )-> qos = qos ;
1561
1551
iso_pi (sk )-> qos_user_set = true;
@@ -1570,18 +1560,16 @@ static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1570
1560
}
1571
1561
1572
1562
if (optlen > sizeof (iso_pi (sk )-> base )) {
1573
- err = - EOVERFLOW ;
1563
+ err = - EINVAL ;
1574
1564
break ;
1575
1565
}
1576
1566
1577
- len = min_t (unsigned int , sizeof (iso_pi (sk )-> base ), optlen );
1578
-
1579
- if (copy_from_sockptr (iso_pi (sk )-> base , optval , len )) {
1580
- err = - EFAULT ;
1567
+ err = bt_copy_from_sockptr (iso_pi (sk )-> base , optlen , optval ,
1568
+ optlen );
1569
+ if (err )
1581
1570
break ;
1582
- }
1583
1571
1584
- iso_pi (sk )-> base_len = len ;
1572
+ iso_pi (sk )-> base_len = optlen ;
1585
1573
1586
1574
break ;
1587
1575
0 commit comments