1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#ifndef __LINUX_SECURITY_H
23#define __LINUX_SECURITY_H
24
25#include <linux/fs.h>
26#include <linux/binfmts.h>
27#include <linux/signal.h>
28#include <linux/resource.h>
29#include <linux/sem.h>
30#include <linux/shm.h>
31#include <linux/msg.h>
32#include <linux/sched.h>
33#include <linux/key.h>
34#include <linux/xfrm.h>
35#include <net/flow.h>
36
37
38#define SECURITY_NAME_MAX 10
39
40struct ctl_table;
41struct audit_krule;
42
43
44
45
46
47extern int cap_capable(struct task_struct *tsk, int cap);
48extern int cap_settime(struct timespec *ts, struct timezone *tz);
49extern int cap_ptrace_may_access(struct task_struct *child, unsigned int mode);
50extern int cap_ptrace_traceme(struct task_struct *parent);
51extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);
52extern int cap_capset_check(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);
53extern void cap_capset_set(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted);
54extern int cap_bprm_set_security(struct linux_binprm *bprm);
55extern void cap_bprm_apply_creds(struct linux_binprm *bprm, int unsafe);
56extern int cap_bprm_secureexec(struct linux_binprm *bprm);
57extern int cap_inode_setxattr(struct dentry *dentry, const char *name,
58 const void *value, size_t size, int flags);
59extern int cap_inode_removexattr(struct dentry *dentry, const char *name);
60extern int cap_inode_need_killpriv(struct dentry *dentry);
61extern int cap_inode_killpriv(struct dentry *dentry);
62extern int cap_task_post_setuid(uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags);
63extern void cap_task_reparent_to_init(struct task_struct *p);
64extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg3,
65 unsigned long arg4, unsigned long arg5, long *rc_p);
66extern int cap_task_setscheduler(struct task_struct *p, int policy, struct sched_param *lp);
67extern int cap_task_setioprio(struct task_struct *p, int ioprio);
68extern int cap_task_setnice(struct task_struct *p, int nice);
69extern int cap_syslog(int type);
70extern int cap_vm_enough_memory(struct mm_struct *mm, long pages);
71
72struct msghdr;
73struct sk_buff;
74struct sock;
75struct sockaddr;
76struct socket;
77struct flowi;
78struct dst_entry;
79struct xfrm_selector;
80struct xfrm_policy;
81struct xfrm_state;
82struct xfrm_user_sec_ctx;
83struct seq_file;
84
85extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb);
86extern int cap_netlink_recv(struct sk_buff *skb, int cap);
87
88extern unsigned long mmap_min_addr;
89
90
91
92
93#define LSM_SETID_ID 1
94
95
96#define LSM_SETID_RE 2
97
98
99#define LSM_SETID_RES 4
100
101
102#define LSM_SETID_FS 8
103
104
105struct sched_param;
106struct request_sock;
107
108
109#define LSM_UNSAFE_SHARE 1
110#define LSM_UNSAFE_PTRACE 2
111#define LSM_UNSAFE_PTRACE_CAP 4
112
113#ifdef CONFIG_SECURITY
114
115struct security_mnt_opts {
116 char **mnt_opts;
117 int *mnt_opts_flags;
118 int num_mnt_opts;
119};
120
121static inline void security_init_mnt_opts(struct security_mnt_opts *opts)
122{
123 opts->mnt_opts = NULL;
124 opts->mnt_opts_flags = NULL;
125 opts->num_mnt_opts = 0;
126}
127
128static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
129{
130 int i;
131 if (opts->mnt_opts)
132 for (i = 0; i < opts->num_mnt_opts; i++)
133 kfree(opts->mnt_opts[i]);
134 kfree(opts->mnt_opts);
135 opts->mnt_opts = NULL;
136 kfree(opts->mnt_opts_flags);
137 opts->mnt_opts_flags = NULL;
138 opts->num_mnt_opts = 0;
139}
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294struct security_operations {
1295 char name[SECURITY_NAME_MAX + 1];
1296
1297 int (*ptrace_may_access) (struct task_struct *child, unsigned int mode);
1298 int (*ptrace_traceme) (struct task_struct *parent);
1299 int (*capget) (struct task_struct *target,
1300 kernel_cap_t *effective,
1301 kernel_cap_t *inheritable, kernel_cap_t *permitted);
1302 int (*capset_check) (struct task_struct *target,
1303 kernel_cap_t *effective,
1304 kernel_cap_t *inheritable,
1305 kernel_cap_t *permitted);
1306 void (*capset_set) (struct task_struct *target,
1307 kernel_cap_t *effective,
1308 kernel_cap_t *inheritable,
1309 kernel_cap_t *permitted);
1310 int (*capable) (struct task_struct *tsk, int cap);
1311 int (*acct) (struct file *file);
1312 int (*sysctl) (struct ctl_table *table, int op);
1313 int (*quotactl) (int cmds, int type, int id, struct super_block *sb);
1314 int (*quota_on) (struct dentry *dentry);
1315 int (*syslog) (int type);
1316 int (*settime) (struct timespec *ts, struct timezone *tz);
1317 int (*vm_enough_memory) (struct mm_struct *mm, long pages);
1318
1319 int (*bprm_alloc_security) (struct linux_binprm *bprm);
1320 void (*bprm_free_security) (struct linux_binprm *bprm);
1321 void (*bprm_apply_creds) (struct linux_binprm *bprm, int unsafe);
1322 void (*bprm_post_apply_creds) (struct linux_binprm *bprm);
1323 int (*bprm_set_security) (struct linux_binprm *bprm);
1324 int (*bprm_check_security) (struct linux_binprm *bprm);
1325 int (*bprm_secureexec) (struct linux_binprm *bprm);
1326
1327 int (*sb_alloc_security) (struct super_block *sb);
1328 void (*sb_free_security) (struct super_block *sb);
1329 int (*sb_copy_data) (char *orig, char *copy);
1330 int (*sb_kern_mount) (struct super_block *sb, void *data);
1331 int (*sb_show_options) (struct seq_file *m, struct super_block *sb);
1332 int (*sb_statfs) (struct dentry *dentry);
1333 int (*sb_mount) (char *dev_name, struct path *path,
1334 char *type, unsigned long flags, void *data);
1335 int (*sb_check_sb) (struct vfsmount *mnt, struct path *path);
1336 int (*sb_umount) (struct vfsmount *mnt, int flags);
1337 void (*sb_umount_close) (struct vfsmount *mnt);
1338 void (*sb_umount_busy) (struct vfsmount *mnt);
1339 void (*sb_post_remount) (struct vfsmount *mnt,
1340 unsigned long flags, void *data);
1341 void (*sb_post_addmount) (struct vfsmount *mnt,
1342 struct path *mountpoint);
1343 int (*sb_pivotroot) (struct path *old_path,
1344 struct path *new_path);
1345 void (*sb_post_pivotroot) (struct path *old_path,
1346 struct path *new_path);
1347 int (*sb_set_mnt_opts) (struct super_block *sb,
1348 struct security_mnt_opts *opts);
1349 void (*sb_clone_mnt_opts) (const struct super_block *oldsb,
1350 struct super_block *newsb);
1351 int (*sb_parse_opts_str) (char *options, struct security_mnt_opts *opts);
1352
1353 int (*inode_alloc_security) (struct inode *inode);
1354 void (*inode_free_security) (struct inode *inode);
1355 int (*inode_init_security) (struct inode *inode, struct inode *dir,
1356 char **name, void **value, size_t *len);
1357 int (*inode_create) (struct inode *dir,
1358 struct dentry *dentry, int mode);
1359 int (*inode_link) (struct dentry *old_dentry,
1360 struct inode *dir, struct dentry *new_dentry);
1361 int (*inode_unlink) (struct inode *dir, struct dentry *dentry);
1362 int (*inode_symlink) (struct inode *dir,
1363 struct dentry *dentry, const char *old_name);
1364 int (*inode_mkdir) (struct inode *dir, struct dentry *dentry, int mode);
1365 int (*inode_rmdir) (struct inode *dir, struct dentry *dentry);
1366 int (*inode_mknod) (struct inode *dir, struct dentry *dentry,
1367 int mode, dev_t dev);
1368 int (*inode_rename) (struct inode *old_dir, struct dentry *old_dentry,
1369 struct inode *new_dir, struct dentry *new_dentry);
1370 int (*inode_readlink) (struct dentry *dentry);
1371 int (*inode_follow_link) (struct dentry *dentry, struct nameidata *nd);
1372 int (*inode_permission) (struct inode *inode, int mask);
1373 int (*inode_setattr) (struct dentry *dentry, struct iattr *attr);
1374 int (*inode_getattr) (struct vfsmount *mnt, struct dentry *dentry);
1375 void (*inode_delete) (struct inode *inode);
1376 int (*inode_setxattr) (struct dentry *dentry, const char *name,
1377 const void *value, size_t size, int flags);
1378 void (*inode_post_setxattr) (struct dentry *dentry, const char *name,
1379 const void *value, size_t size, int flags);
1380 int (*inode_getxattr) (struct dentry *dentry, const char *name);
1381 int (*inode_listxattr) (struct dentry *dentry);
1382 int (*inode_removexattr) (struct dentry *dentry, const char *name);
1383 int (*inode_need_killpriv) (struct dentry *dentry);
1384 int (*inode_killpriv) (struct dentry *dentry);
1385 int (*inode_getsecurity) (const struct inode *inode, const char *name, void **buffer, bool alloc);
1386 int (*inode_setsecurity) (struct inode *inode, const char *name, const void *value, size_t size, int flags);
1387 int (*inode_listsecurity) (struct inode *inode, char *buffer, size_t buffer_size);
1388 void (*inode_getsecid) (const struct inode *inode, u32 *secid);
1389
1390 int (*file_permission) (struct file *file, int mask);
1391 int (*file_alloc_security) (struct file *file);
1392 void (*file_free_security) (struct file *file);
1393 int (*file_ioctl) (struct file *file, unsigned int cmd,
1394 unsigned long arg);
1395 int (*file_mmap) (struct file *file,
1396 unsigned long reqprot, unsigned long prot,
1397 unsigned long flags, unsigned long addr,
1398 unsigned long addr_only);
1399 int (*file_mprotect) (struct vm_area_struct *vma,
1400 unsigned long reqprot,
1401 unsigned long prot);
1402 int (*file_lock) (struct file *file, unsigned int cmd);
1403 int (*file_fcntl) (struct file *file, unsigned int cmd,
1404 unsigned long arg);
1405 int (*file_set_fowner) (struct file *file);
1406 int (*file_send_sigiotask) (struct task_struct *tsk,
1407 struct fown_struct *fown, int sig);
1408 int (*file_receive) (struct file *file);
1409 int (*dentry_open) (struct file *file);
1410
1411 int (*task_create) (unsigned long clone_flags);
1412 int (*task_alloc_security) (struct task_struct *p);
1413 void (*task_free_security) (struct task_struct *p);
1414 int (*task_setuid) (uid_t id0, uid_t id1, uid_t id2, int flags);
1415 int (*task_post_setuid) (uid_t old_ruid ,
1416 uid_t old_euid, uid_t old_suid, int flags);
1417 int (*task_setgid) (gid_t id0, gid_t id1, gid_t id2, int flags);
1418 int (*task_setpgid) (struct task_struct *p, pid_t pgid);
1419 int (*task_getpgid) (struct task_struct *p);
1420 int (*task_getsid) (struct task_struct *p);
1421 void (*task_getsecid) (struct task_struct *p, u32 *secid);
1422 int (*task_setgroups) (struct group_info *group_info);
1423 int (*task_setnice) (struct task_struct *p, int nice);
1424 int (*task_setioprio) (struct task_struct *p, int ioprio);
1425 int (*task_getioprio) (struct task_struct *p);
1426 int (*task_setrlimit) (unsigned int resource, struct rlimit *new_rlim);
1427 int (*task_setscheduler) (struct task_struct *p, int policy,
1428 struct sched_param *lp);
1429 int (*task_getscheduler) (struct task_struct *p);
1430 int (*task_movememory) (struct task_struct *p);
1431 int (*task_kill) (struct task_struct *p,
1432 struct siginfo *info, int sig, u32 secid);
1433 int (*task_wait) (struct task_struct *p);
1434 int (*task_prctl) (int option, unsigned long arg2,
1435 unsigned long arg3, unsigned long arg4,
1436 unsigned long arg5, long *rc_p);
1437 void (*task_reparent_to_init) (struct task_struct *p);
1438 void (*task_to_inode) (struct task_struct *p, struct inode *inode);
1439
1440 int (*ipc_permission) (struct kern_ipc_perm *ipcp, short flag);
1441 void (*ipc_getsecid) (struct kern_ipc_perm *ipcp, u32 *secid);
1442
1443 int (*msg_msg_alloc_security) (struct msg_msg *msg);
1444 void (*msg_msg_free_security) (struct msg_msg *msg);
1445
1446 int (*msg_queue_alloc_security) (struct msg_queue *msq);
1447 void (*msg_queue_free_security) (struct msg_queue *msq);
1448 int (*msg_queue_associate) (struct msg_queue *msq, int msqflg);
1449 int (*msg_queue_msgctl) (struct msg_queue *msq, int cmd);
1450 int (*msg_queue_msgsnd) (struct msg_queue *msq,
1451 struct msg_msg *msg, int msqflg);
1452 int (*msg_queue_msgrcv) (struct msg_queue *msq,
1453 struct msg_msg *msg,
1454 struct task_struct *target,
1455 long type, int mode);
1456
1457 int (*shm_alloc_security) (struct shmid_kernel *shp);
1458 void (*shm_free_security) (struct shmid_kernel *shp);
1459 int (*shm_associate) (struct shmid_kernel *shp, int shmflg);
1460 int (*shm_shmctl) (struct shmid_kernel *shp, int cmd);
1461 int (*shm_shmat) (struct shmid_kernel *shp,
1462 char __user *shmaddr, int shmflg);
1463
1464 int (*sem_alloc_security) (struct sem_array *sma);
1465 void (*sem_free_security) (struct sem_array *sma);
1466 int (*sem_associate) (struct sem_array *sma, int semflg);
1467 int (*sem_semctl) (struct sem_array *sma, int cmd);
1468 int (*sem_semop) (struct sem_array *sma,
1469 struct sembuf *sops, unsigned nsops, int alter);
1470
1471 int (*netlink_send) (struct sock *sk, struct sk_buff *skb);
1472 int (*netlink_recv) (struct sk_buff *skb, int cap);
1473
1474 void (*d_instantiate) (struct dentry *dentry, struct inode *inode);
1475
1476 int (*getprocattr) (struct task_struct *p, char *name, char **value);
1477 int (*setprocattr) (struct task_struct *p, char *name, void *value, size_t size);
1478 int (*secid_to_secctx) (u32 secid, char **secdata, u32 *seclen);
1479 int (*secctx_to_secid) (const char *secdata, u32 seclen, u32 *secid);
1480 void (*release_secctx) (char *secdata, u32 seclen);
1481
1482#ifdef CONFIG_SECURITY_NETWORK
1483 int (*unix_stream_connect) (struct socket *sock,
1484 struct socket *other, struct sock *newsk);
1485 int (*unix_may_send) (struct socket *sock, struct socket *other);
1486
1487 int (*socket_create) (int family, int type, int protocol, int kern);
1488 int (*socket_post_create) (struct socket *sock, int family,
1489 int type, int protocol, int kern);
1490 int (*socket_bind) (struct socket *sock,
1491 struct sockaddr *address, int addrlen);
1492 int (*socket_connect) (struct socket *sock,
1493 struct sockaddr *address, int addrlen);
1494 int (*socket_listen) (struct socket *sock, int backlog);
1495 int (*socket_accept) (struct socket *sock, struct socket *newsock);
1496 void (*socket_post_accept) (struct socket *sock,
1497 struct socket *newsock);
1498 int (*socket_sendmsg) (struct socket *sock,
1499 struct msghdr *msg, int size);
1500 int (*socket_recvmsg) (struct socket *sock,
1501 struct msghdr *msg, int size, int flags);
1502 int (*socket_getsockname) (struct socket *sock);
1503 int (*socket_getpeername) (struct socket *sock);
1504 int (*socket_getsockopt) (struct socket *sock, int level, int optname);
1505 int (*socket_setsockopt) (struct socket *sock, int level, int optname);
1506 int (*socket_shutdown) (struct socket *sock, int how);
1507 int (*socket_sock_rcv_skb) (struct sock *sk, struct sk_buff *skb);
1508 int (*socket_getpeersec_stream) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len);
1509 int (*socket_getpeersec_dgram) (struct socket *sock, struct sk_buff *skb, u32 *secid);
1510 int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority);
1511 void (*sk_free_security) (struct sock *sk);
1512 void (*sk_clone_security) (const struct sock *sk, struct sock *newsk);
1513 void (*sk_getsecid) (struct sock *sk, u32 *secid);
1514 void (*sock_graft) (struct sock *sk, struct socket *parent);
1515 int (*inet_conn_request) (struct sock *sk, struct sk_buff *skb,
1516 struct request_sock *req);
1517 void (*inet_csk_clone) (struct sock *newsk, const struct request_sock *req);
1518 void (*inet_conn_established) (struct sock *sk, struct sk_buff *skb);
1519 void (*req_classify_flow) (const struct request_sock *req, struct flowi *fl);
1520#endif
1521
1522#ifdef CONFIG_SECURITY_NETWORK_XFRM
1523 int (*xfrm_policy_alloc_security) (struct xfrm_sec_ctx **ctxp,
1524 struct xfrm_user_sec_ctx *sec_ctx);
1525 int (*xfrm_policy_clone_security) (struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctx);
1526 void (*xfrm_policy_free_security) (struct xfrm_sec_ctx *ctx);
1527 int (*xfrm_policy_delete_security) (struct xfrm_sec_ctx *ctx);
1528 int (*xfrm_state_alloc_security) (struct xfrm_state *x,
1529 struct xfrm_user_sec_ctx *sec_ctx,
1530 u32 secid);
1531 void (*xfrm_state_free_security) (struct xfrm_state *x);
1532 int (*xfrm_state_delete_security) (struct xfrm_state *x);
1533 int (*xfrm_policy_lookup) (struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
1534 int (*xfrm_state_pol_flow_match) (struct xfrm_state *x,
1535 struct xfrm_policy *xp,
1536 struct flowi *fl);
1537 int (*xfrm_decode_session) (struct sk_buff *skb, u32 *secid, int ckall);
1538#endif
1539
1540
1541#ifdef CONFIG_KEYS
1542 int (*key_alloc) (struct key *key, struct task_struct *tsk, unsigned long flags);
1543 void (*key_free) (struct key *key);
1544 int (*key_permission) (key_ref_t key_ref,
1545 struct task_struct *context,
1546 key_perm_t perm);
1547 int (*key_getsecurity)(struct key *key, char **_buffer);
1548#endif
1549
1550#ifdef CONFIG_AUDIT
1551 int (*audit_rule_init) (u32 field, u32 op, char *rulestr, void **lsmrule);
1552 int (*audit_rule_known) (struct audit_krule *krule);
1553 int (*audit_rule_match) (u32 secid, u32 field, u32 op, void *lsmrule,
1554 struct audit_context *actx);
1555 void (*audit_rule_free) (void *lsmrule);
1556#endif
1557};
1558
1559
1560extern int security_init(void);
1561extern int security_module_enable(struct security_operations *ops);
1562extern int register_security(struct security_operations *ops);
1563
1564
1565int security_ptrace_may_access(struct task_struct *child, unsigned int mode);
1566int security_ptrace_traceme(struct task_struct *parent);
1567int security_capget(struct task_struct *target,
1568 kernel_cap_t *effective,
1569 kernel_cap_t *inheritable,
1570 kernel_cap_t *permitted);
1571int security_capset_check(struct task_struct *target,
1572 kernel_cap_t *effective,
1573 kernel_cap_t *inheritable,
1574 kernel_cap_t *permitted);
1575void security_capset_set(struct task_struct *target,
1576 kernel_cap_t *effective,
1577 kernel_cap_t *inheritable,
1578 kernel_cap_t *permitted);
1579int security_capable(struct task_struct *tsk, int cap);
1580int security_acct(struct file *file);
1581int security_sysctl(struct ctl_table *table, int op);
1582int security_quotactl(int cmds, int type, int id, struct super_block *sb);
1583int security_quota_on(struct dentry *dentry);
1584int security_syslog(int type);
1585int security_settime(struct timespec *ts, struct timezone *tz);
1586int security_vm_enough_memory(long pages);
1587int security_vm_enough_memory_mm(struct mm_struct *mm, long pages);
1588int security_vm_enough_memory_kern(long pages);
1589int security_bprm_alloc(struct linux_binprm *bprm);
1590void security_bprm_free(struct linux_binprm *bprm);
1591void security_bprm_apply_creds(struct linux_binprm *bprm, int unsafe);
1592void security_bprm_post_apply_creds(struct linux_binprm *bprm);
1593int security_bprm_set(struct linux_binprm *bprm);
1594int security_bprm_check(struct linux_binprm *bprm);
1595int security_bprm_secureexec(struct linux_binprm *bprm);
1596int security_sb_alloc(struct super_block *sb);
1597void security_sb_free(struct super_block *sb);
1598int security_sb_copy_data(char *orig, char *copy);
1599int security_sb_kern_mount(struct super_block *sb, void *data);
1600int security_sb_show_options(struct seq_file *m, struct super_block *sb);
1601int security_sb_statfs(struct dentry *dentry);
1602int security_sb_mount(char *dev_name, struct path *path,
1603 char *type, unsigned long flags, void *data);
1604int security_sb_check_sb(struct vfsmount *mnt, struct path *path);
1605int security_sb_umount(struct vfsmount *mnt, int flags);
1606void security_sb_umount_close(struct vfsmount *mnt);
1607void security_sb_umount_busy(struct vfsmount *mnt);
1608void security_sb_post_remount(struct vfsmount *mnt, unsigned long flags, void *data);
1609void security_sb_post_addmount(struct vfsmount *mnt, struct path *mountpoint);
1610int security_sb_pivotroot(struct path *old_path, struct path *new_path);
1611void security_sb_post_pivotroot(struct path *old_path, struct path *new_path);
1612int security_sb_set_mnt_opts(struct super_block *sb, struct security_mnt_opts *opts);
1613void security_sb_clone_mnt_opts(const struct super_block *oldsb,
1614 struct super_block *newsb);
1615int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts);
1616
1617int security_inode_alloc(struct inode *inode);
1618void security_inode_free(struct inode *inode);
1619int security_inode_init_security(struct inode *inode, struct inode *dir,
1620 char **name, void **value, size_t *len);
1621int security_inode_create(struct inode *dir, struct dentry *dentry, int mode);
1622int security_inode_link(struct dentry *old_dentry, struct inode *dir,
1623 struct dentry *new_dentry);
1624int security_inode_unlink(struct inode *dir, struct dentry *dentry);
1625int security_inode_symlink(struct inode *dir, struct dentry *dentry,
1626 const char *old_name);
1627int security_inode_mkdir(struct inode *dir, struct dentry *dentry, int mode);
1628int security_inode_rmdir(struct inode *dir, struct dentry *dentry);
1629int security_inode_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev);
1630int security_inode_rename(struct inode *old_dir, struct dentry *old_dentry,
1631 struct inode *new_dir, struct dentry *new_dentry);
1632int security_inode_readlink(struct dentry *dentry);
1633int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd);
1634int security_inode_permission(struct inode *inode, int mask);
1635int security_inode_setattr(struct dentry *dentry, struct iattr *attr);
1636int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry);
1637void security_inode_delete(struct inode *inode);
1638int security_inode_setxattr(struct dentry *dentry, const char *name,
1639 const void *value, size_t size, int flags);
1640void security_inode_post_setxattr(struct dentry *dentry, const char *name,
1641 const void *value, size_t size, int flags);
1642int security_inode_getxattr(struct dentry *dentry, const char *name);
1643int security_inode_listxattr(struct dentry *dentry);
1644int security_inode_removexattr(struct dentry *dentry, const char *name);
1645int security_inode_need_killpriv(struct dentry *dentry);
1646int security_inode_killpriv(struct dentry *dentry);
1647int security_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc);
1648int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags);
1649int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size);
1650void security_inode_getsecid(const struct inode *inode, u32 *secid);
1651int security_file_permission(struct file *file, int mask);
1652int security_file_alloc(struct file *file);
1653void security_file_free(struct file *file);
1654int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
1655int security_file_mmap(struct file *file, unsigned long reqprot,
1656 unsigned long prot, unsigned long flags,
1657 unsigned long addr, unsigned long addr_only);
1658int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
1659 unsigned long prot);
1660int security_file_lock(struct file *file, unsigned int cmd);
1661int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg);
1662int security_file_set_fowner(struct file *file);
1663int security_file_send_sigiotask(struct task_struct *tsk,
1664 struct fown_struct *fown, int sig);
1665int security_file_receive(struct file *file);
1666int security_dentry_open(struct file *file);
1667int security_task_create(unsigned long clone_flags);
1668int security_task_alloc(struct task_struct *p);
1669void security_task_free(struct task_struct *p);
1670int security_task_setuid(uid_t id0, uid_t id1, uid_t id2, int flags);
1671int security_task_post_setuid(uid_t old_ruid, uid_t old_euid,
1672 uid_t old_suid, int flags);
1673int security_task_setgid(gid_t id0, gid_t id1, gid_t id2, int flags);
1674int security_task_setpgid(struct task_struct *p, pid_t pgid);
1675int security_task_getpgid(struct task_struct *p);
1676int security_task_getsid(struct task_struct *p);
1677void security_task_getsecid(struct task_struct *p, u32 *secid);
1678int security_task_setgroups(struct group_info *group_info);
1679int security_task_setnice(struct task_struct *p, int nice);
1680int security_task_setioprio(struct task_struct *p, int ioprio);
1681int security_task_getioprio(struct task_struct *p);
1682int security_task_setrlimit(unsigned int resource, struct rlimit *new_rlim);
1683int security_task_setscheduler(struct task_struct *p,
1684 int policy, struct sched_param *lp);
1685int security_task_getscheduler(struct task_struct *p);
1686int security_task_movememory(struct task_struct *p);
1687int security_task_kill(struct task_struct *p, struct siginfo *info,
1688 int sig, u32 secid);
1689int security_task_wait(struct task_struct *p);
1690int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
1691 unsigned long arg4, unsigned long arg5, long *rc_p);
1692void security_task_reparent_to_init(struct task_struct *p);
1693void security_task_to_inode(struct task_struct *p, struct inode *inode);
1694int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag);
1695void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid);
1696int security_msg_msg_alloc(struct msg_msg *msg);
1697void security_msg_msg_free(struct msg_msg *msg);
1698int security_msg_queue_alloc(struct msg_queue *msq);
1699void security_msg_queue_free(struct msg_queue *msq);
1700int security_msg_queue_associate(struct msg_queue *msq, int msqflg);
1701int security_msg_queue_msgctl(struct msg_queue *msq, int cmd);
1702int security_msg_queue_msgsnd(struct msg_queue *msq,
1703 struct msg_msg *msg, int msqflg);
1704int security_msg_queue_msgrcv(struct msg_queue *msq, struct msg_msg *msg,
1705 struct task_struct *target, long type, int mode);
1706int security_shm_alloc(struct shmid_kernel *shp);
1707void security_shm_free(struct shmid_kernel *shp);
1708int security_shm_associate(struct shmid_kernel *shp, int shmflg);
1709int security_shm_shmctl(struct shmid_kernel *shp, int cmd);
1710int security_shm_shmat(struct shmid_kernel *shp, char __user *shmaddr, int shmflg);
1711int security_sem_alloc(struct sem_array *sma);
1712void security_sem_free(struct sem_array *sma);
1713int security_sem_associate(struct sem_array *sma, int semflg);
1714int security_sem_semctl(struct sem_array *sma, int cmd);
1715int security_sem_semop(struct sem_array *sma, struct sembuf *sops,
1716 unsigned nsops, int alter);
1717void security_d_instantiate(struct dentry *dentry, struct inode *inode);
1718int security_getprocattr(struct task_struct *p, char *name, char **value);
1719int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size);
1720int security_netlink_send(struct sock *sk, struct sk_buff *skb);
1721int security_netlink_recv(struct sk_buff *skb, int cap);
1722int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen);
1723int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid);
1724void security_release_secctx(char *secdata, u32 seclen);
1725
1726#else
1727struct security_mnt_opts {
1728};
1729
1730static inline void security_init_mnt_opts(struct security_mnt_opts *opts)
1731{
1732}
1733
1734static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
1735{
1736}
1737
1738
1739
1740
1741
1742
1743static inline int security_init(void)
1744{
1745 return 0;
1746}
1747
1748static inline int security_ptrace_may_access(struct task_struct *child,
1749 unsigned int mode)
1750{
1751 return cap_ptrace_may_access(child, mode);
1752}
1753
1754static inline int security_ptrace_traceme(struct task_struct *parent)
1755{
1756 return cap_ptrace_traceme(parent);
1757}
1758
1759static inline int security_capget(struct task_struct *target,
1760 kernel_cap_t *effective,
1761 kernel_cap_t *inheritable,
1762 kernel_cap_t *permitted)
1763{
1764 return cap_capget(target, effective, inheritable, permitted);
1765}
1766
1767static inline int security_capset_check(struct task_struct *target,
1768 kernel_cap_t *effective,
1769 kernel_cap_t *inheritable,
1770 kernel_cap_t *permitted)
1771{
1772 return cap_capset_check(target, effective, inheritable, permitted);
1773}
1774
1775static inline void security_capset_set(struct task_struct *target,
1776 kernel_cap_t *effective,
1777 kernel_cap_t *inheritable,
1778 kernel_cap_t *permitted)
1779{
1780 cap_capset_set(target, effective, inheritable, permitted);
1781}
1782
1783static inline int security_capable(struct task_struct *tsk, int cap)
1784{
1785 return cap_capable(tsk, cap);
1786}
1787
1788static inline int security_acct(struct file *file)
1789{
1790 return 0;
1791}
1792
1793static inline int security_sysctl(struct ctl_table *table, int op)
1794{
1795 return 0;
1796}
1797
1798static inline int security_quotactl(int cmds, int type, int id,
1799 struct super_block *sb)
1800{
1801 return 0;
1802}
1803
1804static inline int security_quota_on(struct dentry *dentry)
1805{
1806 return 0;
1807}
1808
1809static inline int security_syslog(int type)
1810{
1811 return cap_syslog(type);
1812}
1813
1814static inline int security_settime(struct timespec *ts, struct timezone *tz)
1815{
1816 return cap_settime(ts, tz);
1817}
1818
1819static inline int security_vm_enough_memory(long pages)
1820{
1821 WARN_ON(current->mm == NULL);
1822 return cap_vm_enough_memory(current->mm, pages);
1823}
1824
1825static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
1826{
1827 WARN_ON(mm == NULL);
1828 return cap_vm_enough_memory(mm, pages);
1829}
1830
1831static inline int security_vm_enough_memory_kern(long pages)
1832{
1833
1834
1835 return cap_vm_enough_memory(current->mm, pages);
1836}
1837
1838static inline int security_bprm_alloc(struct linux_binprm *bprm)
1839{
1840 return 0;
1841}
1842
1843static inline void security_bprm_free(struct linux_binprm *bprm)
1844{ }
1845
1846static inline void security_bprm_apply_creds(struct linux_binprm *bprm, int unsafe)
1847{
1848 cap_bprm_apply_creds(bprm, unsafe);
1849}
1850
1851static inline void security_bprm_post_apply_creds(struct linux_binprm *bprm)
1852{
1853 return;
1854}
1855
1856static inline int security_bprm_set(struct linux_binprm *bprm)
1857{
1858 return cap_bprm_set_security(bprm);
1859}
1860
1861static inline int security_bprm_check(struct linux_binprm *bprm)
1862{
1863 return 0;
1864}
1865
1866static inline int security_bprm_secureexec(struct linux_binprm *bprm)
1867{
1868 return cap_bprm_secureexec(bprm);
1869}
1870
1871static inline int security_sb_alloc(struct super_block *sb)
1872{
1873 return 0;
1874}
1875
1876static inline void security_sb_free(struct super_block *sb)
1877{ }
1878
1879static inline int security_sb_copy_data(char *orig, char *copy)
1880{
1881 return 0;
1882}
1883
1884static inline int security_sb_kern_mount(struct super_block *sb, void *data)
1885{
1886 return 0;
1887}
1888
1889static inline int security_sb_show_options(struct seq_file *m,
1890 struct super_block *sb)
1891{
1892 return 0;
1893}
1894
1895static inline int security_sb_statfs(struct dentry *dentry)
1896{
1897 return 0;
1898}
1899
1900static inline int security_sb_mount(char *dev_name, struct path *path,
1901 char *type, unsigned long flags,
1902 void *data)
1903{
1904 return 0;
1905}
1906
1907static inline int security_sb_check_sb(struct vfsmount *mnt,
1908 struct path *path)
1909{
1910 return 0;
1911}
1912
1913static inline int security_sb_umount(struct vfsmount *mnt, int flags)
1914{
1915 return 0;
1916}
1917
1918static inline void security_sb_umount_close(struct vfsmount *mnt)
1919{ }
1920
1921static inline void security_sb_umount_busy(struct vfsmount *mnt)
1922{ }
1923
1924static inline void security_sb_post_remount(struct vfsmount *mnt,
1925 unsigned long flags, void *data)
1926{ }
1927
1928static inline void security_sb_post_addmount(struct vfsmount *mnt,
1929 struct path *mountpoint)
1930{ }
1931
1932static inline int security_sb_pivotroot(struct path *old_path,
1933 struct path *new_path)
1934{
1935 return 0;
1936}
1937
1938static inline void security_sb_post_pivotroot(struct path *old_path,
1939 struct path *new_path)
1940{ }
1941
1942static inline int security_sb_set_mnt_opts(struct super_block *sb,
1943 struct security_mnt_opts *opts)
1944{
1945 return 0;
1946}
1947
1948static inline void security_sb_clone_mnt_opts(const struct super_block *oldsb,
1949 struct super_block *newsb)
1950{ }
1951
1952static inline int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts)
1953{
1954 return 0;
1955}
1956
1957static inline int security_inode_alloc(struct inode *inode)
1958{
1959 return 0;
1960}
1961
1962static inline void security_inode_free(struct inode *inode)
1963{ }
1964
1965static inline int security_inode_init_security(struct inode *inode,
1966 struct inode *dir,
1967 char **name,
1968 void **value,
1969 size_t *len)
1970{
1971 return -EOPNOTSUPP;
1972}
1973
1974static inline int security_inode_create(struct inode *dir,
1975 struct dentry *dentry,
1976 int mode)
1977{
1978 return 0;
1979}
1980
1981static inline int security_inode_link(struct dentry *old_dentry,
1982 struct inode *dir,
1983 struct dentry *new_dentry)
1984{
1985 return 0;
1986}
1987
1988static inline int security_inode_unlink(struct inode *dir,
1989 struct dentry *dentry)
1990{
1991 return 0;
1992}
1993
1994static inline int security_inode_symlink(struct inode *dir,
1995 struct dentry *dentry,
1996 const char *old_name)
1997{
1998 return 0;
1999}
2000
2001static inline int security_inode_mkdir(struct inode *dir,
2002 struct dentry *dentry,
2003 int mode)
2004{
2005 return 0;
2006}
2007
2008static inline int security_inode_rmdir(struct inode *dir,
2009 struct dentry *dentry)
2010{
2011 return 0;
2012}
2013
2014static inline int security_inode_mknod(struct inode *dir,
2015 struct dentry *dentry,
2016 int mode, dev_t dev)
2017{
2018 return 0;
2019}
2020
2021static inline int security_inode_rename(struct inode *old_dir,
2022 struct dentry *old_dentry,
2023 struct inode *new_dir,
2024 struct dentry *new_dentry)
2025{
2026 return 0;
2027}
2028
2029static inline int security_inode_readlink(struct dentry *dentry)
2030{
2031 return 0;
2032}
2033
2034static inline int security_inode_follow_link(struct dentry *dentry,
2035 struct nameidata *nd)
2036{
2037 return 0;
2038}
2039
2040static inline int security_inode_permission(struct inode *inode, int mask)
2041{
2042 return 0;
2043}
2044
2045static inline int security_inode_setattr(struct dentry *dentry,
2046 struct iattr *attr)
2047{
2048 return 0;
2049}
2050
2051static inline int security_inode_getattr(struct vfsmount *mnt,
2052 struct dentry *dentry)
2053{
2054 return 0;
2055}
2056
2057static inline void security_inode_delete(struct inode *inode)
2058{ }
2059
2060static inline int security_inode_setxattr(struct dentry *dentry,
2061 const char *name, const void *value, size_t size, int flags)
2062{
2063 return cap_inode_setxattr(dentry, name, value, size, flags);
2064}
2065
2066static inline void security_inode_post_setxattr(struct dentry *dentry,
2067 const char *name, const void *value, size_t size, int flags)
2068{ }
2069
2070static inline int security_inode_getxattr(struct dentry *dentry,
2071 const char *name)
2072{
2073 return 0;
2074}
2075
2076static inline int security_inode_listxattr(struct dentry *dentry)
2077{
2078 return 0;
2079}
2080
2081static inline int security_inode_removexattr(struct dentry *dentry,
2082 const char *name)
2083{
2084 return cap_inode_removexattr(dentry, name);
2085}
2086
2087static inline int security_inode_need_killpriv(struct dentry *dentry)
2088{
2089 return cap_inode_need_killpriv(dentry);
2090}
2091
2092static inline int security_inode_killpriv(struct dentry *dentry)
2093{
2094 return cap_inode_killpriv(dentry);
2095}
2096
2097static inline int security_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc)
2098{
2099 return -EOPNOTSUPP;
2100}
2101
2102static inline int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags)
2103{
2104 return -EOPNOTSUPP;
2105}
2106
2107static inline int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size)
2108{
2109 return 0;
2110}
2111
2112static inline void security_inode_getsecid(const struct inode *inode, u32 *secid)
2113{
2114 *secid = 0;
2115}
2116
2117static inline int security_file_permission(struct file *file, int mask)
2118{
2119 return 0;
2120}
2121
2122static inline int security_file_alloc(struct file *file)
2123{
2124 return 0;
2125}
2126
2127static inline void security_file_free(struct file *file)
2128{ }
2129
2130static inline int security_file_ioctl(struct file *file, unsigned int cmd,
2131 unsigned long arg)
2132{
2133 return 0;
2134}
2135
2136static inline int security_file_mmap(struct file *file, unsigned long reqprot,
2137 unsigned long prot,
2138 unsigned long flags,
2139 unsigned long addr,
2140 unsigned long addr_only)
2141{
2142 return 0;
2143}
2144
2145static inline int security_file_mprotect(struct vm_area_struct *vma,
2146 unsigned long reqprot,
2147 unsigned long prot)
2148{
2149 return 0;
2150}
2151
2152static inline int security_file_lock(struct file *file, unsigned int cmd)
2153{
2154 return 0;
2155}
2156
2157static inline int security_file_fcntl(struct file *file, unsigned int cmd,
2158 unsigned long arg)
2159{
2160 return 0;
2161}
2162
2163static inline int security_file_set_fowner(struct file *file)
2164{
2165 return 0;
2166}
2167
2168static inline int security_file_send_sigiotask(struct task_struct *tsk,
2169 struct fown_struct *fown,
2170 int sig)
2171{
2172 return 0;
2173}
2174
2175static inline int security_file_receive(struct file *file)
2176{
2177 return 0;
2178}
2179
2180static inline int security_dentry_open(struct file *file)
2181{
2182 return 0;
2183}
2184
2185static inline int security_task_create(unsigned long clone_flags)
2186{
2187 return 0;
2188}
2189
2190static inline int security_task_alloc(struct task_struct *p)
2191{
2192 return 0;
2193}
2194
2195static inline void security_task_free(struct task_struct *p)
2196{ }
2197
2198static inline int security_task_setuid(uid_t id0, uid_t id1, uid_t id2,
2199 int flags)
2200{
2201 return 0;
2202}
2203
2204static inline int security_task_post_setuid(uid_t old_ruid, uid_t old_euid,
2205 uid_t old_suid, int flags)
2206{
2207 return cap_task_post_setuid(old_ruid, old_euid, old_suid, flags);
2208}
2209
2210static inline int security_task_setgid(gid_t id0, gid_t id1, gid_t id2,
2211 int flags)
2212{
2213 return 0;
2214}
2215
2216static inline int security_task_setpgid(struct task_struct *p, pid_t pgid)
2217{
2218 return 0;
2219}
2220
2221static inline int security_task_getpgid(struct task_struct *p)
2222{
2223 return 0;
2224}
2225
2226static inline int security_task_getsid(struct task_struct *p)
2227{
2228 return 0;
2229}
2230
2231static inline void security_task_getsecid(struct task_struct *p, u32 *secid)
2232{
2233 *secid = 0;
2234}
2235
2236static inline int security_task_setgroups(struct group_info *group_info)
2237{
2238 return 0;
2239}
2240
2241static inline int security_task_setnice(struct task_struct *p, int nice)
2242{
2243 return cap_task_setnice(p, nice);
2244}
2245
2246static inline int security_task_setioprio(struct task_struct *p, int ioprio)
2247{
2248 return cap_task_setioprio(p, ioprio);
2249}
2250
2251static inline int security_task_getioprio(struct task_struct *p)
2252{
2253 return 0;
2254}
2255
2256static inline int security_task_setrlimit(unsigned int resource,
2257 struct rlimit *new_rlim)
2258{
2259 return 0;
2260}
2261
2262static inline int security_task_setscheduler(struct task_struct *p,
2263 int policy,
2264 struct sched_param *lp)
2265{
2266 return cap_task_setscheduler(p, policy, lp);
2267}
2268
2269static inline int security_task_getscheduler(struct task_struct *p)
2270{
2271 return 0;
2272}
2273
2274static inline int security_task_movememory(struct task_struct *p)
2275{
2276 return 0;
2277}
2278
2279static inline int security_task_kill(struct task_struct *p,
2280 struct siginfo *info, int sig,
2281 u32 secid)
2282{
2283 return 0;
2284}
2285
2286static inline int security_task_wait(struct task_struct *p)
2287{
2288 return 0;
2289}
2290
2291static inline int security_task_prctl(int option, unsigned long arg2,
2292 unsigned long arg3,
2293 unsigned long arg4,
2294 unsigned long arg5, long *rc_p)
2295{
2296 return cap_task_prctl(option, arg2, arg3, arg3, arg5, rc_p);
2297}
2298
2299static inline void security_task_reparent_to_init(struct task_struct *p)
2300{
2301 cap_task_reparent_to_init(p);
2302}
2303
2304static inline void security_task_to_inode(struct task_struct *p, struct inode *inode)
2305{ }
2306
2307static inline int security_ipc_permission(struct kern_ipc_perm *ipcp,
2308 short flag)
2309{
2310 return 0;
2311}
2312
2313static inline void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid)
2314{
2315 *secid = 0;
2316}
2317
2318static inline int security_msg_msg_alloc(struct msg_msg *msg)
2319{
2320 return 0;
2321}
2322
2323static inline void security_msg_msg_free(struct msg_msg *msg)
2324{ }
2325
2326static inline int security_msg_queue_alloc(struct msg_queue *msq)
2327{
2328 return 0;
2329}
2330
2331static inline void security_msg_queue_free(struct msg_queue *msq)
2332{ }
2333
2334static inline int security_msg_queue_associate(struct msg_queue *msq,
2335 int msqflg)
2336{
2337 return 0;
2338}
2339
2340static inline int security_msg_queue_msgctl(struct msg_queue *msq, int cmd)
2341{
2342 return 0;
2343}
2344
2345static inline int security_msg_queue_msgsnd(struct msg_queue *msq,
2346 struct msg_msg *msg, int msqflg)
2347{
2348 return 0;
2349}
2350
2351static inline int security_msg_queue_msgrcv(struct msg_queue *msq,
2352 struct msg_msg *msg,
2353 struct task_struct *target,
2354 long type, int mode)
2355{
2356 return 0;
2357}
2358
2359static inline int security_shm_alloc(struct shmid_kernel *shp)
2360{
2361 return 0;
2362}
2363
2364static inline void security_shm_free(struct shmid_kernel *shp)
2365{ }
2366
2367static inline int security_shm_associate(struct shmid_kernel *shp,
2368 int shmflg)
2369{
2370 return 0;
2371}
2372
2373static inline int security_shm_shmctl(struct shmid_kernel *shp, int cmd)
2374{
2375 return 0;
2376}
2377
2378static inline int security_shm_shmat(struct shmid_kernel *shp,
2379 char __user *shmaddr, int shmflg)
2380{
2381 return 0;
2382}
2383
2384static inline int security_sem_alloc(struct sem_array *sma)
2385{
2386 return 0;
2387}
2388
2389static inline void security_sem_free(struct sem_array *sma)
2390{ }
2391
2392static inline int security_sem_associate(struct sem_array *sma, int semflg)
2393{
2394 return 0;
2395}
2396
2397static inline int security_sem_semctl(struct sem_array *sma, int cmd)
2398{
2399 return 0;
2400}
2401
2402static inline int security_sem_semop(struct sem_array *sma,
2403 struct sembuf *sops, unsigned nsops,
2404 int alter)
2405{
2406 return 0;
2407}
2408
2409static inline void security_d_instantiate(struct dentry *dentry, struct inode *inode)
2410{ }
2411
2412static inline int security_getprocattr(struct task_struct *p, char *name, char **value)
2413{
2414 return -EINVAL;
2415}
2416
2417static inline int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size)
2418{
2419 return -EINVAL;
2420}
2421
2422static inline int security_netlink_send(struct sock *sk, struct sk_buff *skb)
2423{
2424 return cap_netlink_send(sk, skb);
2425}
2426
2427static inline int security_netlink_recv(struct sk_buff *skb, int cap)
2428{
2429 return cap_netlink_recv(skb, cap);
2430}
2431
2432static inline int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
2433{
2434 return -EOPNOTSUPP;
2435}
2436
2437static inline int security_secctx_to_secid(const char *secdata,
2438 u32 seclen,
2439 u32 *secid)
2440{
2441 return -EOPNOTSUPP;
2442}
2443
2444static inline void security_release_secctx(char *secdata, u32 seclen)
2445{
2446}
2447#endif
2448
2449#ifdef CONFIG_SECURITY_NETWORK
2450
2451int security_unix_stream_connect(struct socket *sock, struct socket *other,
2452 struct sock *newsk);
2453int security_unix_may_send(struct socket *sock, struct socket *other);
2454int security_socket_create(int family, int type, int protocol, int kern);
2455int security_socket_post_create(struct socket *sock, int family,
2456 int type, int protocol, int kern);
2457int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen);
2458int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen);
2459int security_socket_listen(struct socket *sock, int backlog);
2460int security_socket_accept(struct socket *sock, struct socket *newsock);
2461void security_socket_post_accept(struct socket *sock, struct socket *newsock);
2462int security_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size);
2463int security_socket_recvmsg(struct socket *sock, struct msghdr *msg,
2464 int size, int flags);
2465int security_socket_getsockname(struct socket *sock);
2466int security_socket_getpeername(struct socket *sock);
2467int security_socket_getsockopt(struct socket *sock, int level, int optname);
2468int security_socket_setsockopt(struct socket *sock, int level, int optname);
2469int security_socket_shutdown(struct socket *sock, int how);
2470int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb);
2471int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,
2472 int __user *optlen, unsigned len);
2473int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid);
2474int security_sk_alloc(struct sock *sk, int family, gfp_t priority);
2475void security_sk_free(struct sock *sk);
2476void security_sk_clone(const struct sock *sk, struct sock *newsk);
2477void security_sk_classify_flow(struct sock *sk, struct flowi *fl);
2478void security_req_classify_flow(const struct request_sock *req, struct flowi *fl);
2479void security_sock_graft(struct sock*sk, struct socket *parent);
2480int security_inet_conn_request(struct sock *sk,
2481 struct sk_buff *skb, struct request_sock *req);
2482void security_inet_csk_clone(struct sock *newsk,
2483 const struct request_sock *req);
2484void security_inet_conn_established(struct sock *sk,
2485 struct sk_buff *skb);
2486
2487#else
2488static inline int security_unix_stream_connect(struct socket *sock,
2489 struct socket *other,
2490 struct sock *newsk)
2491{
2492 return 0;
2493}
2494
2495static inline int security_unix_may_send(struct socket *sock,
2496 struct socket *other)
2497{
2498 return 0;
2499}
2500
2501static inline int security_socket_create(int family, int type,
2502 int protocol, int kern)
2503{
2504 return 0;
2505}
2506
2507static inline int security_socket_post_create(struct socket *sock,
2508 int family,
2509 int type,
2510 int protocol, int kern)
2511{
2512 return 0;
2513}
2514
2515static inline int security_socket_bind(struct socket *sock,
2516 struct sockaddr *address,
2517 int addrlen)
2518{
2519 return 0;
2520}
2521
2522static inline int security_socket_connect(struct socket *sock,
2523 struct sockaddr *address,
2524 int addrlen)
2525{
2526 return 0;
2527}
2528
2529static inline int security_socket_listen(struct socket *sock, int backlog)
2530{
2531 return 0;
2532}
2533
2534static inline int security_socket_accept(struct socket *sock,
2535 struct socket *newsock)
2536{
2537 return 0;
2538}
2539
2540static inline void security_socket_post_accept(struct socket *sock,
2541 struct socket *newsock)
2542{
2543}
2544
2545static inline int security_socket_sendmsg(struct socket *sock,
2546 struct msghdr *msg, int size)
2547{
2548 return 0;
2549}
2550
2551static inline int security_socket_recvmsg(struct socket *sock,
2552 struct msghdr *msg, int size,
2553 int flags)
2554{
2555 return 0;
2556}
2557
2558static inline int security_socket_getsockname(struct socket *sock)
2559{
2560 return 0;
2561}
2562
2563static inline int security_socket_getpeername(struct socket *sock)
2564{
2565 return 0;
2566}
2567
2568static inline int security_socket_getsockopt(struct socket *sock,
2569 int level, int optname)
2570{
2571 return 0;
2572}
2573
2574static inline int security_socket_setsockopt(struct socket *sock,
2575 int level, int optname)
2576{
2577 return 0;
2578}
2579
2580static inline int security_socket_shutdown(struct socket *sock, int how)
2581{
2582 return 0;
2583}
2584static inline int security_sock_rcv_skb(struct sock *sk,
2585 struct sk_buff *skb)
2586{
2587 return 0;
2588}
2589
2590static inline int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,
2591 int __user *optlen, unsigned len)
2592{
2593 return -ENOPROTOOPT;
2594}
2595
2596static inline int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)
2597{
2598 return -ENOPROTOOPT;
2599}
2600
2601static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority)
2602{
2603 return 0;
2604}
2605
2606static inline void security_sk_free(struct sock *sk)
2607{
2608}
2609
2610static inline void security_sk_clone(const struct sock *sk, struct sock *newsk)
2611{
2612}
2613
2614static inline void security_sk_classify_flow(struct sock *sk, struct flowi *fl)
2615{
2616}
2617
2618static inline void security_req_classify_flow(const struct request_sock *req, struct flowi *fl)
2619{
2620}
2621
2622static inline void security_sock_graft(struct sock *sk, struct socket *parent)
2623{
2624}
2625
2626static inline int security_inet_conn_request(struct sock *sk,
2627 struct sk_buff *skb, struct request_sock *req)
2628{
2629 return 0;
2630}
2631
2632static inline void security_inet_csk_clone(struct sock *newsk,
2633 const struct request_sock *req)
2634{
2635}
2636
2637static inline void security_inet_conn_established(struct sock *sk,
2638 struct sk_buff *skb)
2639{
2640}
2641#endif
2642
2643#ifdef CONFIG_SECURITY_NETWORK_XFRM
2644
2645int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx);
2646int security_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctxp);
2647void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx);
2648int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx);
2649int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx);
2650int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
2651 struct xfrm_sec_ctx *polsec, u32 secid);
2652int security_xfrm_state_delete(struct xfrm_state *x);
2653void security_xfrm_state_free(struct xfrm_state *x);
2654int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
2655int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
2656 struct xfrm_policy *xp, struct flowi *fl);
2657int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid);
2658void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl);
2659
2660#else
2661
2662static inline int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx)
2663{
2664 return 0;
2665}
2666
2667static inline int security_xfrm_policy_clone(struct xfrm_sec_ctx *old, struct xfrm_sec_ctx **new_ctxp)
2668{
2669 return 0;
2670}
2671
2672static inline void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx)
2673{
2674}
2675
2676static inline int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx)
2677{
2678 return 0;
2679}
2680
2681static inline int security_xfrm_state_alloc(struct xfrm_state *x,
2682 struct xfrm_user_sec_ctx *sec_ctx)
2683{
2684 return 0;
2685}
2686
2687static inline int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
2688 struct xfrm_sec_ctx *polsec, u32 secid)
2689{
2690 return 0;
2691}
2692
2693static inline void security_xfrm_state_free(struct xfrm_state *x)
2694{
2695}
2696
2697static inline int security_xfrm_state_delete(struct xfrm_state *x)
2698{
2699 return 0;
2700}
2701
2702static inline int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir)
2703{
2704 return 0;
2705}
2706
2707static inline int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
2708 struct xfrm_policy *xp, struct flowi *fl)
2709{
2710 return 1;
2711}
2712
2713static inline int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid)
2714{
2715 return 0;
2716}
2717
2718static inline void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl)
2719{
2720}
2721
2722#endif
2723
2724#ifdef CONFIG_KEYS
2725#ifdef CONFIG_SECURITY
2726
2727int security_key_alloc(struct key *key, struct task_struct *tsk, unsigned long flags);
2728void security_key_free(struct key *key);
2729int security_key_permission(key_ref_t key_ref,
2730 struct task_struct *context, key_perm_t perm);
2731int security_key_getsecurity(struct key *key, char **_buffer);
2732
2733#else
2734
2735static inline int security_key_alloc(struct key *key,
2736 struct task_struct *tsk,
2737 unsigned long flags)
2738{
2739 return 0;
2740}
2741
2742static inline void security_key_free(struct key *key)
2743{
2744}
2745
2746static inline int security_key_permission(key_ref_t key_ref,
2747 struct task_struct *context,
2748 key_perm_t perm)
2749{
2750 return 0;
2751}
2752
2753static inline int security_key_getsecurity(struct key *key, char **_buffer)
2754{
2755 *_buffer = NULL;
2756 return 0;
2757}
2758
2759#endif
2760#endif
2761
2762#ifdef CONFIG_AUDIT
2763#ifdef CONFIG_SECURITY
2764int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule);
2765int security_audit_rule_known(struct audit_krule *krule);
2766int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule,
2767 struct audit_context *actx);
2768void security_audit_rule_free(void *lsmrule);
2769
2770#else
2771
2772static inline int security_audit_rule_init(u32 field, u32 op, char *rulestr,
2773 void **lsmrule)
2774{
2775 return 0;
2776}
2777
2778static inline int security_audit_rule_known(struct audit_krule *krule)
2779{
2780 return 0;
2781}
2782
2783static inline int security_audit_rule_match(u32 secid, u32 field, u32 op,
2784 void *lsmrule, struct audit_context *actx)
2785{
2786 return 0;
2787}
2788
2789static inline void security_audit_rule_free(void *lsmrule)
2790{ }
2791
2792#endif
2793#endif
2794
2795#ifdef CONFIG_SECURITYFS
2796
2797extern struct dentry *securityfs_create_file(const char *name, mode_t mode,
2798 struct dentry *parent, void *data,
2799 const struct file_operations *fops);
2800extern struct dentry *securityfs_create_dir(const char *name, struct dentry *parent);
2801extern void securityfs_remove(struct dentry *dentry);
2802
2803#else
2804
2805static inline struct dentry *securityfs_create_dir(const char *name,
2806 struct dentry *parent)
2807{
2808 return ERR_PTR(-ENODEV);
2809}
2810
2811static inline struct dentry *securityfs_create_file(const char *name,
2812 mode_t mode,
2813 struct dentry *parent,
2814 void *data,
2815 const struct file_operations *fops)
2816{
2817 return ERR_PTR(-ENODEV);
2818}
2819
2820static inline void securityfs_remove(struct dentry *dentry)
2821{}
2822
2823#endif
2824
2825#endif
2826
2827