Hi Li, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on mkp-scsi/for-next] [also build test WARNING on jejb-scsi/for-next linus/master v5.19 next-20220728] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Li-Jinlin/scsi-iscsi-iscsi_tcp-Fix-null-ptr-deref-while-calling-getpeername/20220802-173945 base: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20220803/202208032214.0FELL5gK-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-3) 11.3.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/ccc367df3fdba07b24eeda721ca928cce50f40d2 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Li-Jinlin/scsi-iscsi-iscsi_tcp-Fix-null-ptr-deref-while-calling-getpeername/20220802-173945 git checkout ccc367df3fdba07b24eeda721ca928cce50f40d2 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/scsi/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): drivers/scsi/iscsi_tcp.c: In function 'iscsi_sw_tcp_conn_get_param': >> drivers/scsi/iscsi_tcp.c:798:26: warning: passing argument 1 of 'fget' makes integer from pointer without a cast [-Wint-conversion] 798 | fget(sock->file); | ~~~~^~~~~~ | | | struct file * In file included from drivers/scsi/iscsi_tcp.c:25: include/linux/file.h:48:39: note: expected 'unsigned int' but argument is of type 'struct file *' 48 | extern struct file *fget(unsigned int fd); | ~~~~~~~~~~~~~^~ drivers/scsi/iscsi_tcp.c: In function 'iscsi_sw_tcp_host_get_param': drivers/scsi/iscsi_tcp.c:852:26: warning: passing argument 1 of 'fget' makes integer from pointer without a cast [-Wint-conversion] 852 | fget(sock->file); | ~~~~^~~~~~ | | | struct file * In file included from drivers/scsi/iscsi_tcp.c:25: include/linux/file.h:48:39: note: expected 'unsigned int' but argument is of type 'struct file *' 48 | extern struct file *fget(unsigned int fd); | ~~~~~~~~~~~~~^~ vim +/fget +798 drivers/scsi/iscsi_tcp.c 777 778 static int iscsi_sw_tcp_conn_get_param(struct iscsi_cls_conn *cls_conn, 779 enum iscsi_param param, char *buf) 780 { 781 struct iscsi_conn *conn = cls_conn->dd_data; 782 struct iscsi_tcp_conn *tcp_conn = conn->dd_data; 783 struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data; 784 struct sockaddr_in6 addr; 785 struct socket *sock; 786 int rc; 787 788 switch(param) { 789 case ISCSI_PARAM_CONN_PORT: 790 case ISCSI_PARAM_CONN_ADDRESS: 791 case ISCSI_PARAM_LOCAL_PORT: 792 spin_lock_bh(&conn->session->frwd_lock); 793 if (!tcp_sw_conn || !tcp_sw_conn->sock) { 794 spin_unlock_bh(&conn->session->frwd_lock); 795 return -ENOTCONN; 796 } 797 sock = tcp_sw_conn->sock; > 798 fget(sock->file); 799 spin_unlock_bh(&conn->session->frwd_lock); 800 801 if (param == ISCSI_PARAM_LOCAL_PORT) 802 rc = kernel_getsockname(sock, 803 (struct sockaddr *)&addr); 804 else 805 rc = kernel_getpeername(sock, 806 (struct sockaddr *)&addr); 807 spin_lock_bh(&conn->session->frwd_lock); 808 sockfd_put(sock); 809 spin_unlock_bh(&conn->session->frwd_lock); 810 if (rc < 0) 811 return rc; 812 813 return iscsi_conn_get_addr_param((struct sockaddr_storage *) 814 &addr, param, buf); 815 default: 816 return iscsi_conn_get_param(cls_conn, param, buf); 817 } 818 819 return 0; 820 } 821 -- 0-DAY CI Kernel Test Service https://01.org/lkp