OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [security/] [security.c] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * Security plug functions
3
 *
4
 * Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com>
5
 * Copyright (C) 2001-2002 Greg Kroah-Hartman <greg@kroah.com>
6
 * Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com>
7
 *
8
 *      This program is free software; you can redistribute it and/or modify
9
 *      it under the terms of the GNU General Public License as published by
10
 *      the Free Software Foundation; either version 2 of the License, or
11
 *      (at your option) any later version.
12
 */
13
 
14
#include <linux/capability.h>
15
#include <linux/module.h>
16
#include <linux/init.h>
17
#include <linux/kernel.h>
18
#include <linux/security.h>
19
 
20
 
21
/* things that live in dummy.c */
22
extern struct security_operations dummy_security_ops;
23
extern void security_fixup_ops(struct security_operations *ops);
24
 
25
struct security_operations *security_ops;       /* Initialized to NULL */
26
unsigned long mmap_min_addr;            /* 0 means no protection */
27
 
28
static inline int verify(struct security_operations *ops)
29
{
30
        /* verify the security_operations structure exists */
31
        if (!ops)
32
                return -EINVAL;
33
        security_fixup_ops(ops);
34
        return 0;
35
}
36
 
37
static void __init do_security_initcalls(void)
38
{
39
        initcall_t *call;
40
        call = __security_initcall_start;
41
        while (call < __security_initcall_end) {
42
                (*call) ();
43
                call++;
44
        }
45
}
46
 
47
/**
48
 * security_init - initializes the security framework
49
 *
50
 * This should be called early in the kernel initialization sequence.
51
 */
52
int __init security_init(void)
53
{
54
        printk(KERN_INFO "Security Framework initialized\n");
55
 
56
        if (verify(&dummy_security_ops)) {
57
                printk(KERN_ERR "%s could not verify "
58
                       "dummy_security_ops structure.\n", __FUNCTION__);
59
                return -EIO;
60
        }
61
 
62
        security_ops = &dummy_security_ops;
63
        do_security_initcalls();
64
 
65
        return 0;
66
}
67
 
68
/**
69
 * register_security - registers a security framework with the kernel
70
 * @ops: a pointer to the struct security_options that is to be registered
71
 *
72
 * This function is to allow a security module to register itself with the
73
 * kernel security subsystem.  Some rudimentary checking is done on the @ops
74
 * value passed to this function.
75
 *
76
 * If there is already a security module registered with the kernel,
77
 * an error will be returned.  Otherwise 0 is returned on success.
78
 */
79
int register_security(struct security_operations *ops)
80
{
81
        if (verify(ops)) {
82
                printk(KERN_DEBUG "%s could not verify "
83
                       "security_operations structure.\n", __FUNCTION__);
84
                return -EINVAL;
85
        }
86
 
87
        if (security_ops != &dummy_security_ops)
88
                return -EAGAIN;
89
 
90
        security_ops = ops;
91
 
92
        return 0;
93
}
94
 
95
/**
96
 * mod_reg_security - allows security modules to be "stacked"
97
 * @name: a pointer to a string with the name of the security_options to be registered
98
 * @ops: a pointer to the struct security_options that is to be registered
99
 *
100
 * This function allows security modules to be stacked if the currently loaded
101
 * security module allows this to happen.  It passes the @name and @ops to the
102
 * register_security function of the currently loaded security module.
103
 *
104
 * The return value depends on the currently loaded security module, with 0 as
105
 * success.
106
 */
107
int mod_reg_security(const char *name, struct security_operations *ops)
108
{
109
        if (verify(ops)) {
110
                printk(KERN_INFO "%s could not verify "
111
                       "security operations.\n", __FUNCTION__);
112
                return -EINVAL;
113
        }
114
 
115
        if (ops == security_ops) {
116
                printk(KERN_INFO "%s security operations "
117
                       "already registered.\n", __FUNCTION__);
118
                return -EINVAL;
119
        }
120
 
121
        return security_ops->register_security(name, ops);
122
}
123
 
124
/* Security operations */
125
 
126
int security_ptrace(struct task_struct *parent, struct task_struct *child)
127
{
128
        return security_ops->ptrace(parent, child);
129
}
130
 
131
int security_capget(struct task_struct *target,
132
                     kernel_cap_t *effective,
133
                     kernel_cap_t *inheritable,
134
                     kernel_cap_t *permitted)
