Hi Luís, Thank you for the patch! Yet something to improve: [auto build test ERROR on ceph-client/for-linus] [also build test ERROR on linus/master v6.1-rc3 next-20221104] [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/Lu-s-Henriques/ceph-fix-memory-leak-in-mount-error-path-when-using-test_dummy_encryption/20221103-233629 base: https://github.com/ceph/ceph-client.git for-linus patch link: https://lore.kernel.org/r/20221103153619.11068-1-lhenriques%40suse.de patch subject: [PATCH] ceph: fix memory leak in mount error path when using test_dummy_encryption config: nios2-randconfig-r014-20221103 compiler: nios2-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/2a75b40477b60d0aba1b72379f7142225bea2a48 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Lu-s-Henriques/ceph-fix-memory-leak-in-mount-error-path-when-using-test_dummy_encryption/20221103-233629 git checkout 2a75b40477b60d0aba1b72379f7142225bea2a48 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=nios2 SHELL=/bin/bash fs/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): fs/ceph/super.c: In function 'ceph_get_tree': fs/ceph/super.c:1268:9: error: implicit declaration of function 'fscrypt_free_dummy_policy' [-Werror=implicit-function-declaration] 1268 | fscrypt_free_dummy_policy(&fsc->fsc_dummy_enc_policy); | ^~~~~~~~~~~~~~~~~~~~~~~~~ >> fs/ceph/super.c:1268:39: error: 'struct ceph_fs_client' has no member named 'fsc_dummy_enc_policy' 1268 | fscrypt_free_dummy_policy(&fsc->fsc_dummy_enc_policy); | ^~ cc1: some warnings being treated as errors vim +1268 fs/ceph/super.c 1196 1197 static int ceph_get_tree(struct fs_context *fc) 1198 { 1199 struct ceph_parse_opts_ctx *pctx = fc->fs_private; 1200 struct ceph_mount_options *fsopt = pctx->opts; 1201 struct super_block *sb; 1202 struct ceph_fs_client *fsc; 1203 struct dentry *res; 1204 int (*compare_super)(struct super_block *, struct fs_context *) = 1205 ceph_compare_super; 1206 int err; 1207 1208 dout("ceph_get_tree\n"); 1209 1210 if (!fc->source) 1211 return invalfc(fc, "No source"); 1212 if (fsopt->new_dev_syntax && !fsopt->mon_addr) 1213 return invalfc(fc, "No monitor address"); 1214 1215 /* create client (which we may/may not use) */ 1216 fsc = create_fs_client(pctx->opts, pctx->copts); 1217 pctx->opts = NULL; 1218 pctx->copts = NULL; 1219 if (IS_ERR(fsc)) { 1220 err = PTR_ERR(fsc); 1221 goto out_final; 1222 } 1223 1224 err = ceph_mdsc_init(fsc); 1225 if (err < 0) 1226 goto out; 1227 1228 if (ceph_test_opt(fsc->client, NOSHARE)) 1229 compare_super = NULL; 1230 1231 fc->s_fs_info = fsc; 1232 sb = sget_fc(fc, compare_super, ceph_set_super); 1233 fc->s_fs_info = NULL; 1234 if (IS_ERR(sb)) { 1235 err = PTR_ERR(sb); 1236 goto out; 1237 } 1238 1239 if (ceph_sb_to_client(sb) != fsc) { 1240 destroy_fs_client(fsc); 1241 fsc = ceph_sb_to_client(sb); 1242 dout("get_sb got existing client %p\n", fsc); 1243 } else { 1244 dout("get_sb using new client %p\n", fsc); 1245 err = ceph_setup_bdi(sb, fsc); 1246 if (err < 0) 1247 goto out_splat; 1248 } 1249 1250 res = ceph_real_mount(fsc, fc); 1251 if (IS_ERR(res)) { 1252 err = PTR_ERR(res); 1253 goto out_splat; 1254 } 1255 dout("root %p inode %p ino %llx.%llx\n", res, 1256 d_inode(res), ceph_vinop(d_inode(res))); 1257 fc->root = fsc->sb->s_root; 1258 return 0; 1259 1260 out_splat: 1261 if (!ceph_mdsmap_is_cluster_available(fsc->mdsc->mdsmap)) { 1262 pr_info("No mds server is up or the cluster is laggy\n"); 1263 err = -EHOSTUNREACH; 1264 } 1265 1266 ceph_mdsc_close_sessions(fsc->mdsc); 1267 deactivate_locked_super(sb); > 1268 fscrypt_free_dummy_policy(&fsc->fsc_dummy_enc_policy); 1269 goto out_final; 1270 1271 out: 1272 destroy_fs_client(fsc); 1273 out_final: 1274 dout("ceph_get_tree fail %d\n", err); 1275 return err; 1276 } 1277 -- 0-DAY CI Kernel Test Service https://01.org/lkp