Lines Matching refs:pntsd
814 int parse_sec_desc(struct mnt_idmap *idmap, struct smb_ntsd *pntsd, in parse_sec_desc() argument
820 char *end_of_acl = ((char *)pntsd) + acl_len; in parse_sec_desc()
824 if (!pntsd) in parse_sec_desc()
830 owner_sid_ptr = (struct smb_sid *)((char *)pntsd + in parse_sec_desc()
831 le32_to_cpu(pntsd->osidoffset)); in parse_sec_desc()
832 group_sid_ptr = (struct smb_sid *)((char *)pntsd + in parse_sec_desc()
833 le32_to_cpu(pntsd->gsidoffset)); in parse_sec_desc()
834 dacloffset = le32_to_cpu(pntsd->dacloffset); in parse_sec_desc()
835 dacl_ptr = (struct smb_acl *)((char *)pntsd + dacloffset); in parse_sec_desc()
838 pntsd->revision, pntsd->type, le32_to_cpu(pntsd->osidoffset), in parse_sec_desc()
839 le32_to_cpu(pntsd->gsidoffset), in parse_sec_desc()
840 le32_to_cpu(pntsd->sacloffset), dacloffset); in parse_sec_desc()
842 pntsd_type = le16_to_cpu(pntsd->type); in parse_sec_desc()
848 pntsd->type = cpu_to_le16(DACL_PRESENT); in parse_sec_desc()
850 if (pntsd->osidoffset) { in parse_sec_desc()
865 if (pntsd->gsidoffset) { in parse_sec_desc()
882 pntsd->type |= cpu_to_le16(DACL_AUTO_INHERITED); in parse_sec_desc()
884 pntsd->type |= cpu_to_le16(DACL_PROTECTED); in parse_sec_desc()
896 struct smb_ntsd *pntsd, struct smb_ntsd *ppntsd, in build_sec_desc() argument
928 pntsd->sacloffset = 0; in build_sec_desc()
929 pntsd->revision = cpu_to_le16(1); in build_sec_desc()
930 pntsd->type = cpu_to_le16(SELF_RELATIVE); in build_sec_desc()
932 pntsd->type |= ppntsd->type; in build_sec_desc()
935 pntsd->osidoffset = cpu_to_le32(offset); in build_sec_desc()
936 owner_sid_ptr = (struct smb_sid *)((char *)pntsd + offset); in build_sec_desc()
942 pntsd->gsidoffset = cpu_to_le32(offset); in build_sec_desc()
943 group_sid_ptr = (struct smb_sid *)((char *)pntsd + offset); in build_sec_desc()
949 pntsd->type |= cpu_to_le16(DACL_PRESENT); in build_sec_desc()
950 dacl_ptr = (struct smb_acl *)((char *)pntsd + offset); in build_sec_desc()
977 pntsd->dacloffset = cpu_to_le32(offset); in build_sec_desc()
1109 struct smb_ntsd *pntsd; in smb_inherit_dacl() local
1129 pntsd = kzalloc(pntsd_alloc_size, GFP_KERNEL); in smb_inherit_dacl()
1130 if (!pntsd) { in smb_inherit_dacl()
1135 pntsd->revision = cpu_to_le16(1); in smb_inherit_dacl()
1136 pntsd->type = cpu_to_le16(SELF_RELATIVE | DACL_PRESENT); in smb_inherit_dacl()
1138 pntsd->type |= cpu_to_le16(DACL_AUTO_INHERITED); in smb_inherit_dacl()
1140 pntsd->osidoffset = parent_pntsd->osidoffset; in smb_inherit_dacl()
1141 pntsd->gsidoffset = parent_pntsd->gsidoffset; in smb_inherit_dacl()
1142 pntsd->dacloffset = parent_pntsd->dacloffset; in smb_inherit_dacl()
1144 if ((u64)le32_to_cpu(pntsd->osidoffset) + powner_sid_size > in smb_inherit_dacl()
1147 kfree(pntsd); in smb_inherit_dacl()
1151 if ((u64)le32_to_cpu(pntsd->gsidoffset) + pgroup_sid_size > in smb_inherit_dacl()
1154 kfree(pntsd); in smb_inherit_dacl()
1158 if ((u64)le32_to_cpu(pntsd->dacloffset) + sizeof(struct smb_acl) + nt_size > in smb_inherit_dacl()
1161 kfree(pntsd); in smb_inherit_dacl()
1165 if (pntsd->osidoffset) { in smb_inherit_dacl()
1166 struct smb_sid *owner_sid = (struct smb_sid *)((char *)pntsd + in smb_inherit_dacl()
1167 le32_to_cpu(pntsd->osidoffset)); in smb_inherit_dacl()
1172 if (pntsd->gsidoffset) { in smb_inherit_dacl()
1173 struct smb_sid *group_sid = (struct smb_sid *)((char *)pntsd + in smb_inherit_dacl()
1174 le32_to_cpu(pntsd->gsidoffset)); in smb_inherit_dacl()
1179 if (pntsd->dacloffset) { in smb_inherit_dacl()
1182 pdacl = (struct smb_acl *)((char *)pntsd + le32_to_cpu(pntsd->dacloffset)); in smb_inherit_dacl()
1191 ksmbd_vfs_set_sd_xattr(conn, idmap, path, pntsd, pntsd_size, false); in smb_inherit_dacl()
1192 kfree(pntsd); in smb_inherit_dacl()
1219 struct smb_ntsd *pntsd = NULL; in smb_check_perm_dacl() local
1235 path->dentry, &pntsd); in smb_check_perm_dacl()
1236 if (pntsd_size <= 0 || !pntsd) in smb_check_perm_dacl()
1239 dacl_offset = le32_to_cpu(pntsd->dacloffset); in smb_check_perm_dacl()
1244 pdacl = (struct smb_acl *)((char *)pntsd + le32_to_cpu(pntsd->dacloffset)); in smb_check_perm_dacl()
1377 kfree(pntsd); in smb_check_perm_dacl()
1382 const struct path *path, struct smb_ntsd *pntsd, int ntsd_len, in set_info_sec() argument
1395 rc = parse_sec_desc(idmap, pntsd, ntsd_len, &fattr); in set_info_sec()
1437 if (type_check && !(le16_to_cpu(pntsd->type) & DACL_PRESENT)) in set_info_sec()
1443 ksmbd_vfs_set_sd_xattr(conn, idmap, path, pntsd, ntsd_len, in set_info_sec()