135
{
136
        return security_ops->capget(target, effective, inheritable, permitted);
137
}
138
 
139
int security_capset_check(struct task_struct *target,
140
                           kernel_cap_t *effective,
141
                           kernel_cap_t *inheritable,
142
                           kernel_cap_t *permitted)
143
{
144
        return security_ops->capset_check(target, effective, inheritable, permitted);
145
}
146
 
147
void security_capset_set(struct task_struct *target,
148
                          kernel_cap_t *effective,
149
                          kernel_cap_t *inheritable,
150
                          kernel_cap_t *permitted)
151
{
152
        security_ops->capset_set(target, effective, inheritable, permitted);
153
}
154
 
155
int security_capable(struct task_struct *tsk, int cap)
156
{
157
        return security_ops->capable(tsk, cap);
158
}
159
 
160
int security_acct(struct file *file)
161
{
162
        return security_ops->acct(file);
163
}
164
 
165
int security_sysctl(struct ctl_table *table, int op)
166
{
167
        return security_ops->sysctl(table, op);
168
}
169
 
170
int security_quotactl(int cmds, int type, int id, struct super_block *sb)
171
{
172
        return security_ops->quotactl(cmds, type, id, sb);
173
}
174
 
175
int security_quota_on(struct dentry *dentry)
176
{
177
        return security_ops->quota_on(dentry);
178
}
179
 
180
int security_syslog(int type)
181
{
182
        return security_ops->syslog(type);
183
}
184
 
185
int security_settime(struct timespec *ts, struct timezone *tz)
186
{
187
        return security_ops->settime(ts, tz);
188
}
189
 
190
int security_vm_enough_memory(long pages)
191
{
192
        return security_ops->vm_enough_memory(current->mm, pages);
193
}
194
 
195
int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
196
{
197
        return security_ops->vm_enough_memory(mm, pages);
198
}
199
 
200
int security_bprm_alloc(struct linux_binprm *bprm)
201
{
202
        return security_ops->bprm_alloc_security(bprm);
203
}
204
 
205
void security_bprm_free(struct linux_binprm *bprm)
206
{
207
        security_ops->bprm_free_security(bprm);
208
}
209
 
210
void security_bprm_apply_creds(struct linux_binprm *bprm, int unsafe)
211
{
212
        security_ops->bprm_apply_creds(bprm, unsafe);
213
}
214
 
215
void security_bprm_post_apply_creds(struct linux_binprm *bprm)
216
{
217
        security_ops->bprm_post_apply_creds(bprm);
218
}
219
 
220
int security_bprm_set(struct linux_binprm *bprm)
221
{
222
        return security_ops->bprm_set_security(bprm);
223
}
224
 
225
int security_bprm_check(struct linux_binprm *bprm)
226
{
227
        return security_ops->bprm_check_security(bprm);
228
}
229
 
230
int security_bprm_secureexec(struct linux_binprm *bprm)
231
{
232
        return security_ops->bprm_secureexec(bprm);
233
}
234
 
235
int security_sb_alloc(struct super_block *sb)
236
{
237
        return security_ops->sb_alloc_security(sb);
238
}
239
 
240
void security_sb_free(struct super_block *sb)
241
{
242
        security_ops->sb_free_security(sb);
243
}
244
 
245
int security_sb_copy_data(struct file_system_type *type, void *orig, void *copy)
246
{
247
        return security_ops->sb_copy_data(type, orig, copy);
248
}
249
 
250
int security_sb_kern_mount(struct super_block *sb, void *data)
251
{
252
        return security_ops->sb_kern_mount(sb, data);
253
}
254
 
255
int security_sb_statfs(struct dentry *dentry)
256
{
257
        return security_ops->sb_statfs(dentry);
258
}
259
 
260
int security_sb_mount(char *dev_name, struct nameidata *nd,
261
                       char *type, unsigned long flags, void *data)
262
{
263
        return security_ops->sb_mount(dev_name, nd, type, flags, data);
264
}
265
 
266
int security_sb_check_sb(struct vfsmount *mnt, struct nameidata *nd)
267
{
268
        return security_ops->sb_check_sb(mnt, nd);
269
}
270
 
271
int security_sb_umount(struct vfsmount *mnt, int flags)
272
{
273
        return security_ops->sb_umount(mnt, flags);
274
}
275
 
276
void security_sb_umount_close(struct vfsmount *mnt)
277
{
278
        security_ops->sb_umount_close(mnt);
279
}
280
 
