diff options
Diffstat (limited to 'security/smack/smack_lsm.c')
-rw-r--r-- | security/smack/smack_lsm.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 185e2e73cd33..aaf770159ebb 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c | |||
@@ -185,7 +185,7 @@ static int smack_ptrace_access_check(struct task_struct *ctp, unsigned int mode) | |||
185 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_TASK); | 185 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_TASK); |
186 | smk_ad_setfield_u_tsk(&ad, ctp); | 186 | smk_ad_setfield_u_tsk(&ad, ctp); |
187 | 187 | ||
188 | rc = smk_curacc(skp->smk_known, MAY_READWRITE, &ad); | 188 | rc = smk_curacc(skp->smk_known, mode, &ad); |
189 | return rc; | 189 | return rc; |
190 | } | 190 | } |
191 | 191 | ||
@@ -1146,7 +1146,7 @@ static int smack_file_ioctl(struct file *file, unsigned int cmd, | |||
1146 | * @file: the object | 1146 | * @file: the object |
1147 | * @cmd: unused | 1147 | * @cmd: unused |
1148 | * | 1148 | * |
1149 | * Returns 0 if current has write access, error code otherwise | 1149 | * Returns 0 if current has lock access, error code otherwise |
1150 | */ | 1150 | */ |
1151 | static int smack_file_lock(struct file *file, unsigned int cmd) | 1151 | static int smack_file_lock(struct file *file, unsigned int cmd) |
1152 | { | 1152 | { |
@@ -1154,7 +1154,7 @@ static int smack_file_lock(struct file *file, unsigned int cmd) | |||
1154 | 1154 | ||
1155 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); | 1155 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); |
1156 | smk_ad_setfield_u_fs_path(&ad, file->f_path); | 1156 | smk_ad_setfield_u_fs_path(&ad, file->f_path); |
1157 | return smk_curacc(file->f_security, MAY_WRITE, &ad); | 1157 | return smk_curacc(file->f_security, MAY_LOCK, &ad); |
1158 | } | 1158 | } |
1159 | 1159 | ||
1160 | /** | 1160 | /** |
@@ -1178,8 +1178,13 @@ static int smack_file_fcntl(struct file *file, unsigned int cmd, | |||
1178 | 1178 | ||
1179 | switch (cmd) { | 1179 | switch (cmd) { |
1180 | case F_GETLK: | 1180 | case F_GETLK: |
1181 | break; | ||
1181 | case F_SETLK: | 1182 | case F_SETLK: |
1182 | case F_SETLKW: | 1183 | case F_SETLKW: |
1184 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); | ||
1185 | smk_ad_setfield_u_fs_path(&ad, file->f_path); | ||
1186 | rc = smk_curacc(file->f_security, MAY_LOCK, &ad); | ||
1187 | break; | ||
1183 | case F_SETOWN: | 1188 | case F_SETOWN: |
1184 | case F_SETSIG: | 1189 | case F_SETSIG: |
1185 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); | 1190 | smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH); |