| Function report | 
| Source Code: security\selinux\hooks.c | Create Date:2022-07-28 18:54:52 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:inode_doinit_with_dentry
Proto:static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dentry)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct inode * | inode | |
| struct dentry * | opt_dentry | 
| 1433 | struct superblock_security_struct * sbsec = NULL | 
| 1434 | isec = selinux_inode(inode) | 
| 1435 | sid = 0 | 
| 1438 | rc = 0 | 
| 1440 | If initialization flag == initialized Then Return 0 | 
| 1444 | If initialization flag == initialized Then Go to out_unlock | 
| 1447 | If security class of this object == SECCLASS_FILE Then security class of this object = inode_mode_to_security_class(i_mode) | 
| 1450 | sbsec = s_security | 
| 1451 | If Not ( which mount options were specified & Non-mount related flags ) Then | 
| 1458 | spin_unlock( & isec_lock) | 
| 1459 | Go to out_unlock | 
| 1463 | task_sid = SID of creating task | 
| 1464 | sid = SID of this object | 
| 1465 | initialization flag = LABEL_PENDING | 
| 1466 | spin_unlock( & lock) | 
| 1469 | Case labeling behavior == use native label support | 
| 1470 | Break | 
| 1471 | Case labeling behavior == use xattr | 
| 1473 | sid = default SID for labeling | 
| 1474 | Break | 
| 1478 | If opt_dentry Then | 
| 1481 | Else | 
| 1489 | If Not dentry Then dentry = d_find_any_alias(inode) | 
| 1492 | If Not dentry Then | 
| 1502 | Go to out | 
| 1505 | rc = inode_doinit_use_xattr(inode, dentry, default SID for labeling , & sid) | 
| 1510 | Break | 
| 1511 | Case labeling behavior == use task SIDs, e.g. pipefs/sockfs | 
| 1514 | Case labeling behavior == use transition SIDs, e.g. devpts/tmpfs | 
| 1516 | sid = SID of file system superblock | 
| 1519 | rc = security_transition_sid( & selinux_state, task_sid, sid, sclass, NULL, & sid) | 
| 1523 | Break | 
| 1524 | Case labeling behavior == use mountpoint labeling | 
| 1526 | Break | 
| 1527 | Default | 
| 1529 | sid = SID of file system superblock | 
| 1531 | If which mount options were specified & SE_SBGENFS && Not S_ISLNK(i_mode) Then | 
| 1534 | If opt_dentry Then | 
| 1538 | Else | 
| 1544 | If Not dentry Then dentry = d_find_any_alias(inode) | 
| 1558 | rc = selinux_genfs_get_sid(dentry, sclass, which mount options were specified , & sid) | 
| 1560 | If rc Then | 
| 1565 | If which mount options were specified & SE_SBGENFS_XATTR && i_opflags & IOP_XATTR Then | 
| 1569 | If rc Then | 
| 1576 | Break | 
| 1579 | out : | 
| 1581 | If initialization flag == LABEL_PENDING Then | 
| 1591 | out_unlock : | 
| 1592 | spin_unlock( & lock) | 
| 1593 | Return rc | 
| Name | Describe | 
|---|---|
| __inode_security_revalidate | Try reloading inode security labels that have been marked as invalid. The*@may_sleep parameter indicates when sleeping and thus reloading labels is* allowed; when set to false, returns -ECHILD when the label is* invalid | 
| inode_doinit | |
| sb_finish_set_opts | |
| selinux_d_instantiate | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |