Messages in this thread | | | From | hooanon05@yahoo ... | Subject | Re: [PATCH v2] Fix i_mutex handling in nfsd readdir | Date | Wed, 22 Apr 2009 13:41:46 +0900 |
| |
David Woodhouse: > This patch fixes it by locking the directory's i_mutex again before > calling the filldir functions. The original deadlocks which commit :::
An entry may be removed between the first mutex_unlock and the second mutex_lock. In this case, lookup_one_len() in compose_entry_fh() will return a negative dentry. Currently the inode test (positive/negative) is done AFTER fh_compose(). Isn't it better to test it BEFORE fh_compose()?
compose_entry_fh() { ::: dchild = lookup_one_len(name, dparent, namlen); if (IS_ERR(dchild)) return 1; if (d_mountpoint(dchild) || fh_compose(fhp, exp, dchild, &cd->fh) != 0 || !dchild->d_inode) rv = 1; ::: }
J. R. Okajima
| |