Description of problem: The NFS client can double drop dentries if an error occurs during the create process. This problem was discovered by doing code inspection while working on another bug, 128616 for RHEL-3. Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
The problem is that the NFS client calls a routine called nfs_instantiate() to instantiate dentries. This routine will d_drop() the dentry if it can not instantiate the dentry. The problem is that the NFS client also needs to d_drop() the dentry is any other errors occur during the process of creating a new file, directory, special device, or symbolic link too. This d_drop() support should only live in one place to avoid the possibility of calling it incorrectly.
Created attachment 146583 [details] Proposed patch
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
This request was evaluated by Red Hat Kernel Team for inclusion in a Red Hat Enterprise Linux maintenance release, and has moved to bugzilla status POST.
committed in stream U6 build 55.12. A test kernel with this patch is available from http://people.redhat.com/~jbaron/rhel4/
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2007-0791.html