]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for VFS_CHECKPERMS
authorLionel Sambuc <lionel@minix3.org>
Mon, 12 May 2014 10:53:20 +0000 (12:53 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:31 +0000 (17:05 +0200)
Change-Id: Ie97bb7362d108ebba268c719a6614fc2fe1392cf

include/minix/callnr.h
include/minix/ipc.h
lib/libsys/checkperms.c
servers/vfs/path.c

index 2204baba65db5573cb16ddb775d1c983f20de163..a27dd589cfaf606be8452f7419487c61d9afd4c6 100644 (file)
 
 #define NR_VFS_CALLS           49      /* highest number from base plus one */
 
-/* Field names for the checkperms(2) call. */
-#define VFS_CHECKPERMS_ENDPT   m2_i1   /* endpoint_t */
-#define VFS_CHECKPERMS_GRANT   m2_i2   /* cp_grant_id_t */
-#define VFS_CHECKPERMS_COUNT   m2_i3   /* size_t */
-
 /* Field names for the copyfd(2) call. */
 #define VFS_COPYFD_ENDPT       m1_i1   /* endpoint_t */
 #define VFS_COPYFD_FD          m1_i2   /* int */
index 1cdded91f2c9f64d410c0ab20147728a5d264175..a515a4996c4b597d946dedfe13f61335a11e68bd 100644 (file)
@@ -211,6 +211,15 @@ typedef struct {
 } mess_lc_vfs_umount;
 _ASSERT_MSG_SIZE(mess_lc_vfs_umount);
 
+typedef struct {
+       endpoint_t endpt;
+       cp_grant_id_t grant;
+       size_t count;
+
+       uint8_t padding[44];
+} mess_lsys_vfs_checkperms;
+_ASSERT_MSG_SIZE(mess_lsys_vfs_checkperms);
+
 typedef struct {
        dev_t device;
        off_t seek_pos;
@@ -669,6 +678,8 @@ typedef struct {
                mess_lc_vfs_statvfs1    m_lc_vfs_statvfs1;
                mess_lc_vfs_umount      m_lc_vfs_umount;
 
+               mess_lsys_vfs_checkperms m_lsys_vfs_checkperms;
+
                mess_vfs_fs_breadwrite  m_vfs_fs_breadwrite;
                mess_vfs_fs_chmod       m_vfs_fs_chmod;
                mess_vfs_fs_chown       m_vfs_fs_chown;
index cf0a4cb273b99ff6f6d9db4d898c58fc8e7978f1..0998e64d8f3eb77c17324c3ea299e79d0d74b503 100644 (file)
@@ -16,9 +16,9 @@ checkperms(endpoint_t endpt, char *path, size_t size)
                return ENOMEM;
 
        memset(&m, 0, sizeof(m));
-       m.VFS_CHECKPERMS_ENDPT = endpt;
-       m.VFS_CHECKPERMS_GRANT = grant;
-       m.VFS_CHECKPERMS_COUNT = size;
+       m.m_lsys_vfs_checkperms.endpt = endpt;
+       m.m_lsys_vfs_checkperms.grant = grant;
+       m.m_lsys_vfs_checkperms.count = size;
 
        r = _taskcall(VFS_PROC_NR, VFS_CHECKPERMS, &m);
 
index a105a27bc4f3de95d2fd271e1530ad58cdd59d56..ae8e93abbf0334b7c57a785974e62f6dcf2ac6be 100644 (file)
@@ -872,6 +872,7 @@ int do_checkperms(void)
   /* This should be replaced by an ACL check. */
   if (!super_user) return EPERM;
 
-  return check_perms(job_m_in.VFS_CHECKPERMS_ENDPT,
-       job_m_in.VFS_CHECKPERMS_GRANT, (size_t) job_m_in.VFS_CHECKPERMS_COUNT);
+  return check_perms(job_m_in.m_lsys_vfs_checkperms.endpt,
+       job_m_in.m_lsys_vfs_checkperms.grant,
+       job_m_in.m_lsys_vfs_checkperms.count);
 }