diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/hashtable.h | 40 | ||||
| -rw-r--r-- | include/linux/if_team.h | 6 | ||||
| -rw-r--r-- | include/linux/list.h | 49 | ||||
| -rw-r--r-- | include/linux/pid.h | 3 | ||||
| -rw-r--r-- | include/linux/rculist.h | 56 | ||||
| -rw-r--r-- | include/net/ax25.h | 8 | ||||
| -rw-r--r-- | include/net/inet_hashtables.h | 4 | ||||
| -rw-r--r-- | include/net/inet_timewait_sock.h | 8 | ||||
| -rw-r--r-- | include/net/netrom.h | 16 | ||||
| -rw-r--r-- | include/net/sch_generic.h | 3 | ||||
| -rw-r--r-- | include/net/sctp/sctp.h | 4 | ||||
| -rw-r--r-- | include/net/sock.h | 21 | 
12 files changed, 103 insertions, 115 deletions
diff --git a/include/linux/hashtable.h b/include/linux/hashtable.h index 227c62424f3..a9df51f5d54 100644 --- a/include/linux/hashtable.h +++ b/include/linux/hashtable.h @@ -115,51 +115,50 @@ static inline void hash_del_rcu(struct hlist_node *node)   * hash_for_each - iterate over a hashtable   * @name: hashtable to iterate   * @bkt: integer to use as bucket loop cursor - * @node: the &struct list_head to use as a loop cursor for each entry   * @obj: the type * to use as a loop cursor for each entry   * @member: the name of the hlist_node within the struct   */ -#define hash_for_each(name, bkt, node, obj, member)				\ -	for ((bkt) = 0, node = NULL; node == NULL && (bkt) < HASH_SIZE(name); (bkt)++)\ -		hlist_for_each_entry(obj, node, &name[bkt], member) +#define hash_for_each(name, bkt, obj, member)				\ +	for ((bkt) = 0, obj = NULL; obj == NULL && (bkt) < HASH_SIZE(name);\ +			(bkt)++)\ +		hlist_for_each_entry(obj, &name[bkt], member)  /**   * hash_for_each_rcu - iterate over a rcu enabled hashtable   * @name: hashtable to iterate   * @bkt: integer to use as bucket loop cursor - * @node: the &struct list_head to use as a loop cursor for each entry   * @obj: the type * to use as a loop cursor for each entry   * @member: the name of the hlist_node within the struct   */ -#define hash_for_each_rcu(name, bkt, node, obj, member)				\ -	for ((bkt) = 0, node = NULL; node == NULL && (bkt) < HASH_SIZE(name); (bkt)++)\ -		hlist_for_each_entry_rcu(obj, node, &name[bkt], member) +#define hash_for_each_rcu(name, bkt, obj, member)			\ +	for ((bkt) = 0, obj = NULL; obj == NULL && (bkt) < HASH_SIZE(name);\ +			(bkt)++)\ +		hlist_for_each_entry_rcu(obj, &name[bkt], member)  /**   * hash_for_each_safe - iterate over a hashtable safe against removal of   * hash entry   * @name: hashtable to iterate   * @bkt: integer to use as bucket loop cursor - * @node: the &struct list_head to use as a loop cursor for each entry   * @tmp: a &struct used for temporary storage   * @obj: the type * to use as a loop cursor for each entry   * @member: the name of the hlist_node within the struct   */ -#define hash_for_each_safe(name, bkt, node, tmp, obj, member)			\ -	for ((bkt) = 0, node = NULL; node == NULL && (bkt) < HASH_SIZE(name); (bkt)++)\ -		hlist_for_each_entry_safe(obj, node, tmp, &name[bkt], member) +#define hash_for_each_safe(name, bkt, tmp, obj, member)			\ +	for ((bkt) = 0, obj = NULL; obj == NULL && (bkt) < HASH_SIZE(name);\ +			(bkt)++)\ +		hlist_for_each_entry_safe(obj, tmp, &name[bkt], member)  /**   * hash_for_each_possible - iterate over all possible objects hashing to the   * same bucket   * @name: hashtable to iterate   * @obj: the type * to use as a loop cursor for each entry - * @node: the &struct list_head to use as a loop cursor for each entry   * @member: the name of the hlist_node within the struct   * @key: the key of the objects to iterate over   */ -#define hash_for_each_possible(name, obj, node, member, key)			\ -	hlist_for_each_entry(obj, node,	&name[hash_min(key, HASH_BITS(name))], member) +#define hash_for_each_possible(name, obj, member, key)			\ +	hlist_for_each_entry(obj, &name[hash_min(key, HASH_BITS(name))], member)  /**   * hash_for_each_possible_rcu - iterate over all possible objects hashing to the @@ -167,25 +166,24 @@ static inline void hash_del_rcu(struct hlist_node *node)   * in a rcu enabled hashtable   * @name: hashtable to iterate   * @obj: the type * to use as a loop cursor for each entry - * @node: the &struct list_head to use as a loop cursor for each entry   * @member: the name of the hlist_node within the struct   * @key: the key of the objects to iterate over   */ -#define hash_for_each_possible_rcu(name, obj, node, member, key)		\ -	hlist_for_each_entry_rcu(obj, node, &name[hash_min(key, HASH_BITS(name))], member) +#define hash_for_each_possible_rcu(name, obj, member, key)		\ +	hlist_for_each_entry_rcu(obj, &name[hash_min(key, HASH_BITS(name))],\ +		member)  /**   * hash_for_each_possible_safe - iterate over all possible objects hashing to the   * same bucket safe against removals   * @name: hashtable to iterate   * @obj: the type * to use as a loop cursor for each entry - * @node: the &struct list_head to use as a loop cursor for each entry   * @tmp: a &struct used for temporary storage   * @member: the name of the hlist_node within the struct   * @key: the key of the objects to iterate over   */ -#define hash_for_each_possible_safe(name, obj, node, tmp, member, key)		\ -	hlist_for_each_entry_safe(obj, node, tmp,				\ +#define hash_for_each_possible_safe(name, obj, tmp, member, key)	\ +	hlist_for_each_entry_safe(obj, tmp,\  		&name[hash_min(key, HASH_BITS(name))], member) diff --git a/include/linux/if_team.h b/include/linux/if_team.h index 4648d802124..cfd21e3d550 100644 --- a/include/linux/if_team.h +++ b/include/linux/if_team.h @@ -216,11 +216,10 @@ static inline struct hlist_head *team_port_index_hash(struct team *team,  static inline struct team_port *team_get_port_by_index(struct team *team,  						       int port_index)  { -	struct hlist_node *p;  	struct team_port *port;  	struct hlist_head *head = team_port_index_hash(team, port_index); -	hlist_for_each_entry(port, p, head, hlist) +	hlist_for_each_entry(port, head, hlist)  		if (port->index == port_index)  			return port;  	return NULL; @@ -228,11 +227,10 @@ static inline struct team_port *team_get_port_by_index(struct team *team,  static inline struct team_port *team_get_port_by_index_rcu(struct team *team,  							   int port_index)  { -	struct hlist_node *p;  	struct team_port *port;  	struct hlist_head *head = team_port_index_hash(team, port_index); -	hlist_for_each_entry_rcu(port, p, head, hlist) +	hlist_for_each_entry_rcu(port, head, hlist)  		if (port->index == port_index)  			return port;  	return NULL; diff --git a/include/linux/list.h b/include/linux/list.h index cc6d2aa6b41..d991cc147c9 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -666,54 +666,49 @@ static inline void hlist_move_list(struct hlist_head *old,  	for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \  	     pos = n) +#define hlist_entry_safe(ptr, type, member) \ +	(ptr) ? hlist_entry(ptr, type, member) : NULL +  /**   * hlist_for_each_entry	- iterate over list of given type - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @head:	the head for your list.   * @member:	the name of the hlist_node within the struct.   */ -#define hlist_for_each_entry(tpos, pos, head, member)			 \ -	for (pos = (head)->first;					 \ -	     pos &&							 \ -		({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ -	     pos = pos->next) +#define hlist_for_each_entry(pos, head, member)				\ +	for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ +	     pos;							\ +	     pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))  /**   * hlist_for_each_entry_continue - iterate over a hlist continuing after current point - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @member:	the name of the hlist_node within the struct.   */ -#define hlist_for_each_entry_continue(tpos, pos, member)		 \ -	for (pos = (pos)->next;						 \ -	     pos &&							 \ -		({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ -	     pos = pos->next) +#define hlist_for_each_entry_continue(pos, member)			\ +	for (pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member);\ +	     pos;							\ +	     pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))  /**   * hlist_for_each_entry_from - iterate over a hlist continuing from current point - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @member:	the name of the hlist_node within the struct.   */ -#define hlist_for_each_entry_from(tpos, pos, member)			 \ -	for (; pos &&							 \ -		({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ -	     pos = pos->next) +#define hlist_for_each_entry_from(pos, member)				\ +	for (; pos;							\ +	     pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))  /**   * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @n:		another &struct hlist_node to use as temporary storage   * @head:	the head for your list.   * @member:	the name of the hlist_node within the struct.   */ -#define hlist_for_each_entry_safe(tpos, pos, n, head, member) 		 \ -	for (pos = (head)->first;					 \ -	     pos && ({ n = pos->next; 1; }) && 				 \ -		({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ -	     pos = n) +#define hlist_for_each_entry_safe(pos, n, head, member) 		\ +	for (pos = hlist_entry_safe((head)->first, typeof(*pos), member);\ +	     pos && ({ n = pos->member.next; 1; });			\ +	     pos = hlist_entry_safe(n, typeof(*pos), member))  #endif diff --git a/include/linux/pid.h b/include/linux/pid.h index 2381c973d89..a089a3c447f 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h @@ -176,9 +176,8 @@ pid_t pid_vnr(struct pid *pid);  #define do_each_pid_task(pid, type, task)				\  	do {								\ -		struct hlist_node *pos___;				\  		if ((pid) != NULL)					\ -			hlist_for_each_entry_rcu((task), pos___,	\ +			hlist_for_each_entry_rcu((task),		\  				&(pid)->tasks[type], pids[type].node) {  			/* diff --git a/include/linux/rculist.h b/include/linux/rculist.h index c92dd28eaa6..8089e35d47a 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h @@ -445,8 +445,7 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,  /**   * hlist_for_each_entry_rcu - iterate over rcu list of given type - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @head:	the head for your list.   * @member:	the name of the hlist_node within the struct.   * @@ -454,16 +453,16 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,   * the _rcu list-mutation primitives such as hlist_add_head_rcu()   * as long as the traversal is guarded by rcu_read_lock().   */ -#define hlist_for_each_entry_rcu(tpos, pos, head, member)		\ -	for (pos = rcu_dereference_raw(hlist_first_rcu(head));		\ -		pos &&							 \ -		({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \ -		pos = rcu_dereference_raw(hlist_next_rcu(pos))) +#define hlist_for_each_entry_rcu(pos, head, member)			\ +	for (pos = hlist_entry_safe (rcu_dereference_raw(hlist_first_rcu(head)),\ +			typeof(*(pos)), member);			\ +		pos;							\ +		pos = hlist_entry_safe(rcu_dereference_raw(hlist_next_rcu(\ +			&(pos)->member)), typeof(*(pos)), member))  /**   * hlist_for_each_entry_rcu_bh - iterate over rcu list of given type - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @head:	the head for your list.   * @member:	the name of the hlist_node within the struct.   * @@ -471,35 +470,36 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,   * the _rcu list-mutation primitives such as hlist_add_head_rcu()   * as long as the traversal is guarded by rcu_read_lock().   */ -#define hlist_for_each_entry_rcu_bh(tpos, pos, head, member)		 \ -	for (pos = rcu_dereference_bh((head)->first);			 \ -		pos &&							 \ -		({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \ -		pos = rcu_dereference_bh(pos->next)) +#define hlist_for_each_entry_rcu_bh(pos, head, member)			\ +	for (pos = hlist_entry_safe(rcu_dereference_bh(hlist_first_rcu(head)),\ +			typeof(*(pos)), member);			\ +		pos;							\ +		pos = hlist_entry_safe(rcu_dereference_bh(hlist_next_rcu(\ +			&(pos)->member)), typeof(*(pos)), member))  /**   * hlist_for_each_entry_continue_rcu - iterate over a hlist continuing after current point - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @member:	the name of the hlist_node within the struct.   */ -#define hlist_for_each_entry_continue_rcu(tpos, pos, member)		\ -	for (pos = rcu_dereference((pos)->next);			\ -	     pos &&							\ -	     ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });  \ -	     pos = rcu_dereference(pos->next)) +#define hlist_for_each_entry_continue_rcu(pos, member)			\ +	for (pos = hlist_entry_safe(rcu_dereference((pos)->member.next),\ +			typeof(*(pos)), member);			\ +	     pos;							\ +	     pos = hlist_entry_safe(rcu_dereference((pos)->member.next),\ +			typeof(*(pos)), member))  /**   * hlist_for_each_entry_continue_rcu_bh - iterate over a hlist continuing after current point - * @tpos:	the type * to use as a loop cursor. - * @pos:	the &struct hlist_node to use as a loop cursor. + * @pos:	the type * to use as a loop cursor.   * @member:	the name of the hlist_node within the struct.   */ -#define hlist_for_each_entry_continue_rcu_bh(tpos, pos, member)		\ -	for (pos = rcu_dereference_bh((pos)->next);			\ -	     pos &&							\ -	     ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });  \ -	     pos = rcu_dereference_bh(pos->next)) +#define hlist_for_each_entry_continue_rcu_bh(pos, member)		\ +	for (pos = hlist_entry_safe(rcu_dereference_bh((pos)->member.next),\ +			typeof(*(pos)), member);			\ +	     pos;							\ +	     pos = hlist_entry_safe(rcu_dereference_bh((pos)->member.next),\ +			typeof(*(pos)), member))  #endif	/* __KERNEL__ */ diff --git a/include/net/ax25.h b/include/net/ax25.h index 53539acbd81..89ed9ac5701 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h @@ -161,8 +161,8 @@ typedef struct ax25_uid_assoc {  	ax25_address		call;  } ax25_uid_assoc; -#define ax25_uid_for_each(__ax25, node, list) \ -	hlist_for_each_entry(__ax25, node, list, uid_node) +#define ax25_uid_for_each(__ax25, list) \ +	hlist_for_each_entry(__ax25, list, uid_node)  #define ax25_uid_hold(ax25) \  	atomic_inc(&((ax25)->refcount)) @@ -247,8 +247,8 @@ typedef struct ax25_cb {  #define ax25_sk(__sk) ((ax25_cb *)(__sk)->sk_protinfo) -#define ax25_for_each(__ax25, node, list) \ -	hlist_for_each_entry(__ax25, node, list, ax25_node) +#define ax25_for_each(__ax25, list) \ +	hlist_for_each_entry(__ax25, list, ax25_node)  #define ax25_cb_hold(__ax25) \  	atomic_inc(&((__ax25)->refcount)) diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h index 7b2ae9d3707..ef83d9e844b 100644 --- a/include/net/inet_hashtables.h +++ b/include/net/inet_hashtables.h @@ -94,8 +94,8 @@ static inline struct net *ib_net(struct inet_bind_bucket *ib)  	return read_pnet(&ib->ib_net);  } -#define inet_bind_bucket_for_each(tb, pos, head) \ -	hlist_for_each_entry(tb, pos, head, node) +#define inet_bind_bucket_for_each(tb, head) \ +	hlist_for_each_entry(tb, head, node)  struct inet_bind_hashbucket {  	spinlock_t		lock; diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h index 7d658d57736..f908dfc0650 100644 --- a/include/net/inet_timewait_sock.h +++ b/include/net/inet_timewait_sock.h @@ -178,11 +178,11 @@ static inline int inet_twsk_del_dead_node(struct inet_timewait_sock *tw)  #define inet_twsk_for_each(tw, node, head) \  	hlist_nulls_for_each_entry(tw, node, head, tw_node) -#define inet_twsk_for_each_inmate(tw, node, jail) \ -	hlist_for_each_entry(tw, node, jail, tw_death_node) +#define inet_twsk_for_each_inmate(tw, jail) \ +	hlist_for_each_entry(tw, jail, tw_death_node) -#define inet_twsk_for_each_inmate_safe(tw, node, safe, jail) \ -	hlist_for_each_entry_safe(tw, node, safe, jail, tw_death_node) +#define inet_twsk_for_each_inmate_safe(tw, safe, jail) \ +	hlist_for_each_entry_safe(tw, safe, jail, tw_death_node)  static inline struct inet_timewait_sock *inet_twsk(const struct sock *sk)  { diff --git a/include/net/netrom.h b/include/net/netrom.h index f0793c1cb5f..121dcf854db 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h @@ -154,17 +154,17 @@ static __inline__ void nr_node_unlock(struct nr_node *nr_node)  	nr_node_put(nr_node);  } -#define nr_neigh_for_each(__nr_neigh, node, list) \ -	hlist_for_each_entry(__nr_neigh, node, list, neigh_node) +#define nr_neigh_for_each(__nr_neigh, list) \ +	hlist_for_each_entry(__nr_neigh, list, neigh_node) -#define nr_neigh_for_each_safe(__nr_neigh, node, node2, list) \ -	hlist_for_each_entry_safe(__nr_neigh, node, node2, list, neigh_node) +#define nr_neigh_for_each_safe(__nr_neigh, node2, list) \ +	hlist_for_each_entry_safe(__nr_neigh, node2, list, neigh_node) -#define nr_node_for_each(__nr_node, node, list) \ -	hlist_for_each_entry(__nr_node, node, list, node_node) +#define nr_node_for_each(__nr_node, list) \ +	hlist_for_each_entry(__nr_node, list, node_node) -#define nr_node_for_each_safe(__nr_node, node, node2, list) \ -	hlist_for_each_entry_safe(__nr_node, node, node2, list, node_node) +#define nr_node_for_each_safe(__nr_node, node2, list) \ +	hlist_for_each_entry_safe(__nr_node, node2, list, node_node)  /*********************************************************************/ diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 2761c905504..f10818fc880 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -339,11 +339,10 @@ static inline struct Qdisc_class_common *  qdisc_class_find(const struct Qdisc_class_hash *hash, u32 id)  {  	struct Qdisc_class_common *cl; -	struct hlist_node *n;  	unsigned int h;  	h = qdisc_class_hash(id, hash->hashmask); -	hlist_for_each_entry(cl, n, &hash->hash[h], hnode) { +	hlist_for_each_entry(cl, &hash->hash[h], hnode) {  		if (cl->classid == id)  			return cl;  	} diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 7fdf298a47e..df85a0c0f2d 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -675,8 +675,8 @@ static inline int sctp_vtag_hashfn(__u16 lport, __u16 rport, __u32 vtag)  	return h & (sctp_assoc_hashsize - 1);  } -#define sctp_for_each_hentry(epb, node, head) \ -	hlist_for_each_entry(epb, node, head, node) +#define sctp_for_each_hentry(epb, head) \ +	hlist_for_each_entry(epb, head, node)  /* Is a socket of this style? */  #define sctp_style(sk, style) __sctp_style((sk), (SCTP_SOCKET_##style)) diff --git a/include/net/sock.h b/include/net/sock.h index a66caa223d1..14f6e9d19dc 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -606,24 +606,23 @@ static inline void sk_add_bind_node(struct sock *sk,  	hlist_add_head(&sk->sk_bind_node, list);  } -#define sk_for_each(__sk, node, list) \ -	hlist_for_each_entry(__sk, node, list, sk_node) -#define sk_for_each_rcu(__sk, node, list) \ -	hlist_for_each_entry_rcu(__sk, node, list, sk_node) +#define sk_for_each(__sk, list) \ +	hlist_for_each_entry(__sk, list, sk_node) +#define sk_for_each_rcu(__sk, list) \ +	hlist_for_each_entry_rcu(__sk, list, sk_node)  #define sk_nulls_for_each(__sk, node, list) \  	hlist_nulls_for_each_entry(__sk, node, list, sk_nulls_node)  #define sk_nulls_for_each_rcu(__sk, node, list) \  	hlist_nulls_for_each_entry_rcu(__sk, node, list, sk_nulls_node) -#define sk_for_each_from(__sk, node) \ -	if (__sk && ({ node = &(__sk)->sk_node; 1; })) \ -		hlist_for_each_entry_from(__sk, node, sk_node) +#define sk_for_each_from(__sk) \ +	hlist_for_each_entry_from(__sk, sk_node)  #define sk_nulls_for_each_from(__sk, node) \  	if (__sk && ({ node = &(__sk)->sk_nulls_node; 1; })) \  		hlist_nulls_for_each_entry_from(__sk, node, sk_nulls_node) -#define sk_for_each_safe(__sk, node, tmp, list) \ -	hlist_for_each_entry_safe(__sk, node, tmp, list, sk_node) -#define sk_for_each_bound(__sk, node, list) \ -	hlist_for_each_entry(__sk, node, list, sk_bind_node) +#define sk_for_each_safe(__sk, tmp, list) \ +	hlist_for_each_entry_safe(__sk, tmp, list, sk_node) +#define sk_for_each_bound(__sk, list) \ +	hlist_for_each_entry(__sk, list, sk_bind_node)  static inline struct user_namespace *sk_user_ns(struct sock *sk)  {  |