diff options
Diffstat (limited to 'cpukit/libcsupport/src/fchmod.c')
-rw-r--r-- | cpukit/libcsupport/src/fchmod.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/cpukit/libcsupport/src/fchmod.c b/cpukit/libcsupport/src/fchmod.c index e651066a77..14fb416f68 100644 --- a/cpukit/libcsupport/src/fchmod.c +++ b/cpukit/libcsupport/src/fchmod.c @@ -28,9 +28,14 @@ int fchmod( int fd, mode_t mode ) iop = rtems_libio_iop( fd ); rtems_libio_check_is_open(iop); - rtems_filesystem_instance_lock( &iop->pathinfo ); - rv = (*iop->pathinfo.ops->fchmod_h)( &iop->pathinfo, mode ); - rtems_filesystem_instance_unlock( &iop->pathinfo ); + if (iop->pathinfo.mt_entry->writeable) { + rtems_filesystem_instance_lock( &iop->pathinfo ); + rv = (*iop->pathinfo.ops->fchmod_h)( &iop->pathinfo, mode ); + rtems_filesystem_instance_unlock( &iop->pathinfo ); + } else { + errno = EROFS; + rv = -1; + } return rv; } |