Showing error 1356

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: fs/nfsd/export.c
Line in file: 1370
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-21 20:30:05 UTC


Source:

1340        struct svc_export *exp;
1341        __be32 rv;
1342        u32 fsidv[2];
1343
1344        mk_fsid(FSID_NUM, fsidv, 0, 0, 0, NULL);
1345
1346        exp = rqst_exp_find(rqstp, FSID_NUM, fsidv);
1347        if (IS_ERR(exp))
1348                return nfserrno(PTR_ERR(exp));
1349        rv = fh_compose(fhp, exp, exp->ex_path.dentry, NULL);
1350        if (rv)
1351                goto out;
1352        rv = check_nfsd_access(exp, rqstp);
1353out:
1354        exp_put(exp);
1355        return rv;
1356}
1357
1358/* Iterator */
1359
1360static void *e_start(struct seq_file *m, loff_t *pos)
1361        __acquires(svc_export_cache.hash_lock)
1362{
1363        loff_t n = *pos;
1364        unsigned hash, export;
1365        struct cache_head *ch;
1366        
1367        exp_readlock();
1368        read_lock(&svc_export_cache.hash_lock);
1369        if (!n--)
1370                return SEQ_START_TOKEN;
1371        hash = n >> 32;
1372        export = n & ((1LL<<32) - 1);
1373
1374        
1375        for (ch=export_table[hash]; ch; ch=ch->next)
1376                if (!export--)
1377                        return ch;
1378        n &= ~((1LL<<32) - 1);
1379        do {
1380                hash++;
Show full sources