diff options
Diffstat (limited to 'c/src/lib/libc/mknod.c')
-rw-r--r-- | c/src/lib/libc/mknod.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/c/src/lib/libc/mknod.c b/c/src/lib/libc/mknod.c index 97f6cb0884..48444f8549 100644 --- a/c/src/lib/libc/mknod.c +++ b/c/src/lib/libc/mknod.c @@ -52,8 +52,15 @@ int mknod( if ( result != 0 ) return -1; - if ( !temp_loc.ops->mknod ) + if ( !temp_loc.ops->mknod ) { + if ( temp_loc.ops->freenod ) + (*temp_loc.ops->freenod)( &temp_loc ); set_errno_and_return_minus_one( ENOTSUP ); + } - return (*temp_loc.ops->mknod)( name_start, mode, dev, &temp_loc ); + result = (*temp_loc.ops->mknod)( name_start, mode, dev, &temp_loc ); + if ( temp_loc.ops->freenod ) + (*temp_loc.ops->freenod)( &temp_loc ); + + return result; } |