The closeall function is broken in such a way that it almost never closes any file descriptors. It's calling strtol on the text representation of the file descriptor, and then checking to see if the value of *endptr is not '\0' before trying to close the file. This check is wrong. When strtol returns an endptr that points to a NULL byte, that indicates that the conversion was completely successful. I believe this check should instead be requiring that endptr is pointing to '\0' before closing the fd. Reported-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- support/nfs/closeall.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/support/nfs/closeall.c b/support/nfs/closeall.c index cc7fb3b..4c93882 100644 --- a/support/nfs/closeall.c +++ b/support/nfs/closeall.c @@ -19,7 +19,7 @@ closeall(int min) while ((d = readdir(dir)) != NULL) { char *endp; long n = strtol(d->d_name, &endp, 10); - if (*endp != '\0' && n >= min && n != dfd) + if (*endp == '\0' && n >= min && n != dfd) (void) close(n); } closedir(dir); -- 1.6.2.2 -- 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