281
void security_sb_umount_busy(struct vfsmount *mnt)
282
{
283
        security_ops->sb_umount_busy(mnt);
284
}
285
 
286
void security_sb_post_remount(struct vfsmount *mnt, unsigned long flags, void *data)
287
{
288
        security_ops->sb_post_remount(mnt, flags, data);
289
}
290
 
291
void security_sb_post_mountroot(void)
292
{
293
        security_ops->sb_post_mountroot();
294
}
295
 
296
void security_sb_post_addmount(struct vfsmount *mnt, struct nameidata *mountpoint_nd)
297
{
298
        security_ops->sb_post_addmount(mnt, mountpoint_nd);
299
}
300
 
301
int security_sb_pivotroot(struct nameidata *old_nd, struct nameidata *new_nd)
302
{
303
        return security_ops->sb_pivotroot(old_nd, new_nd);
304
}
305
 
306
void security_sb_post_pivotroot(struct nameidata *old_nd, struct nameidata *new_nd)
307
{
308
        security_ops->sb_post_pivotroot(old_nd, new_nd);
309
}
310
 
311
int security_inode_alloc(struct inode *inode)
312
{
313
        inode->i_security = NULL;
314
        return security_ops->inode_alloc_security(inode);
315
}
316
 
317
void security_inode_free(struct inode *inode)
318
{
319
        security_ops->inode_free_security(inode);
320
}
321
 
322
int security_inode_init_security(struct inode *inode, struct inode *dir,
323
                                  char **name, void **value, size_t *len)
324
{
325
        if (unlikely(IS_PRIVATE(inode)))
326
                return -EOPNOTSUPP;
327
        return security_ops->inode_init_security(inode, dir, name, value, len);
328
}
329
EXPORT_SYMBOL(security_inode_init_security);
330
 
331
int security_inode_create(struct inode *dir, struct dentry *dentry, int mode)
332
{
333
        if (unlikely(IS_PRIVATE(dir)))
334
                return 0;
335
        return security_ops->inode_create(dir, dentry, mode);
336
}
337
 
338
int security_inode_link(struct dentry *old_dentry, struct inode *dir,
339
                         struct dentry *new_dentry)
340
{
341
        if (unlikely(IS_PRIVATE(old_dentry->d_inode)))
342
                return 0;
343
        return security_ops->inode_link(old_dentry, dir, new_dentry);
344
}
345
 
346
int security_inode_unlink(struct inode *dir, struct dentry *dentry)
347
{
348
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
349
                return 0;
350
        return security_ops->inode_unlink(dir, dentry);
351
}
352
 
353
int security_inode_symlink(struct inode *dir, struct dentry *dentry,
354
                            const char *old_name)
355
{
356
        if (unlikely(IS_PRIVATE(dir)))
357
                return 0;
358
        return security_ops->inode_symlink(dir, dentry, old_name);
359
}
360
 
361
int security_inode_mkdir(struct inode *dir, struct dentry *dentry, int mode)
362
{
363
        if (unlikely(IS_PRIVATE(dir)))
364
                return 0;
365
        return security_ops->inode_mkdir(dir, dentry, mode);
366
}
367
 
368
int security_inode_rmdir(struct inode *dir, struct dentry *dentry)
369
{
370
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
371
                return 0;
372
        return security_ops->inode_rmdir(dir, dentry);
373
}
374
 
375
int security_inode_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
376
{
377
        if (unlikely(IS_PRIVATE(dir)))
378
                return 0;
379
        return security_ops->inode_mknod(dir, dentry, mode, dev);
380
}
381
 
382
int security_inode_rename(struct inode *old_dir, struct dentry *old_dentry,
383
                           struct inode *new_dir, struct dentry *new_dentry)
384
{
385
        if (unlikely(IS_PRIVATE(old_dentry->d_inode) ||
386
            (new_dentry->d_inode && IS_PRIVATE(new_dentry->d_inode))))
387
                return 0;
388
        return security_ops->inode_rename(old_dir, old_dentry,
389
                                           new_dir, new_dentry);
390
}
391
 
392
int security_inode_readlink(struct dentry *dentry)
393
{
394
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
395
                return 0;
396
        return security_ops->inode_readlink(dentry);
397
}
398
 
399
int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd)
400
{
401
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
402
                return 0;
403
        return security_ops->inode_follow_link(dentry, nd);
404
}
405
 
406
int security_inode_permission(struct inode *inode, int mask, struct nameidata *nd)
407
{
408
        if (unlikely(IS_PRIVATE(inode)))
409
                return 0;
410
        return security_ops->inode_permission(inode, mask, nd);
411
}
412
 
413
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
414
{
415
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
416
                return 0;
417
        return security_ops->inode_setattr(dentry, attr);
418
}
419
 
420
int security_inode_getattr(struct vfsmount *mnt, struct dentry *dentry)
421
{
422
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
423
                return 0;
424
        return security_ops->inode_getattr(mnt, dentry);
425
}
426
 
427
void security_inode_delete(struct inode *inode)
428
{
429
        if (unlikely(IS_PRIVATE(inode)))
430
                return;
431
        security_ops->inode_delete(inode);
432
}
433
 
434
int security_inode_setxattr(struct dentry *dentry, char *name,
435
                             void *value, size_t size, int flags)
436
{
437
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
438
                return 0;
439
        return security_ops->inode_setxattr(dentry, name, value, size, flags);
440
}
441
 
442
void security_inode_post_setxattr(struct dentry *dentry, char *name,
443
                                   void *value, size_t size, int flags)
444
{
445
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
446
                return;
447
        security_ops->inode_post_setxattr(dentry, name, value, size, flags);
448
}
449
 
450
int security_inode_getxattr(struct dentry *dentry, char *name)
451
{
452
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
453
                return 0;
454
        return security_ops->inode_getxattr(dentry, name);
455
}
456
 
457
int security_inode_listxattr(struct dentry *dentry)
458
{
459
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
460
                return 0;
461
        return security_ops->inode_listxattr(dentry);
462
}
463
 
464
int security_inode_removexattr(struct dentry *dentry, char *name)
465
{
466
        if (unlikely(IS_PRIVATE(dentry->d_inode)))
467
                return 0;
468
        return security_ops->inode_removexattr(dentry, name);
469
}
470
 
471
int security_inode_need_killpriv(struct dentry *dentry)
472
{
473
        return security_ops->inode_need_killpriv(dentry);
474
}
475
 
476
int security_inode_killpriv(struct dentry *dentry)
477
{
478
        return security_ops->inode_killpriv(dentry);
479
}
480
 
481
int security_inode_getsecurity(const struct inode *inode, const char *name, void *buffer, size_t size, int err)
482
{
483
        if (unlikely(IS_PRIVATE(inode)))
484
                return 0;
485
        return security_ops->inode_getsecurity(inode, name, buffer, size, err);
486
}
487
 
488
int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags)
489
{
490
        if (unlikely(IS_PRIVATE(inode)))
491
                return 0;
492
        return security_ops->inode_setsecurity(inode, name, value, size, flags);
493
}
494
 
495
int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size)
496
{
497
        if (unlikely(IS_PRIVATE(inode)))
498
                return 0;
499
        return security_ops->inode_listsecurity(inode, buffer, buffer_size);
500
}
501
 
502
int security_file_permission(struct file *file, int mask)
503
{
504
        return security_ops->file_permission(file, mask);
505
}
506
 
507
int security_file_alloc(struct file *file)
508
{
509
        return security_ops->file_alloc_security(file);
510
}
511
 
512
void security_file_free(struct file *file)
513
{
514
        security_ops->file_free_security(file);
515
}
516
 
517
int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
518
{
519
        return security_ops->file_ioctl(file, cmd, arg);
520
}
521
 
522
int security_file_mmap(struct file *file, unsigned long reqprot,
523
                        unsigned long prot, unsigned long flags,
524
                        unsigned long addr, unsigned long addr_only)
525
{
526
        return security_ops->file_mmap(file, reqprot, prot, flags, addr, addr_only);
527
}
528
 
529
int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
530
                            unsigned long prot)
531
{
532
        return security_ops->file_mprotect(vma, reqprot, prot);
533
}
534
 
535
int security_file_lock(struct file *file, unsigned int cmd)
536
{
537
        return security_ops->file_lock(file, cmd);
538
}
539
 
540
int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg)
541
{
542
        return security_ops->file_fcntl(file, cmd, arg);
543
}
544
 
545
int security_file_set_fowner(struct file *file)
546
{
547
        return security_ops->file_set_fowner(file);
548
}
549
 
550
int security_file_send_sigiotask(struct task_struct *tsk,
551
                                  struct fown_struct *fown, int sig)
552
{
553
        return security_ops->file_send_sigiotask(tsk, fown, sig);
554
}
555
 
556
int security_file_receive(struct file *file)
557
{
558
        return security_ops->file_receive(file);
559
}
560
 
561
int security_dentry_open(struct file *file)
562
{
563
        return security_ops->dentry_open(file);
564
}
565
 
566
int security_task_create(unsigned long clone_flags)
567
{
568
        return security_ops->task_create(clone_flags);
569
}
570
 
571
int security_task_alloc(struct task_struct *p)
572
{
573
        return security_ops->task_alloc_security(p);
574
}
575
 
576
void security_task_free(struct task_struct *p)
577
{
578
        security_ops->task_free_security(p);
579
}
580
 
581
int security_task_setuid(uid_t id0, uid_t id1, uid_t id2, int flags)
582
{
583
        return security_ops->task_setuid(id0, id1, id2, flags);
584
}
585
 
586
int security_task_post_setuid(uid_t old_ruid, uid_t old_euid,
587
                               uid_t old_suid, int flags)
588
{
589
        return security_ops->task_post_setuid(old_ruid, old_euid, old_suid, flags);
590
}
591
 
592
int security_task_setgid(gid_t id0, gid_t id1, gid_t id2, int flags)
593
{
594
        return security_ops->task_setgid(id0, id1, id2, flags);
595
}
596
 
597
int security_task_setpgid(struct task_struct *p, pid_t pgid)
598
{
599
        return security_ops->task_setpgid(p, pgid);
600
}
601
 
602
int security_task_getpgid(struct task_struct *p)
603
{
604
        return security_ops->task_getpgid(p);
605
}
606
 
607
int security_task_getsid(struct task_struct *p)
608
{
609
        return security_ops->task_getsid(p);
610
}
611
 
612
void security_task_getsecid(struct task_struct *p, u32 *secid)
613
{
614
        security_ops->task_getsecid(p, secid);
615
}
616
EXPORT_SYMBOL(security_task_getsecid);
617
 
618
int security_task_setgroups(struct group_info *group_info)
619
{
620
        return security_ops->task_setgroups(group_info);
621
}
622
 
623
int security_task_setnice(struct task_struct *p, int nice)
624
{
625
        return security_ops->task_setnice(p, nice);
626
}
627
 
628
int security_task_setioprio(struct task_struct *p, int ioprio)
629
{
630
        return security_ops->task_setioprio(p, ioprio);
631
}
632
 
633
int security_task_getioprio(struct task_struct *p)
634
{
635
        return security_ops->task_getioprio(p);
636
}
637
 
638
int security_task_setrlimit(unsigned int resource, struct rlimit *new_rlim)
639
{
640
        return security_ops->task_setrlimit(resource, new_rlim);
641
}
642
 
643
int security_task_setscheduler(struct task_struct *p,
644
                                int policy, struct sched_param *lp)
645
{
646
        return security_ops->task_setscheduler(p, policy, lp);
647
}
648
 
649
int security_task_getscheduler(struct task_struct *p)
650
{
651
        return security_ops->task_getscheduler(p);
652
}
653
 
654
int security_task_movememory(struct task_struct *p)
655
{
656
        return security_ops->task_movememory(p);
657
}
658
 
659
int security_task_kill(struct task_struct *p, struct siginfo *info,
660
                        int sig, u32 secid)
661
{
662
        return security_ops->task_kill(p, info, sig, secid);
663
}
664
 
665
int security_task_wait(struct task_struct *p)
666
{
667
        return security_ops->task_wait(p);
668
}
669
 
670
int security_task_prctl(int option, unsigned long arg2, unsigned long arg3,
671
                         unsigned long arg4, unsigned long arg5)
672
{
673
        return security_ops->task_prctl(option, arg2, arg3, arg4, arg5);
674
}
675
 
676
void security_task_reparent_to_init(struct task_struct *p)
677
{
678
        security_ops->task_reparent_to_init(p);
679
}
680
 
681
void security_task_to_inode(struct task_struct *p, struct inode *inode)
682
{
683
        security_ops->task_to_inode(p, inode);
684
}
685
 
686
int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag)
687
{
688
        return security_ops->ipc_permission(ipcp, flag);
689
}
690
 
691
int security_msg_msg_alloc(struct msg_msg *msg)
692
{
693
        return security_ops->msg_msg_alloc_security(msg);
694
}
695
 
