tree: git://git.samba.org/sfrench/cifs-2.6.git for-next head: 0bc54e6a9c31ede9508fb81edbd11983494047ee commit: 8e09ce8ffd4bdf6f780a54f89301c646526e9d97 [5/6] smb: client: handle DFS tcons in cifs_construct_tcon() config: parisc-defconfig (https://download.01.org/0day-ci/archive/20240402/202404021518.3Xu2VU4s-lkp@xxxxxxxxx/config) compiler: hppa-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240402/202404021518.3Xu2VU4s-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/202404021518.3Xu2VU4s-lkp@xxxxxxxxx/ All error/warnings (new ones prefixed by >>): In file included from include/linux/bug.h:5, from include/linux/thread_info.h:13, from include/asm-generic/preempt.h:5, from ./arch/parisc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:79, from include/linux/spinlock.h:56, from include/linux/wait.h:9, from include/linux/wait_bit.h:8, from include/linux/fs.h:6, from fs/smb/client/connect.c:8: fs/smb/client/connect.c: In function 'cifs_mount': fs/smb/client/connect.c:3647:37: error: invalid type argument of '->' (have 'struct cifs_mount_ctx') 3647 | if (WARN_ON(!mnt_ctx->server)) | ^~ arch/parisc/include/asm/bug.h:86:32: note: in definition of macro 'WARN_ON' 86 | int __ret_warn_on = !!(x); \ | ^ fs/smb/client/connect.c:3649:42: error: invalid type argument of '->' (have 'struct cifs_mount_ctx') 3649 | else if (WARN_ON(!mnt_ctx->ses)) | ^~ arch/parisc/include/asm/bug.h:86:32: note: in definition of macro 'WARN_ON' 86 | int __ret_warn_on = !!(x); \ | ^ fs/smb/client/connect.c:3651:42: error: invalid type argument of '->' (have 'struct cifs_mount_ctx') 3651 | else if (WARN_ON(!mnt_ctx->tcon)) | ^~ arch/parisc/include/asm/bug.h:86:32: note: in definition of macro 'WARN_ON' 86 | int __ret_warn_on = !!(x); \ | ^ fs/smb/client/connect.c: In function 'cifs_construct_tcon': >> fs/smb/client/connect.c:4045:35: error: implicit declaration of function 'dfs_get_path' [-Werror=implicit-function-declaration] 4045 | origin_fullpath = dfs_get_path(cifs_sb, cifs_sb->ctx->source); | ^~~~~~~~~~~~ >> fs/smb/client/connect.c:4045:33: warning: assignment to 'char *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 4045 | origin_fullpath = dfs_get_path(cifs_sb, cifs_sb->ctx->source); | ^ >> fs/smb/client/connect.c:4067:36: error: 'dfscache_wq' undeclared (first use in this function); did you mean 'fscache_write'? 4067 | queue_delayed_work(dfscache_wq, &tcon->dfs_cache_work, | ^~~~~~~~~~~ | fscache_write fs/smb/client/connect.c:4067:36: note: each undeclared identifier is reported only once for each function it appears in >> fs/smb/client/connect.c:4067:54: error: 'struct cifs_tcon' has no member named 'dfs_cache_work' 4067 | queue_delayed_work(dfscache_wq, &tcon->dfs_cache_work, | ^~ >> fs/smb/client/connect.c:4068:36: error: implicit declaration of function 'dfs_cache_get_ttl'; did you mean 'fscache_get_aux'? [-Werror=implicit-function-declaration] 4068 | dfs_cache_get_ttl() * HZ); | ^~~~~~~~~~~~~~~~~ | fscache_get_aux cc1: some warnings being treated as errors vim +/dfs_get_path +4045 fs/smb/client/connect.c 3989 3990 static struct cifs_tcon * 3991 cifs_construct_tcon(struct cifs_sb_info *cifs_sb, kuid_t fsuid) 3992 { 3993 int rc; 3994 struct cifs_tcon *master_tcon = cifs_sb_master_tcon(cifs_sb); 3995 struct cifs_ses *ses; 3996 struct cifs_tcon *tcon = NULL; 3997 struct smb3_fs_context *ctx; 3998 char *origin_fullpath = NULL; 3999 4000 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); 4001 if (ctx == NULL) 4002 return ERR_PTR(-ENOMEM); 4003 4004 ctx->local_nls = cifs_sb->local_nls; 4005 ctx->linux_uid = fsuid; 4006 ctx->cred_uid = fsuid; 4007 ctx->UNC = master_tcon->tree_name; 4008 ctx->retry = master_tcon->retry; 4009 ctx->nocase = master_tcon->nocase; 4010 ctx->nohandlecache = master_tcon->nohandlecache; 4011 ctx->local_lease = master_tcon->local_lease; 4012 ctx->no_lease = master_tcon->no_lease; 4013 ctx->resilient = master_tcon->use_resilient; 4014 ctx->persistent = master_tcon->use_persistent; 4015 ctx->handle_timeout = master_tcon->handle_timeout; 4016 ctx->no_linux_ext = !master_tcon->unix_ext; 4017 ctx->linux_ext = master_tcon->posix_extensions; 4018 ctx->sectype = master_tcon->ses->sectype; 4019 ctx->sign = master_tcon->ses->sign; 4020 ctx->seal = master_tcon->seal; 4021 ctx->witness = master_tcon->use_witness; 4022 ctx->dfs_root_ses = master_tcon->ses->dfs_root_ses; 4023 4024 rc = cifs_set_vol_auth(ctx, master_tcon->ses); 4025 if (rc) { 4026 tcon = ERR_PTR(rc); 4027 goto out; 4028 } 4029 4030 /* get a reference for the same TCP session */ 4031 spin_lock(&cifs_tcp_ses_lock); 4032 ++master_tcon->ses->server->srv_count; 4033 spin_unlock(&cifs_tcp_ses_lock); 4034 4035 ses = cifs_get_smb_ses(master_tcon->ses->server, ctx); 4036 if (IS_ERR(ses)) { 4037 tcon = (struct cifs_tcon *)ses; 4038 cifs_put_tcp_session(master_tcon->ses->server, 0); 4039 goto out; 4040 } 4041 4042 spin_lock(&master_tcon->tc_lock); 4043 if (master_tcon->origin_fullpath) { 4044 spin_unlock(&master_tcon->tc_lock); > 4045 origin_fullpath = dfs_get_path(cifs_sb, cifs_sb->ctx->source); 4046 if (IS_ERR(origin_fullpath)) { 4047 tcon = ERR_CAST(origin_fullpath); 4048 origin_fullpath = NULL; 4049 cifs_put_smb_ses(ses); 4050 goto out; 4051 } 4052 } else { 4053 spin_unlock(&master_tcon->tc_lock); 4054 } 4055 4056 tcon = cifs_get_tcon(ses, ctx); 4057 if (IS_ERR(tcon)) { 4058 cifs_put_smb_ses(ses); 4059 goto out; 4060 } 4061 4062 if (origin_fullpath) { 4063 spin_lock(&tcon->tc_lock); 4064 tcon->origin_fullpath = origin_fullpath; 4065 spin_unlock(&tcon->tc_lock); 4066 origin_fullpath = NULL; > 4067 queue_delayed_work(dfscache_wq, &tcon->dfs_cache_work, > 4068 dfs_cache_get_ttl() * HZ); 4069 } 4070 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki