diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ata.h | 2 | ||||
| -rw-r--r-- | include/linux/capability.h | 2 | ||||
| -rw-r--r-- | include/linux/compat.h | 4 | ||||
| -rw-r--r-- | include/linux/devfreq.h | 16 | ||||
| -rw-r--r-- | include/linux/ftrace.h | 5 | ||||
| -rw-r--r-- | include/linux/kvm_host.h | 2 | ||||
| -rw-r--r-- | include/linux/kvm_types.h | 1 | ||||
| -rw-r--r-- | include/linux/libata.h | 1 | ||||
| -rw-r--r-- | include/linux/netdevice.h | 4 | ||||
| -rw-r--r-- | include/linux/pci.h | 1 | ||||
| -rw-r--r-- | include/linux/preempt.h | 22 | ||||
| -rw-r--r-- | include/linux/proc_fs.h | 2 | ||||
| -rw-r--r-- | include/linux/security.h | 12 | ||||
| -rw-r--r-- | include/linux/signal.h | 4 | ||||
| -rw-r--r-- | include/linux/skbuff.h | 7 | ||||
| -rw-r--r-- | include/linux/spinlock_up.h | 29 |
16 files changed, 78 insertions, 36 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index 8f7a3d68371a..ee0bd9524055 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
| @@ -954,7 +954,7 @@ static inline int atapi_cdb_len(const u16 *dev_id) | |||
| 954 | } | 954 | } |
| 955 | } | 955 | } |
| 956 | 956 | ||
| 957 | static inline bool atapi_command_packet_set(const u16 *dev_id) | 957 | static inline int atapi_command_packet_set(const u16 *dev_id) |
| 958 | { | 958 | { |
| 959 | return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f; | 959 | return (dev_id[ATA_ID_CONFIG] >> 8) & 0x1f; |
| 960 | } | 960 | } |
diff --git a/include/linux/capability.h b/include/linux/capability.h index 98503b792369..d9a4f7f40f32 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h | |||
| @@ -35,6 +35,7 @@ struct cpu_vfs_cap_data { | |||
| 35 | #define _KERNEL_CAP_T_SIZE (sizeof(kernel_cap_t)) | 35 | #define _KERNEL_CAP_T_SIZE (sizeof(kernel_cap_t)) |
| 36 | 36 | ||
| 37 | 37 | ||
| 38 | struct file; | ||
| 38 | struct inode; | 39 | struct inode; |
| 39 | struct dentry; | 40 | struct dentry; |
| 40 | struct user_namespace; | 41 | struct user_namespace; |
| @@ -211,6 +212,7 @@ extern bool capable(int cap); | |||
| 211 | extern bool ns_capable(struct user_namespace *ns, int cap); | 212 | extern bool ns_capable(struct user_namespace *ns, int cap); |
| 212 | extern bool nsown_capable(int cap); | 213 | extern bool nsown_capable(int cap); |
| 213 | extern bool inode_capable(const struct inode *inode, int cap); | 214 | extern bool inode_capable(const struct inode *inode, int cap); |
| 215 | extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap); | ||
| 214 | 216 | ||
| 215 | /* audit system wants to get cap info from files as well */ | 217 | /* audit system wants to get cap info from files as well */ |
| 216 | extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); | 218 | extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); |
diff --git a/include/linux/compat.h b/include/linux/compat.h index 76a87fb57ac2..377cd8c3395e 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
| @@ -141,11 +141,11 @@ typedef struct { | |||
| 141 | } compat_sigset_t; | 141 | } compat_sigset_t; |
| 142 | 142 | ||
| 143 | struct compat_sigaction { | 143 | struct compat_sigaction { |
| 144 | #ifndef __ARCH_HAS_ODD_SIGACTION | 144 | #ifndef __ARCH_HAS_IRIX_SIGACTION |
| 145 | compat_uptr_t sa_handler; | 145 | compat_uptr_t sa_handler; |
| 146 | compat_ulong_t sa_flags; | 146 | compat_ulong_t sa_flags; |
| 147 | #else | 147 | #else |
| 148 | compat_ulong_t sa_flags; | 148 | compat_uint_t sa_flags; |
| 149 | compat_uptr_t sa_handler; | 149 | compat_uptr_t sa_handler; |
| 150 | #endif | 150 | #endif |
| 151 | #ifdef __ARCH_HAS_SA_RESTORER | 151 | #ifdef __ARCH_HAS_SA_RESTORER |
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index e83ef39b3bea..fe8c4476f7e4 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h | |||
| @@ -213,7 +213,7 @@ struct devfreq_simple_ondemand_data { | |||
| 213 | #endif | 213 | #endif |
| 214 | 214 | ||
| 215 | #else /* !CONFIG_PM_DEVFREQ */ | 215 | #else /* !CONFIG_PM_DEVFREQ */ |
| 216 | static struct devfreq *devfreq_add_device(struct device *dev, | 216 | static inline struct devfreq *devfreq_add_device(struct device *dev, |
| 217 | struct devfreq_dev_profile *profile, | 217 | struct devfreq_dev_profile *profile, |
| 218 | const char *governor_name, | 218 | const char *governor_name, |
| 219 | void *data) | 219 | void *data) |
| @@ -221,34 +221,34 @@ static struct devfreq *devfreq_add_device(struct device *dev, | |||
| 221 | return NULL; | 221 | return NULL; |
| 222 | } | 222 | } |
| 223 | 223 | ||
| 224 | static int devfreq_remove_device(struct devfreq *devfreq) | 224 | static inline int devfreq_remove_device(struct devfreq *devfreq) |
| 225 | { | 225 | { |
| 226 | return 0; | 226 | return 0; |
| 227 | } | 227 | } |
| 228 | 228 | ||
| 229 | static int devfreq_suspend_device(struct devfreq *devfreq) | 229 | static inline int devfreq_suspend_device(struct devfreq *devfreq) |
| 230 | { | 230 | { |
| 231 | return 0; | 231 | return 0; |
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | static int devfreq_resume_device(struct devfreq *devfreq) | 234 | static inline int devfreq_resume_device(struct devfreq *devfreq) |
| 235 | { | 235 | { |
| 236 | return 0; | 236 | return 0; |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | static struct opp *devfreq_recommended_opp(struct device *dev, | 239 | static inline struct opp *devfreq_recommended_opp(struct device *dev, |
| 240 | unsigned long *freq, u32 flags) | 240 | unsigned long *freq, u32 flags) |
| 241 | { | 241 | { |
| 242 | return -EINVAL; | 242 | return ERR_PTR(-EINVAL); |
| 243 | } | 243 | } |
| 244 | 244 | ||
| 245 | static int devfreq_register_opp_notifier(struct device *dev, | 245 | static inline int devfreq_register_opp_notifier(struct device *dev, |
| 246 | struct devfreq *devfreq) | 246 | struct devfreq *devfreq) |
| 247 | { | 247 | { |
| 248 | return -EINVAL; | 248 | return -EINVAL; |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | static int devfreq_unregister_opp_notifier(struct device *dev, | 251 | static inline int devfreq_unregister_opp_notifier(struct device *dev, |
| 252 | struct devfreq *devfreq) | 252 | struct devfreq *devfreq) |
| 253 | { | 253 | { |
| 254 | return -EINVAL; | 254 | return -EINVAL; |
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index e5ca8ef50e9b..52da2a250795 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h | |||
| @@ -89,6 +89,7 @@ typedef void (*ftrace_func_t)(unsigned long ip, unsigned long parent_ip, | |||
| 89 | * that the call back has its own recursion protection. If it does | 89 | * that the call back has its own recursion protection. If it does |
| 90 | * not set this, then the ftrace infrastructure will add recursion | 90 | * not set this, then the ftrace infrastructure will add recursion |
| 91 | * protection for the caller. | 91 | * protection for the caller. |
| 92 | * STUB - The ftrace_ops is just a place holder. | ||
| 92 | */ | 93 | */ |
| 93 | enum { | 94 | enum { |
| 94 | FTRACE_OPS_FL_ENABLED = 1 << 0, | 95 | FTRACE_OPS_FL_ENABLED = 1 << 0, |
| @@ -98,6 +99,7 @@ enum { | |||
| 98 | FTRACE_OPS_FL_SAVE_REGS = 1 << 4, | 99 | FTRACE_OPS_FL_SAVE_REGS = 1 << 4, |
| 99 | FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED = 1 << 5, | 100 | FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED = 1 << 5, |
| 100 | FTRACE_OPS_FL_RECURSION_SAFE = 1 << 6, | 101 | FTRACE_OPS_FL_RECURSION_SAFE = 1 << 6, |
| 102 | FTRACE_OPS_FL_STUB = 1 << 7, | ||
| 101 | }; | 103 | }; |
| 102 | 104 | ||
| 103 | struct ftrace_ops { | 105 | struct ftrace_ops { |
| @@ -394,7 +396,6 @@ ssize_t ftrace_filter_write(struct file *file, const char __user *ubuf, | |||
| 394 | size_t cnt, loff_t *ppos); | 396 | size_t cnt, loff_t *ppos); |
| 395 | ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf, | 397 | ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf, |
| 396 | size_t cnt, loff_t *ppos); | 398 | size_t cnt, loff_t *ppos); |
| 397 | loff_t ftrace_regex_lseek(struct file *file, loff_t offset, int whence); | ||
| 398 | int ftrace_regex_release(struct inode *inode, struct file *file); | 399 | int ftrace_regex_release(struct inode *inode, struct file *file); |
| 399 | 400 | ||
| 400 | void __init | 401 | void __init |
| @@ -567,6 +568,8 @@ static inline int | |||
| 567 | ftrace_regex_release(struct inode *inode, struct file *file) { return -ENODEV; } | 568 | ftrace_regex_release(struct inode *inode, struct file *file) { return -ENODEV; } |
| 568 | #endif /* CONFIG_DYNAMIC_FTRACE */ | 569 | #endif /* CONFIG_DYNAMIC_FTRACE */ |
| 569 | 570 | ||
| 571 | loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int whence); | ||
| 572 | |||
| 570 | /* totally disable ftrace - can not re-enable after this */ | 573 | /* totally disable ftrace - can not re-enable after this */ |
| 571 | void ftrace_kill(void); | 574 | void ftrace_kill(void); |
| 572 | 575 | ||
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index cad77fe09d77..c13958251927 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
| @@ -518,7 +518,7 @@ int kvm_write_guest(struct kvm *kvm, gpa_t gpa, const void *data, | |||
| 518 | int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, | 518 | int kvm_write_guest_cached(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
| 519 | void *data, unsigned long len); | 519 | void *data, unsigned long len); |
| 520 | int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, | 520 | int kvm_gfn_to_hva_cache_init(struct kvm *kvm, struct gfn_to_hva_cache *ghc, |
| 521 | gpa_t gpa); | 521 | gpa_t gpa, unsigned long len); |
| 522 | int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len); | 522 | int kvm_clear_guest_page(struct kvm *kvm, gfn_t gfn, int offset, int len); |
| 523 | int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len); | 523 | int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len); |
| 524 | struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn); | 524 | struct kvm_memory_slot *gfn_to_memslot(struct kvm *kvm, gfn_t gfn); |
diff --git a/include/linux/kvm_types.h b/include/linux/kvm_types.h index fa7cc7244cbd..b0bcce0ddc95 100644 --- a/include/linux/kvm_types.h +++ b/include/linux/kvm_types.h | |||
| @@ -71,6 +71,7 @@ struct gfn_to_hva_cache { | |||
| 71 | u64 generation; | 71 | u64 generation; |
| 72 | gpa_t gpa; | 72 | gpa_t gpa; |
| 73 | unsigned long hva; | 73 | unsigned long hva; |
| 74 | unsigned long len; | ||
| 74 | struct kvm_memory_slot *memslot; | 75 | struct kvm_memory_slot *memslot; |
| 75 | }; | 76 | }; |
| 76 | 77 | ||
diff --git a/include/linux/libata.h b/include/linux/libata.h index 91c9d109e5f1..eae7a053dc51 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -398,6 +398,7 @@ enum { | |||
| 398 | ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ | 398 | ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ |
| 399 | ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ | 399 | ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ |
| 400 | ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ | 400 | ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ |
| 401 | ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */ | ||
| 401 | 402 | ||
| 402 | /* DMA mask for user DMA control: User visible values; DO NOT | 403 | /* DMA mask for user DMA control: User visible values; DO NOT |
| 403 | renumber */ | 404 | renumber */ |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index b3d00fa4b314..6151e903eef0 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -210,9 +210,9 @@ struct netdev_hw_addr { | |||
| 210 | #define NETDEV_HW_ADDR_T_SLAVE 3 | 210 | #define NETDEV_HW_ADDR_T_SLAVE 3 |
| 211 | #define NETDEV_HW_ADDR_T_UNICAST 4 | 211 | #define NETDEV_HW_ADDR_T_UNICAST 4 |
| 212 | #define NETDEV_HW_ADDR_T_MULTICAST 5 | 212 | #define NETDEV_HW_ADDR_T_MULTICAST 5 |
| 213 | bool synced; | ||
| 214 | bool global_use; | 213 | bool global_use; |
| 215 | int refcount; | 214 | int refcount; |
| 215 | int synced; | ||
| 216 | struct rcu_head rcu_head; | 216 | struct rcu_head rcu_head; |
| 217 | }; | 217 | }; |
| 218 | 218 | ||
| @@ -895,7 +895,7 @@ struct netdev_fcoe_hbainfo { | |||
| 895 | * | 895 | * |
| 896 | * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh) | 896 | * int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh) |
| 897 | * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq, | 897 | * int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq, |
| 898 | * struct net_device *dev) | 898 | * struct net_device *dev, u32 filter_mask) |
| 899 | * | 899 | * |
| 900 | * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier); | 900 | * int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier); |
| 901 | * Called to change device carrier. Soft-devices (like dummy, team, etc) | 901 | * Called to change device carrier. Soft-devices (like dummy, team, etc) |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 2461033a7987..710067f3618c 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -916,6 +916,7 @@ void pci_disable_rom(struct pci_dev *pdev); | |||
| 916 | void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size); | 916 | void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size); |
| 917 | void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); | 917 | void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); |
| 918 | size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size); | 918 | size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size); |
| 919 | void __iomem __must_check *pci_platform_rom(struct pci_dev *pdev, size_t *size); | ||
| 919 | 920 | ||
| 920 | /* Power management related routines */ | 921 | /* Power management related routines */ |
| 921 | int pci_save_state(struct pci_dev *dev); | 922 | int pci_save_state(struct pci_dev *dev); |
diff --git a/include/linux/preempt.h b/include/linux/preempt.h index 5a710b9c578e..87a03c746f17 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h | |||
| @@ -93,14 +93,20 @@ do { \ | |||
| 93 | 93 | ||
| 94 | #else /* !CONFIG_PREEMPT_COUNT */ | 94 | #else /* !CONFIG_PREEMPT_COUNT */ |
| 95 | 95 | ||
| 96 | #define preempt_disable() do { } while (0) | 96 | /* |
| 97 | #define sched_preempt_enable_no_resched() do { } while (0) | 97 | * Even if we don't have any preemption, we need preempt disable/enable |
| 98 | #define preempt_enable_no_resched() do { } while (0) | 98 | * to be barriers, so that we don't have things like get_user/put_user |
| 99 | #define preempt_enable() do { } while (0) | 99 | * that can cause faults and scheduling migrate into our preempt-protected |
| 100 | 100 | * region. | |
| 101 | #define preempt_disable_notrace() do { } while (0) | 101 | */ |
| 102 | #define preempt_enable_no_resched_notrace() do { } while (0) | 102 | #define preempt_disable() barrier() |
| 103 | #define preempt_enable_notrace() do { } while (0) | 103 | #define sched_preempt_enable_no_resched() barrier() |
| 104 | #define preempt_enable_no_resched() barrier() | ||
| 105 | #define preempt_enable() barrier() | ||
| 106 | |||
| 107 | #define preempt_disable_notrace() barrier() | ||
| 108 | #define preempt_enable_no_resched_notrace() barrier() | ||
| 109 | #define preempt_enable_notrace() barrier() | ||
| 104 | 110 | ||
| 105 | #endif /* CONFIG_PREEMPT_COUNT */ | 111 | #endif /* CONFIG_PREEMPT_COUNT */ |
| 106 | 112 | ||
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 8307f2f94d86..94dfb2aa5533 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
| @@ -117,6 +117,7 @@ struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, | |||
| 117 | const struct file_operations *proc_fops, | 117 | const struct file_operations *proc_fops, |
| 118 | void *data); | 118 | void *data); |
| 119 | extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent); | 119 | extern void remove_proc_entry(const char *name, struct proc_dir_entry *parent); |
| 120 | extern int remove_proc_subtree(const char *name, struct proc_dir_entry *parent); | ||
| 120 | 121 | ||
| 121 | struct pid_namespace; | 122 | struct pid_namespace; |
| 122 | 123 | ||
| @@ -202,6 +203,7 @@ static inline struct proc_dir_entry *proc_create_data(const char *name, | |||
| 202 | return NULL; | 203 | return NULL; |
| 203 | } | 204 | } |
| 204 | #define remove_proc_entry(name, parent) do {} while (0) | 205 | #define remove_proc_entry(name, parent) do {} while (0) |
| 206 | #define remove_proc_subtree(name, parent) do {} while (0) | ||
| 205 | 207 | ||
| 206 | static inline struct proc_dir_entry *proc_symlink(const char *name, | 208 | static inline struct proc_dir_entry *proc_symlink(const char *name, |
| 207 | struct proc_dir_entry *parent,const char *dest) {return NULL;} | 209 | struct proc_dir_entry *parent,const char *dest) {return NULL;} |
diff --git a/include/linux/security.h b/include/linux/security.h index eee7478cda70..032c366ef1c6 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -1012,6 +1012,10 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts) | |||
| 1012 | * This hook can be used by the module to update any security state | 1012 | * This hook can be used by the module to update any security state |
| 1013 | * associated with the TUN device's security structure. | 1013 | * associated with the TUN device's security structure. |
| 1014 | * @security pointer to the TUN devices's security structure. | 1014 | * @security pointer to the TUN devices's security structure. |
| 1015 | * @skb_owned_by: | ||
| 1016 | * This hook sets the packet's owning sock. | ||
| 1017 | * @skb is the packet. | ||
| 1018 | * @sk the sock which owns the packet. | ||
| 1015 | * | 1019 | * |
| 1016 | * Security hooks for XFRM operations. | 1020 | * Security hooks for XFRM operations. |
| 1017 | * | 1021 | * |
| @@ -1638,6 +1642,7 @@ struct security_operations { | |||
| 1638 | int (*tun_dev_attach_queue) (void *security); | 1642 | int (*tun_dev_attach_queue) (void *security); |
| 1639 | int (*tun_dev_attach) (struct sock *sk, void *security); | 1643 | int (*tun_dev_attach) (struct sock *sk, void *security); |
| 1640 | int (*tun_dev_open) (void *security); | 1644 | int (*tun_dev_open) (void *security); |
| 1645 | void (*skb_owned_by) (struct sk_buff *skb, struct sock *sk); | ||
| 1641 | #endif /* CONFIG_SECURITY_NETWORK */ | 1646 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 1642 | 1647 | ||
| 1643 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | 1648 | #ifdef CONFIG_SECURITY_NETWORK_XFRM |
| @@ -2588,6 +2593,8 @@ int security_tun_dev_attach_queue(void *security); | |||
| 2588 | int security_tun_dev_attach(struct sock *sk, void *security); | 2593 | int security_tun_dev_attach(struct sock *sk, void *security); |
| 2589 | int security_tun_dev_open(void *security); | 2594 | int security_tun_dev_open(void *security); |
| 2590 | 2595 | ||
| 2596 | void security_skb_owned_by(struct sk_buff *skb, struct sock *sk); | ||
| 2597 | |||
| 2591 | #else /* CONFIG_SECURITY_NETWORK */ | 2598 | #else /* CONFIG_SECURITY_NETWORK */ |
| 2592 | static inline int security_unix_stream_connect(struct sock *sock, | 2599 | static inline int security_unix_stream_connect(struct sock *sock, |
| 2593 | struct sock *other, | 2600 | struct sock *other, |
| @@ -2779,6 +2786,11 @@ static inline int security_tun_dev_open(void *security) | |||
| 2779 | { | 2786 | { |
| 2780 | return 0; | 2787 | return 0; |
| 2781 | } | 2788 | } |
| 2789 | |||
| 2790 | static inline void security_skb_owned_by(struct sk_buff *skb, struct sock *sk) | ||
| 2791 | { | ||
| 2792 | } | ||
| 2793 | |||
| 2782 | #endif /* CONFIG_SECURITY_NETWORK */ | 2794 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 2783 | 2795 | ||
| 2784 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | 2796 | #ifdef CONFIG_SECURITY_NETWORK_XFRM |
diff --git a/include/linux/signal.h b/include/linux/signal.h index a2dcb94ea49d..9475c5cb28bc 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
| @@ -250,11 +250,11 @@ extern int show_unhandled_signals; | |||
| 250 | extern int sigsuspend(sigset_t *); | 250 | extern int sigsuspend(sigset_t *); |
| 251 | 251 | ||
| 252 | struct sigaction { | 252 | struct sigaction { |
| 253 | #ifndef __ARCH_HAS_ODD_SIGACTION | 253 | #ifndef __ARCH_HAS_IRIX_SIGACTION |
| 254 | __sighandler_t sa_handler; | 254 | __sighandler_t sa_handler; |
| 255 | unsigned long sa_flags; | 255 | unsigned long sa_flags; |
| 256 | #else | 256 | #else |
| 257 | unsigned long sa_flags; | 257 | unsigned int sa_flags; |
| 258 | __sighandler_t sa_handler; | 258 | __sighandler_t sa_handler; |
| 259 | #endif | 259 | #endif |
| 260 | #ifdef __ARCH_HAS_SA_RESTORER | 260 | #ifdef __ARCH_HAS_SA_RESTORER |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 441f5bfdab8e..b8292d8cc9fa 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -2643,6 +2643,13 @@ static inline void nf_reset(struct sk_buff *skb) | |||
| 2643 | #endif | 2643 | #endif |
| 2644 | } | 2644 | } |
| 2645 | 2645 | ||
| 2646 | static inline void nf_reset_trace(struct sk_buff *skb) | ||
| 2647 | { | ||
| 2648 | #if IS_ENABLED(CONFIG_NETFILTER_XT_TARGET_TRACE) | ||
| 2649 | skb->nf_trace = 0; | ||
| 2650 | #endif | ||
| 2651 | } | ||
| 2652 | |||
| 2646 | /* Note: This doesn't put any conntrack and bridge info in dst. */ | 2653 | /* Note: This doesn't put any conntrack and bridge info in dst. */ |
| 2647 | static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src) | 2654 | static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src) |
| 2648 | { | 2655 | { |
diff --git a/include/linux/spinlock_up.h b/include/linux/spinlock_up.h index a26e2fb604e6..e2369c167dbd 100644 --- a/include/linux/spinlock_up.h +++ b/include/linux/spinlock_up.h | |||
| @@ -16,7 +16,10 @@ | |||
| 16 | * In the debug case, 1 means unlocked, 0 means locked. (the values | 16 | * In the debug case, 1 means unlocked, 0 means locked. (the values |
| 17 | * are inverted, to catch initialization bugs) | 17 | * are inverted, to catch initialization bugs) |
| 18 | * | 18 | * |
| 19 | * No atomicity anywhere, we are on UP. | 19 | * No atomicity anywhere, we are on UP. However, we still need |
| 20 | * the compiler barriers, because we do not want the compiler to | ||
| 21 | * move potentially faulting instructions (notably user accesses) | ||
| 22 | * into the locked sequence, resulting in non-atomic execution. | ||
| 20 | */ | 23 | */ |
| 21 | 24 | ||
| 22 | #ifdef CONFIG_DEBUG_SPINLOCK | 25 | #ifdef CONFIG_DEBUG_SPINLOCK |
| @@ -25,6 +28,7 @@ | |||
| 25 | static inline void arch_spin_lock(arch_spinlock_t *lock) | 28 | static inline void arch_spin_lock(arch_spinlock_t *lock) |
| 26 | { | 29 | { |
| 27 | lock->slock = 0; | 30 | lock->slock = 0; |
| 31 | barrier(); | ||
| 28 | } | 32 | } |
| 29 | 33 | ||
| 30 | static inline void | 34 | static inline void |
| @@ -32,6 +36,7 @@ arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long flags) | |||
| 32 | { | 36 | { |
| 33 | local_irq_save(flags); | 37 | local_irq_save(flags); |
| 34 | lock->slock = 0; | 38 | lock->slock = 0; |
| 39 | barrier(); | ||
| 35 | } | 40 | } |
| 36 | 41 | ||
| 37 | static inline int arch_spin_trylock(arch_spinlock_t *lock) | 42 | static inline int arch_spin_trylock(arch_spinlock_t *lock) |
| @@ -39,32 +44,34 @@ static inline int arch_spin_trylock(arch_spinlock_t *lock) | |||
| 39 | char oldval = lock->slock; | 44 | char oldval = lock->slock; |
| 40 | 45 | ||
| 41 | lock->slock = 0; | 46 | lock->slock = 0; |
| 47 | barrier(); | ||
| 42 | 48 | ||
| 43 | return oldval > 0; | 49 | return oldval > 0; |
| 44 | } | 50 | } |
| 45 | 51 | ||
| 46 | static inline void arch_spin_unlock(arch_spinlock_t *lock) | 52 | static inline void arch_spin_unlock(arch_spinlock_t *lock) |
| 47 | { | 53 | { |
| 54 | barrier(); | ||
| 48 | lock->slock = 1; | 55 | lock->slock = 1; |
| 49 | } | 56 | } |
| 50 | 57 | ||
| 51 | /* | 58 | /* |
| 52 | * Read-write spinlocks. No debug version. | 59 | * Read-write spinlocks. No debug version. |
| 53 | */ | 60 | */ |
| 54 | #define arch_read_lock(lock) do { (void)(lock); } while (0) | 61 | #define arch_read_lock(lock) do { barrier(); (void)(lock); } while (0) |
| 55 | #define arch_write_lock(lock) do { (void)(lock); } while (0) | 62 | #define arch_write_lock(lock) do { barrier(); (void)(lock); } while (0) |
| 56 | #define arch_read_trylock(lock) ({ (void)(lock); 1; }) | 63 | #define arch_read_trylock(lock) ({ barrier(); (void)(lock); 1; }) |
| 57 | #define arch_write_trylock(lock) ({ (void)(lock); 1; }) | 64 | #define arch_write_trylock(lock) ({ barrier(); (void)(lock); 1; }) |
| 58 | #define arch_read_unlock(lock) do { (void)(lock); } while (0) | 65 | #define arch_read_unlock(lock) do { barrier(); (void)(lock); } while (0) |
| 59 | #define arch_write_unlock(lock) do { (void)(lock); } while (0) | 66 | #define arch_write_unlock(lock) do { barrier(); (void)(lock); } while (0) |
| 60 | 67 | ||
| 61 | #else /* DEBUG_SPINLOCK */ | 68 | #else /* DEBUG_SPINLOCK */ |
| 62 | #define arch_spin_is_locked(lock) ((void)(lock), 0) | 69 | #define arch_spin_is_locked(lock) ((void)(lock), 0) |
| 63 | /* for sched.c and kernel_lock.c: */ | 70 | /* for sched.c and kernel_lock.c: */ |
| 64 | # define arch_spin_lock(lock) do { (void)(lock); } while (0) | 71 | # define arch_spin_lock(lock) do { barrier(); (void)(lock); } while (0) |
| 65 | # define arch_spin_lock_flags(lock, flags) do { (void)(lock); } while (0) | 72 | # define arch_spin_lock_flags(lock, flags) do { barrier(); (void)(lock); } while (0) |
| 66 | # define arch_spin_unlock(lock) do { (void)(lock); } while (0) | 73 | # define arch_spin_unlock(lock) do { barrier(); (void)(lock); } while (0) |
| 67 | # define arch_spin_trylock(lock) ({ (void)(lock); 1; }) | 74 | # define arch_spin_trylock(lock) ({ barrier(); (void)(lock); 1; }) |
| 68 | #endif /* DEBUG_SPINLOCK */ | 75 | #endif /* DEBUG_SPINLOCK */ |
| 69 | 76 | ||
| 70 | #define arch_spin_is_contended(lock) (((void)(lock), 0)) | 77 | #define arch_spin_is_contended(lock) (((void)(lock), 0)) |
