diff options
Diffstat (limited to 'include/linux')
55 files changed, 212 insertions, 142 deletions
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index 05488da3aee9..3ae9013eeaaa 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h @@ -46,7 +46,7 @@ struct linux_binprm {  	unsigned interp_flags;  	unsigned interp_data;  	unsigned long loader, exec; -}; +} __randomize_layout;  #define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0  #define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT) @@ -81,7 +81,7 @@ struct linux_binfmt {  	int (*load_shlib)(struct file *);  	int (*core_dump)(struct coredump_params *cprm);  	unsigned long min_coredump;	/* minimal dump size */ -}; +} __randomize_layout;  extern void __register_binfmt(struct linux_binfmt *fmt, int insert); diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h index 360c082e885c..d41d40ac3efd 100644 --- a/include/linux/bpf-cgroup.h +++ b/include/linux/bpf-cgroup.h @@ -85,7 +85,7 @@ int __cgroup_bpf_run_filter_sock_ops(struct sock *sk,  	int __ret = 0;							       \  	if (cgroup_bpf_enabled && (sock_ops)->sk) {	       \  		typeof(sk) __sk = sk_to_full_sk((sock_ops)->sk);	       \ -		if (sk_fullsock(__sk))					       \ +		if (__sk && sk_fullsock(__sk))				       \  			__ret = __cgroup_bpf_run_filter_sock_ops(__sk,	       \  								 sock_ops,     \  							 BPF_CGROUP_SOCK_OPS); \ diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h index 621076f56251..8e5d31f6faef 100644 --- a/include/linux/bpf_verifier.h +++ b/include/linux/bpf_verifier.h @@ -43,6 +43,7 @@ struct bpf_reg_state {  	u32 min_align;  	u32 aux_off;  	u32 aux_off_align; +	bool value_from_signed;  };  enum bpf_stack_slot_type { diff --git a/include/linux/cdev.h b/include/linux/cdev.h index 408bc09ce497..cb28eb21e3ca 100644 --- a/include/linux/cdev.h +++ b/include/linux/cdev.h @@ -17,7 +17,7 @@ struct cdev {  	struct list_head list;  	dev_t dev;  	unsigned int count; -}; +} __randomize_layout;  void cdev_init(struct cdev *, const struct file_operations *); diff --git a/include/linux/ceph/ceph_features.h b/include/linux/ceph/ceph_features.h index f0f6c537b64c..040dd105c3e7 100644 --- a/include/linux/ceph/ceph_features.h +++ b/include/linux/ceph/ceph_features.h @@ -10,14 +10,14 @@  #define CEPH_FEATURE_INCARNATION_2 (1ull<<57) // CEPH_FEATURE_SERVER_JEWEL  #define DEFINE_CEPH_FEATURE(bit, incarnation, name)			\ -	const static uint64_t CEPH_FEATURE_##name = (1ULL<<bit);		\ -	const static uint64_t CEPH_FEATUREMASK_##name =			\ +	static const uint64_t CEPH_FEATURE_##name = (1ULL<<bit);		\ +	static const uint64_t CEPH_FEATUREMASK_##name =			\  		(1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);  /* this bit is ignored but still advertised by release *when* */  #define DEFINE_CEPH_FEATURE_DEPRECATED(bit, incarnation, name, when) \ -	const static uint64_t DEPRECATED_CEPH_FEATURE_##name = (1ULL<<bit); \ -	const static uint64_t DEPRECATED_CEPH_FEATUREMASK_##name =		\ +	static const uint64_t DEPRECATED_CEPH_FEATURE_##name = (1ULL<<bit); \ +	static const uint64_t DEPRECATED_CEPH_FEATUREMASK_##name =		\  		(1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);  /* diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index cd4bbe8242bd..bdb80c4aef6e 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -235,6 +235,7 @@  #endif /* GCC_VERSION >= 40500 */  #if GCC_VERSION >= 40600 +  /*   * When used with Link Time Optimization, gcc can optimize away C functions or   * variables which are referenced only from assembly code.  __visible tells the @@ -242,7 +243,17 @@   * this.   */  #define __visible	__attribute__((externally_visible)) -#endif + +/* + * RANDSTRUCT_PLUGIN wants to use an anonymous struct, but it is only + * possible since GCC 4.6. To provide as much build testing coverage + * as possible, this is used for all GCC 4.6+ builds, and not just on + * RANDSTRUCT_PLUGIN builds. + */ +#define randomized_struct_fields_start	struct { +#define randomized_struct_fields_end	} __randomize_layout; + +#endif /* GCC_VERSION >= 40600 */  #if GCC_VERSION >= 40900 && !defined(__CHECKER__) diff --git a/include/linux/compiler.h b/include/linux/compiler.h index 219f82f3ec1a..eca8ad75e28b 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -452,6 +452,11 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s  # define __no_randomize_layout  #endif +#ifndef randomized_struct_fields_start +# define randomized_struct_fields_start +# define randomized_struct_fields_end +#endif +  /*   * Tell gcc if a function is cold. The compiler will assume any path   * directly leading to the call is unlikely. diff --git a/include/linux/cred.h b/include/linux/cred.h index c728d515e5e2..099058e1178b 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h @@ -31,7 +31,7 @@ struct group_info {  	atomic_t	usage;  	int		ngroups;  	kgid_t		gid[0]; -}; +} __randomize_layout;  /**   * get_group_info - Get a reference to a group info structure @@ -145,7 +145,7 @@ struct cred {  	struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */  	struct group_info *group_info;	/* supplementary groups for euid/fsgid */  	struct rcu_head	rcu;		/* RCU deletion hook */ -}; +} __randomize_layout;  extern void __put_cred(struct cred *);  extern void exit_creds(struct task_struct *); diff --git a/include/linux/dax.h b/include/linux/dax.h index 794811875732..df97b7af7e2c 100644 --- a/include/linux/dax.h +++ b/include/linux/dax.h @@ -87,6 +87,7 @@ size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,  void dax_flush(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,  		size_t size);  void dax_write_cache(struct dax_device *dax_dev, bool wc); +bool dax_write_cache_enabled(struct dax_device *dax_dev);  /*   * We use lowest available bit in exceptional entry for locking, one bit for diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 3f3ff4ccdc3f..aae1cdb76851 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -118,7 +118,7 @@ struct dentry {  		struct hlist_bl_node d_in_lookup_hash;	/* only for in-lookup ones */  	 	struct rcu_head d_rcu;  	} d_u; -}; +} __randomize_layout;  /*   * dentry->d_lock spinlock nesting subclasses: diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index a5195a7d6f77..0a186c4f3981 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -55,6 +55,7 @@ struct dma_fence_cb;   * of the time.   *   * DMA_FENCE_FLAG_SIGNALED_BIT - fence is already signaled + * DMA_FENCE_FLAG_TIMESTAMP_BIT - timestamp recorded for fence signaling   * DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT - enable_signaling might have been called   * DMA_FENCE_FLAG_USER_BITS - start of the unused bits, can be used by the   * implementer of the fence for its own purposes. Can be used in different @@ -84,6 +85,7 @@ struct dma_fence {  enum dma_fence_flag_bits {  	DMA_FENCE_FLAG_SIGNALED_BIT, +	DMA_FENCE_FLAG_TIMESTAMP_BIT,  	DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,  	DMA_FENCE_FLAG_USER_BITS, /* must always be last member */  }; diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 843ab866e0f4..03c0196a6f24 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -157,16 +157,40 @@ static inline int is_device_dma_capable(struct device *dev)   * These three functions are only for dma allocator.   * Don't use them in device drivers.   */ -int dma_alloc_from_coherent(struct device *dev, ssize_t size, +int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size,  				       dma_addr_t *dma_handle, void **ret); -int dma_release_from_coherent(struct device *dev, int order, void *vaddr); +int dma_release_from_dev_coherent(struct device *dev, int order, void *vaddr); -int dma_mmap_from_coherent(struct device *dev, struct vm_area_struct *vma, +int dma_mmap_from_dev_coherent(struct device *dev, struct vm_area_struct *vma,  			    void *cpu_addr, size_t size, int *ret); + +void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle); +int dma_release_from_global_coherent(int order, void *vaddr); +int dma_mmap_from_global_coherent(struct vm_area_struct *vma, void *cpu_addr, +				  size_t size, int *ret); +  #else -#define dma_alloc_from_coherent(dev, size, handle, ret) (0) -#define dma_release_from_coherent(dev, order, vaddr) (0) -#define dma_mmap_from_coherent(dev, vma, vaddr, order, ret) (0) +#define dma_alloc_from_dev_coherent(dev, size, handle, ret) (0) +#define dma_release_from_dev_coherent(dev, order, vaddr) (0) +#define dma_mmap_from_dev_coherent(dev, vma, vaddr, order, ret) (0) + +static inline void *dma_alloc_from_global_coherent(ssize_t size, +						   dma_addr_t *dma_handle) +{ +	return NULL; +} + +static inline int dma_release_from_global_coherent(int order, void *vaddr) +{ +	return 0; +} + +static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma, +						void *cpu_addr, size_t size, +						int *ret) +{ +	return 0; +}  #endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */  #ifdef CONFIG_HAS_DMA @@ -481,7 +505,7 @@ static inline void *dma_alloc_attrs(struct device *dev, size_t size,  	BUG_ON(!ops); -	if (dma_alloc_from_coherent(dev, size, dma_handle, &cpu_addr)) +	if (dma_alloc_from_dev_coherent(dev, size, dma_handle, &cpu_addr))  		return cpu_addr;  	if (!arch_dma_alloc_attrs(&dev, &flag)) @@ -503,7 +527,7 @@ static inline void dma_free_attrs(struct device *dev, size_t size,  	BUG_ON(!ops);  	WARN_ON(irqs_disabled()); -	if (dma_release_from_coherent(dev, get_order(size), cpu_addr)) +	if (dma_release_from_dev_coherent(dev, get_order(size), cpu_addr))  		return;  	if (!ops->free || !cpu_addr) diff --git a/include/linux/fs.h b/include/linux/fs.h index 7b5d6816542b..6e1fd5d21248 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -296,7 +296,7 @@ struct kiocb {  	void			*private;  	int			ki_flags;  	enum rw_hint		ki_hint; -}; +} __randomize_layout;  static inline bool is_sync_kiocb(struct kiocb *kiocb)  { @@ -404,7 +404,7 @@ struct address_space {  	struct list_head	private_list;	/* ditto */  	void			*private_data;	/* ditto */  	errseq_t		wb_err; -} __attribute__((aligned(sizeof(long)))); +} __attribute__((aligned(sizeof(long)))) __randomize_layout;  	/*  	 * On most architectures that alignment is already the case; but  	 * must be enforced here for CRIS, to let the least significant bit @@ -447,7 +447,7 @@ struct block_device {  	int			bd_fsfreeze_count;  	/* Mutex for freeze */  	struct mutex		bd_fsfreeze_mutex; -}; +} __randomize_layout;  /*   * Radix-tree tags, for tagging dirty and writeback pages within the pagecache @@ -666,7 +666,7 @@ struct inode {  #endif  	void			*i_private; /* fs or device private pointer */ -}; +} __randomize_layout;  static inline unsigned int i_blocksize(const struct inode *node)  { @@ -883,7 +883,8 @@ struct file {  #endif /* #ifdef CONFIG_EPOLL */  	struct address_space	*f_mapping;  	errseq_t		f_wb_err; -} __attribute__((aligned(4)));	/* lest something weird decides that 2 is OK */ +} __randomize_layout +  __attribute__((aligned(4)));	/* lest something weird decides that 2 is OK */  struct file_handle {  	__u32 handle_bytes; @@ -1020,7 +1021,7 @@ struct file_lock {  			int state;		/* state of grant or error if -ve */  		} afs;  	} fl_u; -}; +} __randomize_layout;  struct file_lock_context {  	spinlock_t		flc_lock; @@ -1412,7 +1413,7 @@ struct super_block {  	spinlock_t		s_inode_wblist_lock;  	struct list_head	s_inodes_wb;	/* writeback inodes */ -}; +} __randomize_layout;  /* Helper functions so that in most cases filesystems will   * not need to deal directly with kuid_t and kgid_t and can @@ -1698,7 +1699,7 @@ struct file_operations {  			u64);  	ssize_t (*dedupe_file_range)(struct file *, u64, u64, struct file *,  			u64); -}; +} __randomize_layout;  struct inode_operations {  	struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h index 0efc3e62843a..7a026240cbb1 100644 --- a/include/linux/fs_struct.h +++ b/include/linux/fs_struct.h @@ -12,7 +12,7 @@ struct fs_struct {  	int umask;  	int in_exec;  	struct path root, pwd; -}; +} __randomize_layout;  extern struct kmem_cache *fs_cachep; diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 5857390ac35a..6383115e9d2c 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -145,8 +145,8 @@ enum {  #ifdef CONFIG_DYNAMIC_FTRACE  /* The hash used to know what functions callbacks trace */  struct ftrace_ops_hash { -	struct ftrace_hash		*notrace_hash; -	struct ftrace_hash		*filter_hash; +	struct ftrace_hash __rcu	*notrace_hash; +	struct ftrace_hash __rcu	*filter_hash;  	struct mutex			regex_lock;  }; @@ -168,7 +168,7 @@ static inline void ftrace_free_init_mem(void) { }   */  struct ftrace_ops {  	ftrace_func_t			func; -	struct ftrace_ops		*next; +	struct ftrace_ops __rcu		*next;  	unsigned long			flags;  	void				*private;  	ftrace_func_t			saved_func; diff --git a/include/linux/ipc.h b/include/linux/ipc.h index 5591f055e13f..fadd579d577d 100644 --- a/include/linux/ipc.h +++ b/include/linux/ipc.h @@ -23,6 +23,6 @@ struct kern_ipc_perm {  	struct rcu_head rcu;  	atomic_t refcount; -} ____cacheline_aligned_in_smp; +} ____cacheline_aligned_in_smp __randomize_layout;  #endif /* _LINUX_IPC_H */ diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h index 848e5796400e..65327ee0936b 100644 --- a/include/linux/ipc_namespace.h +++ b/include/linux/ipc_namespace.h @@ -61,7 +61,7 @@ struct ipc_namespace {  	struct ucounts *ucounts;  	struct ns_common ns; -}; +} __randomize_layout;  extern struct ipc_namespace init_ipc_ns;  extern spinlock_t mq_lock; diff --git a/include/linux/irq.h b/include/linux/irq.h index 00db35b61e9e..d2d543794093 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -388,7 +388,12 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d)   * @irq_mask_ack:	ack and mask an interrupt source   * @irq_unmask:		unmask an interrupt source   * @irq_eoi:		end of interrupt - * @irq_set_affinity:	set the CPU affinity on SMP machines + * @irq_set_affinity:	Set the CPU affinity on SMP machines. If the force + *			argument is true, it tells the driver to + *			unconditionally apply the affinity setting. Sanity + *			checks against the supplied affinity mask are not + *			required. This is used for CPU hotplug where the + *			target CPU is not yet set in the cpu_online_mask.   * @irq_retrigger:	resend an IRQ to the CPU   * @irq_set_type:	set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ   * @irq_set_wake:	enable/disable power-management wake-on of an IRQ diff --git a/include/linux/jhash.h b/include/linux/jhash.h index 348c6f47e4cc..8037850f3104 100644 --- a/include/linux/jhash.h +++ b/include/linux/jhash.h @@ -85,19 +85,18 @@ static inline u32 jhash(const void *key, u32 length, u32 initval)  		k += 12;  	}  	/* Last block: affect all 32 bits of (c) */ -	/* All the case statements fall through */  	switch (length) { -	case 12: c += (u32)k[11]<<24; -	case 11: c += (u32)k[10]<<16; -	case 10: c += (u32)k[9]<<8; -	case 9:  c += k[8]; -	case 8:  b += (u32)k[7]<<24; -	case 7:  b += (u32)k[6]<<16; -	case 6:  b += (u32)k[5]<<8; -	case 5:  b += k[4]; -	case 4:  a += (u32)k[3]<<24; -	case 3:  a += (u32)k[2]<<16; -	case 2:  a += (u32)k[1]<<8; +	case 12: c += (u32)k[11]<<24;	/* fall through */ +	case 11: c += (u32)k[10]<<16;	/* fall through */ +	case 10: c += (u32)k[9]<<8;	/* fall through */ +	case 9:  c += k[8];		/* fall through */ +	case 8:  b += (u32)k[7]<<24;	/* fall through */ +	case 7:  b += (u32)k[6]<<16;	/* fall through */ +	case 6:  b += (u32)k[5]<<8;	/* fall through */ +	case 5:  b += k[4];		/* fall through */ +	case 4:  a += (u32)k[3]<<24;	/* fall through */ +	case 3:  a += (u32)k[2]<<16;	/* fall through */ +	case 2:  a += (u32)k[1]<<8;	/* fall through */  	case 1:  a += k[0];  		 __jhash_final(a, b, c);  	case 0: /* Nothing left to add */ @@ -131,10 +130,10 @@ static inline u32 jhash2(const u32 *k, u32 length, u32 initval)  		k += 3;  	} -	/* Handle the last 3 u32's: all the case statements fall through */ +	/* Handle the last 3 u32's */  	switch (length) { -	case 3: c += k[2]; -	case 2: b += k[1]; +	case 3: c += k[2];	/* fall through */ +	case 2: b += k[1];	/* fall through */  	case 1: a += k[0];  		__jhash_final(a, b, c);  	case 0:	/* Nothing left to add */ diff --git a/include/linux/key-type.h b/include/linux/key-type.h index 8496cf64575c..9520fc3c3b9a 100644 --- a/include/linux/key-type.h +++ b/include/linux/key-type.h @@ -45,7 +45,7 @@ struct key_preparsed_payload {  	size_t		datalen;	/* Raw datalen */  	size_t		quotalen;	/* Quota length for proposed payload */  	time_t		expiry;		/* Expiry time of key */ -}; +} __randomize_layout;  typedef int (*request_key_actor_t)(struct key_construction *key,  				   const char *op, void *aux); @@ -158,7 +158,7 @@ struct key_type {  	/* internal fields */  	struct list_head	link;		/* link in types list */  	struct lock_class_key	lock_class;	/* key->sem lock class */ -}; +} __randomize_layout;  extern struct key_type key_type_keyring; diff --git a/include/linux/kmod.h b/include/linux/kmod.h index c4e441e00db5..655082c88fd9 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h @@ -64,7 +64,7 @@ struct subprocess_info {  	int (*init)(struct subprocess_info *info, struct cred *new);  	void (*cleanup)(struct subprocess_info *info);  	void *data; -}; +} __randomize_layout;  extern int  call_usermodehelper(const char *path, char **argv, char **envp, int wait); diff --git a/include/linux/kobject.h b/include/linux/kobject.h index eeab34b0f589..4d800c79475a 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h @@ -172,7 +172,7 @@ struct kset {  	spinlock_t list_lock;  	struct kobject kobj;  	const struct kset_uevent_ops *uevent_ops; -}; +} __randomize_layout;  extern void kset_init(struct kset *kset);  extern int __must_check kset_register(struct kset *kset); diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 648b34cabb38..890b706d1943 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -445,6 +445,7 @@ struct kvm {  	struct kvm_stat_data **debugfs_stat_data;  	struct srcu_struct srcu;  	struct srcu_struct irq_srcu; +	pid_t userspace_pid;  };  #define kvm_err(fmt, ...) \ diff --git a/include/linux/llist.h b/include/linux/llist.h index d11738110a7a..1957635e6d5f 100644 --- a/include/linux/llist.h +++ b/include/linux/llist.h @@ -93,6 +93,23 @@ static inline void init_llist_head(struct llist_head *list)  	container_of(ptr, type, member)  /** + * member_address_is_nonnull - check whether the member address is not NULL + * @ptr:	the object pointer (struct type * that contains the llist_node) + * @member:	the name of the llist_node within the struct. + * + * This macro is conceptually the same as + *	&ptr->member != NULL + * but it works around the fact that compilers can decide that taking a member + * address is never a NULL pointer. + * + * Real objects that start at a high address and have a member at NULL are + * unlikely to exist, but such pointers may be returned e.g. by the + * container_of() macro. + */ +#define member_address_is_nonnull(ptr, member)	\ +	((uintptr_t)(ptr) + offsetof(typeof(*(ptr)), member) != 0) + +/**   * llist_for_each - iterate over some deleted entries of a lock-less list   * @pos:	the &struct llist_node to use as a loop cursor   * @node:	the first entry of deleted list entries @@ -145,7 +162,7 @@ static inline void init_llist_head(struct llist_head *list)   */  #define llist_for_each_entry(pos, node, member)				\  	for ((pos) = llist_entry((node), typeof(*(pos)), member);	\ -	     &(pos)->member != NULL;					\ +	     member_address_is_nonnull(pos, member);			\  	     (pos) = llist_entry((pos)->member.next, typeof(*(pos)), member))  /** @@ -167,7 +184,7 @@ static inline void init_llist_head(struct llist_head *list)   */  #define llist_for_each_entry_safe(pos, n, node, member)			       \  	for (pos = llist_entry((node), typeof(*pos), member);		       \ -	     &pos->member != NULL &&					       \ +	     member_address_is_nonnull(pos, member) &&			       \  	        (n = llist_entry(pos->member.next, typeof(*n), member), true); \  	     pos = n) diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h index 7a86925ba8f3..3a90febadbe2 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h @@ -1912,7 +1912,7 @@ struct security_hook_heads {  	struct list_head audit_rule_match;  	struct list_head audit_rule_free;  #endif /* CONFIG_AUDIT */ -}; +} __randomize_layout;  /*   * Security module hook list structure. @@ -1923,7 +1923,7 @@ struct security_hook_list {  	struct list_head		*head;  	union security_list_options	hook;  	char				*lsm; -}; +} __randomize_layout;  /*   * Initializing a security_hook_list structure takes diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index d5bed0875d30..aad5d81dfb44 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h @@ -1068,7 +1068,7 @@ static inline int mlx4_is_eth(struct mlx4_dev *dev, int port)  }  int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, -		   struct mlx4_buf *buf, gfp_t gfp); +		   struct mlx4_buf *buf);  void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf);  static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset)  { @@ -1105,10 +1105,9 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw);  int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,  		   int start_index, int npages, u64 *page_list);  int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, -		       struct mlx4_buf *buf, gfp_t gfp); +		       struct mlx4_buf *buf); -int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, -		  gfp_t gfp); +int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order);  void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db);  int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres, @@ -1124,8 +1123,7 @@ int mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align,  			  int *base, u8 flags);  void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt); -int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, -		  gfp_t gfp); +int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp);  void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp);  int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn, diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 45cdb27791a3..ff151814a02d 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -342,7 +342,7 @@ struct vm_area_struct {  	struct mempolicy *vm_policy;	/* NUMA policy for the VMA */  #endif  	struct vm_userfaultfd_ctx vm_userfaultfd_ctx; -}; +} __randomize_layout;  struct core_thread {  	struct task_struct *task; @@ -500,7 +500,7 @@ struct mm_struct {  	atomic_long_t hugetlb_usage;  #endif  	struct work_struct async_put_work; -}; +} __randomize_layout;  extern struct mm_struct init_mm; diff --git a/include/linux/module.h b/include/linux/module.h index 8eb9a1e693e5..e7bdd549e527 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -45,7 +45,7 @@ struct module_kobject {  	struct kobject *drivers_dir;  	struct module_param_attrs *mp;  	struct completion *kobj_completion; -}; +} __randomize_layout;  struct module_attribute {  	struct attribute attr; @@ -475,7 +475,7 @@ struct module {  	ctor_fn_t *ctors;  	unsigned int num_ctors;  #endif -} ____cacheline_aligned; +} ____cacheline_aligned __randomize_layout;  #ifndef MODULE_ARCH_INIT  #define MODULE_ARCH_INIT {}  #endif diff --git a/include/linux/mount.h b/include/linux/mount.h index 8e0352af06b7..1ce85e6fd95f 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -67,7 +67,7 @@ struct vfsmount {  	struct dentry *mnt_root;	/* root of the mounted tree */  	struct super_block *mnt_sb;	/* pointer to superblock */  	int mnt_flags; -}; +} __randomize_layout;  struct file; /* forward dec */  struct path; diff --git a/include/linux/msg.h b/include/linux/msg.h index f3f302f9c197..a001305f5a79 100644 --- a/include/linux/msg.h +++ b/include/linux/msg.h @@ -29,7 +29,7 @@ struct msg_queue {  	struct list_head q_messages;  	struct list_head q_receivers;  	struct list_head q_senders; -}; +} __randomize_layout;  /* Helper routines for sys_msgsnd and sys_msgrcv */  extern long do_msgsnd(int msqid, long mtype, void __user *mtext, diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index a4b97be30b28..22f081065d49 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h @@ -61,8 +61,6 @@ typedef unsigned int nf_hookfn(void *priv,  			       struct sk_buff *skb,  			       const struct nf_hook_state *state);  struct nf_hook_ops { -	struct list_head	list; -  	/* User fills in from here down. */  	nf_hookfn		*hook;  	struct net_device	*dev; @@ -160,13 +158,6 @@ int nf_register_net_hooks(struct net *net, const struct nf_hook_ops *reg,  void nf_unregister_net_hooks(struct net *net, const struct nf_hook_ops *reg,  			     unsigned int n); -int nf_register_hook(struct nf_hook_ops *reg); -void nf_unregister_hook(struct nf_hook_ops *reg); -int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n); -void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n); -int _nf_register_hooks(struct nf_hook_ops *reg, unsigned int n); -void _nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n); -  /* Functions to register get/setsockopt ranges (non-inclusive).  You     need to check permissions yourself! */  int nf_register_sockopt(struct nf_sockopt_ops *reg); diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index e52cc55ac300..5cc91d6381a3 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -51,7 +51,7 @@ struct nfs_access_entry {  	struct list_head	lru;  	unsigned long		jiffies;  	struct rpc_cred *	cred; -	int			mask; +	__u32			mask;  	struct rcu_head		rcu_head;  }; diff --git a/include/linux/nvme-fc.h b/include/linux/nvme-fc.h index 21c37e39e41a..36cca93a5ff2 100644 --- a/include/linux/nvme-fc.h +++ b/include/linux/nvme-fc.h @@ -334,5 +334,24 @@ struct fcnvme_ls_disconnect_acc {  #define NVME_FC_LS_TIMEOUT_SEC		2		/* 2 seconds */  #define NVME_FC_TGTOP_TIMEOUT_SEC	2		/* 2 seconds */ +/* + * TRADDR string must be of form "nn-<16hexdigits>:pn-<16hexdigits>" + * the string is allowed to be specified with or without a "0x" prefix + * infront of the <16hexdigits>.  Without is considered the "min" string + * and with is considered the "max" string. The hexdigits may be upper + * or lower case. + */ +#define NVME_FC_TRADDR_NNLEN		3	/* "?n-" */ +#define NVME_FC_TRADDR_OXNNLEN		5	/* "?n-0x" */ +#define NVME_FC_TRADDR_HEXNAMELEN	16 +#define NVME_FC_TRADDR_MINLENGTH	\ +		(2 * (NVME_FC_TRADDR_NNLEN + NVME_FC_TRADDR_HEXNAMELEN) + 1) +#define NVME_FC_TRADDR_MAXLENGTH	\ +		(2 * (NVME_FC_TRADDR_OXNNLEN + NVME_FC_TRADDR_HEXNAMELEN) + 1) +#define NVME_FC_TRADDR_MIN_PN_OFFSET	\ +		(NVME_FC_TRADDR_NNLEN + NVME_FC_TRADDR_HEXNAMELEN + 1) +#define NVME_FC_TRADDR_MAX_PN_OFFSET	\ +		(NVME_FC_TRADDR_OXNNLEN + NVME_FC_TRADDR_HEXNAMELEN + 1) +  #endif /* _NVME_FC_H */ diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 6b8ee9e628e1..25d8225dbd04 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h @@ -963,14 +963,14 @@ struct nvme_dbbuf {  };  struct streams_directive_params { -	__u16	msl; -	__u16	nssa; -	__u16	nsso; +	__le16	msl; +	__le16	nssa; +	__le16	nsso;  	__u8	rsvd[10]; -	__u32	sws; -	__u16	sgs; -	__u16	nsa; -	__u16	nso; +	__le32	sws; +	__le16	sgs; +	__le16	nsa; +	__le16	nso;  	__u8	rsvd2[6];  }; @@ -1006,7 +1006,7 @@ static inline bool nvme_is_write(struct nvme_command *cmd)  	 * Why can't we simply have a Fabrics In and Fabrics out command?  	 */  	if (unlikely(cmd->common.opcode == nvme_fabrics_command)) -		return cmd->fabrics.opcode & 1; +		return cmd->fabrics.fctype & 1;  	return cmd->common.opcode & 1;  } diff --git a/include/linux/path.h b/include/linux/path.h index d1372186f431..cde895cc4af4 100644 --- a/include/linux/path.h +++ b/include/linux/path.h @@ -7,7 +7,7 @@ struct vfsmount;  struct path {  	struct vfsmount *mnt;  	struct dentry *dentry; -}; +} __randomize_layout;  extern void path_get(const struct path *);  extern void path_put(const struct path *); diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h index 1360dd6d5e61..af0f44effd44 100644 --- a/include/linux/perf/arm_pmu.h +++ b/include/linux/perf/arm_pmu.h @@ -24,10 +24,14 @@   *	interrupt and passed the address of the low level handler,   *	and can be used to implement any platform specific handling   *	before or after calling it. + * + * @irq_flags: if non-zero, these flags will be passed to request_irq + *             when requesting interrupts for this PMU device.   */  struct arm_pmu_platdata {  	irqreturn_t (*handle_irq)(int irq, void *dev,  				  irq_handler_t pmu_handler); +	unsigned long irq_flags;  };  #ifdef CONFIG_ARM_PMU diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h index c2a989dee876..b09136f88cf4 100644 --- a/include/linux/pid_namespace.h +++ b/include/linux/pid_namespace.h @@ -52,7 +52,7 @@ struct pid_namespace {  	int hide_pid;  	int reboot;	/* group exit code if this pidns was rebooted */  	struct ns_common ns; -}; +} __randomize_layout;  extern struct pid_namespace init_pid_ns; diff --git a/include/linux/platform_data/hsmmc-omap.h b/include/linux/platform_data/hsmmc-omap.h index 8e981be2e2c2..0ff1e0dba720 100644 --- a/include/linux/platform_data/hsmmc-omap.h +++ b/include/linux/platform_data/hsmmc-omap.h @@ -55,9 +55,6 @@ struct omap_hsmmc_platform_data {  	u32 caps;	/* Used for the MMC driver on 2430 and later */  	u32 pm_caps;	/* PM capabilities of the mmc */ -	/* use the internal clock */ -	unsigned internal_clock:1; -  	/* nonremovable e.g. eMMC */  	unsigned nonremovable:1; @@ -73,13 +70,6 @@ struct omap_hsmmc_platform_data {  	int gpio_cd;			/* gpio (card detect) */  	int gpio_cod;			/* gpio (cover detect) */  	int gpio_wp;			/* gpio (write protect) */ - -	int (*set_power)(struct device *dev, int power_on, int vdd); -	void (*remux)(struct device *dev, int power_on); -	/* Call back before enabling / disabling regulators */ -	void (*before_set_reg)(struct device *dev, int power_on, int vdd); -	/* Call back after enabling / disabling regulators */ -	void (*after_set_reg)(struct device *dev, int power_on, int vdd);  	/* if we have special card, init it using this callback */  	void (*init_card)(struct mmc_card *card); diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h index 58ab28d81fc2..06844b54dfc1 100644 --- a/include/linux/proc_ns.h +++ b/include/linux/proc_ns.h @@ -21,7 +21,7 @@ struct proc_ns_operations {  	int (*install)(struct nsproxy *nsproxy, struct ns_common *ns);  	struct user_namespace *(*owner)(struct ns_common *ns);  	struct ns_common *(*get_parent)(struct ns_common *ns); -}; +} __randomize_layout;  extern const struct proc_ns_operations netns_operations;  extern const struct proc_ns_operations utsns_operations; diff --git a/include/linux/sched.h b/include/linux/sched.h index 2ba9ec93423f..8337e2db0bb2 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -426,7 +426,7 @@ struct sched_rt_entity {  	/* rq "owned" by this entity/group: */  	struct rt_rq			*my_q;  #endif -}; +} __randomize_layout;  struct sched_dl_entity {  	struct rb_node			rb_node; @@ -526,6 +526,13 @@ struct task_struct {  #endif  	/* -1 unrunnable, 0 runnable, >0 stopped: */  	volatile long			state; + +	/* +	 * This begins the randomizable portion of task_struct. Only +	 * scheduling-critical items should be added above here. +	 */ +	randomized_struct_fields_start +  	void				*stack;  	atomic_t			usage;  	/* Per task flags (PF_*), defined further below: */ @@ -1079,6 +1086,13 @@ struct task_struct {  	/* Used by LSM modules for access restriction: */  	void				*security;  #endif + +	/* +	 * New fields for task_struct should be added above here, so that +	 * they are included in the randomized portion of task_struct. +	 */ +	randomized_struct_fields_end +  	/* CPU-specific state of this task: */  	struct thread_struct		thread; diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index c06d63b3a583..2a0dd40b15db 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -222,7 +222,7 @@ struct signal_struct {  	struct mutex cred_guard_mutex;	/* guard against foreign influences on  					 * credential calculations  					 * (notably. ptrace) */ -}; +} __randomize_layout;  /*   * Bits in flags field of signal_struct. diff --git a/include/linux/sem.h b/include/linux/sem.h index be5cf2ea14ad..de2deb8676bd 100644 --- a/include/linux/sem.h +++ b/include/linux/sem.h @@ -41,7 +41,7 @@ struct sem_array {  	unsigned int		use_global_lock;/* >0: global lock required */  	struct sem		sems[]; -}; +} __randomize_layout;  #ifdef CONFIG_SYSVIPC diff --git a/include/linux/shm.h b/include/linux/shm.h index 04e881829625..0fb7061ec54c 100644 --- a/include/linux/shm.h +++ b/include/linux/shm.h @@ -22,7 +22,7 @@ struct shmid_kernel /* private to the kernel */  	/* The task created the shm object.  NULL if the task is dead. */  	struct task_struct	*shm_creator;  	struct list_head	shm_clist;	/* list by creator */ -}; +} __randomize_layout;  /* shm_mode upper byte flags */  #define	SHM_DEST	01000	/* segment will be destroyed on last detach */ diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index a3f8af9bd543..38f561b2dda3 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -99,7 +99,7 @@ struct svc_serv {  	unsigned int		sv_nrpools;	/* number of thread pools */  	struct svc_pool *	sv_pools;	/* array of thread pools */ -	struct svc_serv_ops	*sv_ops;	/* server operations */ +	const struct svc_serv_ops *sv_ops;	/* server operations */  #if defined(CONFIG_SUNRPC_BACKCHANNEL)  	struct list_head	sv_cb_list;	/* queue for callback requests  						 * that arrive over the same @@ -465,7 +465,7 @@ int svc_rpcb_setup(struct svc_serv *serv, struct net *net);  void svc_rpcb_cleanup(struct svc_serv *serv, struct net *net);  int svc_bind(struct svc_serv *serv, struct net *net);  struct svc_serv *svc_create(struct svc_program *, unsigned int, -			    struct svc_serv_ops *); +			    const struct svc_serv_ops *);  struct svc_rqst *svc_rqst_alloc(struct svc_serv *serv,  					struct svc_pool *pool, int node);  struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, @@ -475,7 +475,7 @@ void		   svc_exit_thread(struct svc_rqst *);  unsigned int	   svc_pool_map_get(void);  void		   svc_pool_map_put(void);  struct svc_serv *  svc_create_pooled(struct svc_program *, unsigned int, -			struct svc_serv_ops *); +			const struct svc_serv_ops *);  int		   svc_set_num_threads(struct svc_serv *, struct svc_pool *, int);  int		   svc_set_num_threads_sync(struct svc_serv *, struct svc_pool *, int);  int		   svc_pool_stats_open(struct svc_serv *serv, struct file *file); diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index ddb7f94a9d06..6a2ad38f5458 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h @@ -31,7 +31,7 @@ struct svc_xprt_ops {  struct svc_xprt_class {  	const char		*xcl_name;  	struct module		*xcl_owner; -	struct svc_xprt_ops	*xcl_ops; +	const struct svc_xprt_ops *xcl_ops;  	struct list_head	xcl_list;  	u32			xcl_max_payload;  	int			xcl_ident; @@ -49,7 +49,7 @@ struct svc_xpt_user {  struct svc_xprt {  	struct svc_xprt_class	*xpt_class; -	struct svc_xprt_ops	*xpt_ops; +	const struct svc_xprt_ops *xpt_ops;  	struct kref		xpt_ref;  	struct list_head	xpt_list;  	struct list_head	xpt_ready; diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 3a89b9ff4cdc..1d4dba490fb6 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -120,7 +120,7 @@ struct ctl_table  	struct ctl_table_poll *poll;  	void *extra1;  	void *extra2; -}; +} __randomize_layout;  struct ctl_node {  	struct rb_node node; diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index f73cedfa2e0b..536c80ff7ad9 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -338,7 +338,7 @@ enum {  struct trace_event_file {  	struct list_head		list;  	struct trace_event_call		*event_call; -	struct event_filter		*filter; +	struct event_filter __rcu	*filter;  	struct dentry			*dir;  	struct trace_array		*tr;  	struct trace_subsystem_dir	*system; diff --git a/include/linux/tty.h b/include/linux/tty.h index 69464c0d8068..79c30daf46a9 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -332,7 +332,7 @@ struct tty_struct {  	/* If the tty has a pending do_SAK, queue it here - akpm */  	struct work_struct SAK_work;  	struct tty_port *port; -}; +} __randomize_layout;  /* Each of a tty's open files has private_data pointing to tty_file_private */  struct tty_file_private { diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index b742b5e47cc2..00b2213f6a35 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h @@ -291,7 +291,7 @@ struct tty_operations {  	void (*poll_put_char)(struct tty_driver *driver, int line, char ch);  #endif  	const struct file_operations *proc_fops; -}; +} __randomize_layout;  struct tty_driver {  	int	magic;		/* magic number for this structure */ @@ -325,7 +325,7 @@ struct tty_driver {  	const struct tty_operations *ops;  	struct list_head tty_drivers; -}; +} __randomize_layout;  extern struct list_head tty_drivers; diff --git a/include/linux/usb/audio-v2.h b/include/linux/usb/audio-v2.h index c5f2158ab00e..fd73bc0e9027 100644 --- a/include/linux/usb/audio-v2.h +++ b/include/linux/usb/audio-v2.h @@ -115,13 +115,13 @@ struct uac2_input_terminal_descriptor {  	__u8 bDescriptorType;  	__u8 bDescriptorSubtype;  	__u8 bTerminalID; -	__u16 wTerminalType; +	__le16 wTerminalType;  	__u8 bAssocTerminal;  	__u8 bCSourceID;  	__u8 bNrChannels; -	__u32 bmChannelConfig; +	__le32 bmChannelConfig;  	__u8 iChannelNames; -	__u16 bmControls; +	__le16 bmControls;  	__u8 iTerminal;  } __attribute__((packed)); @@ -132,11 +132,11 @@ struct uac2_output_terminal_descriptor {  	__u8 bDescriptorType;  	__u8 bDescriptorSubtype;  	__u8 bTerminalID; -	__u16 wTerminalType; +	__le16 wTerminalType;  	__u8 bAssocTerminal;  	__u8 bSourceID;  	__u8 bCSourceID; -	__u16 bmControls; +	__le16 bmControls;  	__u8 iTerminal;  } __attribute__((packed)); @@ -164,9 +164,9 @@ struct uac2_as_header_descriptor {  	__u8 bTerminalLink;  	__u8 bmControls;  	__u8 bFormatType; -	__u32 bmFormats; +	__le32 bmFormats;  	__u8 bNrChannels; -	__u32 bmChannelConfig; +	__le32 bmChannelConfig;  	__u8 iChannelNames;  } __attribute__((packed)); diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h index 021f7a88f52c..1a59699cf82a 100644 --- a/include/linux/usb/cdc_ncm.h +++ b/include/linux/usb/cdc_ncm.h @@ -83,6 +83,7 @@  /* Driver flags */  #define CDC_NCM_FLAG_NDP_TO_END			0x02	/* NDP is placed at end of frame */  #define CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE	0x04	/* Avoid altsetting toggle during init */ +#define CDC_NCM_FLAG_RESET_NTB16 0x08	/* set NDP16 one more time after altsetting switch */  #define cdc_ncm_comm_intf_is_mbim(x)  ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \  				       (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE) diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h index 32354b4b4b2b..b3575ce29148 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h @@ -66,7 +66,7 @@ struct user_namespace {  #endif  	struct ucounts		*ucounts;  	int ucount_max[UCOUNT_COUNTS]; -}; +} __randomize_layout;  struct ucounts {  	struct hlist_node node; diff --git a/include/linux/utsname.h b/include/linux/utsname.h index 60f0bb83b313..da826ed059cf 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h @@ -26,7 +26,7 @@ struct uts_namespace {  	struct user_namespace *user_ns;  	struct ucounts *ucounts;  	struct ns_common ns; -}; +} __randomize_layout;  extern struct uts_namespace init_uts_ns;  #ifdef CONFIG_UTS_NS diff --git a/include/linux/uuid.h b/include/linux/uuid.h index 2251e1925ea4..33b0bdbb613c 100644 --- a/include/linux/uuid.h +++ b/include/linux/uuid.h @@ -84,26 +84,12 @@ int guid_parse(const char *uuid, guid_t *u);  int uuid_parse(const char *uuid, uuid_t *u);  /* backwards compatibility, don't use in new code */ -typedef uuid_t uuid_be; -#define UUID_BE(a, _b, c, d0, d1, d2, d3, d4, d5, d6, d7) \ -	UUID_INIT(a, _b, c, d0, d1, d2, d3, d4, d5, d6, d7) -#define NULL_UUID_BE 							\ -	UUID_BE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00,	\ -	     0x00, 0x00, 0x00, 0x00) -  #define uuid_le_gen(u)		guid_gen(u) -#define uuid_be_gen(u)		uuid_gen(u)  #define uuid_le_to_bin(guid, u)	guid_parse(guid, u) -#define uuid_be_to_bin(uuid, u)	uuid_parse(uuid, u)  static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)  {  	return memcmp(&u1, &u2, sizeof(guid_t));  } -static inline int uuid_be_cmp(const uuid_t u1, const uuid_t u2) -{ -	return memcmp(&u1, &u2, sizeof(uuid_t)); -} -  #endif diff --git a/include/linux/wait.h b/include/linux/wait.h index b289c96151ee..5b74e36c0ca8 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h @@ -529,13 +529,13 @@ do {										\  /**   * wait_event_interruptible_hrtimeout - sleep until a condition gets true or a timeout elapses - * @wq_head: the waitqueue to wait on + * @wq: the waitqueue to wait on   * @condition: a C expression for the event to wait for   * @timeout: timeout, as a ktime_t   *   * The process is put to sleep (TASK_INTERRUPTIBLE) until the   * @condition evaluates to true or a signal is received. - * The @condition is checked each time the waitqueue @wq_head is woken up. + * The @condition is checked each time the waitqueue @wq is woken up.   *   * wake_up() has to be called after changing any variable that could   * change the result of the wait condition. @@ -735,12 +735,12 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);  /**   * wait_event_killable - sleep until a condition gets true - * @wq: the waitqueue to wait on + * @wq_head: the waitqueue to wait on   * @condition: a C expression for the event to wait for   *   * The process is put to sleep (TASK_KILLABLE) until the   * @condition evaluates to true or a signal is received. - * The @condition is checked each time the waitqueue @wq is woken up. + * The @condition is checked each time the waitqueue @wq_head is woken up.   *   * wake_up() has to be called after changing any variable that could   * change the result of the wait condition.  | 
