diff --git a/fs/inode/fs_files.c b/fs/inode/fs_files.c index 6d549d2313b..8d194a2e6f9 100644 --- a/fs/inode/fs_files.c +++ b/fs/inode/fs_files.c @@ -336,7 +336,7 @@ int files_allocate(FAR struct inode *inode, int oflags, off_t pos, int minfd) } _files_semgive(list); - return ERROR; + return -EMFILE; } /**************************************************************************** diff --git a/fs/vfs/fs_dupfd.c b/fs/vfs/fs_dupfd.c index c3525ae79d6..15ed0af9d96 100644 --- a/fs/vfs/fs_dupfd.c +++ b/fs/vfs/fs_dupfd.c @@ -60,7 +60,7 @@ int file_dup(FAR struct file *filep, int minfd) fd2 = files_allocate(NULL, 0, 0, minfd); if (fd2 < 0) { - return -EMFILE; + return fd2; } ret = fs_getfilep(fd2, &filep2); diff --git a/fs/vfs/fs_open.c b/fs/vfs/fs_open.c index 185a581bcf6..0fcc78dfece 100644 --- a/fs/vfs/fs_open.c +++ b/fs/vfs/fs_open.c @@ -207,7 +207,7 @@ int nx_vopen(FAR const char *path, int oflags, va_list ap) fd = files_allocate(inode, oflags, 0, 0); if (fd < 0) { - ret = -EMFILE; + ret = fd; goto errout_with_inode; }