diff options
Diffstat (limited to 'libdiskfs/fsys-getfile.c')
-rw-r--r-- | libdiskfs/fsys-getfile.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libdiskfs/fsys-getfile.c b/libdiskfs/fsys-getfile.c index efa0cdf0..2fe9495e 100644 --- a/libdiskfs/fsys-getfile.c +++ b/libdiskfs/fsys-getfile.c @@ -1,6 +1,6 @@ /* Return the file for a given handle (for nfs server support) - Copyright (C) 1997,99,2001 Free Software Foundation, Inc. + Copyright (C) 1997,99,2001,02 Free Software Foundation, Inc. This file is part of the GNU Hurd. @@ -39,6 +39,7 @@ diskfs_S_fsys_getfile (mach_port_t fsys, struct node *node; const union diskfs_fhandle *f; struct protid *new_cred; + struct peropen *new_po; struct iouser *user; struct port_info *pt = ports_lookup_port (diskfs_port_bucket, fsys, diskfs_control_class); @@ -86,8 +87,13 @@ diskfs_S_fsys_getfile (mach_port_t fsys, && ! diskfs_check_readonly ()) flags |= O_WRITE; - err = diskfs_create_protid (diskfs_make_peropen (node, flags, 0), - user, &new_cred); + err = diskfs_make_peropen (node, flags, 0, &new_po); + if (! err) + { + err = diskfs_create_protid (new_po, user, &new_cred); + if (err) + diskfs_release_peropen (new_po); + } iohelp_free_iouser (user); |