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/ocfs2/dlm/dlmdomain.c |
Line in file: | 1748 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Undetermined 1
Stanse (1.2) |
Entered: | 2012-03-04 17:07:06 UTC |
1718 1719 /* add the new domain */ 1720 list_add_tail(&dlm->list, &dlm_domains); 1721 spin_unlock(&dlm_domain_lock); 1722 1723 /* 1724 * Pass the locking protocol version into the join. If the join 1725 * succeeds, it will have the negotiated protocol set. 1726 */ 1727 dlm->dlm_locking_proto = dlm_protocol; 1728 dlm->fs_locking_proto = *fs_proto; 1729 1730 ret = dlm_join_domain(dlm); 1731 if (ret) { 1732 mlog_errno(ret); 1733 dlm_put(dlm); 1734 goto leave; 1735 } 1736 1737 /* Tell the caller what locking protocol we negotiated */ 1738 *fs_proto = dlm->fs_locking_proto; 1739 1740 ret = 0; 1741leave: 1742 if (new_ctxt) 1743 dlm_free_ctxt_mem(new_ctxt); 1744 1745 if (ret < 0) 1746 dlm = ERR_PTR(ret); 1747 1748 return dlm; 1749} 1750EXPORT_SYMBOL_GPL(dlm_register_domain); 1751 1752static LIST_HEAD(dlm_join_handlers); 1753 1754static void dlm_unregister_net_handlers(void) 1755{ 1756 o2net_unregister_handler_list(&dlm_join_handlers); 1757} 1758