summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/rfs/rtems-rfs-inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/rfs/rtems-rfs-inode.c')
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-inode.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-inode.c b/cpukit/libfs/src/rfs/rtems-rfs-inode.c
index b23f09994d..7dbb3a805e 100644
--- a/cpukit/libfs/src/rfs/rtems-rfs-inode.c
+++ b/cpukit/libfs/src/rfs/rtems-rfs-inode.c
@@ -211,8 +211,11 @@ rtems_rfs_inode_create (rtems_rfs_file_system* fs,
rc = rtems_rfs_inode_open (fs, *ino, &inode, true);
if (rc > 0)
+ {
+ rtems_rfs_inode_free (fs, *ino);
return rc;
-
+ }
+
rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);
if (rc > 0)
{
@@ -223,6 +226,8 @@ rtems_rfs_inode_create (rtems_rfs_file_system* fs,
/*
* Only handle the specifics of a directory. Let caller handle the others.
+ *
+ * The inode delete will free the inode.
*/
if (RTEMS_RFS_S_ISDIR (mode))
{
@@ -307,7 +312,7 @@ rtems_rfs_inode_delete (rtems_rfs_file_system* fs,
rc = rtems_rfs_block_map_close (fs, &map);
if (rc > 0)
rrc = rc;
- memset (handle->node, 0xff, sizeof (rtems_rfs_inode));
+ memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);
rtems_rfs_buffer_mark_dirty (&handle->buffer);
/*
* Do the release here to avoid the ctime field being set on a