Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
This commit is contained in:
+15
-7
@@ -83,6 +83,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 */
|
||||
@@ -145,6 +146,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; })
|
||||
|
||||
@@ -58,9 +58,8 @@ struct dentry *debugfs_create_blob(const char *name, mode_t mode,
|
||||
*/
|
||||
|
||||
static inline struct dentry *debugfs_create_file(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
void *data,
|
||||
struct file_operations *fops)
|
||||
struct dentry *parent, void *data,
|
||||
const struct file_operations *fops)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
@@ -1220,7 +1220,6 @@ typedef struct ide_pci_enablebit_s {
|
||||
enum {
|
||||
/* Uses ISA control ports not PCI ones. */
|
||||
IDEPCI_FLAG_ISA_PORTS = (1 << 0),
|
||||
IDEPCI_FLAG_FORCE_PDC = (1 << 1),
|
||||
};
|
||||
|
||||
typedef struct ide_pci_device_s {
|
||||
|
||||
+57
-52
@@ -12,8 +12,6 @@
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/time.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#include <sys/ioctl.h>
|
||||
@@ -58,6 +56,8 @@ struct input_absinfo {
|
||||
|
||||
#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
|
||||
#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
|
||||
#define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */
|
||||
#define EVIOCSREP _IOW('E', 0x03, int[2]) /* set repeat settings */
|
||||
#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */
|
||||
#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */
|
||||
|
||||
@@ -577,15 +577,15 @@ struct input_absinfo {
|
||||
* Switch events
|
||||
*/
|
||||
|
||||
#define SW_0 0x00
|
||||
#define SW_1 0x01
|
||||
#define SW_2 0x02
|
||||
#define SW_3 0x03
|
||||
#define SW_4 0x04
|
||||
#define SW_5 0x05
|
||||
#define SW_6 0x06
|
||||
#define SW_7 0x07
|
||||
#define SW_MAX 0x0f
|
||||
#define SW_0 0x00
|
||||
#define SW_1 0x01
|
||||
#define SW_2 0x02
|
||||
#define SW_3 0x03
|
||||
#define SW_4 0x04
|
||||
#define SW_5 0x05
|
||||
#define SW_6 0x06
|
||||
#define SW_7 0x07
|
||||
#define SW_MAX 0x0f
|
||||
|
||||
/*
|
||||
* Misc events
|
||||
@@ -805,52 +805,16 @@ struct ff_effect {
|
||||
|
||||
#define FF_MAX 0x7f
|
||||
|
||||
struct input_device_id {
|
||||
|
||||
kernel_ulong_t flags;
|
||||
|
||||
struct input_id id;
|
||||
|
||||
kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1];
|
||||
|
||||
kernel_ulong_t driver_info;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure for hotplug & device<->driver matching.
|
||||
*/
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_BUS 1
|
||||
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
|
||||
#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
|
||||
#define INPUT_DEVICE_ID_MATCH_VERSION 8
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_EVBIT 0x010
|
||||
#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020
|
||||
#define INPUT_DEVICE_ID_MATCH_RELBIT 0x040
|
||||
#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080
|
||||
#define INPUT_DEVICE_ID_MATCH_MSCIT 0x100
|
||||
#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200
|
||||
#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400
|
||||
#define INPUT_DEVICE_ID_MATCH_FFBIT 0x800
|
||||
#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/*
|
||||
* In-kernel definitions.
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
#define NBITS(x) (((x)/BITS_PER_LONG)+1)
|
||||
#define BIT(x) (1UL<<((x)%BITS_PER_LONG))
|
||||
@@ -951,9 +915,49 @@ struct input_dev {
|
||||
};
|
||||
#define to_input_dev(d) container_of(d, struct input_dev, cdev)
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_DEVICE\
|
||||
/*
|
||||
* Verify that we are in sync with input_device_id mod_devicetable.h #defines
|
||||
*/
|
||||
|
||||
#if EV_MAX != INPUT_DEVICE_ID_EV_MAX
|
||||
#error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
|
||||
#error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if REL_MAX != INPUT_DEVICE_ID_REL_MAX
|
||||
#error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
|
||||
#error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
|
||||
#error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if LED_MAX != INPUT_DEVICE_ID_LED_MAX
|
||||
#error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if SND_MAX != INPUT_DEVICE_ID_SND_MAX
|
||||
#error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if FF_MAX != INPUT_DEVICE_ID_FF_MAX
|
||||
#error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
|
||||
#endif
|
||||
|
||||
#if SW_MAX != INPUT_DEVICE_ID_SW_MAX
|
||||
#error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
|
||||
#endif
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_DEVICE \
|
||||
(INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
|
||||
#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\
|
||||
#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
|
||||
(INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
|
||||
|
||||
struct input_handle;
|
||||
@@ -1016,7 +1020,8 @@ static inline void input_put_device(struct input_dev *dev)
|
||||
|
||||
static inline void input_free_device(struct input_dev *dev)
|
||||
{
|
||||
input_put_device(dev);
|
||||
if (dev)
|
||||
input_put_device(dev);
|
||||
}
|
||||
|
||||
int input_register_device(struct input_dev *);
|
||||
|
||||
@@ -257,9 +257,8 @@ struct subsys_attribute {
|
||||
};
|
||||
|
||||
extern int subsys_create_file(struct subsystem * , struct subsys_attribute *);
|
||||
extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *);
|
||||
|
||||
#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET)
|
||||
#if defined(CONFIG_HOTPLUG)
|
||||
void kobject_uevent(struct kobject *kobj, enum kobject_action action);
|
||||
|
||||
int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -99,10 +99,7 @@ static inline int __remove_pages(struct zone *zone, unsigned long start_pfn,
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MEMORY_HOTPLUG) || defined(CONFIG_ACPI_HOTPLUG_MEMORY) \
|
||||
|| defined(CONFIG_ACPI_HOTPLUG_MEMORY_MODULE)
|
||||
extern int add_memory(u64 start, u64 size);
|
||||
extern int remove_memory(u64 start, u64 size);
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_MEMORY_HOTPLUG_H */
|
||||
|
||||
@@ -249,4 +249,52 @@ struct i2c_device_id {
|
||||
__u16 id;
|
||||
};
|
||||
|
||||
/* Input */
|
||||
#define INPUT_DEVICE_ID_EV_MAX 0x1f
|
||||
#define INPUT_DEVICE_ID_KEY_MAX 0x1ff
|
||||
#define INPUT_DEVICE_ID_REL_MAX 0x0f
|
||||
#define INPUT_DEVICE_ID_ABS_MAX 0x3f
|
||||
#define INPUT_DEVICE_ID_MSC_MAX 0x07
|
||||
#define INPUT_DEVICE_ID_LED_MAX 0x0f
|
||||
#define INPUT_DEVICE_ID_SND_MAX 0x07
|
||||
#define INPUT_DEVICE_ID_FF_MAX 0x7f
|
||||
#define INPUT_DEVICE_ID_SW_MAX 0x0f
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_BUS 1
|
||||
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
|
||||
#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
|
||||
#define INPUT_DEVICE_ID_MATCH_VERSION 8
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010
|
||||
#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020
|
||||
#define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040
|
||||
#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080
|
||||
#define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100
|
||||
#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200
|
||||
#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
|
||||
#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
|
||||
#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
|
||||
|
||||
struct input_device_id {
|
||||
|
||||
kernel_ulong_t flags;
|
||||
|
||||
__u16 bustype;
|
||||
__u16 vendor;
|
||||
__u16 product;
|
||||
__u16 version;
|
||||
|
||||
kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
|
||||
kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
|
||||
|
||||
kernel_ulong_t driver_info;
|
||||
};
|
||||
|
||||
#endif /* LINUX_MOD_DEVICETABLE_H */
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#ifndef __ASM_MV643XX_H
|
||||
#define __ASM_MV643XX_H
|
||||
|
||||
#ifdef __MIPS__
|
||||
#ifdef __mips__
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/marvell.h>
|
||||
#endif
|
||||
|
||||
@@ -829,19 +829,21 @@ static inline void netif_rx_schedule(struct net_device *dev)
|
||||
__netif_rx_schedule(dev);
|
||||
}
|
||||
|
||||
/* Try to reschedule poll. Called by dev->poll() after netif_rx_complete().
|
||||
* Do not inline this?
|
||||
*/
|
||||
|
||||
static inline void __netif_rx_reschedule(struct net_device *dev, int undo)
|
||||
{
|
||||
dev->quota += undo;
|
||||
list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list);
|
||||
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
||||
}
|
||||
|
||||
/* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). */
|
||||
static inline int netif_rx_reschedule(struct net_device *dev, int undo)
|
||||
{
|
||||
if (netif_rx_schedule_prep(dev)) {
|
||||
unsigned long flags;
|
||||
|
||||
dev->quota += undo;
|
||||
|
||||
local_irq_save(flags);
|
||||
list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list);
|
||||
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
|
||||
__netif_rx_reschedule(dev, undo);
|
||||
local_irq_restore(flags);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
@@ -361,7 +369,11 @@ struct compat_xt_entry_target
|
||||
|
||||
struct compat_xt_counters
|
||||
{
|
||||
#if defined(CONFIG_X86_64) || defined(CONFIG_IA64)
|
||||
u_int32_t cnt[4];
|
||||
#else
|
||||
u_int64_t cnt[2];
|
||||
#endif
|
||||
};
|
||||
|
||||
struct compat_xt_counters_info
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -78,6 +78,8 @@ extern struct page * find_or_create_page(struct address_space *mapping,
|
||||
unsigned long index, gfp_t gfp_mask);
|
||||
unsigned find_get_pages(struct address_space *mapping, pgoff_t start,
|
||||
unsigned int nr_pages, struct page **pages);
|
||||
unsigned find_get_pages_contig(struct address_space *mapping, pgoff_t start,
|
||||
unsigned int nr_pages, struct page **pages);
|
||||
unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index,
|
||||
int tag, unsigned int nr_pages, struct page **pages);
|
||||
|
||||
|
||||
@@ -356,6 +356,10 @@
|
||||
#define PCI_DEVICE_ID_ATI_IXP300_SATA 0x436e
|
||||
#define PCI_DEVICE_ID_ATI_IXP400_IDE 0x4376
|
||||
#define PCI_DEVICE_ID_ATI_IXP400_SATA 0x4379
|
||||
#define PCI_DEVICE_ID_ATI_IXP400_SATA2 0x437a
|
||||
#define PCI_DEVICE_ID_ATI_IXP600_SATA 0x4380
|
||||
#define PCI_DEVICE_ID_ATI_IXP600_SRAID 0x4381
|
||||
#define PCI_DEVICE_ID_ATI_IXP600_IDE 0x438c
|
||||
|
||||
#define PCI_VENDOR_ID_VLSI 0x1004
|
||||
#define PCI_DEVICE_ID_VLSI_82C592 0x0005
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
#define PIPE_BUFFERS (16)
|
||||
|
||||
#define PIPE_BUF_FLAG_STOLEN 0x01
|
||||
#define PIPE_BUF_FLAG_LRU 0x02
|
||||
#define PIPE_BUF_FLAG_ATOMIC 0x01 /* was atomically mapped */
|
||||
#define PIPE_BUF_FLAG_GIFT 0x02 /* page is a gift */
|
||||
|
||||
struct pipe_buffer {
|
||||
struct page *page;
|
||||
@@ -15,10 +15,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 +64,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,5 +80,23 @@ 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
|
||||
*/
|
||||
struct splice_desc {
|
||||
unsigned int len, total_len; /* current and remaining length */
|
||||
unsigned int flags; /* splice flags */
|
||||
struct file *file; /* file to read/write */
|
||||
loff_t pos; /* file position */
|
||||
};
|
||||
|
||||
typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *,
|
||||
struct splice_desc *);
|
||||
|
||||
extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *,
|
||||
loff_t *, size_t, unsigned int,
|
||||
splice_actor *);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1192,8 +1192,7 @@ extern void wait_task_inactive(task_t * p);
|
||||
#define remove_parent(p) list_del_init(&(p)->sibling)
|
||||
#define add_parent(p) list_add_tail(&(p)->sibling,&(p)->parent->children)
|
||||
|
||||
#define next_task(p) list_entry((p)->tasks.next, struct task_struct, tasks)
|
||||
#define prev_task(p) list_entry((p)->tasks.prev, struct task_struct, tasks)
|
||||
#define next_task(p) list_entry(rcu_dereference((p)->tasks.next), struct task_struct, tasks)
|
||||
|
||||
#define for_each_process(p) \
|
||||
for (p = &init_task ; (p = next_task(p)) != &init_task ; )
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
@@ -14,10 +14,12 @@
|
||||
*
|
||||
* SA_INTERRUPT is also used by the irq handling routines.
|
||||
* SA_SHIRQ is for shared interrupt support on PCI and EISA.
|
||||
* SA_PROBEIRQ is set by callers when they expect sharing mismatches to occur
|
||||
*/
|
||||
#define SA_PROBE SA_ONESHOT
|
||||
#define SA_SAMPLE_RANDOM SA_RESTART
|
||||
#define SA_SHIRQ 0x04000000
|
||||
#define SA_PROBEIRQ 0x08000000
|
||||
|
||||
/*
|
||||
* As above, these correspond to the IORESOURCE_IRQ_* defines in
|
||||
* linux/ioport.h to select the interrupt line behaviour. When
|
||||
|
||||
@@ -344,6 +344,13 @@ extern void skb_over_panic(struct sk_buff *skb, int len,
|
||||
void *here);
|
||||
extern void skb_under_panic(struct sk_buff *skb, int len,
|
||||
void *here);
|
||||
extern void skb_truesize_bug(struct sk_buff *skb);
|
||||
|
||||
static inline void skb_truesize_check(struct sk_buff *skb)
|
||||
{
|
||||
if (unlikely((int)skb->truesize < sizeof(struct sk_buff) + skb->len))
|
||||
skb_truesize_bug(skb);
|
||||
}
|
||||
|
||||
extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
|
||||
int getfrag(void *from, char *to, int offset,
|
||||
|
||||
@@ -14,5 +14,12 @@ struct ads7846_platform_data {
|
||||
u16 x_min, x_max;
|
||||
u16 y_min, y_max;
|
||||
u16 pressure_min, pressure_max;
|
||||
|
||||
u16 debounce_max; /* max number of additional readings
|
||||
* per sample */
|
||||
u16 debounce_tol; /* tolerance used for filtering */
|
||||
u16 debounce_rep; /* additional consecutive good readings
|
||||
* required after the first two */
|
||||
int (*get_pendown_state)(void);
|
||||
};
|
||||
|
||||
|
||||
@@ -69,9 +69,21 @@ struct rpc_clnt;
|
||||
/*
|
||||
* EXPORTed functions for managing rpc_iostats structures
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
||||
struct rpc_iostats * rpc_alloc_iostats(struct rpc_clnt *);
|
||||
void rpc_count_iostats(struct rpc_task *);
|
||||
void rpc_print_iostats(struct seq_file *, struct rpc_clnt *);
|
||||
void rpc_free_iostats(struct rpc_iostats *);
|
||||
|
||||
#else /* CONFIG_PROC_FS */
|
||||
|
||||
static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; }
|
||||
static inline void rpc_count_iostats(struct rpc_task *task) {}
|
||||
static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {}
|
||||
static inline void rpc_free_iostats(struct rpc_iostats *stats) {}
|
||||
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
|
||||
#endif /* _LINUX_SUNRPC_METRICS_H */
|
||||
|
||||
@@ -53,6 +53,7 @@ struct rpc_timeout {
|
||||
|
||||
struct rpc_task;
|
||||
struct rpc_xprt;
|
||||
struct seq_file;
|
||||
|
||||
/*
|
||||
* This describes a complete RPC request
|
||||
|
||||
@@ -574,6 +574,9 @@ asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
|
||||
int fd_out, loff_t __user *off_out,
|
||||
size_t len, unsigned int flags);
|
||||
|
||||
asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
|
||||
unsigned long nr_segs, unsigned int flags);
|
||||
|
||||
asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags);
|
||||
|
||||
asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
|
||||
|
||||
Reference in New Issue
Block a user