[bluetooth-next:master 4/9] net/bluetooth/l2cap_sock.c:1084:21: sparse: sparse: incorrect type in argument 1 (different address spaces)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master
head:   1e5479be46a70389e1059818a2e9358858eaa5fc
commit: 3ee7b7cd83900bb711efadbf16fa096a615a1566 [4/9] Bluetooth: Add BT_MODE socket option
config: sh-randconfig-s001-20200519 (attached as .config)
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-193-gb8fad4bc-dirty
        git checkout 3ee7b7cd83900bb711efadbf16fa096a615a1566
        # save the attached .config to linux build tree
        make C=1 ARCH=sh CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

   ./arch/sh/include/generated/uapi/asm/unistd_32.h:411:37: sparse: sparse: no newline at end of file
   net/bluetooth/l2cap_sock.c:428:13: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected int const *__gu_addr @@    got int [noderefint const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:428:13: sparse:    expected int const *__gu_addr
   net/bluetooth/l2cap_sock.c:428:13: sparse:    got int [noderef] <asn:1> *optlen
   net/bluetooth/l2cap_sock.c:428:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got ] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:428:13: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:428:13: sparse:    got int const *__gu_addr
   net/bluetooth/l2cap_sock.c:553:13: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected int const *__gu_addr @@    got int [noderefint const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:553:13: sparse:    expected int const *__gu_addr
   net/bluetooth/l2cap_sock.c:553:13: sparse:    got int [noderef] <asn:1> *optlen
   net/bluetooth/l2cap_sock.c:553:13: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got ] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:553:13: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:553:13: sparse:    got int const *__gu_addr
   net/bluetooth/l2cap_sock.c:785:21: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected unsigned int const *__gu_addr @@    got unsigned int [noderef] unsigned int const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:785:21: sparse:    expected unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:785:21: sparse:    got unsigned int [noderef] [usertype] <asn:1> *
   net/bluetooth/l2cap_sock.c:785:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got  [noderef] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:785:21: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:785:21: sparse:    got unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:942:21: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected unsigned int const *__gu_addr @@    got unsigned int [noderef] unsigned int const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:942:21: sparse:    expected unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:942:21: sparse:    got unsigned int [noderef] [usertype] <asn:1> *
   net/bluetooth/l2cap_sock.c:942:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got  [noderef] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:942:21: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:942:21: sparse:    got unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:957:21: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected unsigned int const *__gu_addr @@    got unsigned int [noderef] unsigned int const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:957:21: sparse:    expected unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:957:21: sparse:    got unsigned int [noderef] [usertype] <asn:1> *
   net/bluetooth/l2cap_sock.c:957:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got  [noderef] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:957:21: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:957:21: sparse:    got unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:1005:21: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected unsigned int const *__gu_addr @@    got unsigned int [noderef] unsigned int const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:1005:21: sparse:    expected unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:1005:21: sparse:    got unsigned int [noderef] [usertype] <asn:1> *
   net/bluetooth/l2cap_sock.c:1005:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got  [noderef] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:1005:21: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:1005:21: sparse:    got unsigned int const *__gu_addr
   net/bluetooth/l2cap_sock.c:1053:21: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected unsigned short const *__gu_addr @@    got unsigned short [noderefunsigned short const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:1053:21: sparse:    expected unsigned short const *__gu_addr
   net/bluetooth/l2cap_sock.c:1053:21: sparse:    got unsigned short [noderef] [usertype] <asn:1> *
   net/bluetooth/l2cap_sock.c:1053:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got le [noderef] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:1053:21: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:1053:21: sparse:    got unsigned short const *__gu_addr
   net/bluetooth/l2cap_sock.c:1084:21: sparse: sparse: incorrect type in initializer (different address spaces) @@    expected unsigned char const *__gu_addr @@    got unsigned char [noderef]unsigned char const *__gu_addr @@
   net/bluetooth/l2cap_sock.c:1084:21: sparse:    expected unsigned char const *__gu_addr
   net/bluetooth/l2cap_sock.c:1084:21: sparse:    got unsigned char [noderef] [usertype] <asn:1> *
>> net/bluetooth/l2cap_sock.c:1084:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@    expected void const volatile [noderef] <asn:1> * @@    got e [noderef] <asn:1> * @@
   net/bluetooth/l2cap_sock.c:1084:21: sparse:    expected void const volatile [noderef] <asn:1> *
   net/bluetooth/l2cap_sock.c:1084:21: sparse:    got unsigned char const *__gu_addr

vim +1084 net/bluetooth/l2cap_sock.c

   860	
   861	static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname,
   862					 char __user *optval, unsigned int optlen)
   863	{
   864		struct sock *sk = sock->sk;
   865		struct l2cap_chan *chan = l2cap_pi(sk)->chan;
   866		struct bt_security sec;
   867		struct bt_power pwr;
   868		struct l2cap_conn *conn;
   869		int len, err = 0;
   870		u32 opt;
   871	
   872		BT_DBG("sk %p", sk);
   873	
   874		if (level == SOL_L2CAP)
   875			return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
   876	
   877		if (level != SOL_BLUETOOTH)
   878			return -ENOPROTOOPT;
   879	
   880		lock_sock(sk);
   881	
   882		switch (optname) {
   883		case BT_SECURITY:
   884			if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
   885			    chan->chan_type != L2CAP_CHAN_FIXED &&
   886			    chan->chan_type != L2CAP_CHAN_RAW) {
   887				err = -EINVAL;
   888				break;
   889			}
   890	
   891			sec.level = BT_SECURITY_LOW;
   892	
   893			len = min_t(unsigned int, sizeof(sec), optlen);
   894			if (copy_from_user((char *) &sec, optval, len)) {
   895				err = -EFAULT;
   896				break;
   897			}
   898	
   899			if (sec.level < BT_SECURITY_LOW ||
   900			    sec.level > BT_SECURITY_FIPS) {
   901				err = -EINVAL;
   902				break;
   903			}
   904	
   905			chan->sec_level = sec.level;
   906	
   907			if (!chan->conn)
   908				break;
   909	
   910			conn = chan->conn;
   911	
   912			/* change security for LE channels */
   913			if (chan->scid == L2CAP_CID_ATT) {
   914				if (smp_conn_security(conn->hcon, sec.level)) {
   915					err = -EINVAL;
   916					break;
   917				}
   918	
   919				set_bit(FLAG_PENDING_SECURITY, &chan->flags);
   920				sk->sk_state = BT_CONFIG;
   921				chan->state = BT_CONFIG;
   922	
   923			/* or for ACL link */
   924			} else if ((sk->sk_state == BT_CONNECT2 &&
   925				    test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) ||
   926				   sk->sk_state == BT_CONNECTED) {
   927				if (!l2cap_chan_check_security(chan, true))
   928					set_bit(BT_SK_SUSPEND, &bt_sk(sk)->flags);
   929				else
   930					sk->sk_state_change(sk);
   931			} else {
   932				err = -EINVAL;
   933			}
   934			break;
   935	
   936		case BT_DEFER_SETUP:
   937			if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
   938				err = -EINVAL;
   939				break;
   940			}
   941	
   942			if (get_user(opt, (u32 __user *) optval)) {
   943				err = -EFAULT;
   944				break;
   945			}
   946	
   947			if (opt) {
   948				set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
   949				set_bit(FLAG_DEFER_SETUP, &chan->flags);
   950			} else {
   951				clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
   952				clear_bit(FLAG_DEFER_SETUP, &chan->flags);
   953			}
   954			break;
   955	
   956		case BT_FLUSHABLE:
   957			if (get_user(opt, (u32 __user *) optval)) {
   958				err = -EFAULT;
   959				break;
   960			}
   961	
   962			if (opt > BT_FLUSHABLE_ON) {
   963				err = -EINVAL;
   964				break;
   965			}
   966	
   967			if (opt == BT_FLUSHABLE_OFF) {
   968				conn = chan->conn;
   969				/* proceed further only when we have l2cap_conn and
   970				   No Flush support in the LM */
   971				if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
   972					err = -EINVAL;
   973					break;
   974				}
   975			}
   976	
   977			if (opt)
   978				set_bit(FLAG_FLUSHABLE, &chan->flags);
   979			else
   980				clear_bit(FLAG_FLUSHABLE, &chan->flags);
   981			break;
   982	
   983		case BT_POWER:
   984			if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
   985			    chan->chan_type != L2CAP_CHAN_RAW) {
   986				err = -EINVAL;
   987				break;
   988			}
   989	
   990			pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
   991	
   992			len = min_t(unsigned int, sizeof(pwr), optlen);
   993			if (copy_from_user((char *) &pwr, optval, len)) {
   994				err = -EFAULT;
   995				break;
   996			}
   997	
   998			if (pwr.force_active)
   999				set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
  1000			else
  1001				clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
  1002			break;
  1003	
  1004		case BT_CHANNEL_POLICY:
  1005			if (get_user(opt, (u32 __user *) optval)) {
  1006				err = -EFAULT;
  1007				break;
  1008			}
  1009	
  1010			if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
  1011				err = -EINVAL;
  1012				break;
  1013			}
  1014	
  1015			if (chan->mode != L2CAP_MODE_ERTM &&
  1016			    chan->mode != L2CAP_MODE_STREAMING) {
  1017				err = -EOPNOTSUPP;
  1018				break;
  1019			}
  1020	
  1021			chan->chan_policy = (u8) opt;
  1022	
  1023			if (sk->sk_state == BT_CONNECTED &&
  1024			    chan->move_role == L2CAP_MOVE_ROLE_NONE)
  1025				l2cap_move_start(chan);
  1026	
  1027			break;
  1028	
  1029		case BT_SNDMTU:
  1030			if (!bdaddr_type_is_le(chan->src_type)) {
  1031				err = -EINVAL;
  1032				break;
  1033			}
  1034	
  1035			/* Setting is not supported as it's the remote side that
  1036			 * decides this.
  1037			 */
  1038			err = -EPERM;
  1039			break;
  1040	
  1041		case BT_RCVMTU:
  1042			if (!bdaddr_type_is_le(chan->src_type)) {
  1043				err = -EINVAL;
  1044				break;
  1045			}
  1046	
  1047			if (chan->mode == L2CAP_MODE_LE_FLOWCTL &&
  1048			    sk->sk_state == BT_CONNECTED) {
  1049				err = -EISCONN;
  1050				break;
  1051			}
  1052	
  1053			if (get_user(opt, (u16 __user *) optval)) {
  1054				err = -EFAULT;
  1055				break;
  1056			}
  1057	
  1058			if (chan->mode == L2CAP_MODE_EXT_FLOWCTL &&
  1059			    sk->sk_state == BT_CONNECTED)
  1060				err = l2cap_chan_reconfigure(chan, opt);
  1061			else
  1062				chan->imtu = opt;
  1063	
  1064			break;
  1065	
  1066		case BT_MODE:
  1067			if (!enable_ecred) {
  1068				err = -ENOPROTOOPT;
  1069				break;
  1070			}
  1071	
  1072			BT_DBG("sk->sk_state %u", sk->sk_state);
  1073	
  1074			if (sk->sk_state != BT_BOUND) {
  1075				err = -EINVAL;
  1076				break;
  1077			}
  1078	
  1079			if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
  1080				err = -EINVAL;
  1081				break;
  1082			}
  1083	
> 1084			if (get_user(opt, (u8 __user *) optval)) {
  1085				err = -EFAULT;
  1086				break;
  1087			}
  1088	
  1089			BT_DBG("opt %u", opt);
  1090	
  1091			err = l2cap_set_mode(chan, opt);
  1092			if (err)
  1093				break;
  1094	
  1095			BT_DBG("mode 0x%2.2x", chan->mode);
  1096	
  1097			break;
  1098	
  1099		default:
  1100			err = -ENOPROTOOPT;
  1101			break;
  1102		}
  1103	
  1104		release_sock(sk);
  1105		return err;
  1106	}
  1107	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux