Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
@@ -82,6 +82,7 @@
|
||||
#define AUDIT_CONFIG_CHANGE 1305 /* Audit system configuration change */
|
||||
#define AUDIT_SOCKADDR 1306 /* sockaddr copied as syscall arg */
|
||||
#define AUDIT_CWD 1307 /* Current working directory */
|
||||
#define AUDIT_IPC_SET_PERM 1311 /* IPC new permissions record type */
|
||||
|
||||
#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
|
||||
#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
|
||||
@@ -144,6 +145,11 @@
|
||||
#define AUDIT_PERS 10
|
||||
#define AUDIT_ARCH 11
|
||||
#define AUDIT_MSGTYPE 12
|
||||
#define AUDIT_SE_USER 13 /* security label user */
|
||||
#define AUDIT_SE_ROLE 14 /* security label role */
|
||||
#define AUDIT_SE_TYPE 15 /* security label type */
|
||||
#define AUDIT_SE_SEN 16 /* security label sensitivity label */
|
||||
#define AUDIT_SE_CLR 17 /* security label clearance label */
|
||||
|
||||
/* These are ONLY useful when checking
|
||||
* at syscall exit time (AUDIT_AT_EXIT). */
|
||||
@@ -287,10 +293,10 @@ struct netlink_skb_parms;
|
||||
/* Public API */
|
||||
extern int audit_alloc(struct task_struct *task);
|
||||
extern void audit_free(struct task_struct *task);
|
||||
extern void audit_syscall_entry(struct task_struct *task, int arch,
|
||||
extern void audit_syscall_entry(int arch,
|
||||
int major, unsigned long a0, unsigned long a1,
|
||||
unsigned long a2, unsigned long a3);
|
||||
extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code);
|
||||
extern void audit_syscall_exit(int failed, long return_code);
|
||||
extern void audit_getname(const char *name);
|
||||
extern void audit_putname(const char *name);
|
||||
extern void __audit_inode(const char *name, const struct inode *inode, unsigned flags);
|
||||
@@ -314,7 +320,8 @@ extern void auditsc_get_stamp(struct audit_context *ctx,
|
||||
struct timespec *t, unsigned int *serial);
|
||||
extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid);
|
||||
extern uid_t audit_get_loginuid(struct audit_context *ctx);
|
||||
extern int audit_ipc_perms(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp);
|
||||
extern int audit_ipc_obj(struct kern_ipc_perm *ipcp);
|
||||
extern int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp);
|
||||
extern int audit_socketcall(int nargs, unsigned long *args);
|
||||
extern int audit_sockaddr(int len, void *addr);
|
||||
extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt);
|
||||
@@ -323,8 +330,8 @@ extern int audit_set_macxattr(const char *name);
|
||||
#else
|
||||
#define audit_alloc(t) ({ 0; })
|
||||
#define audit_free(t) do { ; } while (0)
|
||||
#define audit_syscall_entry(t,ta,a,b,c,d,e) do { ; } while (0)
|
||||
#define audit_syscall_exit(t,f,r) do { ; } while (0)
|
||||
#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)
|
||||
#define audit_syscall_exit(f,r) do { ; } while (0)
|
||||
#define audit_getname(n) do { ; } while (0)
|
||||
#define audit_putname(n) do { ; } while (0)
|
||||
#define __audit_inode(n,i,f) do { ; } while (0)
|
||||
@@ -333,7 +340,8 @@ extern int audit_set_macxattr(const char *name);
|
||||
#define audit_inode_child(d,i,p) do { ; } while (0)
|
||||
#define auditsc_get_stamp(c,t,s) do { BUG(); } while (0)
|
||||
#define audit_get_loginuid(c) ({ -1; })
|
||||
#define audit_ipc_perms(q,u,g,m,i) ({ 0; })
|
||||
#define audit_ipc_obj(i) ({ 0; })
|
||||
#define audit_ipc_set_perm(q,u,g,m,i) ({ 0; })
|
||||
#define audit_socketcall(n,a) ({ 0; })
|
||||
#define audit_sockaddr(len, addr) ({ 0; })
|
||||
#define audit_avc_path(dentry, mnt) ({ 0; })
|
||||
@@ -366,7 +374,7 @@ extern void audit_log_d_path(struct audit_buffer *ab,
|
||||
extern int audit_filter_user(struct netlink_skb_parms *cb, int type);
|
||||
extern int audit_filter_type(int type);
|
||||
extern int audit_receive_filter(int type, int pid, int uid, int seq,
|
||||
void *data, size_t datasz, uid_t loginuid);
|
||||
void *data, size_t datasz, uid_t loginuid, u32 sid);
|
||||
#else
|
||||
#define audit_log(c,g,t,f,...) do { ; } while (0)
|
||||
#define audit_log_start(c,g,t) ({ NULL; })
|
||||
|
60
include/linux/fs_uart_pd.h
Normal file
60
include/linux/fs_uart_pd.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Platform information definitions for the CPM Uart driver.
|
||||
*
|
||||
* 2006 (c) MontaVista Software, Inc.
|
||||
* Vitaly Bordug <vbordug@ru.mvista.com>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#ifndef FS_UART_PD_H
|
||||
#define FS_UART_PD_H
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <asm/types.h>
|
||||
|
||||
enum fs_uart_id {
|
||||
fsid_smc1_uart,
|
||||
fsid_smc2_uart,
|
||||
fsid_scc1_uart,
|
||||
fsid_scc2_uart,
|
||||
fsid_scc3_uart,
|
||||
fsid_scc4_uart,
|
||||
fs_uart_nr,
|
||||
};
|
||||
|
||||
static inline int fs_uart_id_scc2fsid(int id)
|
||||
{
|
||||
return fsid_scc1_uart + id - 1;
|
||||
}
|
||||
|
||||
static inline int fs_uart_id_fsid2scc(int id)
|
||||
{
|
||||
return id - fsid_scc1_uart + 1;
|
||||
}
|
||||
|
||||
static inline int fs_uart_id_smc2fsid(int id)
|
||||
{
|
||||
return fsid_smc1_uart + id - 1;
|
||||
}
|
||||
|
||||
static inline int fs_uart_id_fsid2smc(int id)
|
||||
{
|
||||
return id - fsid_smc1_uart + 1;
|
||||
}
|
||||
|
||||
struct fs_uart_platform_info {
|
||||
void(*init_ioports)(void);
|
||||
/* device specific information */
|
||||
int fs_no; /* controller index */
|
||||
u32 uart_clk;
|
||||
u8 tx_num_fifo;
|
||||
u8 tx_buf_size;
|
||||
u8 rx_num_fifo;
|
||||
u8 rx_buf_size;
|
||||
u8 brg;
|
||||
};
|
||||
|
||||
#endif
|
@@ -619,7 +619,7 @@ static inline void hlist_del_rcu(struct hlist_node *n)
|
||||
|
||||
static inline void hlist_del_init(struct hlist_node *n)
|
||||
{
|
||||
if (n->pprev) {
|
||||
if (!hlist_unhashed(n)) {
|
||||
__hlist_del(n);
|
||||
INIT_HLIST_NODE(n);
|
||||
}
|
||||
|
@@ -28,6 +28,7 @@ struct mmc_csd {
|
||||
unsigned short cmdclass;
|
||||
unsigned short tacc_clks;
|
||||
unsigned int tacc_ns;
|
||||
unsigned int r2w_factor;
|
||||
unsigned int max_dtr;
|
||||
unsigned int read_blkbits;
|
||||
unsigned int write_blkbits;
|
||||
|
@@ -337,6 +337,10 @@ struct compat_xt_entry_match
|
||||
char name[XT_FUNCTION_MAXNAMELEN - 1];
|
||||
u_int8_t revision;
|
||||
} user;
|
||||
struct {
|
||||
u_int16_t match_size;
|
||||
compat_uptr_t match;
|
||||
} kernel;
|
||||
u_int16_t match_size;
|
||||
} u;
|
||||
unsigned char data[0];
|
||||
@@ -350,6 +354,10 @@ struct compat_xt_entry_target
|
||||
char name[XT_FUNCTION_MAXNAMELEN - 1];
|
||||
u_int8_t revision;
|
||||
} user;
|
||||
struct {
|
||||
u_int16_t target_size;
|
||||
compat_uptr_t target;
|
||||
} kernel;
|
||||
u_int16_t target_size;
|
||||
} u;
|
||||
unsigned char data[0];
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
*
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
|
||||
*
|
||||
* This source code is licensed under General Public License version 2.
|
||||
*
|
||||
|
@@ -143,6 +143,7 @@ struct netlink_skb_parms
|
||||
__u32 dst_group;
|
||||
kernel_cap_t eff_cap;
|
||||
__u32 loginuid; /* Login (audit) uid */
|
||||
__u32 sid; /* SELinux security id */
|
||||
};
|
||||
|
||||
#define NETLINK_CB(skb) (*(struct netlink_skb_parms*)&((skb)->cb))
|
||||
|
@@ -5,8 +5,9 @@
|
||||
|
||||
#define PIPE_BUFFERS (16)
|
||||
|
||||
#define PIPE_BUF_FLAG_STOLEN 0x01
|
||||
#define PIPE_BUF_FLAG_LRU 0x02
|
||||
#define PIPE_BUF_FLAG_LRU 0x01 /* page is on the LRU */
|
||||
#define PIPE_BUF_FLAG_ATOMIC 0x02 /* was atomically mapped */
|
||||
#define PIPE_BUF_FLAG_GIFT 0x04 /* page is a gift */
|
||||
|
||||
struct pipe_buffer {
|
||||
struct page *page;
|
||||
@@ -15,10 +16,23 @@ struct pipe_buffer {
|
||||
unsigned int flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Note on the nesting of these functions:
|
||||
*
|
||||
* ->pin()
|
||||
* ->steal()
|
||||
* ...
|
||||
* ->map()
|
||||
* ...
|
||||
* ->unmap()
|
||||
*
|
||||
* That is, ->map() must be called on a pinned buffer, same goes for ->steal().
|
||||
*/
|
||||
struct pipe_buf_operations {
|
||||
int can_merge;
|
||||
void * (*map)(struct file *, struct pipe_inode_info *, struct pipe_buffer *);
|
||||
void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
void * (*map)(struct pipe_inode_info *, struct pipe_buffer *, int);
|
||||
void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *, void *);
|
||||
int (*pin)(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
void (*release)(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
int (*steal)(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
void (*get)(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
@@ -51,6 +65,13 @@ struct pipe_inode_info * alloc_pipe_info(struct inode * inode);
|
||||
void free_pipe_info(struct inode * inode);
|
||||
void __free_pipe_info(struct pipe_inode_info *);
|
||||
|
||||
/* Generic pipe buffer ops functions */
|
||||
void *generic_pipe_buf_map(struct pipe_inode_info *, struct pipe_buffer *, int);
|
||||
void generic_pipe_buf_unmap(struct pipe_inode_info *, struct pipe_buffer *, void *);
|
||||
void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);
|
||||
|
||||
/*
|
||||
* splice is tied to pipes as a transport (at least for now), so we'll just
|
||||
* add the splice flags here.
|
||||
@@ -60,6 +81,7 @@ void __free_pipe_info(struct pipe_inode_info *);
|
||||
/* we may still block on the fd we splice */
|
||||
/* from/to, of course */
|
||||
#define SPLICE_F_MORE (0x04) /* expect more data */
|
||||
#define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */
|
||||
|
||||
/*
|
||||
* Passed to the actors
|
||||
|
@@ -869,11 +869,6 @@ struct swap_info_struct;
|
||||
* @ipcp contains the kernel IPC permission structure
|
||||
* @flag contains the desired (requested) permission set
|
||||
* Return 0 if permission is granted.
|
||||
* @ipc_getsecurity:
|
||||
* Copy the security label associated with the ipc object into
|
||||
* @buffer. @buffer may be NULL to request the size of the buffer
|
||||
* required. @size indicates the size of @buffer in bytes. Return
|
||||
* number of bytes used/required on success.
|
||||
*
|
||||
* Security hooks for individual messages held in System V IPC message queues
|
||||
* @msg_msg_alloc_security:
|
||||
@@ -1223,7 +1218,6 @@ struct security_operations {
|
||||
void (*task_to_inode)(struct task_struct *p, struct inode *inode);
|
||||
|
||||
int (*ipc_permission) (struct kern_ipc_perm * ipcp, short flag);
|
||||
int (*ipc_getsecurity)(struct kern_ipc_perm *ipcp, void *buffer, size_t size);
|
||||
|
||||
int (*msg_msg_alloc_security) (struct msg_msg * msg);
|
||||
void (*msg_msg_free_security) (struct msg_msg * msg);
|
||||
@@ -1887,11 +1881,6 @@ static inline int security_ipc_permission (struct kern_ipc_perm *ipcp,
|
||||
return security_ops->ipc_permission (ipcp, flag);
|
||||
}
|
||||
|
||||
static inline int security_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size)
|
||||
{
|
||||
return security_ops->ipc_getsecurity(ipcp, buffer, size);
|
||||
}
|
||||
|
||||
static inline int security_msg_msg_alloc (struct msg_msg * msg)
|
||||
{
|
||||
return security_ops->msg_msg_alloc_security (msg);
|
||||
@@ -2532,11 +2521,6 @@ static inline int security_ipc_permission (struct kern_ipc_perm *ipcp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int security_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static inline int security_msg_msg_alloc (struct msg_msg * msg)
|
||||
{
|
||||
return 0;
|
||||
|
177
include/linux/selinux.h
Normal file
177
include/linux/selinux.h
Normal file
@@ -0,0 +1,177 @@
|
||||
/*
|
||||
* SELinux services exported to the rest of the kernel.
|
||||
*
|
||||
* Author: James Morris <jmorris@redhat.com>
|
||||
*
|
||||
* Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com>
|
||||
* Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com>
|
||||
* Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef _LINUX_SELINUX_H
|
||||
#define _LINUX_SELINUX_H
|
||||
|
||||
struct selinux_audit_rule;
|
||||
struct audit_context;
|
||||
struct inode;
|
||||
struct kern_ipc_perm;
|
||||
|
||||
#ifdef CONFIG_SECURITY_SELINUX
|
||||
|
||||
/**
|
||||
* selinux_audit_rule_init - alloc/init an selinux audit rule structure.
|
||||
* @field: the field this rule refers to
|
||||
* @op: the operater the rule uses
|
||||
* @rulestr: the text "target" of the rule
|
||||
* @rule: pointer to the new rule structure returned via this
|
||||
*
|
||||
* Returns 0 if successful, -errno if not. On success, the rule structure
|
||||
* will be allocated internally. The caller must free this structure with
|
||||
* selinux_audit_rule_free() after use.
|
||||
*/
|
||||
int selinux_audit_rule_init(u32 field, u32 op, char *rulestr,
|
||||
struct selinux_audit_rule **rule);
|
||||
|
||||
/**
|
||||
* selinux_audit_rule_free - free an selinux audit rule structure.
|
||||
* @rule: pointer to the audit rule to be freed
|
||||
*
|
||||
* This will free all memory associated with the given rule.
|
||||
* If @rule is NULL, no operation is performed.
|
||||
*/
|
||||
void selinux_audit_rule_free(struct selinux_audit_rule *rule);
|
||||
|
||||
/**
|
||||
* selinux_audit_rule_match - determine if a context ID matches a rule.
|
||||
* @ctxid: the context ID to check
|
||||
* @field: the field this rule refers to
|
||||
* @op: the operater the rule uses
|
||||
* @rule: pointer to the audit rule to check against
|
||||
* @actx: the audit context (can be NULL) associated with the check
|
||||
*
|
||||
* Returns 1 if the context id matches the rule, 0 if it does not, and
|
||||
* -errno on failure.
|
||||
*/
|
||||
int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
|
||||
struct selinux_audit_rule *rule,
|
||||
struct audit_context *actx);
|
||||
|
||||
/**
|
||||
* selinux_audit_set_callback - set the callback for policy reloads.
|
||||
* @callback: the function to call when the policy is reloaded
|
||||
*
|
||||
* This sets the function callback function that will update the rules
|
||||
* upon policy reloads. This callback should rebuild all existing rules
|
||||
* using selinux_audit_rule_init().
|
||||
*/
|
||||
void selinux_audit_set_callback(int (*callback)(void));
|
||||
|
||||
/**
|
||||
* selinux_task_ctxid - determine a context ID for a process.
|
||||
* @tsk: the task object
|
||||
* @ctxid: ID value returned via this
|
||||
*
|
||||
* On return, ctxid will contain an ID for the context. This value
|
||||
* should only be used opaquely.
|
||||
*/
|
||||
void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid);
|
||||
|
||||
/**
|
||||
* selinux_ctxid_to_string - map a security context ID to a string
|
||||
* @ctxid: security context ID to be converted.
|
||||
* @ctx: address of context string to be returned
|
||||
* @ctxlen: length of returned context string.
|
||||
*
|
||||
* Returns 0 if successful, -errno if not. On success, the context
|
||||
* string will be allocated internally, and the caller must call
|
||||
* kfree() on it after use.
|
||||
*/
|
||||
int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen);
|
||||
|
||||
/**
|
||||
* selinux_get_inode_sid - get the inode's security context ID
|
||||
* @inode: inode structure to get the sid from.
|
||||
* @sid: pointer to security context ID to be filled in.
|
||||
*
|
||||
* Returns nothing
|
||||
*/
|
||||
void selinux_get_inode_sid(const struct inode *inode, u32 *sid);
|
||||
|
||||
/**
|
||||
* selinux_get_ipc_sid - get the ipc security context ID
|
||||
* @ipcp: ipc structure to get the sid from.
|
||||
* @sid: pointer to security context ID to be filled in.
|
||||
*
|
||||
* Returns nothing
|
||||
*/
|
||||
void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid);
|
||||
|
||||
/**
|
||||
* selinux_get_task_sid - return the SID of task
|
||||
* @tsk: the task whose SID will be returned
|
||||
* @sid: pointer to security context ID to be filled in.
|
||||
*
|
||||
* Returns nothing
|
||||
*/
|
||||
void selinux_get_task_sid(struct task_struct *tsk, u32 *sid);
|
||||
|
||||
|
||||
#else
|
||||
|
||||
static inline int selinux_audit_rule_init(u32 field, u32 op,
|
||||
char *rulestr,
|
||||
struct selinux_audit_rule **rule)
|
||||
{
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
static inline void selinux_audit_rule_free(struct selinux_audit_rule *rule)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
|
||||
struct selinux_audit_rule *rule,
|
||||
struct audit_context *actx)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void selinux_audit_set_callback(int (*callback)(void))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid)
|
||||
{
|
||||
*ctxid = 0;
|
||||
}
|
||||
|
||||
static inline int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen)
|
||||
{
|
||||
*ctx = NULL;
|
||||
*ctxlen = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void selinux_get_inode_sid(const struct inode *inode, u32 *sid)
|
||||
{
|
||||
*sid = 0;
|
||||
}
|
||||
|
||||
static inline void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid)
|
||||
{
|
||||
*sid = 0;
|
||||
}
|
||||
|
||||
static inline void selinux_get_task_sid(struct task_struct *tsk, u32 *sid)
|
||||
{
|
||||
*sid = 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SECURITY_SELINUX */
|
||||
|
||||
#endif /* _LINUX_SELINUX_H */
|
Reference in New Issue
Block a user