diff --git a/fs/vfs/kern_descrip.c b/fs/vfs/kern_descrip.c
index 1a3afdf4cab8110074c995ceb64f00d7bd446f92..f187101b2d46c213177b52dd4b6ac7b50c0576c0 100644
--- a/fs/vfs/kern_descrip.c
+++ b/fs/vfs/kern_descrip.c
@@ -43,6 +43,9 @@ int fdset(int fd, struct file *fp)
 {
 	struct file *orig;
 
+	if (fd < 0 || fd >= FDMAX)
+	        return EBADF;
+
 	fhold(fp);
 	orig = __sync_val_compare_and_swap(&gfdt[fd], NULL, fp);
 	if (orig != NULL) {