Index: cpukit/libcsupport/src/rmdir.c
===================================================================
--- cpukit/libcsupport/src/rmdir.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libcsupport/src/rmdir.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -39,5 +39,10 @@
 
   if ( type == RTEMS_FILESYSTEM_DIRECTORY ) {
-    rv = (*ops->rmnod_h)( &parentloc, currentloc );
+    if ( !rtems_filesystem_location_is_root( currentloc ) ) {
+      rv = (*ops->rmnod_h)( &parentloc, currentloc );
+    } else {
+      rtems_filesystem_eval_path_error( &ctx, EBUSY );
+      rv = -1;
+    }
   } else {
     rtems_filesystem_eval_path_error( &ctx, ENOTDIR );
Index: cpukit/libcsupport/src/unlink.c
===================================================================
--- cpukit/libcsupport/src/unlink.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libcsupport/src/unlink.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -35,7 +35,13 @@
       parent_eval_flags
     );
-  const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
 
-  rv = (*ops->rmnod_h)( &parentloc, currentloc );
+  if ( !rtems_filesystem_location_is_root( currentloc ) ) {
+    const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops;
+
+    rv = (*ops->rmnod_h)( &parentloc, currentloc );
+  } else {
+    rtems_filesystem_eval_path_error( &ctx, EBUSY );
+    rv = -1;
+  }
 
   rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc );
Index: cpukit/libfs/src/dosfs/msdos_rmnod.c
===================================================================
--- cpukit/libfs/src/dosfs/msdos_rmnod.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/dosfs/msdos_rmnod.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -52,12 +52,4 @@
 
         /*
-         * You cannot remove the file system root node.
-         */
-        if (rtems_filesystem_location_is_root(pathloc))
-        {
-            rtems_set_errno_and_return_minus_one(EBUSY);
-        }
-
-        /*
          * You cannot remove a mountpoint.
          * not used - mount() not implemenetd yet.
Index: cpukit/libfs/src/imfs/imfs.h
===================================================================
--- cpukit/libfs/src/imfs/imfs.h	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/imfs/imfs.h	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -170,11 +170,9 @@
 
 typedef IMFS_jnode_t *(*IMFS_node_control_remove)(
-  IMFS_jnode_t *node,
-  const IMFS_jnode_t *root_node
+  IMFS_jnode_t *node
 );
 
 IMFS_jnode_t *IMFS_node_remove_default(
-  IMFS_jnode_t *node,
-  const IMFS_jnode_t *root_node
+  IMFS_jnode_t *node
 );
 
Index: cpukit/libfs/src/imfs/imfs_handlers_directory.c
===================================================================
--- cpukit/libfs/src/imfs/imfs_handlers_directory.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/imfs/imfs_handlers_directory.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -75,6 +75,5 @@
 
 static IMFS_jnode_t *IMFS_node_remove_directory(
-  IMFS_jnode_t *node,
-  const IMFS_jnode_t *root_node
+  IMFS_jnode_t *node
 )
 {
@@ -82,5 +81,5 @@
     errno = ENOTEMPTY;
     node = NULL;
-  } else if ( node == root_node || IMFS_is_mount_point( node ) ) {
+  } else if ( IMFS_is_mount_point( node ) ) {
     errno = EBUSY;
     node = NULL;
Index: cpukit/libfs/src/imfs/imfs_handlers_link.c
===================================================================
--- cpukit/libfs/src/imfs/imfs_handlers_link.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/imfs/imfs_handlers_link.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -65,6 +65,5 @@
 
 static IMFS_jnode_t *IMFS_node_remove_hard_link(
-  IMFS_jnode_t *node,
-  const IMFS_jnode_t *root_node
+  IMFS_jnode_t *node
 )
 {
@@ -72,5 +71,5 @@
 
   if ( target->st_nlink == 1) {
-    target = (*target->control->node_remove)( target, root_node );
+    target = (*target->control->node_remove)( target );
     if ( target == NULL ) {
       node = NULL;
Index: cpukit/libfs/src/imfs/imfs_initsupp.c
===================================================================
--- cpukit/libfs/src/imfs/imfs_initsupp.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/imfs/imfs_initsupp.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -142,6 +142,5 @@
 
 IMFS_jnode_t *IMFS_node_remove_default(
-  IMFS_jnode_t *node,
-  const IMFS_jnode_t *root_node
+  IMFS_jnode_t *node
 )
 {
Index: cpukit/libfs/src/imfs/imfs_rmnod.c
===================================================================
--- cpukit/libfs/src/imfs/imfs_rmnod.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/imfs/imfs_rmnod.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -30,8 +30,5 @@
   IMFS_jnode_t *node = loc->node_access;
 
-  node = (*node->control->node_remove)(
-    node,
-    loc->mt_entry->mt_fs_root->location.node_access
-  );
+  node = (*node->control->node_remove)( node );
   if ( node != NULL ) {
     --node->reference_count;
Index: cpukit/libfs/src/rfs/rtems-rfs-rtems.c
===================================================================
--- cpukit/libfs/src/rfs/rtems-rfs-rtems.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ cpukit/libfs/src/rfs/rtems-rfs-rtems.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -678,7 +678,4 @@
     printf ("rtems-rfs: rmnod: parent:%" PRId32 " doff:%" PRIu32 ", ino:%" PRId32 "\n",
             parent, doff, ino);
-
-  if (ino == RTEMS_RFS_ROOT_INO)
-    return rtems_rfs_rtems_error ("rmnod: root inode", EBUSY);
 
   rc = rtems_rfs_unlink (fs, parent, ino, doff, rtems_rfs_unlink_dir_if_empty);
Index: testsuites/fstests/fsimfsgeneric01/init.c
===================================================================
--- testsuites/fstests/fsimfsgeneric01/init.c	(revision 9b83a6654683d2f1f051533cdc41f39456303147)
+++ testsuites/fstests/fsimfsgeneric01/init.c	(revision c17d0b315baf3f3a3afb862f64d0acf424088442)
@@ -234,8 +234,5 @@
 }
 
-static IMFS_jnode_t *node_remove(
-  IMFS_jnode_t *node,
-  const IMFS_jnode_t *root_node
-)
+static IMFS_jnode_t *node_remove(IMFS_jnode_t *node)
 {
   test_state *state = IMFS_generic_get_context_by_node(node);
