Hi Lorenzo, kernel test robot noticed the following build errors: [auto build test ERROR on v6.7] [cannot apply to linus/master trondmy-nfs/linux-next next-20240122] [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/Lorenzo-Bianconi/NFSD-convert-write_threads-to-netlink-command/20240121-013808 base: v6.7 patch link: https://lore.kernel.org/r/f7c42dae2b232b3b06e54ceb3f00725893973e02.1705771400.git.lorenzo%40kernel.org patch subject: [PATCH v6 3/3] NFSD: add write_ports to netlink command config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20240123/202401230032.Sx6BKQgl-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240123/202401230032.Sx6BKQgl-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202401230032.Sx6BKQgl-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): fs/nfsd/nfsctl.c: In function 'nfsd_nl_listener_set_doit': >> fs/nfsd/nfsctl.c:2017:17: error: implicit declaration of function 'nfsd_destroy_serv'; did you mean 'nfsd4_destroy_session'? [-Werror=implicit-function-declaration] 2017 | nfsd_destroy_serv(net); | ^~~~~~~~~~~~~~~~~ | nfsd4_destroy_session cc1: some warnings being treated as errors vim +2017 fs/nfsd/nfsctl.c 1900 1901 /** 1902 * nfsd_nl_listener_set_doit - set the nfs running listeners 1903 * @skb: reply buffer 1904 * @info: netlink metadata and command arguments 1905 * 1906 * Return 0 on success or a negative errno. 1907 */ 1908 int nfsd_nl_listener_set_doit(struct sk_buff *skb, struct genl_info *info) 1909 { 1910 struct nlattr *tb[ARRAY_SIZE(nfsd_server_instance_nl_policy)]; 1911 struct net *net = genl_info_net(info); 1912 struct svc_xprt *xprt, *tmp_xprt; 1913 const struct nlattr *attr; 1914 struct svc_serv *serv; 1915 const char *xcl_name; 1916 struct nfsd_net *nn; 1917 int port, err, rem; 1918 sa_family_t af; 1919 1920 if (GENL_REQ_ATTR_CHECK(info, NFSD_A_SERVER_LISTENER_INSTANCE)) 1921 return -EINVAL; 1922 1923 mutex_lock(&nfsd_mutex); 1924 1925 err = nfsd_create_serv(net); 1926 if (err) { 1927 mutex_unlock(&nfsd_mutex); 1928 return err; 1929 } 1930 1931 nn = net_generic(net, nfsd_net_id); 1932 serv = nn->nfsd_serv; 1933 1934 /* 1- create brand new listeners */ 1935 nlmsg_for_each_attr(attr, info->nlhdr, GENL_HDRLEN, rem) { 1936 if (nla_type(attr) != NFSD_A_SERVER_LISTENER_INSTANCE) 1937 continue; 1938 1939 if (nla_parse_nested(tb, ARRAY_SIZE(tb), attr, 1940 nfsd_server_instance_nl_policy, 1941 info->extack) < 0) 1942 continue; 1943 1944 if (!tb[NFSD_A_SERVER_INSTANCE_TRANSPORT_NAME] || 1945 !tb[NFSD_A_SERVER_INSTANCE_PORT]) 1946 continue; 1947 1948 xcl_name = nla_data(tb[NFSD_A_SERVER_INSTANCE_TRANSPORT_NAME]); 1949 port = nla_get_u32(tb[NFSD_A_SERVER_INSTANCE_PORT]); 1950 if (port < 1 || port > USHRT_MAX) 1951 continue; 1952 1953 af = nla_get_u32(tb[NFSD_A_SERVER_INSTANCE_INET_PROTO]); 1954 if (af != PF_INET && af != PF_INET6) 1955 continue; 1956 1957 xprt = svc_find_xprt(serv, xcl_name, net, PF_INET, port); 1958 if (xprt) { 1959 svc_xprt_put(xprt); 1960 continue; 1961 } 1962 1963 /* create new listerner */ 1964 if (svc_xprt_create(serv, xcl_name, net, af, port, 1965 SVC_SOCK_ANONYMOUS, get_current_cred())) 1966 continue; 1967 } 1968 1969 /* 2- remove stale listeners */ 1970 spin_lock_bh(&serv->sv_lock); 1971 list_for_each_entry_safe(xprt, tmp_xprt, &serv->sv_permsocks, 1972 xpt_list) { 1973 struct svc_xprt *rqt_xprt = NULL; 1974 1975 nlmsg_for_each_attr(attr, info->nlhdr, GENL_HDRLEN, rem) { 1976 if (nla_type(attr) != NFSD_A_SERVER_LISTENER_INSTANCE) 1977 continue; 1978 1979 if (nla_parse_nested(tb, ARRAY_SIZE(tb), attr, 1980 nfsd_server_instance_nl_policy, 1981 info->extack) < 0) 1982 continue; 1983 1984 if (!tb[NFSD_A_SERVER_INSTANCE_TRANSPORT_NAME] || 1985 !tb[NFSD_A_SERVER_INSTANCE_PORT]) 1986 continue; 1987 1988 xcl_name = nla_data( 1989 tb[NFSD_A_SERVER_INSTANCE_TRANSPORT_NAME]); 1990 port = nla_get_u32(tb[NFSD_A_SERVER_INSTANCE_PORT]); 1991 if (port < 1 || port > USHRT_MAX) 1992 continue; 1993 1994 af = nla_get_u32(tb[NFSD_A_SERVER_INSTANCE_INET_PROTO]); 1995 if (af != PF_INET && af != PF_INET6) 1996 continue; 1997 1998 if (!strcmp(xprt->xpt_class->xcl_name, xcl_name) && 1999 port == svc_xprt_local_port(xprt) && 2000 af == xprt->xpt_local.ss_family && 2001 xprt->xpt_net == net) { 2002 rqt_xprt = xprt; 2003 break; 2004 } 2005 } 2006 2007 /* remove stale listener */ 2008 if (!rqt_xprt) { 2009 spin_unlock_bh(&serv->sv_lock); 2010 svc_xprt_close(xprt); 2011 spin_lock_bh(&serv->sv_lock); 2012 } 2013 } 2014 spin_unlock_bh(&serv->sv_lock); 2015 2016 if (!serv->sv_nrthreads && list_empty(&nn->nfsd_serv->sv_permsocks)) > 2017 nfsd_destroy_serv(net); 2018 2019 mutex_unlock(&nfsd_mutex); 2020 2021 return 0; 2022 } 2023 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki