On Sat, Aug 22, 2015 at 9:17 PM, Nicholas Krause <xerofoify@xxxxxxxxx> wrote: > > This fixes a possible deadlock occurrence issue on the error path > in the function nfs_vm_page_mkwrite for checking if the calls to > the functions nfs_flus_incompatible and nfs_updatepage have failed > by incorrectly not jumping to the correct goto label out_unlock > for unlocking the locked structure page pointer thus causing a > deadlock due to not correctly unlocking the internal structure > page pointer used by the function nfs_vm_page_mkwrite that had > been previously locked with the function lock_page. Further more > we also remove the goto label out as no error paths in this function > now use this label and this label should be removed to avoid build > warnings related to having a undefined label. > > Signed-off-by: Nicholas Krause <xerofoify@xxxxxxxxx> > --- > fs/nfs/file.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/fs/nfs/file.c b/fs/nfs/file.c > index cc4fa1e..fe68ecc 100644 > --- a/fs/nfs/file.c > +++ b/fs/nfs/file.c > @@ -629,12 +629,11 @@ static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) > ret = VM_FAULT_LOCKED; > if (nfs_flush_incompatible(filp, page) == 0 && > nfs_updatepage(filp, page, 0, pagelen) == 0) > - goto out; > + goto out_unlock; > > ret = VM_FAULT_SIGBUS; > out_unlock: > unlock_page(page); > -out: > return ret; > } > > That's the success path that you are modifying, not the error path. Furthermore, the return value is still VM_FAULT_LOCKED, which means the caller expects the page to be returned in the locked state. So NACK.... Trond -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html