Showing error 1064

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/dlmthread.c
Line in file: 217
Project: Linux Kernel
Project version: 2.6.28
Tools: Undetermined 1
Entered: 2012-03-04 17:07:06 UTC


Source:

187                /* clear our bit from the master's refmap, ignore errors */
188                ret = dlm_drop_lockres_ref(dlm, res);
189                if (ret < 0) {
190                        mlog_errno(ret);
191                        if (!dlm_is_host_down(ret))
192                                BUG();
193                }
194                mlog(0, "%s:%.*s: dlm_deref_lockres returned %d\n",
195                     dlm->name, res->lockname.len, res->lockname.name, ret);
196                spin_lock(&dlm->spinlock);
197        }
198
199        if (!list_empty(&res->purge)) {
200                mlog(0, "removing lockres %.*s:%p from purgelist, "
201                     "master = %d\n", res->lockname.len, res->lockname.name,
202                     res, master);
203                list_del_init(&res->purge);
204                dlm_lockres_put(res);
205                dlm->purge_count--;
206        }
207        __dlm_unhash_lockres(res);
208
209        /* lockres is not in the hash now.  drop the flag and wake up
210         * any processes waiting in dlm_get_lock_resource. */
211        if (!master) {
212                spin_lock(&res->spinlock);
213                res->state &= ~DLM_LOCK_RES_DROPPING_REF;
214                spin_unlock(&res->spinlock);
215                wake_up(&res->wq);
216        }
217        return 0;
218}
219
220static void dlm_run_purge_list(struct dlm_ctxt *dlm,
221                               int purge_now)
222{
223        unsigned int run_max, unused;
224        unsigned long purge_jiffies;
225        struct dlm_lock_resource *lockres;
226
227        spin_lock(&dlm->spinlock);
Show full sources