]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
ihandle: Fix fdInUseCount leak on EMFILE
authorAndrew Deason <adeason@sinenomine.net>
Thu, 30 May 2013 22:40:58 +0000 (17:40 -0500)
committerStephan Wiesand <stephan.wiesand@desy.de>
Tue, 24 Sep 2013 12:33:57 +0000 (05:33 -0700)
Here, we close closeFd, but currently we don't decrement fdInUseCount.
Since we retry the open immediately afterwards, this means we can leak
fdInUseCount references. For example, if we retry this 5 times and get
EMFILE on each attempt, we will close 5 FDs, but not decrement
fdInUseCount at all.

To fix this, decrement fdInUseCounter when we close a file for EMFILE.

Reviewed-on: http://gerrit.openafs.org/9967
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
(cherry picked from commit 48344381d7a87a3617ec14ffc9f2d9735805ada6)

Change-Id: I03aee981c0b9663ac937c6165796f19366acec1e
Reviewed-on: http://gerrit.openafs.org/10175
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
src/vol/ihandle.c

index e09b4cbb87b16d0442399d1e19314314be72eabc..80c9c229fc7f5505b48a5352473df53ae2246ef6 100644 (file)
@@ -432,6 +432,9 @@ ih_open_retry:
            fdP->fd_fd = INVALID_FD;
            IH_UNLOCK;
            OS_CLOSE(closeFd);
+           IH_LOCK;
+           fdInUseCount -= 1;
+           IH_UNLOCK;
            goto ih_open_retry;
        }
     } else {