696
void security_msg_msg_free(struct msg_msg *msg)
697
{
698
        security_ops->msg_msg_free_security(msg);
699
}
700
 
701
int security_msg_queue_alloc(struct msg_queue *msq)
702
{
703
        return security_ops->msg_queue_alloc_security(msq);
704
}
705
 
706
void security_msg_queue_free(struct msg_queue *msq)
707
{
708
        security_ops->msg_queue_free_security(msq);
709
}
710
 
711
int security_msg_queue_associate(struct msg_queue *msq, int msqflg)
712
{
713
        return security_ops->msg_queue_associate(msq, msqflg);
714
}
715
 
716
int security_msg_queue_msgctl(struct msg_queue *msq, int cmd)
717
{
718
        return security_ops->msg_queue_msgctl(msq, cmd);
719
}
720
 
721
int security_msg_queue_msgsnd(struct msg_queue *msq,
722
                               struct msg_msg *msg, int msqflg)
723
{
724
        return security_ops->msg_queue_msgsnd(msq, msg, msqflg);
725
}
726
 
727
int security_msg_queue_msgrcv(struct msg_queue *msq, struct msg_msg *msg,
728
                               struct task_struct *target, long type, int mode)
729
{
730
        return security_ops->msg_queue_msgrcv(msq, msg, target, type, mode);
731
}
732
 
733
int security_shm_alloc(struct shmid_kernel *shp)
734
{
735
        return security_ops->shm_alloc_security(shp);
736
}
737
 
738
void security_shm_free(struct shmid_kernel *shp)
739
{
740
        security_ops->shm_free_security(shp);
741
}
742
 
743
int security_shm_associate(struct shmid_kernel *shp, int shmflg)
744
{
745
        return security_ops->shm_associate(shp, shmflg);
746
}
747
 
748
int security_shm_shmctl(struct shmid_kernel *shp, int cmd)
749
{
750
        return security_ops->shm_shmctl(shp, cmd);
751
}
752
 
753
int security_shm_shmat(struct shmid_kernel *shp, char __user *shmaddr, int shmflg)
754
{
755
        return security_ops->shm_shmat(shp, shmaddr, shmflg);
756
}
757
 
758
int security_sem_alloc(struct sem_array *sma)
759
{
760
        return security_ops->sem_alloc_security(sma);
761
}
762
 
763
void security_sem_free(struct sem_array *sma)
764
{
765
        security_ops->sem_free_security(sma);
766
}
767
 
768
int security_sem_associate(struct sem_array *sma, int semflg)
769
{
770
        return security_ops->sem_associate(sma, semflg);
771
}
772
 
773
int security_sem_semctl(struct sem_array *sma, int cmd)
774
{
775
        return security_ops->sem_semctl(sma, cmd);
776
}
777
 
778
int security_sem_semop(struct sem_array *sma, struct sembuf *sops,
779
                        unsigned nsops, int alter)
780
{
781
        return security_ops->sem_semop(sma, sops, nsops, alter);
782
}
783
 
784
void security_d_instantiate(struct dentry *dentry, struct inode *inode)
785
{
786
        if (unlikely(inode && IS_PRIVATE(inode)))
787
                return;
788
        security_ops->d_instantiate(dentry, inode);
789
}
790
EXPORT_SYMBOL(security_d_instantiate);
791
 
792
int security_getprocattr(struct task_struct *p, char *name, char **value)
793
{
794
        return security_ops->getprocattr(p, name, value);
795
}
796
 
797
int security_setprocattr(struct task_struct *p, char *name, void *value, size_t size)
798
{
799
        return security_ops->setprocattr(p, name, value, size);
800
}
801
 
802
int security_netlink_send(struct sock *sk, struct sk_buff *skb)
803
{
804
        return security_ops->netlink_send(sk, skb);
805
}
806
 
807
int security_netlink_recv(struct sk_buff *skb, int cap)
808
{
809
        return security_ops->netlink_recv(skb, cap);
810
}
811
EXPORT_SYMBOL(security_netlink_recv);
812
 
813
int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
814
{
815
        return security_ops->secid_to_secctx(secid, secdata, seclen);
816
}
817
EXPORT_SYMBOL(security_secid_to_secctx);
818
 
819
void security_release_secctx(char *secdata, u32 seclen)
820
{
821
        return security_ops->release_secctx(secdata, seclen);
822
}
823
EXPORT_SYMBOL(security_release_secctx);
824
 
