summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libdiskfs/file-getcontrol.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libdiskfs/file-getcontrol.c b/libdiskfs/file-getcontrol.c
index 6c53a12f..4ea2ae8e 100644
--- a/libdiskfs/file-getcontrol.c
+++ b/libdiskfs/file-getcontrol.c
@@ -33,7 +33,11 @@ diskfs_S_file_getcontrol (struct protid *cred,
error = EPERM;
else
{
- *control = ports_get_right (diskfs_control_port);
+ spin_lock (&_diskfs_control_lock);
+ _diskfs_ncontrol_ports++;
+ spin_lock (&_diskfs_control_lock);
+ *control = ports_get_right (ports_allocate_port
+ (sizeof (struct port_info), PT_CTL));
*controltype = MACH_MSG_TYPE_MAKE_SEND;
}