@@ -727,7 +727,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
727
727
struct sock * sk = sock -> sk ;
728
728
struct l2cap_chan * chan = l2cap_pi (sk )-> chan ;
729
729
struct l2cap_options opts ;
730
- int len , err = 0 ;
730
+ int err = 0 ;
731
731
u32 opt ;
732
732
733
733
BT_DBG ("sk %p" , sk );
@@ -754,11 +754,9 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
754
754
opts .max_tx = chan -> max_tx ;
755
755
opts .txwin_size = chan -> tx_win ;
756
756
757
- len = min_t (unsigned int , sizeof (opts ), optlen );
758
- if (copy_from_sockptr (& opts , optval , len )) {
759
- err = - EFAULT ;
757
+ err = bt_copy_from_sockptr (& opts , sizeof (opts ), optval , optlen );
758
+ if (err )
760
759
break ;
761
- }
762
760
763
761
if (opts .txwin_size > L2CAP_DEFAULT_EXT_WINDOW ) {
764
762
err = - EINVAL ;
@@ -801,10 +799,9 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname,
801
799
break ;
802
800
803
801
case L2CAP_LM :
804
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
805
- err = - EFAULT ;
802
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
803
+ if ( err )
806
804
break ;
807
- }
808
805
809
806
if (opt & L2CAP_LM_FIPS ) {
810
807
err = - EINVAL ;
@@ -885,7 +882,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
885
882
struct bt_security sec ;
886
883
struct bt_power pwr ;
887
884
struct l2cap_conn * conn ;
888
- int len , err = 0 ;
885
+ int err = 0 ;
889
886
u32 opt ;
890
887
u16 mtu ;
891
888
u8 mode ;
@@ -911,11 +908,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
911
908
912
909
sec .level = BT_SECURITY_LOW ;
913
910
914
- len = min_t (unsigned int , sizeof (sec ), optlen );
915
- if (copy_from_sockptr (& sec , optval , len )) {
916
- err = - EFAULT ;
911
+ err = bt_copy_from_sockptr (& sec , sizeof (sec ), optval , optlen );
912
+ if (err )
917
913
break ;
918
- }
919
914
920
915
if (sec .level < BT_SECURITY_LOW ||
921
916
sec .level > BT_SECURITY_FIPS ) {
@@ -960,10 +955,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
960
955
break ;
961
956
}
962
957
963
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
964
- err = - EFAULT ;
958
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
959
+ if ( err )
965
960
break ;
966
- }
967
961
968
962
if (opt ) {
969
963
set_bit (BT_SK_DEFER_SETUP , & bt_sk (sk )-> flags );
@@ -975,10 +969,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
975
969
break ;
976
970
977
971
case BT_FLUSHABLE :
978
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
979
- err = - EFAULT ;
972
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
973
+ if ( err )
980
974
break ;
981
- }
982
975
983
976
if (opt > BT_FLUSHABLE_ON ) {
984
977
err = - EINVAL ;
@@ -1010,11 +1003,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
1010
1003
1011
1004
pwr .force_active = BT_POWER_FORCE_ACTIVE_ON ;
1012
1005
1013
- len = min_t (unsigned int , sizeof (pwr ), optlen );
1014
- if (copy_from_sockptr (& pwr , optval , len )) {
1015
- err = - EFAULT ;
1006
+ err = bt_copy_from_sockptr (& pwr , sizeof (pwr ), optval , optlen );
1007
+ if (err )
1016
1008
break ;
1017
- }
1018
1009
1019
1010
if (pwr .force_active )
1020
1011
set_bit (FLAG_FORCE_ACTIVE , & chan -> flags );
@@ -1023,10 +1014,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
1023
1014
break ;
1024
1015
1025
1016
case BT_CHANNEL_POLICY :
1026
- if ( copy_from_sockptr ( & opt , optval , sizeof (u32 ))) {
1027
- err = - EFAULT ;
1017
+ err = bt_copy_from_sockptr ( & opt , sizeof (opt ), optval , optlen );
1018
+ if ( err )
1028
1019
break ;
1029
- }
1030
1020
1031
1021
err = - EOPNOTSUPP ;
1032
1022
break ;
@@ -1055,10 +1045,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
1055
1045
break ;
1056
1046
}
1057
1047
1058
- if ( copy_from_sockptr ( & mtu , optval , sizeof (u16 ))) {
1059
- err = - EFAULT ;
1048
+ err = bt_copy_from_sockptr ( & mtu , sizeof (mtu ), optval , optlen );
1049
+ if ( err )
1060
1050
break ;
1061
- }
1062
1051
1063
1052
if (chan -> mode == L2CAP_MODE_EXT_FLOWCTL &&
1064
1053
sk -> sk_state == BT_CONNECTED )
@@ -1086,10 +1075,9 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
1086
1075
break ;
1087
1076
}
1088
1077
1089
- if ( copy_from_sockptr ( & mode , optval , sizeof (u8 ))) {
1090
- err = - EFAULT ;
1078
+ err = bt_copy_from_sockptr ( & mode , sizeof (mode ), optval , optlen );
1079
+ if ( err )
1091
1080
break ;
1092
- }
1093
1081
1094
1082
BT_DBG ("mode %u" , mode );
1095
1083
0 commit comments