825
#ifdef CONFIG_SECURITY_NETWORK
826
 
827
int security_unix_stream_connect(struct socket *sock, struct socket *other,
828
                                 struct sock *newsk)
829
{
830
        return security_ops->unix_stream_connect(sock, other, newsk);
831
}
832
EXPORT_SYMBOL(security_unix_stream_connect);
833
 
834
int security_unix_may_send(struct socket *sock,  struct socket *other)
835
{
836
        return security_ops->unix_may_send(sock, other);
837
}
838
EXPORT_SYMBOL(security_unix_may_send);
839
 
840
int security_socket_create(int family, int type, int protocol, int kern)
841
{
842
        return security_ops->socket_create(family, type, protocol, kern);
843
}
844
 
845
int security_socket_post_create(struct socket *sock, int family,
846
                                int type, int protocol, int kern)
847
{
848
        return security_ops->socket_post_create(sock, family, type,
849
                                                protocol, kern);
850
}
851
 
852
int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen)
853
{
854
        return security_ops->socket_bind(sock, address, addrlen);
855
}
856
 
857
int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen)
858
{
859
        return security_ops->socket_connect(sock, address, addrlen);
860
}
861
 
862
int security_socket_listen(struct socket *sock, int backlog)
863
{
864
        return security_ops->socket_listen(sock, backlog);
865
}
866
 
867
int security_socket_accept(struct socket *sock, struct socket *newsock)
868
{
869
        return security_ops->socket_accept(sock, newsock);
870
}
871
 
872
void security_socket_post_accept(struct socket *sock, struct socket *newsock)
873
{
874
        security_ops->socket_post_accept(sock, newsock);
875
}
876
 
877
int security_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size)
878
{
879
        return security_ops->socket_sendmsg(sock, msg, size);
880
}
881
 
882
int security_socket_recvmsg(struct socket *sock, struct msghdr *msg,
883
                            int size, int flags)
884
{
885
        return security_ops->socket_recvmsg(sock, msg, size, flags);
886
}
887
 
888
int security_socket_getsockname(struct socket *sock)
889
{
890
        return security_ops->socket_getsockname(sock);
891
}
892
 
893
int security_socket_getpeername(struct socket *sock)
894
{
895
        return security_ops->socket_getpeername(sock);
896
}
897
 
898
int security_socket_getsockopt(struct socket *sock, int level, int optname)
899
{
900
        return security_ops->socket_getsockopt(sock, level, optname);
901
}
902
 
903
int security_socket_setsockopt(struct socket *sock, int level, int optname)
904
{
905
        return security_ops->socket_setsockopt(sock, level, optname);
906
}
907
 
908
int security_socket_shutdown(struct socket *sock, int how)
909
{
910
        return security_ops->socket_shutdown(sock, how);
911
}
912
 
913
int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
914
{
915
        return security_ops->socket_sock_rcv_skb(sk, skb);
916
}
917
EXPORT_SYMBOL(security_sock_rcv_skb);
918
 
919
int security_socket_getpeersec_stream(struct socket *sock, char __user *optval,
920
                                      int __user *optlen, unsigned len)
921
{
922
        return security_ops->socket_getpeersec_stream(sock, optval, optlen, len);
923
}
924
 
925
int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)
926
{
927
        return security_ops->socket_getpeersec_dgram(sock, skb, secid);
928
}
929
EXPORT_SYMBOL(security_socket_getpeersec_dgram);
930
 
931
int security_sk_alloc(struct sock *sk, int family, gfp_t priority)
932
{
933
        return security_ops->sk_alloc_security(sk, family, priority);
934
}
935
 
936
void security_sk_free(struct sock *sk)
937
{
938
        return security_ops->sk_free_security(sk);
939
}
940
 
941
void security_sk_clone(const struct sock *sk, struct sock *newsk)
942
{
943
        return security_ops->sk_clone_security(sk, newsk);
944
}
945
 
946
void security_sk_classify_flow(struct sock *sk, struct flowi *fl)
947
{
948
        security_ops->sk_getsecid(sk, &fl->secid);
949
}
950
EXPORT_SYMBOL(security_sk_classify_flow);
951
 
952
void security_req_classify_flow(const struct request_sock *req, struct flowi *fl)
953
{
954
        security_ops->req_classify_flow(req, fl);
955
}
956
EXPORT_SYMBOL(security_req_classify_flow);
957
 
