summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/src/glfs-internal.h4
-rw-r--r--api/src/glfs.c6
-rw-r--r--libglusterfs/src/fd.c2
3 files changed, 7 insertions, 5 deletions
diff --git a/api/src/glfs-internal.h b/api/src/glfs-internal.h
index 5696a5bdcd6..1c308dfb0dc 100644
--- a/api/src/glfs-internal.h
+++ b/api/src/glfs-internal.h
@@ -267,8 +267,8 @@ do { \
#define __GLFS_ENTRY_VALIDATE_FD(glfd, label) \
do { \
- if (!glfd) { \
- errno = EINVAL; \
+ if (!glfd || !glfd->fd || !glfd->fd->inode) { \
+ errno = EBADF; \
goto label; \
} \
old_THIS = THIS; \
diff --git a/api/src/glfs.c b/api/src/glfs.c
index 5653f4d46c0..b3a3f9751dd 100644
--- a/api/src/glfs.c
+++ b/api/src/glfs.c
@@ -560,8 +560,10 @@ glfs_fd_destroy (struct glfs_fd *glfd)
}
glfs_unlock (glfd->fs);
- if (glfd->fd)
- fd_unref (glfd->fd);
+ if (glfd->fd) {
+ fd_unref (glfd->fd);
+ glfd->fd = NULL;
+ }
GF_FREE (glfd->readdirbuf);
diff --git a/libglusterfs/src/fd.c b/libglusterfs/src/fd.c
index ea74d03b0a9..25cea496d73 100644
--- a/libglusterfs/src/fd.c
+++ b/libglusterfs/src/fd.c
@@ -537,7 +537,7 @@ fd_destroy (fd_t *fd)
}
UNLOCK (&fd->inode->lock);
inode_unref (fd->inode);
- fd->inode = (inode_t *)0xaaaaaaaa;
+ fd->inode = NULL;
fd_lk_ctx_unref (fd->lk_ctx);
mem_put (fd);
out: