[bug report] staging: erofs: tidy up decompression frontend
Dan Carpenter
dan.carpenter at oracle.com
Fri Nov 15 06:10:03 AEDT 2019
Hello Gao Xiang,
The patch 97e86a858bc3: "staging: erofs: tidy up decompression
frontend" from Jul 31, 2019, leads to the following static checker
warning:
fs/erofs/zdata.c:443 z_erofs_register_collection()
error: double unlocked 'cl->lock' (orig line 439)
fs/erofs/zdata.c
432 cl = z_erofs_primarycollection(pcl);
433 cl->pageofs = map->m_la & ~PAGE_MASK;
434
435 /*
436 * lock all primary followed works before visible to others
437 * and mutex_trylock *never* fails for a new pcluster.
438 */
439 mutex_trylock(&cl->lock);
^^^^^^^^^^^^^^^^^^^^^^^^
440
441 err = erofs_register_workgroup(inode->i_sb, &pcl->obj, 0);
442 if (err) {
443 mutex_unlock(&cl->lock);
^^^^^^^^^^^^^^^^^^^^^^^
How can we unlock if we don't know that the trylock succeeded?
444 kmem_cache_free(pcluster_cachep, pcl);
445 return -EAGAIN;
446 }
447 /* used to check tail merging loop due to corrupted images */
448 if (clt->owned_head == Z_EROFS_PCLUSTER_TAIL)
449 clt->tailpcl = pcl;
450 clt->owned_head = &pcl->next;
451 clt->pcl = pcl;
452 clt->cl = cl;
453 return 0;
regards,
dan carpenter
More information about the Linux-erofs
mailing list