958
void security_sock_graft(struct sock *sk, struct socket *parent)
959
{
960
        security_ops->sock_graft(sk, parent);
961
}
962
EXPORT_SYMBOL(security_sock_graft);
963
 
964
int security_inet_conn_request(struct sock *sk,
965
                        struct sk_buff *skb, struct request_sock *req)
966
{
967
        return security_ops->inet_conn_request(sk, skb, req);
968
}
969
EXPORT_SYMBOL(security_inet_conn_request);
970
 
971
void security_inet_csk_clone(struct sock *newsk,
972
                        const struct request_sock *req)
973
{
974
        security_ops->inet_csk_clone(newsk, req);
975
}
976
 
977
void security_inet_conn_established(struct sock *sk,
978
                        struct sk_buff *skb)
979
{
980
        security_ops->inet_conn_established(sk, skb);
981
}
982
 
983
#endif  /* CONFIG_SECURITY_NETWORK */
984
 
985
#ifdef CONFIG_SECURITY_NETWORK_XFRM
986
 
987
int security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx)
988
{
989
        return security_ops->xfrm_policy_alloc_security(xp, sec_ctx);
990
}
991
EXPORT_SYMBOL(security_xfrm_policy_alloc);
992
 
993
int security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new)
994
{
995
        return security_ops->xfrm_policy_clone_security(old, new);
996
}
997
 
998
void security_xfrm_policy_free(struct xfrm_policy *xp)
999
{
1000
        security_ops->xfrm_policy_free_security(xp);
1001
}
1002
EXPORT_SYMBOL(security_xfrm_policy_free);
1003
 
1004
int security_xfrm_policy_delete(struct xfrm_policy *xp)
1005
{
1006
        return security_ops->xfrm_policy_delete_security(xp);
1007
}
1008
 
1009
int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx)
1010
{
1011
        return security_ops->xfrm_state_alloc_security(x, sec_ctx, 0);
1012
}
1013
EXPORT_SYMBOL(security_xfrm_state_alloc);
1014
 
1015
int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
1016
                                      struct xfrm_sec_ctx *polsec, u32 secid)
1017
{
1018
        if (!polsec)
1019
                return 0;
1020
        /*
1021
         * We want the context to be taken from secid which is usually
1022
         * from the sock.
1023
         */
1024
        return security_ops->xfrm_state_alloc_security(x, NULL, secid);
1025
}
1026
 
1027
int security_xfrm_state_delete(struct xfrm_state *x)
1028
{
1029
        return security_ops->xfrm_state_delete_security(x);
1030
}
1031
EXPORT_SYMBOL(security_xfrm_state_delete);
1032
 
1033
void security_xfrm_state_free(struct xfrm_state *x)
1034
{
1035
        security_ops->xfrm_state_free_security(x);
1036
}
1037
 
1038
int security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 fl_secid, u8 dir)
1039
{
1040
        return security_ops->xfrm_policy_lookup(xp, fl_secid, dir);
1041
}
1042
 
1043
int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
1044
                                       struct xfrm_policy *xp, struct flowi *fl)
1045
{
1046
        return security_ops->xfrm_state_pol_flow_match(x, xp, fl);
1047
}
1048
 
1049
int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid)
1050
{
1051
        return security_ops->xfrm_decode_session(skb, secid, 1);
1052
}
1053
 
1054
void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl)
1055
{
1056
        int rc = security_ops->xfrm_decode_session(skb, &fl->secid, 0);
1057
 
1058
        BUG_ON(rc);
1059
}
1060
EXPORT_SYMBOL(security_skb_classify_flow);
1061
 
1062
#endif  /* CONFIG_SECURITY_NETWORK_XFRM */
1063
 
1064
#ifdef CONFIG_KEYS
1065
 
1066
int security_key_alloc(struct key *key, struct task_struct *tsk, unsigned long flags)
1067
{
1068
        return security_ops->key_alloc(key, tsk, flags);
1069
}
1070
 
1071
void security_key_free(struct key *key)
1072
{
1073
        security_ops->key_free(key);
1074
}
1075
 
1076
int security_key_permission(key_ref_t key_ref,
1077
                            struct task_struct *context, key_perm_t perm)
1078
{
1079
        return security_ops->key_permission(key_ref, context, perm);
1080
}
1081
 
1082
#endif  /* CONFIG_KEYS */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.